From 52be99d8c0862ff87db9a4f9ccec1ac4b5f7caed Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Fri, 2 Sep 2022 09:18:52 +0200 Subject: added a quite unsorted first version of a floppy boot loader --- floppy/README | 503 + floppy/bochs-gdb.config | 60 + floppy/bochs.config | 59 + floppy/boot.asm | 1408 +++ floppy/build.sh | 24 + floppy/configs/busybox-i486-config2 | 1210 +++ floppy/configs/config-busybox-i486 | 1194 +++ .../configs/config-full-for-archinstall-linux-i486 | 2556 +++++ floppy/configs/config-linux-i486 | 1574 ++++ floppy/configs/kernel-config.i486 | 2374 +++++ floppy/doc/ELC-E Linux Awareness.pdf | Bin 0 -> 2032169 bytes floppy/doc/FILE_ID.DIZ | 10 + floppy/doc/INTERRUP.A | 9492 +++++++++++++++++++ floppy/doc/INTERRUP.B | 9839 ++++++++++++++++++++ floppy/doc/INTERRUP.C | 9446 +++++++++++++++++++ floppy/doc/INTERRUP.D | 7948 ++++++++++++++++ floppy/doc/LINKS | 16 + floppy/doc/NEEDHELP.TXT | 30 + floppy/doc/OVERVIEW.LST | 262 + floppy/doc/RBROWN.TXT | 487 + floppy/doc/README.1 | 18 + floppy/doc/README.NOW | 76 + floppy/doc/SAMPLE.FLT | 25 + floppy/doc/SAMPLE1.FLT | 19 + floppy/doc/SAMPLE2.FLT | 17 + floppy/doc/TABLES.LST | 184 + floppy/doc/_ADVERT.TXT | 112 + ...com_2010_06_real-mode-in-c-with-gcc-writing.txt | 892 ++ floppy/doc/github.com_yeokm1_gentoo-on-486.txt | 1114 +++ floppy/doc/lwn.net_Articles_672587.txt | 240 + ...narmstrong_meson_drm_doc_admin-guide_initrd.txt | 453 + ...386-protected-mode-initialization_184408010.txt | 916 ++ floppy/doc/www.insentricity.com_a.cl_283.txt | 808 ++ ...useum.com_wp_a-brief-history-of-unreal-mode.txt | 1626 ++++ ....spinics.net_lists_linux-integrity_msg14580.txt | 188 + ...ngmeng.com_2018_01_make-the-486-great-again.txt | 747 ++ floppy/lstar.c | 102 + floppy/ramdisk/bin/ash | 1 + floppy/ramdisk/bin/busybox | Bin 0 -> 394516 bytes floppy/ramdisk/bin/cat | 1 + floppy/ramdisk/bin/chgrp | 1 + floppy/ramdisk/bin/chmod | 1 + floppy/ramdisk/bin/chown | 1 + floppy/ramdisk/bin/cp | 1 + floppy/ramdisk/bin/cttyhack | 1 + floppy/ramdisk/bin/dd | 1 + floppy/ramdisk/bin/df | 1 + floppy/ramdisk/bin/dmesg | 1 + floppy/ramdisk/bin/echo | 1 + floppy/ramdisk/bin/false | 1 + floppy/ramdisk/bin/grep | 1 + floppy/ramdisk/bin/kill | 1 + floppy/ramdisk/bin/ln | 1 + floppy/ramdisk/bin/ls | 1 + floppy/ramdisk/bin/mkdir | 1 + floppy/ramdisk/bin/mknod | 1 + floppy/ramdisk/bin/mktemp | 1 + floppy/ramdisk/bin/mount | 1 + floppy/ramdisk/bin/mv | 1 + floppy/ramdisk/bin/pidof | 1 + floppy/ramdisk/bin/ping | 1 + floppy/ramdisk/bin/ps | 1 + floppy/ramdisk/bin/rm | 1 + floppy/ramdisk/bin/rmdir | 1 + floppy/ramdisk/bin/sh | 1 + floppy/ramdisk/bin/sleep | 1 + floppy/ramdisk/bin/sync | 1 + floppy/ramdisk/bin/true | 1 + floppy/ramdisk/bin/umount | 1 + floppy/ramdisk/bin/uname | 1 + floppy/ramdisk/bin/vi | 1 + floppy/ramdisk/dev/fd | 1 + floppy/ramdisk/dev/stderr | 1 + floppy/ramdisk/dev/stdin | 1 + floppy/ramdisk/dev/stdout | 1 + floppy/ramdisk/etc/init.d/rc | 8 + floppy/ramdisk/etc/inittab | 6 + floppy/ramdisk/etc/modules.conf | 1 + floppy/ramdisk/etc/mtab | 1 + floppy/ramdisk/etc/resolv.conf | 1 + .../ramdisk/lib/modules/5.18.1-arch1-1/8139cp.ko | Bin 0 -> 19528 bytes .../ramdisk/lib/modules/5.18.1-arch1-1/8139too.ko | Bin 0 -> 24420 bytes floppy/ramdisk/lib/modules/5.18.1-arch1-1/8390p.ko | Bin 0 -> 11464 bytes floppy/ramdisk/lib/modules/5.18.1-arch1-1/crc16.ko | Bin 0 -> 3152 bytes .../lib/modules/5.18.1-arch1-1/crc32c_generic.ko | Bin 0 -> 3868 bytes .../ramdisk/lib/modules/5.18.1-arch1-1/crypto.ko | Bin 0 -> 12444 bytes .../lib/modules/5.18.1-arch1-1/crypto_algapi.ko | Bin 0 -> 18936 bytes .../lib/modules/5.18.1-arch1-1/crypto_hash.ko | Bin 0 -> 17276 bytes floppy/ramdisk/lib/modules/5.18.1-arch1-1/ext2.ko | Bin 0 -> 51032 bytes floppy/ramdisk/lib/modules/5.18.1-arch1-1/ext4.ko | Bin 0 -> 400880 bytes floppy/ramdisk/lib/modules/5.18.1-arch1-1/fat.ko | Bin 0 -> 58056 bytes .../lib/modules/5.18.1-arch1-1/firmware_class.ko | Bin 0 -> 10116 bytes .../ramdisk/lib/modules/5.18.1-arch1-1/floppy.ko | Bin 0 -> 59456 bytes floppy/ramdisk/lib/modules/5.18.1-arch1-1/isofs.ko | Bin 0 -> 23400 bytes floppy/ramdisk/lib/modules/5.18.1-arch1-1/jbd2.ko | Bin 0 -> 64612 bytes .../ramdisk/lib/modules/5.18.1-arch1-1/libphy.ko | Bin 0 -> 103956 bytes floppy/ramdisk/lib/modules/5.18.1-arch1-1/loop.ko | Bin 0 -> 23308 bytes .../ramdisk/lib/modules/5.18.1-arch1-1/mbcache.ko | Bin 0 -> 6648 bytes .../lib/modules/5.18.1-arch1-1/mdio_devres.ko | Bin 0 -> 3404 bytes floppy/ramdisk/lib/modules/5.18.1-arch1-1/mii.ko | Bin 0 -> 7728 bytes .../lib/modules/5.18.1-arch1-1/modules.alias | 68 + .../lib/modules/5.18.1-arch1-1/modules.alias.bin | Bin 0 -> 3417 bytes .../5.18.1-arch1-1/modules.builtin.alias.bin | 0 .../lib/modules/5.18.1-arch1-1/modules.builtin.bin | 0 .../ramdisk/lib/modules/5.18.1-arch1-1/modules.dep | 28 + .../lib/modules/5.18.1-arch1-1/modules.dep.bin | Bin 0 -> 1876 bytes .../lib/modules/5.18.1-arch1-1/modules.devname | 2 + .../lib/modules/5.18.1-arch1-1/modules.softdep | 4 + .../lib/modules/5.18.1-arch1-1/modules.symbols | 427 + .../lib/modules/5.18.1-arch1-1/modules.symbols.bin | Bin 0 -> 21208 bytes floppy/ramdisk/lib/modules/5.18.1-arch1-1/msdos.ko | Bin 0 -> 11020 bytes floppy/ramdisk/lib/modules/5.18.1-arch1-1/ne.ko | Bin 0 -> 12456 bytes .../lib/modules/5.18.1-arch1-1/nls_cp437.ko | Bin 0 -> 7152 bytes floppy/ramdisk/lib/modules/5.18.1-arch1-1/r8169.ko | Bin 0 -> 66488 bytes .../ramdisk/lib/modules/5.18.1-arch1-1/realtek.ko | Bin 0 -> 15180 bytes .../lib/modules/5.18.1-arch1-1/selftests.ko | Bin 0 -> 6648 bytes floppy/ramdisk/lib/modules/5.18.1-arch1-1/unix.ko | Bin 0 -> 28896 bytes floppy/ramdisk/lib/modules/5.18.1-arch1-1/vfat.ko | Bin 0 -> 12524 bytes floppy/ramdisk/sbin/blkid | 1 + floppy/ramdisk/sbin/depmod | 1 + floppy/ramdisk/sbin/fdisk | 1 + floppy/ramdisk/sbin/fsck | 1 + floppy/ramdisk/sbin/halt | 1 + floppy/ramdisk/sbin/ifconfig | 1 + floppy/ramdisk/sbin/init | 1 + floppy/ramdisk/sbin/insmod | 1 + floppy/ramdisk/sbin/ip | 1 + floppy/ramdisk/sbin/losetup | 1 + floppy/ramdisk/sbin/lsmod | 1 + floppy/ramdisk/sbin/mke2fs | 1 + floppy/ramdisk/sbin/mkfs.ext2 | 1 + floppy/ramdisk/sbin/mkswap | 1 + floppy/ramdisk/sbin/modprobe | 1 + floppy/ramdisk/sbin/pivot_root | 1 + floppy/ramdisk/sbin/poweroff | 1 + floppy/ramdisk/sbin/reboot | 1 + floppy/ramdisk/sbin/swapoff | 1 + floppy/ramdisk/sbin/swapon | 1 + floppy/ramdisk/sbin/sysctl | 1 + floppy/ramdisk/sbin/udhcpc | 1 + floppy/ramdisk/usr/bin/chvt | 1 + floppy/ramdisk/usr/bin/clear | 1 + floppy/ramdisk/usr/bin/du | 1 + floppy/ramdisk/usr/bin/find | 1 + floppy/ramdisk/usr/bin/free | 1 + floppy/ramdisk/usr/bin/less | 1 + floppy/ramdisk/usr/bin/tail | 1 + floppy/ramdisk/usr/bin/test | 1 + floppy/ramdisk/usr/bin/wget | 1 + floppy/ramdisk/usr/bin/xargs | 1 + floppy/ramdisk/usr/sbin/chroot | 1 + floppy/ramdisk/usr/sbin/partprobe | 1 + floppy/run_bochs.sh | 4 + floppy/run_bochs_gdb.sh | 7 + floppy/run_qemu.sh | 7 + floppy/run_serial_qemu.sh | 3 + floppy/tests/test_a20.asm | 61 + floppy/tests/test_unreal.asm | 49 + 158 files changed, 56777 insertions(+) create mode 100644 floppy/README create mode 100644 floppy/bochs-gdb.config create mode 100644 floppy/bochs.config create mode 100644 floppy/boot.asm create mode 100755 floppy/build.sh create mode 100644 floppy/configs/busybox-i486-config2 create mode 100644 floppy/configs/config-busybox-i486 create mode 100644 floppy/configs/config-full-for-archinstall-linux-i486 create mode 100644 floppy/configs/config-linux-i486 create mode 100644 floppy/configs/kernel-config.i486 create mode 100644 floppy/doc/ELC-E Linux Awareness.pdf create mode 100644 floppy/doc/FILE_ID.DIZ create mode 100644 floppy/doc/INTERRUP.A create mode 100644 floppy/doc/INTERRUP.B create mode 100644 floppy/doc/INTERRUP.C create mode 100644 floppy/doc/INTERRUP.D create mode 100644 floppy/doc/LINKS create mode 100644 floppy/doc/NEEDHELP.TXT create mode 100644 floppy/doc/OVERVIEW.LST create mode 100644 floppy/doc/RBROWN.TXT create mode 100644 floppy/doc/README.1 create mode 100644 floppy/doc/README.NOW create mode 100644 floppy/doc/SAMPLE.FLT create mode 100644 floppy/doc/SAMPLE1.FLT create mode 100644 floppy/doc/SAMPLE2.FLT create mode 100644 floppy/doc/TABLES.LST create mode 100644 floppy/doc/_ADVERT.TXT create mode 100644 floppy/doc/dc0d32.blogspot.com_2010_06_real-mode-in-c-with-gcc-writing.txt create mode 100644 floppy/doc/github.com_yeokm1_gentoo-on-486.txt create mode 100644 floppy/doc/lwn.net_Articles_672587.txt create mode 100644 floppy/doc/people.freedesktop.org_~narmstrong_meson_drm_doc_admin-guide_initrd.txt create mode 100644 floppy/doc/www.drdobbs.com_80386-protected-mode-initialization_184408010.txt create mode 100644 floppy/doc/www.insentricity.com_a.cl_283.txt create mode 100644 floppy/doc/www.os2museum.com_wp_a-brief-history-of-unreal-mode.txt create mode 100644 floppy/doc/www.spinics.net_lists_linux-integrity_msg14580.txt create mode 100644 floppy/doc/yeokhengmeng.com_2018_01_make-the-486-great-again.txt create mode 100644 floppy/lstar.c create mode 120000 floppy/ramdisk/bin/ash create mode 100755 floppy/ramdisk/bin/busybox create mode 120000 floppy/ramdisk/bin/cat create mode 120000 floppy/ramdisk/bin/chgrp create mode 120000 floppy/ramdisk/bin/chmod create mode 120000 floppy/ramdisk/bin/chown create mode 120000 floppy/ramdisk/bin/cp create mode 120000 floppy/ramdisk/bin/cttyhack create mode 120000 floppy/ramdisk/bin/dd create mode 120000 floppy/ramdisk/bin/df create mode 120000 floppy/ramdisk/bin/dmesg create mode 120000 floppy/ramdisk/bin/echo create mode 120000 floppy/ramdisk/bin/false create mode 120000 floppy/ramdisk/bin/grep create mode 120000 floppy/ramdisk/bin/kill create mode 120000 floppy/ramdisk/bin/ln create mode 120000 floppy/ramdisk/bin/ls create mode 120000 floppy/ramdisk/bin/mkdir create mode 120000 floppy/ramdisk/bin/mknod create mode 120000 floppy/ramdisk/bin/mktemp create mode 120000 floppy/ramdisk/bin/mount create mode 120000 floppy/ramdisk/bin/mv create mode 120000 floppy/ramdisk/bin/pidof create mode 120000 floppy/ramdisk/bin/ping create mode 120000 floppy/ramdisk/bin/ps create mode 120000 floppy/ramdisk/bin/rm create mode 120000 floppy/ramdisk/bin/rmdir create mode 120000 floppy/ramdisk/bin/sh create mode 120000 floppy/ramdisk/bin/sleep create mode 120000 floppy/ramdisk/bin/sync create mode 120000 floppy/ramdisk/bin/true create mode 120000 floppy/ramdisk/bin/umount create mode 120000 floppy/ramdisk/bin/uname create mode 120000 floppy/ramdisk/bin/vi create mode 120000 floppy/ramdisk/dev/fd create mode 120000 floppy/ramdisk/dev/stderr create mode 120000 floppy/ramdisk/dev/stdin create mode 120000 floppy/ramdisk/dev/stdout create mode 100755 floppy/ramdisk/etc/init.d/rc create mode 100644 floppy/ramdisk/etc/inittab create mode 100644 floppy/ramdisk/etc/modules.conf create mode 120000 floppy/ramdisk/etc/mtab create mode 100644 floppy/ramdisk/etc/resolv.conf create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/8139cp.ko create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/8139too.ko create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/8390p.ko create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/crc16.ko create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/crc32c_generic.ko create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/crypto.ko create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/crypto_algapi.ko create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/crypto_hash.ko create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/ext2.ko create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/ext4.ko create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/fat.ko create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/firmware_class.ko create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/floppy.ko create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/isofs.ko create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/jbd2.ko create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/libphy.ko create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/loop.ko create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/mbcache.ko create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/mdio_devres.ko create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/mii.ko create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.alias create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.alias.bin create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.builtin.alias.bin create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.builtin.bin create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.dep create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.dep.bin create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.devname create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.softdep create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.symbols create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.symbols.bin create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/msdos.ko create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/ne.ko create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/nls_cp437.ko create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/r8169.ko create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/realtek.ko create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/selftests.ko create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/unix.ko create mode 100644 floppy/ramdisk/lib/modules/5.18.1-arch1-1/vfat.ko create mode 120000 floppy/ramdisk/sbin/blkid create mode 120000 floppy/ramdisk/sbin/depmod create mode 120000 floppy/ramdisk/sbin/fdisk create mode 120000 floppy/ramdisk/sbin/fsck create mode 120000 floppy/ramdisk/sbin/halt create mode 120000 floppy/ramdisk/sbin/ifconfig create mode 120000 floppy/ramdisk/sbin/init create mode 120000 floppy/ramdisk/sbin/insmod create mode 120000 floppy/ramdisk/sbin/ip create mode 120000 floppy/ramdisk/sbin/losetup create mode 120000 floppy/ramdisk/sbin/lsmod create mode 120000 floppy/ramdisk/sbin/mke2fs create mode 120000 floppy/ramdisk/sbin/mkfs.ext2 create mode 120000 floppy/ramdisk/sbin/mkswap create mode 120000 floppy/ramdisk/sbin/modprobe create mode 120000 floppy/ramdisk/sbin/pivot_root create mode 120000 floppy/ramdisk/sbin/poweroff create mode 120000 floppy/ramdisk/sbin/reboot create mode 120000 floppy/ramdisk/sbin/swapoff create mode 120000 floppy/ramdisk/sbin/swapon create mode 120000 floppy/ramdisk/sbin/sysctl create mode 120000 floppy/ramdisk/sbin/udhcpc create mode 120000 floppy/ramdisk/usr/bin/chvt create mode 120000 floppy/ramdisk/usr/bin/clear create mode 120000 floppy/ramdisk/usr/bin/du create mode 120000 floppy/ramdisk/usr/bin/find create mode 120000 floppy/ramdisk/usr/bin/free create mode 120000 floppy/ramdisk/usr/bin/less create mode 120000 floppy/ramdisk/usr/bin/tail create mode 120000 floppy/ramdisk/usr/bin/test create mode 120000 floppy/ramdisk/usr/bin/wget create mode 120000 floppy/ramdisk/usr/bin/xargs create mode 120000 floppy/ramdisk/usr/sbin/chroot create mode 120000 floppy/ramdisk/usr/sbin/partprobe create mode 100755 floppy/run_bochs.sh create mode 100755 floppy/run_bochs_gdb.sh create mode 100755 floppy/run_qemu.sh create mode 100755 floppy/run_serial_qemu.sh create mode 100644 floppy/tests/test_a20.asm create mode 100644 floppy/tests/test_unreal.asm (limited to 'floppy') diff --git a/floppy/README b/floppy/README new file mode 100644 index 0000000..6afbf50 --- /dev/null +++ b/floppy/README @@ -0,0 +1,503 @@ +floppy format +------------- + +512 bytes MBR stage 1 simple boot loader and magic boot string + loads stage 2 directly following stage 1, also assumes + stage 2 fits on one track of the floppy, so we don't + need a complicated loading method probing tracks per sector +1024 bytes stage 2 boot loader, interprets tar format one sector after + stage 2 and reads files into memory (vmlinuz, ramdisk.img) +N tar file format (no compression, we expect the files to + be well compressed). 2 blocks .ustar format, file names + are easy accessible (vmlinuz, ramdisk.img). We sacrifice 512 + bytes for easier reading in multiple disks (for instance + a kernel disk, an initial ramdisk, a driver disk for + SCSI, a root file system, etc.), we could even do multi-floppy + kernels, so we can read the kernel distributed on more than + one floppy. + +ustar/tar +--------- + +offset length description example +byte 0 100 filename in ascii, zero-term string "bzImage" +byte 0x7c (124) 12 length in octal, zero-term string "00004014360" +byte 0x94 (148) 8 checksum in octal, zero-term string "012757" + with an ending space for some reason + sum the header bytes with the checksum + bytes as spaces (0x20) +byte 0x101 (257) 6 UStar indicator, zero-term string "ustar" + one of the easiest ways to detect + a tar header sector + +kernel +------ + +newest kernel: 5.18.1 + +ramdisk +------- + +find . | cpio -H newc -o -R root:root | zstd > ../ramdisk.img + +user land +--------- + +C library: dietlib, musl +options: busybox, toybox, sbase/ubase/uinit/mdev + +make V=1 VERBOSE=1 CC=musl-gcc + +building the user land +---------------------- + +Archlinux mkinitcpio is way too big, but maybe it can be trimmed to size +ramdisk: buildroot, mkroot, or by hand + +memory layout +------------- + +0x07c00 - 0x08fff boot loader +0x09000 - 0x091ff floppy read buffer +0x0e000 - 0x09200 stack of real mode kernel +0x10000 - 0x101ff Linux zero page (first part) +0x10200 - 0x103ff zero page (part two), real mode entry point at 0x10200 +0x10400 - xxx continue code of real mode kernel +0x1e000 - 0xe0ff cmd line for kernel +0x100000 - xxx protected mode kernel code (at 1 MB) +0x800000 - xxx ram disk (at 8 MB) + +state machine +------------- + +TAR state machine: reading metadata, reading data, we know +whether we are in the kernel, ramdisk, etc. +kernel substates: +- sector 1: read number of real mode sectors +- sector 2: read and check params, set params +- sector >2: always read and copy data from floppy to destination area + +error codes +----------- + +error codes consist of a error class (DISK, KERN) and a code + +ERR DISK 0x01 stage 1 read error while reading stage 2 +ERR DISK 0x02 stage 1 short read error (we didn't read as many stage 2 + sectors as expected) +ERR DISK 0x03 reading and interpreting tar state machine error +ERR DISK 0xXX other read errors (BIOS int 0x13 codes), stage 2 +ERR A20 0x01 A20 address line not enabled +ERR KERN 0x01 kernel read state machine error +ERR KERN 0x02 kernel signature 'HdrS' not found +ERR KERN 0x03 kernel boot protocol too old +ERR KERN 0x04 kernel cannot be started (or better, we return from the + real mode jump) + +Linux IA-32 boot sequence +------------------------- + +- load Kernel boot sector at 0x10000 (first 512 bytes) +- read 0x10000+0x1f1 number of sectors + => minimal 4 sectors (if 0 is in 1f1), number of setup sectors +- read 0x10200 (second part of the zero page) +- compare 0x10202 to linux header 'HdrS', must be equal +- compare 0x10206 to linux boot protocol version, don't allow anything + below 0x215 (the newest one) for now +- set various zero page data + - test for KASLR enabled + 0x10211 has bit 1 set? + (this we might not want to do for old i486 kernels and systems) + - set 0xFF for non-registered boot loader in 0x10210 + - set 0x80 in loadflags 0x10211 + - CAN_USE_HEAP (bit 7) + - LOADED_HIGH? where do we load protected mode code? + - set head_end_ptr 0x10224 to 0xde00 + ; heap_end = 0xe000 + ; heap_end_ptr = heap_end - 0x200 = 0xde00 + mov word [es:0x224], 0xde00 ;head_end_ptr + "Set this field to the offset (from the beginning of the real-mode + code) of the end of the setup stack/heap, minus 0x0200." + - set 0x10228 to 0x1e000 + set to mov dword [es:0x228], 0x1e000 ;cmd line ptr + mov dword [es:0x228], 0x1e000 ; set cmd_line_ptr + also copy your command line to 0x1e000, for now from the boot loader + data segment (initialized data) area. + At offset 0x0020 (word), “cmd_line_magic”, enter the magic number 0xA33F. + At offset 0x0022 (word), “cmd_line_offset”, enter the offset of the kernel command line (relative to the start of the real-mode kernel). + The kernel command line must be within the memory region covered by setup_move_size, so you may need to adjust this field. +- read to 0x10400 N-1 sectors (as much as we calculated above) as the + real mode kernel part +- 0x1001f4 is the 16-byte paragraphs of 32-bit code for protected mode + kernel to load -> transform to 512 byte sectors to read +- eventually get the prefered loading location for the kernel +- load the protected part to 0x100000 by loading it to low memory and + copy it to high memory in unreal mode +- print kernel version number, 020E, offset, but we must load the complete + kernel first +- at end of kernel PM code read check if we have the same size as the tar + entry +- run_kernel (real mode) + cli + mov ax, 0x1000 + mov ds, ax + mov es, ax + mov fs, ax + mov gs, ax + mov ss, ax + mov sp, 0xe000 + jmp 0x1020:0 +- eventually get the prefered loading location for the ramdisk + or highest possible location (should make the kernel happy), but + then we have to know a little bit about the memory layout and size of + the machine.. +- read ram image + - read octal size in tar metadata of ramdisk, convert do decimal + - set address and size in kernel zero page + - 0x218/4 ramdisk image address + - 0x21c/4 ramdisk image size + +Bochs commands +-------------- + +# have a look at the boot.map file for the address of a symbol +# set breakpoint +b 0x7F93 + +# dump memory in floppy read buffer +x /30b 0x0008800 + +# dump real mode kernel code/data +x /30b 0x0010000 + +bugs +---- + +I see the 'early console in setup mode' message in bochs and qemu, so the +kernel is definitely booting in real mode, but then jumps to a +machine reset without saying anything.. + +C code main gets executed + +# Jump to C code (should not return) + calll main + +We see the early console message if we pass 'debug' to the command +line options, so the error must be after this: + + if (cmdline_find_option_bool("debug")) + puts("early console in setup code\n"); + + /* End of heap check */ + init_heap(); + +Bochs debugging on a 64-bit host with a gdb in a 32-bit LXC container. + +target remote tcp:10.0.3.1:1234 + +problem was a shift-right 5 instead of shift-right 4, we read too few +sectors and jumped into a unitialized area of the memory when entering PM! + +-- + +traps: init[1] trap invalid opcode ip:8049120 sp:bfc47a3c error:0 in busybox[8049000+4b000] +Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004 +Kernel Offset: disabled +---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004 ]--- + +objdump -d ramdisk/bin/busybox | less + + 8049120: f3 0f 1e fb endbr32 + +this is really nice, it's an ELF binary, address in mapped in virtual memory +exactly as is. + +-fcf-protection + +it should really not be enable per default for march-i486: -fcf-protection=none + +still there, so has musl been built with CET enabled? + +for now hack it out by hand: + +f3 0f 1e fb -> 90 + +works (we just have to find where this kreeps in, could be all of the i486 subarchitecture!) + +uname -a +Linux (none) 5.18.1-arch1-1 #5 Sat Jul 30 13:55:53 CEST 2022 i486 GNU/Linux + +cat /proc/cpuinfo +model name : 486 DX/2 + +free -m + total used free shared buff/cache available +Mem: 61584 1924 59048 0 612 57572 +Swap: 0 0 0 + +more illegal opcodes: + +<6>traps: fdisk[46] trap invalid opcode ip:804d25b sp:bf96ec30 error:0 in busybo +x[8049000+4b000] + +udhcpc: socket: Address family not supported by protocol +ip addr add 192.168.1.100/24 dev eth0 +ip: can't find device 'eth0' \ +ifconfig -a +eth0 Link encap:Ethernet HWaddr 00:00:E8:CD:05:88 + BROADCAST MULTICAST MTU:1500 Metric:1 + RX packets:0 errors:0 dropped:0 overruns:0 frame:0 + TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:1000 + RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) + Interrupt:10 Base address:0x300 + +lo Link encap:Local Loopback + LOOPBACK MTU:65536 Metric:1 + RX packets:0 errors:0 dropped:0 overruns:0 frame:0 + TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:1000 + RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) +<6>ne ne.0 (unnamed net_device) (uninitialized): NE*000 ethercard probe at 0x300: +<4>ne ne.0 (unnamed net_device) (uninitialized): interrupt from stopped card +<6>ne ne.0 eth0: NE2000 found at 0x300, using IRQ 10. + +change floppy0 floppy2.img + +real floppy: read on floppy 2 results in ERR, so we have to add retries and +also call the reset BIOS function every time. + +first idea, format disk space with a filesystem, add a swapfile, etc. +use wget to copy the ISO, then use a loopback on it and start installation +from there. + +copying the ISO 486 is not fast, but acceptable (half an hour or so). +/mnt, main medium, alredy formated, contains a swapfile and now also the iso +losetup /dev/loop0 /mnt/archinstall-i486 +mount /dev/loop0 /mnt2 +mount --bind /mnt /mnt2/mnt +chroot /mnt2 +mount -t proc /proc proc +mount -t sysfs /sys sys +mount -t devtmpfs /dev dev +mount -t devpts /dev/pts /dev/pts +pacstrap normally +pacstrap /mnt base linux grub dhclient joe vi + +problems for shm and unshare pacstrap. Maybe kernel issues missing features +(SHM for sure)? +futex facility unexpected error code (dito, futex support missing) +we also might have to change some tmpfs stuff (/run, etc) + +systemd or permission/cgroup issues, this is quite a disaster to install +from a simple kernel, bysubox system: +Could not set capabilities on /usr/bin/newuidmap: Operation not supported +Could not set capabilities on /usr/bin/newgidmap: Operation not supported +/usr/lib/tmpfiles.d/static-nodes-permissions.conf:12: Failed to resolve group 'audio'. +/usr/lib/tmpfiles.d/static-nodes-permissions.conf:13: Failed to resolve group 'audio'. +/usr/lib/tmpfiles.d/static-nodes-permissions.conf:14: Failed to resolve group 'disk'. +/usr/lib/tmpfiles.d/static-nodes-permissions.conf:17: Failed to resolve group 'kvm'. +/usr/lib/tmpfiles.d/static-nodes-permissions.conf:18: Failed to resolve group 'kvm'. +/usr/lib/tmpfiles.d/static-nodes-permissions.conf:19: Failed to resolve group 'kvm'. +/usr/lib/tmpfiles.d/systemd-network.conf:10: Failed to resolve user 'systemd-network': No such process +/usr/lib/tmpfiles.d/systemd-network.conf:11: Failed to resolve user 'systemd-network': No such process +/usr/lib/tmpfiles.d/systemd-network.conf:12: Failed to resolve user 'systemd-network': No such process +/usr/lib/tmpfiles.d/systemd-network.conf:13: Failed to resolve user 'systemd-network': No such process +/usr/lib/tmpfiles.d/systemd.conf:22: Failed to resolve group 'systemd-journal'. +/usr/lib/tmpfiles.d/systemd.conf:23: Failed to resolve group 'systemd-journal'. +Failed to parse ACL "d:group::r-x,d:group:adm:r-x,d:group:wheel:r-x,group::r-x,group:adm:r-x,group:wheel:g +Failed to parse ACL "d:group:adm:r-x,d:group:wheel:r-x,group:adm:r-x,group:wheel:r-x": Invalid argument. g +Failed to parse ACL "group:adm:r--,group:wheel:r--": Invalid argument. Ignoring +/usr/lib/tmpfiles.d/systemd.conf:28: Failed to resolve group 'systemd-journal'. +/usr/lib/tmpfiles.d/systemd.conf:29: Failed to resolve group 'systemd-journal'. +/usr/lib/tmpfiles.d/systemd.conf:30: Failed to resolve group 'systemd-journal'. +Failed to parse ACL "d:group::r-x,d:group:adm:r-x,d:group:wheel:r-x,group::r-x,group:adm:r-x,group:wheel:g +Failed to parse ACL "d:group:adm:r-x,d:group:wheel:r-x,group:adm:r-x,group:wheel:r-x": Invalid argument. g +Failed to parse ACL "group:adm:r--,group:wheel:r--": Invalid argument. Ignoring +/usr/lib/tmpfiles.d/tpm2-tss-fapi.conf:2: Failed to resolve user 'tss': No such process +Failed to parse ACL "default:group:tss:rwx": Invalid argument. Ignoring +/usr/lib/tmpfiles.d/tpm2-tss-fapi.conf:4: Failed to resolve user 'tss': No such process +Failed to parse ACL "default:group:tss:rwx": Invalid argument. Ignoring +/usr/lib/tmpfiles.d/var.conf:15: Failed to resolve group 'utmp'. +/usr/lib/tmpfiles.d/var.conf:16: Failed to resolve group 'utmp'. +/usr/lib/tmpfiles.d/var.conf:17: Failed to resolve group 'utmp'. +Failed to open directory 'lock': No such file or directory +Failed to validate path /run/lock/subsys: No such file or directory +Failed to open directory 'initramfs': No such file or directory +Failed to open directory 'nscd': No such file or directory +Failed to open directory 'faillock': No such file or directory +Failed to open directory 'user': No such file or directory +Failed to validate path /run/systemd/ask-password: No such file or directory +Failed to validate path /run/systemd/seats: No such file or directory +Failed to validate path /run/systemd/sessions: No such file or directory +Failed to validate path /run/systemd/users: No such file or directory +Failed to validate path /run/systemd/machines: No such file or directory +Failed to validate path /run/systemd/shutdown: No such file or directory +Failed to open directory 'log': No such file or directory +Cannot set file attributes for '/var/log/journal', maybe due to incompatibility in specified attributes, . +Cannot set file attributes for '/var/log/journal/remote', maybe due to incompatibility in specified attri. +error: command failed to execute correctly +install: cannot stat '/dev/stdin': No such file or directory +error: command failed to execute correctly + +/dev/fd is a problem for hooks and mkinitcpio +ln -s /proc/self/fd -> /dev/fd + +/usr/lib/initcpio/functions: line 712: /dev/stdin: No such file or directory +ln -s /proc/self/fd/0 /dev/stdin +ln -s /proc/self/fd/1 /dev/stdout +ln -s /proc/self/fd/2 /dev/stderr + +mkinitcpio takes ages also with a swap! especially the fallback image.. + +modprobe ext2 +mkdir /mnt +mount /dev/sda1 /mnt +modprobe ne io=0x300 irq=10 +ip addr add 192.168.1.100/24 dev eth0 +ip link set up dev eth0 +ip route add default via 192.168.1.1 dev eth0 +cd /mnt/boot +rm vmlinuz-floppy +wget http://archlinux32.andreasbaumann.cc/other/bzImage +mv bzImage vmlinuz-floppy + +systemd needs a communication protocol, either unix domain sockets or +a loopback on ipv6, also it requires cgroups, otherwise it panicks! + +systemd: Failed to allocate manager object, function not implemented + +minimal sane config: + ++config FORCE_MINIMALLY_SANE_CONFIG ++ bool ++ default y ++ ++ # so that capset() works (sudo, etc.): ++ select SECURITY ++ select SECURITY_CAPABILITIES ++ select BINFMT_ELF ++ ++ select SYSFS ++ select SYSFS_DEPRECATED ++ select PROC_FS ++ select FUTEX ++ ++ # newer systemd silently relies on the presence of the epoll system call: ++ select EPOLL ++ select ANON_INODES ++ ++ # newer systemd silently hangs durig early init without these: ++ select PROC_SYSCTL ++ select SYSCTL ++ select POSIX_MQUEUE ++ select POSIX_MQUEUE_SYSCTL ++ ++ # systemd needs this syscall: ++ select FHANDLE ++ ++ # systemd needs devtmpfs: "systemd[1]: Failed to mount devtmpfs at /dev: No such device" ++ select DEVTMPFS ++ ++ # systemd needs tmpfs: "systemd[1]: Failed to mount tmpfs at /sys/fs/cgroup: No such file or +directory" ++ select SHMEM ++ select TMPFS ++ ++ # systemd needs timerfd syscalls: "[ 8.198625] systemd[1]: Failed to create timerfd: Function +not implemented^" ++ select TIMERFD ++ ++ # systemd needs signalfd support: "[ 45.536725] systemd[1]: Failed to allocate manager object: +Function not implemented" ++ select SIGNALFD ++ ++ # systemd hangs during bootup without cgroup support: ++ select CGROUPS ++ ++ # systemd fails during bootup without this option, with a nonsensical message: "[DEPEND] +Dependency failed for File System Check on /dev/sda1." ++ select FILE_LOCKING ++ ++ # systemd fails during bootup without this option: ++ select FSNOTIFY ++ select INOTIFY_USER ++ ++ # won't boot otherwise: ++ select RD_GZIP ++ select BLK_DEV_INITRD ++ ++ # old F6 userspace needs vsyscalls: ++ select X86_VSYSCALL_EMULATION if X86_64 ++ select IA32_EMULATION if X86_64 +=> https://lwn.net/Articles/672587/ + +Now we cannot change the password: + +passwd: Authentication token lock busy +passwd: password unchanged + +Maybe we need the kernel with file locking or so? +Or could we use crypt6 from busybox to set it? +So far I tried to boot via floppy and then chroot into the partially +installed Archlinux32 +=> yep, that was it, takes 10 seconds for a crypt 6 shadow entry :-) + +Now loading 'ne' produces a null pointer in the kernel? +-> let's hope this is just the lack of memory/swap +=> unmapped page in PF (packet filtering)? + +references +---------- + +- kernel boot up in all it's details, really nice documentation: + - https://0xax.gitbooks.io/linux-insides/content/Booting/linux-bootstrap-1.html + - https://0xax.gitbooks.io/linux-insides/content/Booting/linux-bootstrap-2.html +- debug kernel with bochs + - https://bochs.sourceforge.io/doc/docbook/user/debugging-with-gdb.html + - https://www.kernel.org/doc/html/v4.12/dev-tools/gdb-kernel-debugging.html + - https://www.cs.princeton.edu/courses/archive/fall09/cos318/precepts/bochs_gdb.html +- Linux boot protocol + - https://docs.kernel.org/x86/boot.html + - https://www.spinics.net/lists/linux-integrity/msg14580.html: version string +- get available memory + - http://www.uruk.org/orig-grub/mem64mb.html + - https://wiki.osdev.org/Detecting_Memory_(x86) +- create ramdisk.img: + https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/initrd.html +- tar format + - https://wiki.osdev.org/USTAR + - https://en.wikipedia.org/wiki/Tar_(computing)#UStar_format + - https://github.com/calccrypto/tar + - https://github.com/Papierkorb/tarfs +- other minimal bootloader projects + - https://github.com/wikkyk/mlb + - https://github.com/owenson/tiny-linux-bootloader and + https://github.com/guineawheek/tiny-floppy-bootloader + - http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html (Small C and 16-bit code, + leads to a quite big boot loader, in the end we didn't use C but Unreal mode 16/32-bittish assembly) + - https://wiki.syslinux.org/wiki/index.php?title=The_Syslinux_Project + - Lilo (but the code is hard to read and looks quite chaotic) + - Linux 1.x old boot floppy code +- PC ROM + - https://members.tripod.com/vitaly_filatov/ng/asm/ +- systemd: + - https://lwn.net/Articles/672587/: minimal required features of the kernel, or what crazy + undocumented features are a minimal set of features to enable to make systemd happy +- other projects: + - https://www.insentricity.com/a.cl/283 + +todos +----- + +- have an early console also for serial (uart8250 in assembly, yuck) +- fix CET code generation (endbr32) in Arch32 i486 toolchain +- fix MMX in fdisk (musl) +- network drivers crash with NPE in kernel (ne on real hardware, + 8139cp on qemu) +- find optimal set of kernel and busybox parameters just enough + to enter a chroot to install a copied iso image +- test more A20 switching stuff on real hardware +- script ramdisk generation (currently there is a manually crafted + ramdisk directory) +- have a nicer build process diff --git a/floppy/bochs-gdb.config b/floppy/bochs-gdb.config new file mode 100644 index 0000000..12b4006 --- /dev/null +++ b/floppy/bochs-gdb.config @@ -0,0 +1,60 @@ +# configuration file generated by Bochs +plugin_ctrl: unmapped=1, biosdev=1, speaker=1, extfpuirq=1, parallel=1, serial=1 +#iodebug=1 +config_interface: textconfig +display_library: x +memory: host=32, guest=32 +romimage: file="/usr/share/bochs/BIOS-bochs-latest", address=0x0, options=none +#vgaromimage: file="/usr/share/bochs/VGABIOS-lgpl-latest" +vgaromimage: file="/usr/share/bochs/VGABIOS-lgpl-latest-cirrus" +boot: floppy +floppy_bootsig_check: disabled=0 +# no floppya +# no floppyb +ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 +ata0-master: type=none +ata0-slave: type=none +ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15 +ata1-master: type=none +ata1-slave: type=none +ata2: enabled=0 +ata3: enabled=0 +optromimage1: file=none +optromimage2: file=none +optromimage3: file=none +optromimage4: file=none +optramimage1: file=none +optramimage2: file=none +optramimage3: file=none +optramimage4: file=none +pci: enabled=1, chipset=i440fx +vga: extension=vbe, update_freq=5, realtime=1 +cpu: count=1:1:1, ips=4000000, model=bx_generic, reset_on_triple_fault=1, cpuid_limit_winnt=0 +#cpuid: level=6, stepping=3, model=3, family=6, vendor_string="AuthenticAMD", brand_string="AMD Athlon(tm) processor" +#cpuid: mmx=1, apic=xapic, simd=sse2, sse4a=0, misaligned_sse=0, sep=1, movbe=0, adx=0 +#cpuid: aes=0, sha=0, xsave=0, xsaveopt=0 +#cpuid: smep=0, smap=0, mwait=1 +print_timestamps: enabled=0 +debugger_log: - +magic_break: enabled=0 +port_e9_hack: enabled=0 +private_colormap: enabled=0 +clock: sync=none, time0=local, rtc_sync=0 +# no cmosimage +# no loader +log: - +logprefix: %t%e%d +debug: action=ignore +info: action=report +error: action=report +panic: action=ask +keyboard: type=mf, serial_delay=250, paste_delay=100000, user_shortcut=none +mouse: type=ps2, enabled=0, toggle=ctrl+mbutton +speaker: enabled=1, mode=system +parport1: enabled=1, file=none +parport2: enabled=0 +com1: enabled=1, mode=null +com2: enabled=0 +com3: enabled=0 +com4: enabled=0 +gdbstub: enabled=1, port=1234, text_base=0, data_base=0, bss_base=0 diff --git a/floppy/bochs.config b/floppy/bochs.config new file mode 100644 index 0000000..3a1bdee --- /dev/null +++ b/floppy/bochs.config @@ -0,0 +1,59 @@ +# configuration file generated by Bochs +plugin_ctrl: unmapped=1, biosdev=1, speaker=1, extfpuirq=1, parallel=1, serial=1, iodebug=1 +config_interface: textconfig +display_library: x +memory: host=32, guest=32 +romimage: file="/usr/share/bochs/BIOS-bochs-latest", address=0x0, options=none +#vgaromimage: file="/usr/share/bochs/VGABIOS-lgpl-latest" +vgaromimage: file="/usr/share/bochs/VGABIOS-lgpl-latest-cirrus" +boot: floppy +floppy_bootsig_check: disabled=0 +# no floppya +# no floppyb +ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 +ata0-master: type=none +ata0-slave: type=none +ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15 +ata1-master: type=none +ata1-slave: type=none +ata2: enabled=0 +ata3: enabled=0 +optromimage1: file=none +optromimage2: file=none +optromimage3: file=none +optromimage4: file=none +optramimage1: file=none +optramimage2: file=none +optramimage3: file=none +optramimage4: file=none +pci: enabled=1, chipset=i440fx +vga: extension=vbe, update_freq=5, realtime=1 +cpu: count=1:1:1, ips=4000000, quantum=16, model=bx_generic, reset_on_triple_fault=1, cpuid_limit_winnt=0, ignore_bad_msrs=1, mwait_is_nop=0 +cpuid: level=6, stepping=3, model=3, family=6, vendor_string="AuthenticAMD", brand_string="AMD Athlon(tm) processor" +cpuid: mmx=1, apic=xapic, simd=sse2, sse4a=0, misaligned_sse=0, sep=1, movbe=0, adx=0 +cpuid: aes=0, sha=0, xsave=0, xsaveopt=0, avx_f16c=0, avx_fma=0, bmi=0, xop=0, fma4=0 +cpuid: tbm=0, x86_64=1, 1g_pages=0, pcid=0, fsgsbase=0, smep=0, smap=0, mwait=1 +print_timestamps: enabled=0 +debugger_log: - +magic_break: enabled=0 +port_e9_hack: enabled=0 +private_colormap: enabled=0 +clock: sync=none, time0=local, rtc_sync=0 +# no cmosimage +# no loader +log: - +logprefix: %t%e%d +debug: action=ignore +info: action=report +error: action=report +panic: action=ask +keyboard: type=mf, serial_delay=250, paste_delay=100000, user_shortcut=none +mouse: type=ps2, enabled=0, toggle=ctrl+mbutton +speaker: enabled=1, mode=system +parport1: enabled=1, file=none +parport2: enabled=0 +#com1: enabled=1, mode=term, dev=/dev/tty9 +com1: enabled=0 +com2: enabled=0 +com3: enabled=0 +com4: enabled=0 diff --git a/floppy/boot.asm b/floppy/boot.asm new file mode 100644 index 0000000..6200196 --- /dev/null +++ b/floppy/boot.asm @@ -0,0 +1,1408 @@ +; stage 1 + +; 16-bit real-mode +[bits 16] + +; BIOS always loads us to this location +[org 0x7c00] + +; export a map of boot loader symbols for debugging +[map symbols boot.map] + +stage1: + +; no interrupts, initializing segment registers and a real mode stack +; growing downwards from 0x7c00 where the stage 1 code and data lives + cli + cld + xor ax, ax + mov ds, ax + mov ss, ax + mov sp, 0x7c00 + mov bp, sp + sti + +; dl contains the boot drive, primarily because that's the last function +; called by the BIOS MBR loader, we remember that for loading additional +; blocks from the boot medium + mov [BOOT_DRIVE], dl + +; print greeting message + mov si, MESSAGE_GREETING + call print_string + +; size of stage 2 in sectors (3584-512 bytes, size of boot.img minus stage 1) +NOF_SECTORS_STAGE2 equ 6 + +; load stage 2 with simple load method to 0x7e00 (directly +; after the boot sector), we assume stage 2 fits on a track + mov ah, 0x02 ; read sectors from drive + mov al, NOF_SECTORS_STAGE2 ; read sectors of stage 2 + mov ch, 0 ; select first cylinder + mov dl, [BOOT_DRIVE] ; drive to read from + mov dh, 0 ; first head + mov cl, 2 ; second sector after boot sector + mov bx, 0 ; where to store the data + mov es, bx + mov bx, 0x7e00 ; 512 bytes after first sector + int 0x13 + jc .read_error + jmp .read_ok + +.read_error: + mov di, ERR_DISK + mov ax, 0x01 + call print_error +.read_ok: + cmp al, NOF_SECTORS_STAGE2 ; correct number of sectors read? + jne .short_read_error ; if not, short read + jmp .short_read_ok +.short_read_error: + mov di, ERR_DISK + mov ax, 0x02 + call print_error +.short_read_ok: + jmp stage2 + +; di: pointer to additional message +; ax: error code in ASCII, never returns +print_error: + mov si, NL + call print_string + mov si, MESSAGE_ERROR + call print_string + mov si, di + call print_string + call print_hex_nice + call kill_motor + mov si, NL + call print_string + jmp reboot + +; IN si +print_string: + push ax + push bx +.loop: + lodsb + cmp al, 0 + je .fini + call print_char + jmp .loop +.fini: + pop bx + pop ax + ret + +; IN al: character to print +; MOD ah +print_char: + mov ah, 0x0e + int 0x10 + ret + +; IN ah: hex value to print +print_hex_nice: + push si + mov si, HEX_PREFIX + call print_string + call print_hex + mov si, SPACE + call print_string + pop si + ret + +; IN ah: hex value to print +print_hex: + push bx + push si + mov si, HEX_TEMPLATE + mov bx, ax + and bx, 0x00FF + shr bx, 4 + mov bx, [HEXABET+bx] + mov [HEX_TEMPLATE], bl + mov bx, ax + and bx, 0x000F + mov bx, [HEXABET+bx] + mov [HEX_TEMPLATE+1], bl + call print_string + pop si + pop bx + ret + +; IN: eax: value to print in hex +print_hex_dword: + push eax + push ebx + mov ebx, eax + mov eax, ebx + shr eax, 24 + call print_hex + mov eax, ebx + shr eax, 16 + call print_hex + mov eax, ebx + shr eax, 8 + call print_hex + mov eax, ebx + call print_hex + pop ebx + pop eax + ret + +kill_motor: + push dx + mov dx, 0x3F2 + mov al, 0x00 + out dx, al + pop dx + ret + +reset_drive: + push ax + push dx + mov ax, 0x00 + mov dl, [BOOT_DRIVE] + int 0x13 + pop dx + pop ax + ret + +HEX_TEMPLATE: + db '??', 0 + +HEX_PREFIX: + db '0x', 0 + +HEXABET: + db '0123456789ABCDEF' + +MESSAGE_GREETING: + db "Archlinux32 i486 floppy..", 13, 10, 0 + +MESSAGE_ERROR: + db "ERR ", 0 + +SPACE: + db " ", 0 + +NL: + db 13, 10, 0 + +BOOT_DRIVE: + db 0 + +; pad rest of sector with zeroes so we get 512 bytes in the end + times 510-($-$$) db 0 + +; magic number of a boot sector + dw 0xaa55 + +; stage 2 +stage2: + +; check A20 gate + mov si, MESSAGE_CHECKING_A20 + call print_string + call check_and_enable_A20 + cmp ax, 1 + je .A20_enabled + mov si, MESSAGE_DISABLED + call print_string + mov di, ERR_A20 + mov ax, 0x01 + call print_error + +.A20_enabled: + mov si, MESSAGE_ENABLED + call print_string + +unreal_mode: +; now switching to bigger data and extra segments (so copying kernels and ramdisks +; is not overly painful) + mov si, MESSAGE_SWITCHING_TO_UNREAL_MODE + call print_string + +; disable interrupts for now as we do mode switching and segment manipulations + cli + +; load GDT (global descriptor table) + lgdt [gdt_descriptor] + +; switch to protected mode + mov eax, cr0 + or eax, 0x1 + mov cr0, eax + +; unconditional far jump into code segment, +; wipes the instruction prefetch pipeline + jmp $+2 + +; data descriptor in GDT + mov ax, CODE_DATA_SEGMENT + mov ds, ax + mov es, ax + mov fs, ax + mov gs, ax + +; back to real mode + and al, 0xFE + mov cr0, eax + +; restore segment values - now limits are removed but seg regs still work as normal +; we keep cs and ss in real mode locations as before, code is small and stack +; is not expected to get big, besides they stop working above 1 MB as SP and IP +; are used and not ESP and EIP! + xor ax,ax + mov ds, ax + mov es, ax + mov fs, ax + mov gs, ax + +; now we are in UNREAL mode, we can also reenable real mode interrupts, as the +; code segment is still small, so saving IP should work just fine + sti + mov si, MESSAGE_ENABLED + call print_string + +; detect disk geometry +; IN dl: drive +detect_disk_geometry: + xor ax, ax + mov es, ax + mov di, ax + mov ah, 0x08 + mov dl, [BOOT_DRIVE] + int 0x13 + jc .error + jmp .ok + +.error: +; AH contains return code + mov si, ERR_DISK + call print_error + +; all went well, remember and print drive parameters +.ok: + mov si, MESSAGE_DRIVE_PARAMETERS + call print_string + mov ax, [BOOT_DRIVE] + call print_hex_nice + xor ax, ax + mov [FLOPPY_TYPE], BYTE bl + mov al, [FLOPPY_TYPE] + call print_hex_nice + add dh, 1 + mov [NOF_HEADS], BYTE dh + add cl, 1 + mov [SECTORS_PER_CYLINDER], BYTE cl + mov al, [NOF_HEADS] + call print_hex_nice + xor ax, ax + mov al, [SECTORS_PER_CYLINDER] + call print_hex_nice + mov si, NL + call print_string + + call reset_drive + +; read now sectors after stage 2 as long as we can find +; tar index sectors containing filenames, +; depending on the filename we have to load things to different places +; (and move them to memory above 1MB) +; start to read after stage 1 (512 on sector 1) and stage 2 (starting on sector 2) + mov [CURRENT_SECTOR], byte NOF_SECTORS_STAGE2 + 2 + +read_next_sector: + + mov bx, 0x0900 ; where to store the data (our floppy data read buffer) + mov es, bx + mov bx, 0x0 + +; print (C/H/S) info where we are currently reading and in which state +; and how many data sectors are left in the current tar entry + ;~ jmp .no_verbose + +; states + mov al, 0x0d + call print_char + mov al, byte [READ_STATE] + call print_hex + mov al, ' ' + call print_char + mov al, byte [KERNEL_STATE] + call print_hex + mov al, ' ' + call print_char + +; tar data sectors to read for current file + mov dx, word [READ_DATA_SECTORS] + mov ax, dx + shr ax, 8 + call print_hex + mov ax, dx + call print_hex + mov al, ' ' + call print_char + +; disk geometry (current position on the floppy) + mov al, '(' + call print_char + xor ax, ax + mov al, byte [CURRENT_CYLINDER] + call print_hex + mov al, '/' + call print_char + xor ax, ax + mov al, byte [CURRENT_HEAD] + call print_hex + mov al, '/' + call print_char + xor ax, ax + mov al, byte [CURRENT_SECTOR] + call print_hex + mov al, ')' + call print_char + +.no_verbose: + call read_one_sector_from_disk + +; states in the main sector read loop +STATE_READ_METADATA equ 0 +STATE_READ_KERNEL equ 1 +STATE_READ_INITRD equ 2 +STATE_KERNEL_READ_SECTOR_0 equ 1 +STATE_KERNEL_READ_SECTOR_1 equ 2 +STATE_KERNEL_READ_SECTORS_REAL_MODE equ 3 +STATE_KERNEL_READ_SECTORS_PROTECTED_MODE equ 4 +STATE_KERNEL_FINISHED equ 5 + +; depending on the read state we have to do different stuff now + mov ah, byte [READ_STATE] + cmp ah, STATE_READ_METADATA + je handle_read_metadata + cmp ah, STATE_READ_KERNEL + je handle_read_kernel + cmp ah, STATE_READ_INITRD + je handle_read_initrd + mov di, ERR_DISK + mov ax, 0x03 + call print_error + +; state: STATE_READ_METADATA +handle_read_metadata: + push bx + mov esi, 0x09000 + 0x101 ; 5 chars must match 'ustar' for being a tar metadata block + mov edi, USTAR_MAGIC + mov bx, 5 + call strncmp + pop bx + cmp ax, 0 + je .print_tar_metadata + jmp advance_to_next_sector ; read over unknown data or non-tar entries + +.print_tar_metadata: + mov al, ' ' + call print_char + mov si, 0x09000 + 0x00 ; the filename in the tar + call print_string + mov al, ' ' + call print_char + mov si, 0x09000 + 0x7c ; the size in ASCII octal + call print_string + mov si, SPACE + call print_string + mov si, 0x09000 + 0x7c + mov ecx, 11 + + ; compute size in decimal and compute number of data sectors we have to read + call octal_string_to_int + a32 mov [READ_DATA_SIZE], eax + call print_hex_dword + + mov ecx, eax ; ecx contains the number of 512 byte sectors + shr ecx, 9 ; number of sectors a 512 bytes + mov edx, ebx ; compute if we have a remainder + and edx, 0x01FF + cmp edx, 0 ; no remainder, ending at full sector + je .full_sector + inc ecx ; one non-full sector more to read +.full_sector: + mov [READ_DATA_SECTORS], ecx + + ; enable to debug metadata in tar + ;~ mov si, NL + ;~ call print_string + ;~ mov ax, 0x0900 + ;~ mov es, ax + ;~ call print_memory + +.search_kernel: + mov esi, 0x09000 + 0x00 + mov edi, FILE_BZIMAGE + call strcmp + cmp ax, 0 + je .found_kernel + jmp .search_initrd + +.found_kernel: + mov [READ_STATE], byte STATE_READ_KERNEL + mov [KERNEL_STATE], byte STATE_KERNEL_READ_SECTOR_0 + mov [READ_DESTINATION_PTR], dword 0x10000 + mov al, '!' + call print_char + mov si, NL + call print_string + jmp advance_to_next_sector + +.search_initrd: + mov esi, 0x09000 + 0x00 + mov edi, FILE_RAMDISK + call strcmp + cmp ax, 0 + je .found_initrd + jmp .search_eof + +.found_initrd: + mov [READ_STATE], byte STATE_READ_INITRD +; qemu initrd start location 7fab000, 133869568 (this is 128MB) too high for us, +; kernel gives us alignment hints and hints where to load initrd to? +; let's use 8MB, TODO: does the kernel release the initial ramdisk? I think so. is +; it relocating it's structures? or do we get fragmented heap and stuff? + a32 mov [READ_DESTINATION_PTR], dword 0x00800000 + a32 mov [INITRD_ADDRESS], dword 0x00800000 + a32 mov eax, [READ_DATA_SIZE] + a32 mov [INITRD_SIZE], eax + mov al, '!' + call print_char + mov si, NL + call print_string + + jmp advance_to_next_sector + +.search_eof: + mov esi, 0x09000 + 0x00 + mov edi, FILE_EOF + call strcmp + cmp ax, 0 + je .found_eof + jmp .unknown_file + +.found_eof: + mov si, NL + call print_string + mov si, MESSAGE_EOF_REACHED + call print_string + jmp finished_reading + +.unknown_file: + mov al, '?' + call print_char + mov si, NL + call print_string + jmp advance_to_next_sector + +; STATE: STATE_READ_KERNEL +handle_read_kernel: + + ; move kernel code/data from 0x09000 (our disk read scratch space + ; in low memory to 0x10000 (which is the real mode location for the + ; kernel code) + mov ax, ds + mov es, ax + mov esi, 0x09000 + mov edi, dword [READ_DESTINATION_PTR] + mov ecx, 512 + cld + a32 rep movsb + mov [READ_DESTINATION_PTR], edi + + mov ax, word [READ_DATA_SECTORS] + dec ax + mov word [READ_DATA_SECTORS], ax + cmp ax, 0 + je .data_end + jmp kernel_switch +.data_end: + mov [READ_STATE], byte STATE_READ_METADATA + jmp advance_to_next_sector + + ; depending on the kernel substate +kernel_switch: + xor ax, ax + mov ah, byte [KERNEL_STATE] + cmp ah, STATE_KERNEL_READ_SECTOR_0 + je handle_data_kernel_sector_0 + cmp ah, STATE_KERNEL_READ_SECTOR_1 + je handle_data_kernel_sector_1 + cmp ah, STATE_KERNEL_READ_SECTORS_REAL_MODE + je handle_data_kernel_real_mode + cmp ah, STATE_KERNEL_READ_SECTORS_PROTECTED_MODE + je handle_data_kernel_protected_mode + mov di, ERR_KERN + mov ax, 0x01 + call print_error + +; STATE: STATE_KERNEL_READ_SECTOR_0 +handle_data_kernel_sector_0: + +; first sector if real mode kernel + + ; enable to debug real mode zero page metadata + ;~ mov si, NL + ;~ call print_string + ;~ mov ax, 0x1000 + ;~ mov es, ax + ;~ call print_memory + + ; get the number of real mode kernel sectors to read + ; (or mininmally 4 if 0 is returned), each 512 bytes + mov si, NL + call print_string + a32 mov al, byte [0x10000+0x1f1] + cmp al, 0 + jne .nof_sectors_ok + mov al, 4 ; minimally 4 sectors + +.nof_sectors_ok: + mov si, MESSAGE_KERNEL_NOF_REAL_SECTORS + call print_string + mov [KERNEL_NOF_REAL_MODE_SECTORS], al + call print_hex + mov si, NL + call print_string + + ; get size of protected mode kernel in 16 bytes + a32 mov eax, [0x10000+0x1f4] + mov ecx, eax + shr ecx, 5 ; 16-pages, shifting by 5 to the right gives + ; us the number of sectors a 512 bytes + mov ebx, eax ; compute if we have to read one sector more with partial data + and ebx, 0x001F ; 32 times 16 bytes per page + cmp ebx, 0 + je .full_sector + inc ecx +.full_sector: + mov [KERNEL_NOF_PROTECTED_MODE_SECTORS], word cx + mov si, MESSAGE_KERNEL_NOF_PROTECTED_SECTORS + call print_string + mov bx, [KERNEL_NOF_PROTECTED_MODE_SECTORS] + mov ax, bx + and ax, 0xFF00 + shr ax, 8 + call print_hex + mov ax, bx + and ax, 0x00FF + call print_hex + mov si, NL + call print_string + + mov [KERNEL_STATE], byte STATE_KERNEL_READ_SECTOR_1 + + jmp advance_to_next_sector + +; STATE: STATE_KERNEL_READ_SECTOR_1 +handle_data_kernel_sector_1: + ; enable to debug real mode zero page metadata + ;~ mov si, NL + ;~ call print_string + ;~ mov ax, 0x1020 + ;~ mov es, ax + ;~ call print_memory + + ; compare header + mov esi, 0x10000 + 0x202 + mov edi, KERNEL_MAGIC + mov bx, 4 + call strncmp + cmp ax, 0 + je .kernel_HdrS_found + mov di, ERR_KERN + mov ax, 0x02 + call print_error + +.kernel_HdrS_found: + ; get protocol version, don't allow anothing below 2.15 (which + ; os kernel 5.5 or above) + mov al, 0x0d + call print_char + mov si, NL + call print_string + mov si, MESSAGE_KERNEL_BOOT_PROTOCOL + call print_string + a32 mov al, byte [0x10000+0x207] + mov byte [KERNEL_BOOT_PROTOCOL_MAJOR], al + call print_hex + mov al, '.' + call print_char + a32 mov al, byte [0x10000+0x206] + mov byte [KERNEL_BOOT_PROTOCOL_MINOR], al + call print_hex + mov si, NL + call print_string + xor ax, ax + mov al, byte [KERNEL_BOOT_PROTOCOL_MAJOR] + cmp al, 2 + jl .protocol_error + xor ax, ax + mov al, byte [KERNEL_BOOT_PROTOCOL_MINOR] + cmp al, 15 + jl .protocol_error + jmp .get_kernel_version_offset + +.protocol_error: + mov di, ERR_KERN + mov ax, 0x03 + call print_error + + ; get offset pointing to human readable kernel message, + ; we can print it only after having read the real mode part + ; of the kernel (or just before we actually start the kernel) +.get_kernel_version_offset: + a32 mov ax, word [0x10000+0x20e] + mov [KERNEL_VERSION_PTR], ax + jmp .set_boot_data + +.set_boot_data: + ; not quite clear what the kernel does with this data, TODO: must read kernel code + a32 mov byte [0x10000+0x210], 0xe1 ; Extended bootloader type + a32 mov byte [0x10000+0x226], 0x00 ; ext_loader_ver + a32 mov byte [0x10000+0x227], 0x01 ; ext_loader_type (id: 0x11) + a32 or byte [0x10000+0x211], 0x80 ; set CAN_USE_HEAP + a32 mov word [0x10000+0x224], 0xde00 ; head_end_ptr + + ; set up area and copy command line from the boot loader area to + ; a area registered with the kernel (0x1e000) + a32 mov dword [0x10000+0x228], 0x1e000 ; set cmd_line_ptr + xor ax, ax + mov es, ax + mov esi, KERNEL_CMD_LINE + mov edi, 0x1e000 + mov ecx, KERNEL_CMD_SIZE + cld + a32 rep movsb + + jmp .change_state + +.change_state: + ; enable to debug real mode zero page metadata after modifying and setting parameters + ;~ mov si, NL + ;~ call print_string + ;~ mov ax, 0x1020 + ;~ mov es, ax + ;~ call print_memory + + mov [KERNEL_STATE], byte STATE_KERNEL_READ_SECTORS_REAL_MODE + ; intentional fallthrough, decrement real mode sectors below + +; STATE: STATE_KERNEL_READ_SECTORS_REAL_MODE +handle_data_kernel_real_mode: + ; read at most KERNEL_NOF_REAL_MODE_SECTORS sectors for real + ; mode code/data + mov al, byte [KERNEL_NOF_REAL_MODE_SECTORS] + dec al + mov byte [KERNEL_NOF_REAL_MODE_SECTORS], al + cmp al, 0 + je .last_real_mode_sector_read + jmp advance_to_next_sector + +.last_real_mode_sector_read: + ; show kernel version + mov al, 0x0d + call print_char + mov si, NL + call print_string + mov si, MESSAGE_KERNEL_VERSION + call print_string + mov esi, [KERNEL_VERSION_PTR] + add esi, 0x200 + push ds + mov ax, 0x1000 + mov ds, ax + call print_string + pop ds + mov si, NL + call print_string + + ; change load pointer to protected mode area 0x100000 + mov [KERNEL_STATE], byte STATE_KERNEL_READ_SECTORS_PROTECTED_MODE + mov [READ_DESTINATION_PTR], dword 0x100000 + + jmp advance_to_next_sector + +; STATE: STATE_KERNEL_READ_SECTORS_PROTECTED_MODE +handle_data_kernel_protected_mode: + ; read at most KERNEL_NOF_PROTECTED_MODE_SECTORS sectors for protected + ; mode code/data + mov ax, word [KERNEL_NOF_PROTECTED_MODE_SECTORS] + dec ax + mov word [KERNEL_NOF_PROTECTED_MODE_SECTORS], ax + cmp ax, 0 + je .last_protected_mode_sector_read + jmp advance_to_next_sector +.last_protected_mode_sector_read: + mov [READ_STATE], byte STATE_READ_METADATA + mov [KERNEL_STATE], byte STATE_KERNEL_FINISHED + jmp advance_to_next_sector + +; STATE: STATE_READ_INITRD +handle_read_initrd: + ; move ramdisk data from 0x09000 (our disk read scratch space + ; in low memory to high memory 0xaaaa0000 + mov ax, ds + mov es, ax + mov esi, 0x09000 + + mov edi, dword [READ_DESTINATION_PTR] + mov ecx, 512 + cld + a32 rep movsb + mov [READ_DESTINATION_PTR], edi + + mov ax, word [READ_DATA_SECTORS] + dec ax + mov word [READ_DATA_SECTORS], ax + cmp ax, 0 + je .data_end + jmp .nothing_todo +.data_end: + mov [READ_STATE], byte STATE_READ_METADATA + jmp advance_to_next_sector + +.nothing_todo: + +advance_to_next_sector: + add [CURRENT_SECTOR], byte 1 ; next sector + mov ch, [SECTORS_PER_CYLINDER] + cmp [CURRENT_SECTOR], ch ; after the end of the current track? + je .next_head + jmp read_next_sector + +.next_head: + shr bx, 4 ; make it a segment offset.. + mov ax, es + add ax, bx + mov es, ax ; ..and add it to ES + mov bx, 0x0 ; we also reset bx and update es to avoid hitting the 64k wrap around point + mov [CURRENT_SECTOR], byte 1 ; start from first sector again + add [CURRENT_HEAD], byte 1 ; advance head + mov ch, [NOF_HEADS] + cmp [CURRENT_HEAD], ch ; after the number of heads? + je .next_track + jmp read_next_sector + +.next_track: + mov [CURRENT_HEAD], byte 0 ; start from head 0 again + add [CURRENT_CYLINDER], byte 1 ; advance track + ; TODO depends on boot parameters (the floppy media, add a table) + cmp [CURRENT_CYLINDER], byte 80 + jae .next_floppy + jmp read_next_sector + +.next_floppy: + call kill_motor + mov si, NL + call print_string + mov si, MESSAGE_NEXT_FLOPPY + call print_string + call wait_for_keypress + call reset_drive + ; TODO: check for floppy disk change (is there a BIOS function for this?) + ; TODO: maybe also check some checksum or so of the floppy data and see + ; if we indeed have a new floppy + mov [CURRENT_SECTOR], byte 0 ; will be incremented at advance_to_next_sector + mov [CURRENT_HEAD], byte 0 + mov [CURRENT_CYLINDER], byte 0 + jmp advance_to_next_sector + +finished_reading: + ; make sure the floppy is not spinnig (also in print_error) + call kill_motor + +start_kernel: + + ; set ramdisk + a32 mov eax, [INITRD_ADDRESS] ; ramdisk size in bytes + a32 mov [0x10000+0x218], eax + mov si, MESSAGE_INITRD_ADDRESS + call print_string + a32 mov eax, [INITRD_ADDRESS] + call print_hex_dword + mov si, NL + call print_string + a32 mov eax, [INITRD_SIZE] ; ramdisk address in bytes + a32 mov [0x10000+0x21c], eax + mov si, MESSAGE_INITRD_SIZE + call print_string + a32 mov eax, [INITRD_SIZE] + call print_hex_dword + mov si, NL + call print_string + + ; TODO: check if we actually do have reached the KERNEL_FINISHED state + mov si, MESSAGE_BOOTING_KERNEL + call print_string + + ; set up segments for running the real mode kernel + cli + mov ax, 0x1000 + mov ds, ax + mov es, ax + mov fs, ax + mov gs, ax + mov ss, ax + mov sp, 0xe000 + + ; jump to kernel real mode entry + jmp 0x1020:0 + +; we should not return here, rather the machine will reset, hang or kernel will OUPS, +; just in case, restore segments and print an error message just in case it happens.. + mov ax, CODE_DATA_SEGMENT + mov ds, ax + mov es, ax + mov fs, ax + mov gs, ax + mov ss, ax + mov sp, 0x7c00 + + mov si, ERR_KERN + mov ax, 0x01 + call print_error + +; allow rebooting if something goes sour in the kernel +reboot: + mov si, MESSAGE_REBOOT + call print_string + + call wait_for_keypress + +; reboot (cannot use jmp here) + db 0xea + dw 0x0000 + dw 0xFFFF + +; endless loop if reboot fails + jmp $ + +; wait for key to be pressed +wait_for_keypress: + push ax + xor ax, ax + int 0x16 + pop ax + ret + +; GDT global descriptor table + +gdt_start: + +; mandatory null entry +gdt_null: + dd 0x0 + dd 0x0 + +; on big unreal segment, code and data are in the same unprotected segment +gdt_code_data: + dw 0xffff ; limit (bits 0-15) + dw 0x0 ; base (bits 0-15) + db 0x0 ; base (bits 16-23) + db 10010010b ; flags + db 11001111b ; flags, limit (bits 16-19) + db 0x0 ; base (bit 24-31) + +gdt_end: + +gdt_descriptor: + dw gdt_end - gdt_start - 1 ; size + dd gdt_start ; start address of the GDT + +; constants representing the segment bases +CODE_DATA_SEGMENT equ gdt_code_data - gdt_start + +check_and_enable_A20: + call check_A20_enabled + cmp ax, 1 + je A20_ENABLED + +A20_FAST_SPECIAL_PORT: + + mov al, 'F' + call print_char + + in al, 0x92 + or al, 2 + out 0x92, al + + call check_A20_enabled + cmp ax, 1 + je A20_ENABLED + +A20_ENABLE_KBD_PORT: + mov al, 'K' + call print_char + mov al, 0xdd + out 0x64, al + + call check_A20_enabled + cmp ax, 1 + je A20_ENABLED + +A20_ENABLE_VIA_BIOS: + mov al, 'B' + call print_char + mov ax, 0x2401 + int 0x15 + + call check_A20_enabled + cmp ax, 1 + +A20_ENABLE_KBD_OUT: + + mov al, 'k' + call print_char + + cli ; disable interrupts, we talk directly to the keyboard ports + + call .wait_input + mov al,0xAD + out 0x64,al ; disable keyboard + call .wait_input + + mov al,0xD0 + out 0x64,al ; tell controller to read output port + call .wait_output + + in al,0x60 + push eax ; get output port data and store it + call .wait_input + + mov al,0xD1 + out 0x64,al ; tell controller to write output port + call .wait_input + + pop eax + or al,2 ; set bit 1 (enable a20) + out 0x60,al ; write out data back to the output port + + call .wait_input + mov al,0xAE ; enable keyboard + out 0x64,al + + call .wait_input + + sti + + jmp .retest + +; wait for input buffer to be clear +.wait_input: + in al,0x64 + test al,2 + jnz .wait_input + ret + +; wait for output buffer to be clear +.wait_output: + in al,0x64 + test al,1 + jz .wait_output + ret + +.retest: + call check_A20_enabled + cmp ax, 1 + je A20_ENABLED + +A20_ENABLED: + ret + +; returns 0 if not A20_ENABLED, 1 if A20_ENABLED in AX +check_A20_enabled: + pushf + push ds + push es + push di + push si + + cli + + xor ax, ax + mov es, ax + mov di, 0x0500 ; es:di = 0000:0500 + + mov ax, 0xffff + mov ds, ax + mov si, 0x0510 ; ds:si = ffff:0510 + + mov al, byte [es:di] ; preserve values in memory + push ax ; on stack + mov al, byte [ds:si] + push ax + + mov byte [es:di], 0x00 ; now the test: write 0x00 to 0000:0500 + mov byte [ds:si], 0xFF ; write 0xff to ffff:0510 + + cmp byte [es:di], 0xFF ; memory wrap? A20 not enabled + je .disabled + jmp .enabled + +.restore: + pop bx ; restore original memory contents + mov byte [ds:si], bl + pop bx + mov byte [es:di], bl + jmp .exit + +.enabled: + mov al, '+' + call print_char + mov ax, 1 ; not wrapped around + jmp .restore + +.disabled: + mov al, '-' + call print_char + mov ax, 0 ; wrapped around (last cmp) + jmp .restore + +.exit: + pop si + pop di + pop es + pop ds + popf + + ret + +; Read one sector from floppy using CHS adressing +read_one_sector_from_disk: + + mov ah, 0x02 ; read sectors from drive + mov al, 1 ; read 1 sector + mov ch, BYTE [CURRENT_CYLINDER] + mov dh, BYTE [CURRENT_HEAD] + mov dl, BYTE [BOOT_DRIVE] + mov cl, BYTE [CURRENT_SECTOR] + mov BYTE [CURRENT_RETRIES], 0 + + int 0x13 + + jc .read_error + + cmp al, 1 ; 1 sector read? + jne .short_read ; if not, short read + + ret + +.read_error: + cmp BYTE [CURRENT_RETRIES], 3 + jl .read_again + jmp .print_error +.read_again: + dec BYTE [CURRENT_RETRIES] + call reset_drive + jmp read_one_sector_from_disk + +.print_error: + ;~ xor ax, ax + ;~ mov dh, 0 + ;~ mov dl, ah + mov di, ERR_DISK + call print_error + +.short_read: + mov di, ERR_DISK + call print_string + +; IN al: character to print if printable, dot otherwise +; MOD ah +print_dump_char: + cmp byte al, 0x20 ; space + jl .print_dot + test byte al, al ; above 0x7f ~ + js .print_dot + call print_char + jmp .done +.print_dot: + mov al, 0x2e ; . + call print_char +.done: + ret + +; print a dump of 512 bytes in memory (a sector) for debugging purposes +; IN: es base address (as segment) where to start printing +print_memory: + xor bx, bx +.next_line: + xor cx, cx + mov ax, es + and ax, 0xFF00 + shr ax, 8 + call print_hex + mov ax, es + and ax, 0x00FF + call print_hex + xor ax, ax + mov ah, ':' + call print_char + mov al, bh + call print_hex + mov al, bl + call print_hex + mov si, DUMP_SEP + call print_string +.next_byte: + mov al, [es:bx] + call print_hex + mov si, SPACE + call print_string + inc bx + inc cx + cmp cx, 8 + je .gap + jmp .after_gap +.gap: + mov si, SPACE + call print_string +.after_gap: + cmp cx, 16 + jne .next_byte +.print_chars: + xor cx, cx + sub bx, 16 +.next_char: + mov al, [es:bx] + call print_dump_char + inc bx + inc cx + cmp cx, 16 + jne .next_char +.newline: + mov si, NL + call print_string + cmp bx, 256 + je .wait + jmp .cont +.wait: + mov si, MESSAGE_PRESS_KEY_TO_CONTINUE + call print_string + call wait_for_keypress +.cont: + cmp bx, 512 + jne .next_line + ret + +DUMP_SEP: + db ": ", 0 + +; compare strings +; IN: si, di: start of two zero terminated strings +; OUT: ax <0 si < di, >0 si > di; =0 si = di +; CLOBBERS: si, di +strcmp: + push dx +.loop: + a32 mov dl, [esi] + a32 mov dh, [edi] + cmp dh, $0 + je .done + cmp dl, $0 + je .done + cmp dh, dl + jne .done + inc si + inc di + jmp .loop +.done: + xor ax, ax + mov al, byte dh + sub al, byte dl +.end: + pop dx + ret + +; compare strings up to a maximal number of characters +; IN: si, di: start of two zero terminated strings, bx: number of chars +; OUT: ax <0 si < di, >0 si > di; =0 si = di +; CLOBBERS: si, di, bx +strncmp: + push dx +.loop: + a32 mov dl, [esi] + a32 mov dh, [edi] + cmp dh, $0 + je .done + cmp dl, $0 + je .done + cmp dh, dl + jne .done + inc si + inc di + dec bx + jz .done + jmp .loop +.done: + xor ax, ax + mov al, byte dh + sub al, byte dl +.end: + pop dx + ret + +; convert octal string to integer +; IN: si, cx: pointer to the string and length of the string +; OUT: eax: converted integer +; clobbers: ebx +octal_string_to_int: + xor ebx, ebx +.next: + movzx eax, byte [esi] + inc esi + sub al, '0' ; assuming ASCII + shl ebx, 3 ; octal, multiply by 8 + add ebx, eax ; add current digit + loop .next ; cx-- + mov eax, ebx + ret + +MESSAGE_CHECKING_A20: + db "Checking A20 address gate.. ", 0 + +MESSAGE_ENABLED: + db " enabled", 13, 10, 0 + +MESSAGE_DISABLED: + db " disabled", 13, 10, 0 + +MESSAGE_SWITCHING_TO_UNREAL_MODE: + db "Switching to unreal mode..", 0 + +MESSAGE_DRIVE_PARAMETERS: + db "Boot parameters ", 0 + +MESSAGE_EOF_REACHED: + db "Reached end of tar file..", 13, 10, 0 + +MESSAGE_BOOTING_KERNEL: + db "Booting kernel..", 13, 10, 0 + +MESSAGE_REBOOT: + db "Press any key for rebooting..", 13, 10, 0 + +MESSAGE_NEXT_FLOPPY: + db "Insert next floppy and press any key to continue..", 13, 10, 0 + +MESSAGE_PRESS_KEY_TO_CONTINUE: + db "Press any key to continue..", 13, 10, 0 + +MESSAGE_KERNEL_NOF_REAL_SECTORS: + db "Number of real-mode kernel sectors: ", 0 + +MESSAGE_KERNEL_NOF_PROTECTED_SECTORS: + db "Number of protected-mode kernel sectors: ", 0 + +MESSAGE_KERNEL_BOOT_PROTOCOL: + db "Linux boot protocol version: ", 0 + +MESSAGE_KERNEL_VERSION: + db "Linux kernel version: ", 0 + +MESSAGE_INITRD_ADDRESS: + db "Ramdisk address: ", 0 + +MESSAGE_INITRD_SIZE: + db "Ramdisk size: ", 0 + +ERR_A20: + db "A20 ", 0 + +ERR_DISK: + db "DISK ", 0 + +ERR_KERN: + db "KERN ", 0 + +USTAR_MAGIC: + db "ustar", 0 + +KERNEL_MAGIC: + db 'HdrS', 0 + +; data sections used for reading from floppy, default to some sane values +; get probed and filled in during floppy drive probing +FLOPPY_TYPE: + db 0x00 ; drive type, usually 0x04 after probing for 3 1/4" 1.44MB + +SECTORS_PER_CYLINDER: + db 0x3F ; detect parameters enters the correct value here (sectors + 1) + ; if detection fails, force int13 to read ahead +NOF_HEADS: + db 0x01 ; number of heads + 1 + +; read route reads and updates those values while reading from floppy +CURRENT_SECTOR: + db 1 + +CURRENT_CYLINDER: + db 0 + +CURRENT_HEAD: + db 0 + +CURRENT_RETRIES: + db 0 + +FILE_BZIMAGE: + db "bzImage", 0 + +FILE_RAMDISK: + db "ramdisk.img", 0 + +FILE_EOF: + db "EOF", 0 + +READ_STATE: + db STATE_READ_METADATA + +READ_DATA_SECTORS: + dd 0 + +READ_DESTINATION_PTR: + dd 0x10000 + +READ_DATA_SIZE: + dd 0 + +KERNEL_STATE: + db STATE_KERNEL_READ_SECTOR_0 + +KERNEL_NOF_REAL_MODE_SECTORS: + db 0 + +KERNEL_NOF_PROTECTED_MODE_SECTORS: + dw 0 + +KERNEL_CMD_LINE: + db "debug loglevel=7 earlycon=uart8250,io,0x3f8,9600n8 console=tty0 console=ttyS0,9600n8 rdinit=/sbin/init root=/dev/ram0 iommu=off", 0 + +KERNEL_CMD_SIZE equ $-KERNEL_CMD_LINE + +KERNEL_BOOT_PROTOCOL_MAJOR: + db 0 + +KERNEL_BOOT_PROTOCOL_MINOR: + db 0 + +KERNEL_VERSION_PTR: + dw 0 + +INITRD_ADDRESS: + dd 0 + +INITRD_SIZE: + dd 0 + +; make sure we have full sectors +times (NOF_SECTORS_STAGE2+1)*512-($-$$) db 0 diff --git a/floppy/build.sh b/floppy/build.sh new file mode 100755 index 0000000..d8bc7c9 --- /dev/null +++ b/floppy/build.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +nasm -o boot.img boot.asm +if test $? -ne 0; then + exit 1 +fi +stat -c "%n: %s" boot.img +stat -c "%n: %s" bzImage +stat -c "%n: %s" ramdisk.img +touch EOF +stat -c "%n: %s" EOF +tar -cvf data.tar -b1 bzImage ramdisk.img EOF +cat boot.img data.tar > floppy.img +stat -c "%n %s" floppy.img + +tcc -lbsd -Og -g -Wall -o lstar lstar.c +./lstar floppy.img +split -b 1474560 floppy.img +mv xaa floppy1.img +mv xab floppy2.img + +#qemu-system-i386 -no-reboot -boot c -cpu 486 -m 32M -drive "file=floppy1.img,if=none,format=raw,id=drive1" -device floppy,drive-type=144,drive=drive1 -drive "file=floppy2.img,if=none,format=raw,id=drive2" -device floppy,drive-type=144,drive=drive2 -nographic && reset +#qemu-system-i386 -cpu 486 -m 32M -drive "file=floppy1.img,if=floppy,format=raw,drive-type=144" +#bochs -q -f bochs.config 'boot:floppy' 'floppya: 1_44=boot.img, status=inserted' diff --git a/floppy/configs/busybox-i486-config2 b/floppy/configs/busybox-i486-config2 new file mode 100644 index 0000000..d9dd284 --- /dev/null +++ b/floppy/configs/busybox-i486-config2 @@ -0,0 +1,1210 @@ +# +# Automatically generated make config: don't edit +# Busybox version: 1.33.1 +# +CONFIG_HAVE_DOT_CONFIG=y + +# +# Settings +# +CONFIG_DESKTOP=y +# CONFIG_EXTRA_COMPAT is not set +# CONFIG_FEDORA_COMPAT is not set +CONFIG_INCLUDE_SUSv2=y +CONFIG_LONG_OPTS=y +CONFIG_SHOW_USAGE=y +CONFIG_FEATURE_VERBOSE_USAGE=y +CONFIG_FEATURE_COMPRESS_USAGE=y +CONFIG_LFS=y +# CONFIG_PAM is not set +CONFIG_FEATURE_DEVPTS=y +# CONFIG_FEATURE_UTMP is not set +# CONFIG_FEATURE_WTMP is not set +CONFIG_FEATURE_PIDFILE=y +CONFIG_PID_FILE_PATH="/run" +CONFIG_BUSYBOX=y +# CONFIG_FEATURE_SHOW_SCRIPT is not set +CONFIG_FEATURE_INSTALLER=y +# CONFIG_INSTALL_NO_USR is not set +CONFIG_FEATURE_SUID=y +CONFIG_FEATURE_SUID_CONFIG=y +CONFIG_FEATURE_SUID_CONFIG_QUIET=y +CONFIG_FEATURE_PREFER_APPLETS=y +CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe" +# CONFIG_SELINUX is not set +# CONFIG_FEATURE_CLEAN_UP is not set +CONFIG_FEATURE_SYSLOG_INFO=y +CONFIG_FEATURE_SYSLOG=y + +# +# Build Options +# +CONFIG_STATIC=y +# CONFIG_PIE is not set +# CONFIG_NOMMU is not set +# CONFIG_BUILD_LIBBUSYBOX is not set +# CONFIG_FEATURE_LIBBUSYBOX_STATIC is not set +# CONFIG_FEATURE_INDIVIDUAL is not set +# CONFIG_FEATURE_SHARED_BUSYBOX is not set +CONFIG_CROSS_COMPILER_PREFIX="" +CONFIG_SYSROOT="" +CONFIG_EXTRA_CFLAGS="" +CONFIG_EXTRA_LDFLAGS="" +CONFIG_EXTRA_LDLIBS="" +# CONFIG_USE_PORTABLE_CODE is not set +CONFIG_STACK_OPTIMIZATION_386=y +CONFIG_STATIC_LIBGCC=y + +# +# Installation Options ("make install" behavior) +# +# CONFIG_INSTALL_APPLET_SYMLINKS is not set +# CONFIG_INSTALL_APPLET_HARDLINKS is not set +# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set +CONFIG_INSTALL_APPLET_DONT=y +# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set +# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set +# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set +CONFIG_PREFIX="./_install" + +# +# Debugging Options +# +# CONFIG_DEBUG is not set +# CONFIG_DEBUG_PESSIMIZE is not set +# CONFIG_DEBUG_SANITIZE is not set +# CONFIG_UNIT_TEST is not set +# CONFIG_WERROR is not set +# CONFIG_WARN_SIMPLE_MSG is not set +CONFIG_NO_DEBUG_LIB=y +# CONFIG_DMALLOC is not set +# CONFIG_EFENCE is not set + +# +# Library Tuning +# +# CONFIG_FEATURE_USE_BSS_TAIL is not set +CONFIG_FLOAT_DURATION=y +CONFIG_FEATURE_RTMINMAX=y +CONFIG_FEATURE_RTMINMAX_USE_LIBC_DEFINITIONS=y +CONFIG_FEATURE_BUFFERS_USE_MALLOC=y +# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set +# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set +CONFIG_PASSWORD_MINLEN=6 +CONFIG_MD5_SMALL=1 +CONFIG_SHA3_SMALL=0 +CONFIG_FEATURE_FAST_TOP=y +# CONFIG_FEATURE_ETC_NETWORKS is not set +# CONFIG_FEATURE_ETC_SERVICES is not set +CONFIG_FEATURE_EDITING=y +CONFIG_FEATURE_EDITING_MAX_LEN=1024 +CONFIG_FEATURE_EDITING_VI=y +CONFIG_FEATURE_EDITING_HISTORY=255 +CONFIG_FEATURE_EDITING_SAVEHISTORY=y +CONFIG_FEATURE_EDITING_SAVE_ON_EXIT=y +CONFIG_FEATURE_REVERSE_SEARCH=y +CONFIG_FEATURE_TAB_COMPLETION=y +CONFIG_FEATURE_USERNAME_COMPLETION=y +CONFIG_FEATURE_EDITING_FANCY_PROMPT=y +CONFIG_FEATURE_EDITING_WINCH=y +# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set +CONFIG_LOCALE_SUPPORT=y +CONFIG_UNICODE_SUPPORT=y +CONFIG_UNICODE_USING_LOCALE=y +# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set +CONFIG_SUBST_WCHAR=63 +CONFIG_LAST_SUPPORTED_WCHAR=767 +# CONFIG_UNICODE_COMBINING_WCHARS is not set +# CONFIG_UNICODE_WIDE_WCHARS is not set +# CONFIG_UNICODE_BIDI_SUPPORT is not set +# CONFIG_UNICODE_NEUTRAL_TABLE is not set +# CONFIG_UNICODE_PRESERVE_BROKEN is not set +# CONFIG_FEATURE_NON_POSIX_CP is not set +# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set +CONFIG_FEATURE_USE_SENDFILE=y +CONFIG_FEATURE_COPYBUF_KB=4 +CONFIG_FEATURE_SKIP_ROOTFS=y +# CONFIG_MONOTONIC_SYSCALL is not set +CONFIG_IOCTL_HEX2STR_ERROR=y +CONFIG_FEATURE_HWIB=y + +# +# Applets +# + +# +# Archival Utilities +# +CONFIG_FEATURE_SEAMLESS_XZ=y +CONFIG_FEATURE_SEAMLESS_LZMA=y +CONFIG_FEATURE_SEAMLESS_BZ2=y +CONFIG_FEATURE_SEAMLESS_GZ=y +CONFIG_FEATURE_SEAMLESS_Z=y +CONFIG_AR=y +CONFIG_FEATURE_AR_LONG_FILENAMES=y +CONFIG_FEATURE_AR_CREATE=y +CONFIG_UNCOMPRESS=y +CONFIG_GUNZIP=y +CONFIG_ZCAT=y +CONFIG_FEATURE_GUNZIP_LONG_OPTIONS=y +CONFIG_BUNZIP2=y +CONFIG_BZCAT=y +CONFIG_UNLZMA=y +CONFIG_LZCAT=y +CONFIG_LZMA=y +CONFIG_UNXZ=y +CONFIG_XZCAT=y +CONFIG_XZ=y +CONFIG_BZIP2=y +CONFIG_BZIP2_SMALL=8 +CONFIG_FEATURE_BZIP2_DECOMPRESS=y +CONFIG_CPIO=y +CONFIG_FEATURE_CPIO_O=y +# CONFIG_FEATURE_CPIO_P is not set +# CONFIG_DPKG is not set +# CONFIG_DPKG_DEB is not set +CONFIG_GZIP=y +# CONFIG_FEATURE_GZIP_LONG_OPTIONS is not set +CONFIG_GZIP_FAST=0 +CONFIG_FEATURE_GZIP_LEVELS=y +CONFIG_FEATURE_GZIP_DECOMPRESS=y +# CONFIG_LZOP is not set +CONFIG_UNLZOP=y +CONFIG_LZOPCAT=y +# CONFIG_LZOP_COMPR_HIGH is not set +# CONFIG_RPM is not set +CONFIG_RPM2CPIO=y +CONFIG_TAR=y +CONFIG_FEATURE_TAR_LONG_OPTIONS=y +CONFIG_FEATURE_TAR_CREATE=y +CONFIG_FEATURE_TAR_AUTODETECT=y +CONFIG_FEATURE_TAR_FROM=y +CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y +CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY=y +CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y +CONFIG_FEATURE_TAR_TO_COMMAND=y +CONFIG_FEATURE_TAR_UNAME_GNAME=y +# CONFIG_FEATURE_TAR_NOPRESERVE_TIME is not set +# CONFIG_FEATURE_TAR_SELINUX is not set +CONFIG_UNZIP=y +CONFIG_FEATURE_UNZIP_CDF=y +CONFIG_FEATURE_UNZIP_BZIP2=y +CONFIG_FEATURE_UNZIP_LZMA=y +CONFIG_FEATURE_UNZIP_XZ=y +CONFIG_FEATURE_LZMA_FAST=y + +# +# Coreutils +# +CONFIG_BASENAME=y +CONFIG_CAT=y +CONFIG_FEATURE_CATN=y +CONFIG_FEATURE_CATV=y +CONFIG_CHGRP=y +CONFIG_CHMOD=y +CONFIG_CHOWN=y +CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y +CONFIG_CHROOT=y +CONFIG_CKSUM=y +CONFIG_CRC32=y +CONFIG_COMM=y +CONFIG_CP=y +CONFIG_FEATURE_CP_LONG_OPTIONS=y +CONFIG_FEATURE_CP_REFLINK=y +CONFIG_CUT=y +CONFIG_FEATURE_CUT_REGEX=y +CONFIG_DATE=y +CONFIG_FEATURE_DATE_ISOFMT=y +# CONFIG_FEATURE_DATE_NANO is not set +CONFIG_FEATURE_DATE_COMPAT=y +CONFIG_DD=y +CONFIG_FEATURE_DD_SIGNAL_HANDLING=y +CONFIG_FEATURE_DD_THIRD_STATUS_LINE=y +CONFIG_FEATURE_DD_IBS_OBS=y +CONFIG_FEATURE_DD_STATUS=y +CONFIG_DF=y +CONFIG_FEATURE_DF_FANCY=y +CONFIG_DIRNAME=y +CONFIG_DOS2UNIX=y +CONFIG_UNIX2DOS=y +CONFIG_DU=y +CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y +CONFIG_ECHO=y +CONFIG_FEATURE_FANCY_ECHO=y +CONFIG_ENV=y +CONFIG_EXPAND=y +CONFIG_UNEXPAND=y +CONFIG_EXPR=y +CONFIG_EXPR_MATH_SUPPORT_64=y +CONFIG_FACTOR=y +CONFIG_FALSE=y +CONFIG_FOLD=y +CONFIG_HEAD=y +CONFIG_FEATURE_FANCY_HEAD=y +CONFIG_HOSTID=y +CONFIG_ID=y +CONFIG_GROUPS=y +CONFIG_INSTALL=y +CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y +CONFIG_LINK=y +CONFIG_LN=y +CONFIG_LOGNAME=y +CONFIG_LS=y +CONFIG_FEATURE_LS_FILETYPES=y +CONFIG_FEATURE_LS_FOLLOWLINKS=y +CONFIG_FEATURE_LS_RECURSIVE=y +CONFIG_FEATURE_LS_WIDTH=y +CONFIG_FEATURE_LS_SORTFILES=y +CONFIG_FEATURE_LS_TIMESTAMPS=y +CONFIG_FEATURE_LS_USERNAME=y +CONFIG_FEATURE_LS_COLOR=y +CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y +CONFIG_MD5SUM=y +CONFIG_SHA1SUM=y +CONFIG_SHA256SUM=y +CONFIG_SHA512SUM=y +CONFIG_SHA3SUM=y + +# +# Common options for md5sum, sha1sum, sha256sum, sha512sum, sha3sum +# +CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y +CONFIG_MKDIR=y +CONFIG_MKFIFO=y +CONFIG_MKNOD=y +CONFIG_MKTEMP=y +CONFIG_MV=y +CONFIG_NICE=y +CONFIG_NL=y +CONFIG_NOHUP=y +CONFIG_NPROC=y +CONFIG_OD=y +CONFIG_PASTE=y +CONFIG_PRINTENV=y +CONFIG_PRINTF=y +CONFIG_PWD=y +CONFIG_READLINK=y +CONFIG_FEATURE_READLINK_FOLLOW=y +CONFIG_REALPATH=y +CONFIG_RM=y +CONFIG_RMDIR=y +CONFIG_SEQ=y +CONFIG_SHRED=y +CONFIG_SHUF=y +CONFIG_SLEEP=y +CONFIG_FEATURE_FANCY_SLEEP=y +CONFIG_SORT=y +CONFIG_FEATURE_SORT_BIG=y +# CONFIG_FEATURE_SORT_OPTIMIZE_MEMORY is not set +CONFIG_SPLIT=y +CONFIG_FEATURE_SPLIT_FANCY=y +CONFIG_STAT=y +CONFIG_FEATURE_STAT_FORMAT=y +CONFIG_FEATURE_STAT_FILESYSTEM=y +CONFIG_STTY=y +CONFIG_SUM=y +CONFIG_SYNC=y +CONFIG_FEATURE_SYNC_FANCY=y +CONFIG_FSYNC=y +CONFIG_TAC=y +CONFIG_TAIL=y +CONFIG_FEATURE_FANCY_TAIL=y +CONFIG_TEE=y +CONFIG_FEATURE_TEE_USE_BLOCK_IO=y +CONFIG_TEST=y +CONFIG_TEST1=y +CONFIG_TEST2=y +CONFIG_FEATURE_TEST_64=y +CONFIG_TIMEOUT=y +CONFIG_TOUCH=y +CONFIG_FEATURE_TOUCH_NODEREF=y +CONFIG_FEATURE_TOUCH_SUSV3=y +CONFIG_TR=y +CONFIG_FEATURE_TR_CLASSES=y +CONFIG_FEATURE_TR_EQUIV=y +CONFIG_TRUE=y +CONFIG_TRUNCATE=y +CONFIG_TTY=y +CONFIG_UNAME=y +CONFIG_UNAME_OSNAME="GNU/Linux" +CONFIG_BB_ARCH=y +CONFIG_UNIQ=y +CONFIG_UNLINK=y +CONFIG_USLEEP=y +CONFIG_UUDECODE=y +CONFIG_BASE32=y +CONFIG_BASE64=y +CONFIG_UUENCODE=y +CONFIG_WC=y +CONFIG_FEATURE_WC_LARGE=y +# CONFIG_WHO is not set +# CONFIG_W is not set +# CONFIG_USERS is not set +CONFIG_WHOAMI=y +CONFIG_YES=y + +# +# Common options +# +CONFIG_FEATURE_VERBOSE=y + +# +# Common options for cp and mv +# +CONFIG_FEATURE_PRESERVE_HARDLINKS=y + +# +# Common options for df, du, ls +# +CONFIG_FEATURE_HUMAN_READABLE=y + +# +# Console Utilities +# +CONFIG_CHVT=y +CONFIG_CLEAR=y +CONFIG_DEALLOCVT=y +CONFIG_DUMPKMAP=y +CONFIG_FGCONSOLE=y +CONFIG_KBD_MODE=y +CONFIG_LOADFONT=y +CONFIG_SETFONT=y +# CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set +CONFIG_DEFAULT_SETFONT_DIR="" + +# +# Common options for loadfont and setfont +# +CONFIG_FEATURE_LOADFONT_PSF2=y +CONFIG_FEATURE_LOADFONT_RAW=y +CONFIG_LOADKMAP=y +CONFIG_OPENVT=y +CONFIG_RESET=y +CONFIG_RESIZE=y +CONFIG_FEATURE_RESIZE_PRINT=y +CONFIG_SETCONSOLE=y +CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS=y +CONFIG_SETKEYCODES=y +CONFIG_SETLOGCONS=y +CONFIG_SHOWKEY=y + +# +# Debian Utilities +# +CONFIG_PIPE_PROGRESS=y +CONFIG_RUN_PARTS=y +CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y +CONFIG_FEATURE_RUN_PARTS_FANCY=y +CONFIG_START_STOP_DAEMON=y +CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y +CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y +CONFIG_WHICH=y + +# +# klibc-utils +# +# CONFIG_MINIPS is not set +# CONFIG_NUKE is not set +CONFIG_RESUME=y +CONFIG_RUN_INIT=y + +# +# Editors +# +CONFIG_AWK=y +CONFIG_FEATURE_AWK_LIBM=y +CONFIG_FEATURE_AWK_GNU_EXTENSIONS=y +CONFIG_CMP=y +CONFIG_DIFF=y +CONFIG_FEATURE_DIFF_LONG_OPTIONS=y +CONFIG_FEATURE_DIFF_DIR=y +CONFIG_ED=y +CONFIG_PATCH=y +CONFIG_SED=y +CONFIG_VI=y +CONFIG_FEATURE_VI_MAX_LEN=4096 +# CONFIG_FEATURE_VI_8BIT is not set +CONFIG_FEATURE_VI_COLON=y +CONFIG_FEATURE_VI_COLON_EXPAND=y +CONFIG_FEATURE_VI_YANKMARK=y +CONFIG_FEATURE_VI_SEARCH=y +# CONFIG_FEATURE_VI_REGEX_SEARCH is not set +CONFIG_FEATURE_VI_USE_SIGNALS=y +CONFIG_FEATURE_VI_DOT_CMD=y +CONFIG_FEATURE_VI_READONLY=y +CONFIG_FEATURE_VI_SETOPTS=y +CONFIG_FEATURE_VI_SET=y +CONFIG_FEATURE_VI_WIN_RESIZE=y +CONFIG_FEATURE_VI_ASK_TERMINAL=y +CONFIG_FEATURE_VI_UNDO=y +CONFIG_FEATURE_VI_UNDO_QUEUE=y +CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=256 +CONFIG_FEATURE_VI_VERBOSE_STATUS=y +CONFIG_FEATURE_ALLOW_EXEC=y + +# +# Finding Utilities +# +CONFIG_FIND=y +CONFIG_FEATURE_FIND_PRINT0=y +CONFIG_FEATURE_FIND_MTIME=y +CONFIG_FEATURE_FIND_MMIN=y +CONFIG_FEATURE_FIND_PERM=y +CONFIG_FEATURE_FIND_TYPE=y +CONFIG_FEATURE_FIND_EXECUTABLE=y +CONFIG_FEATURE_FIND_XDEV=y +CONFIG_FEATURE_FIND_MAXDEPTH=y +CONFIG_FEATURE_FIND_NEWER=y +CONFIG_FEATURE_FIND_INUM=y +CONFIG_FEATURE_FIND_EXEC=y +CONFIG_FEATURE_FIND_EXEC_PLUS=y +CONFIG_FEATURE_FIND_USER=y +CONFIG_FEATURE_FIND_GROUP=y +CONFIG_FEATURE_FIND_NOT=y +CONFIG_FEATURE_FIND_DEPTH=y +CONFIG_FEATURE_FIND_PAREN=y +CONFIG_FEATURE_FIND_SIZE=y +CONFIG_FEATURE_FIND_PRUNE=y +CONFIG_FEATURE_FIND_QUIT=y +CONFIG_FEATURE_FIND_DELETE=y +CONFIG_FEATURE_FIND_EMPTY=y +CONFIG_FEATURE_FIND_PATH=y +CONFIG_FEATURE_FIND_REGEX=y +# CONFIG_FEATURE_FIND_CONTEXT is not set +CONFIG_FEATURE_FIND_LINKS=y +CONFIG_GREP=y +CONFIG_EGREP=y +CONFIG_FGREP=y +CONFIG_FEATURE_GREP_CONTEXT=y +CONFIG_XARGS=y +CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y +CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y +CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y +CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y +CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR=y +CONFIG_FEATURE_XARGS_SUPPORT_PARALLEL=y +CONFIG_FEATURE_XARGS_SUPPORT_ARGS_FILE=y + +# +# Init Utilities +# +CONFIG_BOOTCHARTD=y +CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER=y +CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE=y +CONFIG_HALT=y +CONFIG_POWEROFF=y +CONFIG_REBOOT=y +# CONFIG_FEATURE_WAIT_FOR_INIT is not set +# CONFIG_FEATURE_CALL_TELINIT is not set +CONFIG_TELINIT_PATH="" +CONFIG_INIT=y +CONFIG_LINUXRC=y +CONFIG_FEATURE_USE_INITTAB=y +# CONFIG_FEATURE_KILL_REMOVED is not set +CONFIG_FEATURE_KILL_DELAY=0 +CONFIG_FEATURE_INIT_SCTTY=y +# CONFIG_FEATURE_INIT_SYSLOG is not set +CONFIG_FEATURE_INIT_QUIET=y +CONFIG_FEATURE_INIT_COREDUMPS=y +CONFIG_INIT_TERMINAL_TYPE="linux" +CONFIG_FEATURE_INIT_MODIFY_CMDLINE=y + +# +# Login/Password Management Utilities +# +CONFIG_FEATURE_SHADOWPASSWDS=y +CONFIG_USE_BB_PWD_GRP=y +CONFIG_USE_BB_SHADOW=y +CONFIG_USE_BB_CRYPT=y +CONFIG_USE_BB_CRYPT_SHA=y +# CONFIG_ADD_SHELL is not set +# CONFIG_REMOVE_SHELL is not set +CONFIG_ADDGROUP=y +CONFIG_FEATURE_ADDUSER_TO_GROUP=y +CONFIG_ADDUSER=y +CONFIG_FEATURE_CHECK_NAMES=y +CONFIG_LAST_ID=60000 +CONFIG_FIRST_SYSTEM_ID=100 +CONFIG_LAST_SYSTEM_ID=999 +CONFIG_CHPASSWD=y +CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="des" +CONFIG_CRYPTPW=y +CONFIG_MKPASSWD=y +CONFIG_DELUSER=y +CONFIG_DELGROUP=y +CONFIG_FEATURE_DEL_USER_FROM_GROUP=y +CONFIG_GETTY=y +CONFIG_LOGIN=y +# CONFIG_LOGIN_SESSION_AS_CHILD is not set +CONFIG_LOGIN_SCRIPTS=y +CONFIG_FEATURE_NOLOGIN=y +CONFIG_FEATURE_SECURETTY=y +CONFIG_PASSWD=y +CONFIG_FEATURE_PASSWD_WEAK_CHECK=y +CONFIG_SU=y +CONFIG_FEATURE_SU_SYSLOG=y +CONFIG_FEATURE_SU_CHECKS_SHELLS=y +# CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set +CONFIG_SULOGIN=y +CONFIG_VLOCK=y + +# +# Linux Ext2 FS Progs +# +CONFIG_CHATTR=y +CONFIG_FSCK=y +CONFIG_LSATTR=y +CONFIG_TUNE2FS=y + +# +# Linux Module Utilities +# +CONFIG_MODPROBE_SMALL=y +CONFIG_DEPMOD=y +CONFIG_INSMOD=y +CONFIG_LSMOD=y +# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set +CONFIG_MODINFO=y +CONFIG_MODPROBE=y +# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set +CONFIG_RMMOD=y + +# +# Options common to multiple modutils +# +CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS=y +CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED=y +# CONFIG_FEATURE_2_4_MODULES is not set +# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set +# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set +# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set +# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set +# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set +# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set +# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set +# CONFIG_FEATURE_MODUTILS_ALIAS is not set +# CONFIG_FEATURE_MODUTILS_SYMBOLS is not set +CONFIG_DEFAULT_MODULES_DIR="/lib/modules" +CONFIG_DEFAULT_DEPMOD_FILE="modules.dep" + +# +# Linux System Utilities +# +CONFIG_ACPID=y +CONFIG_FEATURE_ACPID_COMPAT=y +CONFIG_BLKDISCARD=y +CONFIG_BLKID=y +CONFIG_FEATURE_BLKID_TYPE=y +CONFIG_BLOCKDEV=y +CONFIG_CAL=y +CONFIG_CHRT=y +CONFIG_DMESG=y +CONFIG_FEATURE_DMESG_PRETTY=y +CONFIG_EJECT=y +CONFIG_FEATURE_EJECT_SCSI=y +CONFIG_FALLOCATE=y +CONFIG_FATATTR=y +CONFIG_FBSET=y +CONFIG_FEATURE_FBSET_FANCY=y +CONFIG_FEATURE_FBSET_READMODE=y +CONFIG_FDFORMAT=y +CONFIG_FDISK=y +# CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set +CONFIG_FEATURE_FDISK_WRITABLE=y +# CONFIG_FEATURE_AIX_LABEL is not set +# CONFIG_FEATURE_SGI_LABEL is not set +# CONFIG_FEATURE_SUN_LABEL is not set +# CONFIG_FEATURE_OSF_LABEL is not set +CONFIG_FEATURE_GPT_LABEL=y +CONFIG_FEATURE_FDISK_ADVANCED=y +CONFIG_FINDFS=y +CONFIG_FLOCK=y +CONFIG_FDFLUSH=y +CONFIG_FREERAMDISK=y +CONFIG_FSCK_MINIX=y +CONFIG_FSFREEZE=y +CONFIG_FSTRIM=y +CONFIG_GETOPT=y +CONFIG_FEATURE_GETOPT_LONG=y +CONFIG_HEXDUMP=y +CONFIG_HD=y +CONFIG_XXD=y +CONFIG_HWCLOCK=y +CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y +CONFIG_IONICE=y +CONFIG_IPCRM=y +CONFIG_IPCS=y +# CONFIG_LAST is not set +# CONFIG_FEATURE_LAST_FANCY is not set +CONFIG_LOSETUP=y +CONFIG_LSPCI=y +CONFIG_LSUSB=y +CONFIG_MDEV=y +CONFIG_FEATURE_MDEV_CONF=y +CONFIG_FEATURE_MDEV_RENAME=y +CONFIG_FEATURE_MDEV_RENAME_REGEXP=y +CONFIG_FEATURE_MDEV_EXEC=y +CONFIG_FEATURE_MDEV_LOAD_FIRMWARE=y +CONFIG_FEATURE_MDEV_DAEMON=y +CONFIG_MESG=y +CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y +CONFIG_MKE2FS=y +CONFIG_MKFS_EXT2=y +CONFIG_MKFS_MINIX=y +CONFIG_FEATURE_MINIX2=y +# CONFIG_MKFS_REISER is not set +CONFIG_MKDOSFS=y +CONFIG_MKFS_VFAT=y +CONFIG_MKSWAP=y +CONFIG_FEATURE_MKSWAP_UUID=y +CONFIG_MORE=y +CONFIG_MOUNT=y +CONFIG_FEATURE_MOUNT_FAKE=y +CONFIG_FEATURE_MOUNT_VERBOSE=y +CONFIG_FEATURE_MOUNT_HELPERS=y +CONFIG_FEATURE_MOUNT_LABEL=y +# CONFIG_FEATURE_MOUNT_NFS is not set +CONFIG_FEATURE_MOUNT_CIFS=y +CONFIG_FEATURE_MOUNT_FLAGS=y +CONFIG_FEATURE_MOUNT_FSTAB=y +CONFIG_FEATURE_MOUNT_OTHERTAB=y +CONFIG_MOUNTPOINT=y +# CONFIG_NOLOGIN is not set +# CONFIG_NOLOGIN_DEPENDENCIES is not set +CONFIG_NSENTER=y +CONFIG_PIVOT_ROOT=y +CONFIG_RDATE=y +CONFIG_RDEV=y +CONFIG_READPROFILE=y +CONFIG_RENICE=y +CONFIG_REV=y +CONFIG_RTCWAKE=y +CONFIG_SCRIPT=y +CONFIG_SCRIPTREPLAY=y +CONFIG_SETARCH=y +CONFIG_LINUX32=y +CONFIG_LINUX64=y +CONFIG_SETPRIV=y +CONFIG_FEATURE_SETPRIV_DUMP=y +CONFIG_FEATURE_SETPRIV_CAPABILITIES=y +CONFIG_FEATURE_SETPRIV_CAPABILITY_NAMES=y +CONFIG_SETSID=y +CONFIG_SWAPON=y +CONFIG_FEATURE_SWAPON_DISCARD=y +CONFIG_FEATURE_SWAPON_PRI=y +CONFIG_SWAPOFF=y +CONFIG_FEATURE_SWAPONOFF_LABEL=y +CONFIG_SWITCH_ROOT=y +CONFIG_TASKSET=y +CONFIG_FEATURE_TASKSET_FANCY=y +CONFIG_FEATURE_TASKSET_CPULIST=y +CONFIG_UEVENT=y +CONFIG_UMOUNT=y +CONFIG_FEATURE_UMOUNT_ALL=y +CONFIG_UNSHARE=y +# CONFIG_WALL is not set + +# +# Common options for mount/umount +# +CONFIG_FEATURE_MOUNT_LOOP=y +CONFIG_FEATURE_MOUNT_LOOP_CREATE=y +# CONFIG_FEATURE_MTAB_SUPPORT is not set +CONFIG_VOLUMEID=y + +# +# Filesystem/Volume identification +# +CONFIG_FEATURE_VOLUMEID_BCACHE=y +CONFIG_FEATURE_VOLUMEID_BTRFS=y +CONFIG_FEATURE_VOLUMEID_CRAMFS=y +CONFIG_FEATURE_VOLUMEID_EROFS=y +CONFIG_FEATURE_VOLUMEID_EXFAT=y +CONFIG_FEATURE_VOLUMEID_EXT=y +CONFIG_FEATURE_VOLUMEID_F2FS=y +CONFIG_FEATURE_VOLUMEID_FAT=y +CONFIG_FEATURE_VOLUMEID_HFS=y +CONFIG_FEATURE_VOLUMEID_ISO9660=y +CONFIG_FEATURE_VOLUMEID_JFS=y +# CONFIG_FEATURE_VOLUMEID_LFS is not set +CONFIG_FEATURE_VOLUMEID_LINUXRAID=y +CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y +CONFIG_FEATURE_VOLUMEID_LUKS=y +CONFIG_FEATURE_VOLUMEID_MINIX=y +CONFIG_FEATURE_VOLUMEID_NILFS=y +CONFIG_FEATURE_VOLUMEID_NTFS=y +CONFIG_FEATURE_VOLUMEID_OCFS2=y +CONFIG_FEATURE_VOLUMEID_REISERFS=y +CONFIG_FEATURE_VOLUMEID_ROMFS=y +CONFIG_FEATURE_VOLUMEID_SQUASHFS=y +CONFIG_FEATURE_VOLUMEID_SYSV=y +CONFIG_FEATURE_VOLUMEID_UBIFS=y +CONFIG_FEATURE_VOLUMEID_UDF=y +CONFIG_FEATURE_VOLUMEID_XFS=y + +# +# Miscellaneous Utilities +# +CONFIG_ADJTIMEX=y +CONFIG_ASCII=y +CONFIG_BBCONFIG=y +CONFIG_FEATURE_COMPRESS_BBCONFIG=y +CONFIG_BC=y +CONFIG_DC=y +CONFIG_FEATURE_DC_BIG=y +# CONFIG_FEATURE_DC_LIBM is not set +CONFIG_FEATURE_BC_INTERACTIVE=y +CONFIG_FEATURE_BC_LONG_OPTIONS=y +CONFIG_BEEP=y +CONFIG_FEATURE_BEEP_FREQ=4000 +CONFIG_FEATURE_BEEP_LENGTH_MS=30 +CONFIG_CHAT=y +CONFIG_FEATURE_CHAT_NOFAIL=y +# CONFIG_FEATURE_CHAT_TTY_HIFI is not set +CONFIG_FEATURE_CHAT_IMPLICIT_CR=y +# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set +# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set +# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set +# CONFIG_FEATURE_CHAT_CLR_ABORT is not set +# CONFIG_CONSPY is not set +CONFIG_CROND=y +CONFIG_FEATURE_CROND_D=y +CONFIG_FEATURE_CROND_CALL_SENDMAIL=y +CONFIG_FEATURE_CROND_SPECIAL_TIMES=y +CONFIG_FEATURE_CROND_DIR="/var/spool/cron" +CONFIG_CRONTAB=y +# CONFIG_DEVFSD is not set +# CONFIG_DEVFSD_MODLOAD is not set +# CONFIG_DEVFSD_FG_NP is not set +# CONFIG_DEVFSD_VERBOSE is not set +# CONFIG_FEATURE_DEVFS is not set +# CONFIG_DEVMEM is not set +CONFIG_FBSPLASH=y +# CONFIG_FLASH_ERASEALL is not set +# CONFIG_FLASH_LOCK is not set +# CONFIG_FLASH_UNLOCK is not set +# CONFIG_FLASHCP is not set +CONFIG_HDPARM=y +CONFIG_FEATURE_HDPARM_GET_IDENTITY=y +CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF=y +CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF=y +CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET=y +CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF=y +CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA=y +CONFIG_HEXEDIT=y +CONFIG_I2CGET=y +CONFIG_I2CSET=y +CONFIG_I2CDUMP=y +CONFIG_I2CDETECT=y +CONFIG_I2CTRANSFER=y +CONFIG_INOTIFYD=y +CONFIG_LESS=y +CONFIG_FEATURE_LESS_MAXLINES=9999999 +CONFIG_FEATURE_LESS_BRACKETS=y +CONFIG_FEATURE_LESS_FLAGS=y +CONFIG_FEATURE_LESS_TRUNCATE=y +CONFIG_FEATURE_LESS_MARKS=y +CONFIG_FEATURE_LESS_REGEXP=y +CONFIG_FEATURE_LESS_WINCH=y +CONFIG_FEATURE_LESS_ASK_TERMINAL=y +CONFIG_FEATURE_LESS_DASHCMD=y +CONFIG_FEATURE_LESS_LINENUMS=y +CONFIG_FEATURE_LESS_RAW=y +CONFIG_FEATURE_LESS_ENV=y +CONFIG_LSSCSI=y +CONFIG_MAKEDEVS=y +# CONFIG_FEATURE_MAKEDEVS_LEAF is not set +CONFIG_FEATURE_MAKEDEVS_TABLE=y +CONFIG_MAN=y +CONFIG_MICROCOM=y +# CONFIG_MIM is not set +CONFIG_MT=y +# CONFIG_NANDWRITE is not set +# CONFIG_NANDDUMP is not set +CONFIG_PARTPROBE=y +CONFIG_RAIDAUTORUN=y +CONFIG_READAHEAD=y +CONFIG_RFKILL=y +# CONFIG_RUNLEVEL is not set +CONFIG_RX=y +CONFIG_SETFATTR=y +CONFIG_SETSERIAL=y +CONFIG_STRINGS=y +CONFIG_TIME=y +CONFIG_TS=y +CONFIG_TTYSIZE=y +CONFIG_UBIATTACH=y +CONFIG_UBIDETACH=y +CONFIG_UBIMKVOL=y +CONFIG_UBIRMVOL=y +CONFIG_UBIRSVOL=y +CONFIG_UBIUPDATEVOL=y +CONFIG_UBIRENAME=y +CONFIG_VOLNAME=y +CONFIG_WATCHDOG=y +CONFIG_FEATURE_WATCHDOG_OPEN_TWICE=y + +# +# Networking Utilities +# +CONFIG_FEATURE_IPV6=y +CONFIG_FEATURE_UNIX_LOCAL=y +CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y +# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set +# CONFIG_FEATURE_TLS_SHA1 is not set +CONFIG_ARP=y +CONFIG_ARPING=y +CONFIG_BRCTL=y +CONFIG_FEATURE_BRCTL_FANCY=y +CONFIG_FEATURE_BRCTL_SHOW=y +CONFIG_DNSD=y +CONFIG_ETHER_WAKE=y +CONFIG_FTPD=y +CONFIG_FEATURE_FTPD_WRITE=y +CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST=y +CONFIG_FEATURE_FTPD_AUTHENTICATION=y +CONFIG_FTPGET=y +CONFIG_FTPPUT=y +CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y +CONFIG_HOSTNAME=y +CONFIG_DNSDOMAINNAME=y +CONFIG_HTTPD=y +CONFIG_FEATURE_HTTPD_RANGES=y +CONFIG_FEATURE_HTTPD_SETUID=y +CONFIG_FEATURE_HTTPD_BASIC_AUTH=y +CONFIG_FEATURE_HTTPD_AUTH_MD5=y +CONFIG_FEATURE_HTTPD_CGI=y +CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR=y +CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV=y +CONFIG_FEATURE_HTTPD_ENCODE_URL_STR=y +CONFIG_FEATURE_HTTPD_ERROR_PAGES=y +CONFIG_FEATURE_HTTPD_PROXY=y +CONFIG_FEATURE_HTTPD_GZIP=y +CONFIG_FEATURE_HTTPD_ETAG=y +CONFIG_FEATURE_HTTPD_LAST_MODIFIED=y +CONFIG_FEATURE_HTTPD_DATE=y +CONFIG_FEATURE_HTTPD_ACL_IP=y +CONFIG_IFCONFIG=y +CONFIG_FEATURE_IFCONFIG_STATUS=y +CONFIG_FEATURE_IFCONFIG_SLIP=y +CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y +CONFIG_FEATURE_IFCONFIG_HW=y +CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y +CONFIG_IFENSLAVE=y +CONFIG_IFPLUGD=y +CONFIG_IFUP=y +CONFIG_IFDOWN=y +CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate" +CONFIG_FEATURE_IFUPDOWN_IP=y +CONFIG_FEATURE_IFUPDOWN_IPV4=y +CONFIG_FEATURE_IFUPDOWN_IPV6=y +CONFIG_FEATURE_IFUPDOWN_MAPPING=y +# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set +CONFIG_INETD=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME=y +CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN=y +# CONFIG_FEATURE_INETD_RPC is not set +CONFIG_IP=y +CONFIG_IPADDR=y +CONFIG_IPLINK=y +CONFIG_IPROUTE=y +CONFIG_IPTUNNEL=y +CONFIG_IPRULE=y +CONFIG_IPNEIGH=y +CONFIG_FEATURE_IP_ADDRESS=y +CONFIG_FEATURE_IP_LINK=y +CONFIG_FEATURE_IP_ROUTE=y +CONFIG_FEATURE_IP_ROUTE_DIR="y" +CONFIG_FEATURE_IP_TUNNEL=y +CONFIG_FEATURE_IP_RULE=y +CONFIG_FEATURE_IP_NEIGH=y +# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set +CONFIG_IPCALC=y +CONFIG_FEATURE_IPCALC_LONG_OPTIONS=y +CONFIG_FEATURE_IPCALC_FANCY=y +CONFIG_FAKEIDENTD=y +CONFIG_NAMEIF=y +# CONFIG_FEATURE_NAMEIF_EXTENDED is not set +CONFIG_NBDCLIENT=y +CONFIG_NC=y +# CONFIG_NETCAT is not set +CONFIG_NC_SERVER=y +CONFIG_NC_EXTRA=y +CONFIG_NC_110_COMPAT=y +CONFIG_NETSTAT=y +CONFIG_FEATURE_NETSTAT_WIDE=y +CONFIG_FEATURE_NETSTAT_PRG=y +CONFIG_NSLOOKUP=y +CONFIG_FEATURE_NSLOOKUP_BIG=y +CONFIG_FEATURE_NSLOOKUP_LONG_OPTIONS=y +CONFIG_NTPD=y +CONFIG_FEATURE_NTPD_SERVER=y +CONFIG_FEATURE_NTPD_CONF=y +CONFIG_FEATURE_NTP_AUTH=y +CONFIG_PING=y +CONFIG_PING6=y +CONFIG_FEATURE_FANCY_PING=y +CONFIG_PSCAN=y +CONFIG_ROUTE=y +CONFIG_SLATTACH=y +CONFIG_SSL_CLIENT=y +CONFIG_TC=y +CONFIG_FEATURE_TC_INGRESS=y +CONFIG_TCPSVD=y +CONFIG_UDPSVD=y +CONFIG_TELNET=y +CONFIG_FEATURE_TELNET_TTYPE=y +CONFIG_FEATURE_TELNET_AUTOLOGIN=y +CONFIG_FEATURE_TELNET_WIDTH=y +CONFIG_TELNETD=y +CONFIG_FEATURE_TELNETD_STANDALONE=y +# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set +CONFIG_TFTP=y +# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set +CONFIG_FEATURE_TFTP_HPA_COMPAT=y +CONFIG_TFTPD=y +CONFIG_FEATURE_TFTP_GET=y +CONFIG_FEATURE_TFTP_PUT=y +CONFIG_FEATURE_TFTP_BLOCKSIZE=y +# CONFIG_TFTP_DEBUG is not set +CONFIG_TLS=y +CONFIG_TRACEROUTE=y +CONFIG_TRACEROUTE6=y +# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set +# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set +CONFIG_TUNCTL=y +CONFIG_FEATURE_TUNCTL_UG=y +CONFIG_VCONFIG=y +CONFIG_WGET=y +CONFIG_FEATURE_WGET_LONG_OPTIONS=y +CONFIG_FEATURE_WGET_STATUSBAR=y +CONFIG_FEATURE_WGET_FTP=y +CONFIG_FEATURE_WGET_AUTHENTICATION=y +CONFIG_FEATURE_WGET_TIMEOUT=y +# CONFIG_FEATURE_WGET_HTTPS is not set +# CONFIG_FEATURE_WGET_OPENSSL is not set +CONFIG_WHOIS=y +CONFIG_ZCIP=y +CONFIG_UDHCPD=y +CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC=y +CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY=y +CONFIG_DHCPD_LEASES_FILE="/var/lib/misc/udhcpd.leases" +CONFIG_DUMPLEASES=y +CONFIG_DHCPRELAY=y +CONFIG_UDHCPC=y +CONFIG_FEATURE_UDHCPC_ARPING=y +CONFIG_FEATURE_UDHCPC_SANITIZEOPT=y +CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" +CONFIG_UDHCPC6=y +CONFIG_FEATURE_UDHCPC6_RFC3646=y +CONFIG_FEATURE_UDHCPC6_RFC4704=y +CONFIG_FEATURE_UDHCPC6_RFC4833=y +CONFIG_FEATURE_UDHCPC6_RFC5970=y + +# +# Common options for DHCP applets +# +CONFIG_UDHCPC_DEFAULT_INTERFACE="eth0" +CONFIG_FEATURE_UDHCP_PORT=y +CONFIG_UDHCP_DEBUG=9 +CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 +CONFIG_FEATURE_UDHCP_RFC3397=y +CONFIG_FEATURE_UDHCP_8021Q=y +CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="" + +# +# Print Utilities +# +CONFIG_LPD=y +CONFIG_LPR=y +CONFIG_LPQ=y + +# +# Mail Utilities +# +CONFIG_MAKEMIME=y +CONFIG_POPMAILDIR=y +CONFIG_FEATURE_POPMAILDIR_DELIVERY=y +CONFIG_REFORMIME=y +CONFIG_FEATURE_REFORMIME_COMPAT=y +CONFIG_SENDMAIL=y +CONFIG_FEATURE_MIME_CHARSET="us-ascii" + +# +# Process Utilities +# +CONFIG_FREE=y +CONFIG_FUSER=y +CONFIG_IOSTAT=y +CONFIG_KILL=y +CONFIG_KILLALL=y +CONFIG_KILLALL5=y +CONFIG_LSOF=y +CONFIG_MPSTAT=y +CONFIG_NMETER=y +CONFIG_PGREP=y +CONFIG_PKILL=y +CONFIG_PIDOF=y +CONFIG_FEATURE_PIDOF_SINGLE=y +CONFIG_FEATURE_PIDOF_OMIT=y +CONFIG_PMAP=y +CONFIG_POWERTOP=y +CONFIG_FEATURE_POWERTOP_INTERACTIVE=y +CONFIG_PS=y +# CONFIG_FEATURE_PS_WIDE is not set +# CONFIG_FEATURE_PS_LONG is not set +CONFIG_FEATURE_PS_TIME=y +# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set +CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS=y +CONFIG_PSTREE=y +CONFIG_PWDX=y +CONFIG_SMEMCAP=y +CONFIG_BB_SYSCTL=y +CONFIG_TOP=y +CONFIG_FEATURE_TOP_INTERACTIVE=y +CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y +CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y +CONFIG_FEATURE_TOP_SMP_CPU=y +CONFIG_FEATURE_TOP_DECIMALS=y +CONFIG_FEATURE_TOP_SMP_PROCESS=y +CONFIG_FEATURE_TOPMEM=y +CONFIG_UPTIME=y +# CONFIG_FEATURE_UPTIME_UTMP_SUPPORT is not set +CONFIG_WATCH=y +CONFIG_FEATURE_SHOW_THREADS=y + +# +# Runit Utilities +# +CONFIG_CHPST=y +CONFIG_SETUIDGID=y +CONFIG_ENVUIDGID=y +CONFIG_ENVDIR=y +CONFIG_SOFTLIMIT=y +CONFIG_RUNSV=y +CONFIG_RUNSVDIR=y +# CONFIG_FEATURE_RUNSVDIR_LOG is not set +CONFIG_SV=y +CONFIG_SV_DEFAULT_SERVICE_DIR="/var/service" +CONFIG_SVC=y +CONFIG_SVOK=y +CONFIG_SVLOGD=y +# CONFIG_CHCON is not set +# CONFIG_GETENFORCE is not set +# CONFIG_GETSEBOOL is not set +# CONFIG_LOAD_POLICY is not set +# CONFIG_MATCHPATHCON is not set +# CONFIG_RUNCON is not set +# CONFIG_SELINUXENABLED is not set +# CONFIG_SESTATUS is not set +# CONFIG_SETENFORCE is not set +# CONFIG_SETFILES is not set +# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set +# CONFIG_RESTORECON is not set +# CONFIG_SETSEBOOL is not set + +# +# Shells +# +CONFIG_SH_IS_ASH=y +# CONFIG_SH_IS_HUSH is not set +# CONFIG_SH_IS_NONE is not set +# CONFIG_BASH_IS_ASH is not set +# CONFIG_BASH_IS_HUSH is not set +CONFIG_BASH_IS_NONE=y +CONFIG_SHELL_ASH=y +CONFIG_ASH=y +CONFIG_ASH_OPTIMIZE_FOR_SIZE=y +CONFIG_ASH_INTERNAL_GLOB=y +CONFIG_ASH_BASH_COMPAT=y +CONFIG_ASH_BASH_SOURCE_CURDIR=y +CONFIG_ASH_BASH_NOT_FOUND_HOOK=y +CONFIG_ASH_JOB_CONTROL=y +CONFIG_ASH_ALIAS=y +CONFIG_ASH_RANDOM_SUPPORT=y +CONFIG_ASH_EXPAND_PRMT=y +CONFIG_ASH_IDLE_TIMEOUT=y +CONFIG_ASH_MAIL=y +CONFIG_ASH_ECHO=y +CONFIG_ASH_PRINTF=y +CONFIG_ASH_TEST=y +CONFIG_ASH_HELP=y +CONFIG_ASH_GETOPTS=y +CONFIG_ASH_CMDCMD=y +CONFIG_CTTYHACK=y +# CONFIG_HUSH is not set +# CONFIG_SHELL_HUSH is not set +# CONFIG_HUSH_BASH_COMPAT is not set +# CONFIG_HUSH_BRACE_EXPANSION is not set +# CONFIG_HUSH_LINENO_VAR is not set +# CONFIG_HUSH_BASH_SOURCE_CURDIR is not set +# CONFIG_HUSH_INTERACTIVE is not set +# CONFIG_HUSH_SAVEHISTORY is not set +# CONFIG_HUSH_JOB is not set +# CONFIG_HUSH_TICK is not set +# CONFIG_HUSH_IF is not set +# CONFIG_HUSH_LOOPS is not set +# CONFIG_HUSH_CASE is not set +# CONFIG_HUSH_FUNCTIONS is not set +# CONFIG_HUSH_LOCAL is not set +# CONFIG_HUSH_RANDOM_SUPPORT is not set +# CONFIG_HUSH_MODE_X is not set +# CONFIG_HUSH_ECHO is not set +# CONFIG_HUSH_PRINTF is not set +# CONFIG_HUSH_TEST is not set +# CONFIG_HUSH_HELP is not set +# CONFIG_HUSH_EXPORT is not set +# CONFIG_HUSH_EXPORT_N is not set +# CONFIG_HUSH_READONLY is not set +# CONFIG_HUSH_KILL is not set +# CONFIG_HUSH_WAIT is not set +# CONFIG_HUSH_COMMAND is not set +# CONFIG_HUSH_TRAP is not set +# CONFIG_HUSH_TYPE is not set +# CONFIG_HUSH_TIMES is not set +# CONFIG_HUSH_READ is not set +# CONFIG_HUSH_SET is not set +# CONFIG_HUSH_UNSET is not set +# CONFIG_HUSH_ULIMIT is not set +# CONFIG_HUSH_UMASK is not set +# CONFIG_HUSH_GETOPTS is not set +# CONFIG_HUSH_MEMLEAK is not set + +# +# Options common to all shells +# +CONFIG_FEATURE_SH_MATH=y +CONFIG_FEATURE_SH_MATH_64=y +CONFIG_FEATURE_SH_MATH_BASE=y +CONFIG_FEATURE_SH_EXTRA_QUIET=y +CONFIG_FEATURE_SH_STANDALONE=y +# CONFIG_FEATURE_SH_NOFORK is not set +CONFIG_FEATURE_SH_READ_FRAC=y +CONFIG_FEATURE_SH_HISTFILESIZE=y +# CONFIG_FEATURE_SH_EMBEDDED_SCRIPTS is not set + +# +# System Logging Utilities +# +CONFIG_KLOGD=y + +# +# klogd should not be used together with syslog to kernel printk buffer +# +CONFIG_FEATURE_KLOGD_KLOGCTL=y +CONFIG_LOGGER=y +CONFIG_LOGREAD=y +CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y +CONFIG_SYSLOGD=y +CONFIG_FEATURE_ROTATE_LOGFILE=y +CONFIG_FEATURE_REMOTE_LOG=y +CONFIG_FEATURE_SYSLOGD_DUP=y +CONFIG_FEATURE_SYSLOGD_CFG=y +CONFIG_FEATURE_SYSLOGD_PRECISE_TIMESTAMPS=y +CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256 +CONFIG_FEATURE_IPC_SYSLOG=y +CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16 +CONFIG_FEATURE_KMSG_SYSLOG=y diff --git a/floppy/configs/config-busybox-i486 b/floppy/configs/config-busybox-i486 new file mode 100644 index 0000000..bac0183 --- /dev/null +++ b/floppy/configs/config-busybox-i486 @@ -0,0 +1,1194 @@ +# +# Automatically generated make config: don't edit +# Busybox version: 1.34.1 +# Sun Jun 5 15:52:33 2022 +# +CONFIG_HAVE_DOT_CONFIG=y + +# +# Settings +# +# CONFIG_DESKTOP is not set +# CONFIG_EXTRA_COMPAT is not set +# CONFIG_FEDORA_COMPAT is not set +# CONFIG_INCLUDE_SUSv2 is not set +# CONFIG_LONG_OPTS is not set +# CONFIG_SHOW_USAGE is not set +# CONFIG_FEATURE_VERBOSE_USAGE is not set +# CONFIG_FEATURE_COMPRESS_USAGE is not set +# CONFIG_LFS is not set +# CONFIG_PAM is not set +# CONFIG_FEATURE_DEVPTS is not set +# CONFIG_FEATURE_UTMP is not set +# CONFIG_FEATURE_WTMP is not set +# CONFIG_FEATURE_PIDFILE is not set +CONFIG_PID_FILE_PATH="" +# CONFIG_BUSYBOX is not set +# CONFIG_FEATURE_SHOW_SCRIPT is not set +# CONFIG_FEATURE_INSTALLER is not set +# CONFIG_INSTALL_NO_USR is not set +# CONFIG_FEATURE_SUID is not set +# CONFIG_FEATURE_SUID_CONFIG is not set +# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set +# CONFIG_FEATURE_PREFER_APPLETS is not set +CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe" +# CONFIG_SELINUX is not set +# CONFIG_FEATURE_CLEAN_UP is not set +CONFIG_FEATURE_SYSLOG_INFO=y +CONFIG_FEATURE_SYSLOG=y + +# +# Build Options +# +CONFIG_STATIC=y +# CONFIG_PIE is not set +# CONFIG_NOMMU is not set +# CONFIG_BUILD_LIBBUSYBOX is not set +# CONFIG_FEATURE_LIBBUSYBOX_STATIC is not set +# CONFIG_FEATURE_INDIVIDUAL is not set +# CONFIG_FEATURE_SHARED_BUSYBOX is not set +CONFIG_CROSS_COMPILER_PREFIX="" +CONFIG_SYSROOT="" +CONFIG_EXTRA_CFLAGS="-Os" +CONFIG_EXTRA_LDFLAGS="-Os" +CONFIG_EXTRA_LDLIBS="" +# CONFIG_USE_PORTABLE_CODE is not set +# CONFIG_STACK_OPTIMIZATION_386 is not set +# CONFIG_STATIC_LIBGCC is not set + +# +# Installation Options ("make install" behavior) +# +CONFIG_INSTALL_APPLET_SYMLINKS=y +# CONFIG_INSTALL_APPLET_HARDLINKS is not set +# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set +# CONFIG_INSTALL_APPLET_DONT is not set +# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set +# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set +# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set +CONFIG_PREFIX="./_install" + +# +# Debugging Options +# +# CONFIG_DEBUG is not set +# CONFIG_DEBUG_PESSIMIZE is not set +# CONFIG_DEBUG_SANITIZE is not set +# CONFIG_UNIT_TEST is not set +# CONFIG_WERROR is not set +# CONFIG_WARN_SIMPLE_MSG is not set +CONFIG_NO_DEBUG_LIB=y +# CONFIG_DMALLOC is not set +# CONFIG_EFENCE is not set + +# +# Library Tuning +# +# CONFIG_FEATURE_USE_BSS_TAIL is not set +# CONFIG_FLOAT_DURATION is not set +# CONFIG_FEATURE_RTMINMAX is not set +# CONFIG_FEATURE_RTMINMAX_USE_LIBC_DEFINITIONS is not set +CONFIG_FEATURE_BUFFERS_USE_MALLOC=y +# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set +# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set +CONFIG_PASSWORD_MINLEN=6 +CONFIG_MD5_SMALL=1 +CONFIG_SHA3_SMALL=1 +# CONFIG_FEATURE_FAST_TOP is not set +# CONFIG_FEATURE_ETC_NETWORKS is not set +# CONFIG_FEATURE_ETC_SERVICES is not set +# CONFIG_FEATURE_EDITING is not set +CONFIG_FEATURE_EDITING_MAX_LEN=0 +# CONFIG_FEATURE_EDITING_VI is not set +CONFIG_FEATURE_EDITING_HISTORY=0 +# CONFIG_FEATURE_EDITING_SAVEHISTORY is not set +# CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set +# CONFIG_FEATURE_REVERSE_SEARCH is not set +# CONFIG_FEATURE_TAB_COMPLETION is not set +# CONFIG_FEATURE_USERNAME_COMPLETION is not set +# CONFIG_FEATURE_EDITING_FANCY_PROMPT is not set +# CONFIG_FEATURE_EDITING_WINCH is not set +# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set +# CONFIG_LOCALE_SUPPORT is not set +# CONFIG_UNICODE_SUPPORT is not set +# CONFIG_UNICODE_USING_LOCALE is not set +# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set +CONFIG_SUBST_WCHAR=0 +CONFIG_LAST_SUPPORTED_WCHAR=0 +# CONFIG_UNICODE_COMBINING_WCHARS is not set +# CONFIG_UNICODE_WIDE_WCHARS is not set +# CONFIG_UNICODE_BIDI_SUPPORT is not set +# CONFIG_UNICODE_NEUTRAL_TABLE is not set +# CONFIG_UNICODE_PRESERVE_BROKEN is not set +# CONFIG_FEATURE_NON_POSIX_CP is not set +# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set +# CONFIG_FEATURE_USE_SENDFILE is not set +CONFIG_FEATURE_COPYBUF_KB=4 +# CONFIG_FEATURE_SKIP_ROOTFS is not set +# CONFIG_MONOTONIC_SYSCALL is not set +# CONFIG_IOCTL_HEX2STR_ERROR is not set +# CONFIG_FEATURE_HWIB is not set + +# +# Applets +# + +# +# Archival Utilities +# +# CONFIG_FEATURE_SEAMLESS_XZ is not set +# CONFIG_FEATURE_SEAMLESS_LZMA is not set +# CONFIG_FEATURE_SEAMLESS_BZ2 is not set +# CONFIG_FEATURE_SEAMLESS_GZ is not set +# CONFIG_FEATURE_SEAMLESS_Z is not set +# CONFIG_AR is not set +# CONFIG_FEATURE_AR_LONG_FILENAMES is not set +# CONFIG_FEATURE_AR_CREATE is not set +# CONFIG_UNCOMPRESS is not set +# CONFIG_GUNZIP is not set +# CONFIG_ZCAT is not set +# CONFIG_FEATURE_GUNZIP_LONG_OPTIONS is not set +# CONFIG_BUNZIP2 is not set +# CONFIG_BZCAT is not set +# CONFIG_UNLZMA is not set +# CONFIG_LZCAT is not set +# CONFIG_LZMA is not set +# CONFIG_UNXZ is not set +# CONFIG_XZCAT is not set +# CONFIG_XZ is not set +# CONFIG_BZIP2 is not set +CONFIG_BZIP2_SMALL=0 +# CONFIG_FEATURE_BZIP2_DECOMPRESS is not set +# CONFIG_CPIO is not set +# CONFIG_FEATURE_CPIO_O is not set +# CONFIG_FEATURE_CPIO_P is not set +# CONFIG_DPKG is not set +# CONFIG_DPKG_DEB is not set +# CONFIG_GZIP is not set +# CONFIG_FEATURE_GZIP_LONG_OPTIONS is not set +CONFIG_GZIP_FAST=0 +# CONFIG_FEATURE_GZIP_LEVELS is not set +# CONFIG_FEATURE_GZIP_DECOMPRESS is not set +# CONFIG_LZOP is not set +# CONFIG_UNLZOP is not set +# CONFIG_LZOPCAT is not set +# CONFIG_LZOP_COMPR_HIGH is not set +# CONFIG_RPM is not set +# CONFIG_RPM2CPIO is not set +# CONFIG_TAR is not set +# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set +# CONFIG_FEATURE_TAR_CREATE is not set +# CONFIG_FEATURE_TAR_AUTODETECT is not set +# CONFIG_FEATURE_TAR_FROM is not set +# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set +# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set +# CONFIG_FEATURE_TAR_GNU_EXTENSIONS is not set +# CONFIG_FEATURE_TAR_TO_COMMAND is not set +# CONFIG_FEATURE_TAR_UNAME_GNAME is not set +# CONFIG_FEATURE_TAR_NOPRESERVE_TIME is not set +# CONFIG_FEATURE_TAR_SELINUX is not set +# CONFIG_UNZIP is not set +# CONFIG_FEATURE_UNZIP_CDF is not set +# CONFIG_FEATURE_UNZIP_BZIP2 is not set +# CONFIG_FEATURE_UNZIP_LZMA is not set +# CONFIG_FEATURE_UNZIP_XZ is not set +# CONFIG_FEATURE_LZMA_FAST is not set + +# +# Coreutils +# +# CONFIG_BASENAME is not set +CONFIG_CAT=y +# CONFIG_FEATURE_CATN is not set +# CONFIG_FEATURE_CATV is not set +# CONFIG_CHGRP is not set +# CONFIG_CHMOD is not set +# CONFIG_CHOWN is not set +# CONFIG_FEATURE_CHOWN_LONG_OPTIONS is not set +# CONFIG_CHROOT is not set +# CONFIG_CKSUM is not set +# CONFIG_CRC32 is not set +# CONFIG_COMM is not set +CONFIG_CP=y +# CONFIG_FEATURE_CP_LONG_OPTIONS is not set +# CONFIG_FEATURE_CP_REFLINK is not set +# CONFIG_CUT is not set +# CONFIG_FEATURE_CUT_REGEX is not set +# CONFIG_DATE is not set +# CONFIG_FEATURE_DATE_ISOFMT is not set +# CONFIG_FEATURE_DATE_NANO is not set +# CONFIG_FEATURE_DATE_COMPAT is not set +# CONFIG_DD is not set +# CONFIG_FEATURE_DD_SIGNAL_HANDLING is not set +# CONFIG_FEATURE_DD_THIRD_STATUS_LINE is not set +# CONFIG_FEATURE_DD_IBS_OBS is not set +# CONFIG_FEATURE_DD_STATUS is not set +# CONFIG_DF is not set +# CONFIG_FEATURE_DF_FANCY is not set +# CONFIG_DIRNAME is not set +# CONFIG_DOS2UNIX is not set +# CONFIG_UNIX2DOS is not set +# CONFIG_DU is not set +# CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K is not set +CONFIG_ECHO=y +# CONFIG_FEATURE_FANCY_ECHO is not set +# CONFIG_ENV is not set +# CONFIG_EXPAND is not set +# CONFIG_UNEXPAND is not set +# CONFIG_EXPR is not set +# CONFIG_EXPR_MATH_SUPPORT_64 is not set +# CONFIG_FACTOR is not set +# CONFIG_FALSE is not set +# CONFIG_FOLD is not set +# CONFIG_HEAD is not set +# CONFIG_FEATURE_FANCY_HEAD is not set +# CONFIG_HOSTID is not set +# CONFIG_ID is not set +# CONFIG_GROUPS is not set +# CONFIG_INSTALL is not set +# CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set +# CONFIG_LINK is not set +CONFIG_LN=y +# CONFIG_LOGNAME is not set +CONFIG_LS=y +# CONFIG_FEATURE_LS_FILETYPES is not set +# CONFIG_FEATURE_LS_FOLLOWLINKS is not set +# CONFIG_FEATURE_LS_RECURSIVE is not set +# CONFIG_FEATURE_LS_WIDTH is not set +# CONFIG_FEATURE_LS_SORTFILES is not set +CONFIG_FEATURE_LS_TIMESTAMPS=y +# CONFIG_FEATURE_LS_USERNAME is not set +# CONFIG_FEATURE_LS_COLOR is not set +# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set +# CONFIG_MD5SUM is not set +# CONFIG_SHA1SUM is not set +# CONFIG_SHA256SUM is not set +# CONFIG_SHA512SUM is not set +# CONFIG_SHA3SUM is not set +# CONFIG_FEATURE_MD5_SHA1_SUM_CHECK is not set +# CONFIG_MKDIR is not set +# CONFIG_MKFIFO is not set +# CONFIG_MKNOD is not set +# CONFIG_MKTEMP is not set +# CONFIG_MV is not set +# CONFIG_NICE is not set +# CONFIG_NL is not set +# CONFIG_NOHUP is not set +# CONFIG_NPROC is not set +# CONFIG_OD is not set +# CONFIG_PASTE is not set +# CONFIG_PRINTENV is not set +# CONFIG_PRINTF is not set +# CONFIG_PWD is not set +# CONFIG_READLINK is not set +# CONFIG_FEATURE_READLINK_FOLLOW is not set +# CONFIG_REALPATH is not set +CONFIG_RM=y +# CONFIG_RMDIR is not set +# CONFIG_SEQ is not set +# CONFIG_SHRED is not set +# CONFIG_SHUF is not set +CONFIG_SLEEP=y +# CONFIG_FEATURE_FANCY_SLEEP is not set +# CONFIG_SORT is not set +# CONFIG_FEATURE_SORT_BIG is not set +# CONFIG_FEATURE_SORT_OPTIMIZE_MEMORY is not set +# CONFIG_SPLIT is not set +# CONFIG_FEATURE_SPLIT_FANCY is not set +# CONFIG_STAT is not set +# CONFIG_FEATURE_STAT_FORMAT is not set +# CONFIG_FEATURE_STAT_FILESYSTEM is not set +# CONFIG_STTY is not set +# CONFIG_SUM is not set +# CONFIG_SYNC is not set +# CONFIG_FEATURE_SYNC_FANCY is not set +# CONFIG_FSYNC is not set +# CONFIG_TAC is not set +CONFIG_TAIL=y +# CONFIG_FEATURE_FANCY_TAIL is not set +# CONFIG_TEE is not set +# CONFIG_FEATURE_TEE_USE_BLOCK_IO is not set +CONFIG_TEST=y +# CONFIG_TEST1 is not set +# CONFIG_TEST2 is not set +# CONFIG_FEATURE_TEST_64 is not set +# CONFIG_TIMEOUT is not set +# CONFIG_TOUCH is not set +# CONFIG_FEATURE_TOUCH_SUSV3 is not set +# CONFIG_TR is not set +# CONFIG_FEATURE_TR_CLASSES is not set +# CONFIG_FEATURE_TR_EQUIV is not set +CONFIG_TRUE=y +# CONFIG_TRUNCATE is not set +# CONFIG_TTY is not set +CONFIG_UNAME=y +CONFIG_UNAME_OSNAME="GNU/Linux" +# CONFIG_BB_ARCH is not set +# CONFIG_UNIQ is not set +# CONFIG_UNLINK is not set +# CONFIG_USLEEP is not set +# CONFIG_UUDECODE is not set +# CONFIG_BASE32 is not set +# CONFIG_BASE64 is not set +# CONFIG_UUENCODE is not set +# CONFIG_WC is not set +# CONFIG_FEATURE_WC_LARGE is not set +# CONFIG_WHO is not set +# CONFIG_W is not set +# CONFIG_USERS is not set +# CONFIG_WHOAMI is not set +CONFIG_YES=y + +# +# Common options +# +# CONFIG_FEATURE_VERBOSE is not set + +# +# Common options for cp and mv +# +CONFIG_FEATURE_PRESERVE_HARDLINKS=y + +# +# Common options for df, du, ls +# +CONFIG_FEATURE_HUMAN_READABLE=y + +# +# Console Utilities +# +# CONFIG_CHVT is not set +CONFIG_CLEAR=y +# CONFIG_DEALLOCVT is not set +# CONFIG_DUMPKMAP is not set +# CONFIG_FGCONSOLE is not set +# CONFIG_KBD_MODE is not set +# CONFIG_LOADFONT is not set +# CONFIG_SETFONT is not set +# CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set +CONFIG_DEFAULT_SETFONT_DIR="" +# CONFIG_FEATURE_LOADFONT_PSF2 is not set +# CONFIG_FEATURE_LOADFONT_RAW is not set +# CONFIG_LOADKMAP is not set +# CONFIG_OPENVT is not set +# CONFIG_RESET is not set +# CONFIG_RESIZE is not set +# CONFIG_FEATURE_RESIZE_PRINT is not set +# CONFIG_SETCONSOLE is not set +# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set +# CONFIG_SETKEYCODES is not set +# CONFIG_SETLOGCONS is not set +# CONFIG_SHOWKEY is not set + +# +# Debian Utilities +# +# CONFIG_PIPE_PROGRESS is not set +# CONFIG_RUN_PARTS is not set +# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set +# CONFIG_FEATURE_RUN_PARTS_FANCY is not set +# CONFIG_START_STOP_DAEMON is not set +# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set +# CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set +# CONFIG_WHICH is not set + +# +# klibc-utils +# +# CONFIG_MINIPS is not set +# CONFIG_NUKE is not set +# CONFIG_RESUME is not set +# CONFIG_RUN_INIT is not set + +# +# Editors +# +# CONFIG_AWK is not set +# CONFIG_FEATURE_AWK_LIBM is not set +# CONFIG_FEATURE_AWK_GNU_EXTENSIONS is not set +# CONFIG_CMP is not set +# CONFIG_DIFF is not set +# CONFIG_FEATURE_DIFF_LONG_OPTIONS is not set +# CONFIG_FEATURE_DIFF_DIR is not set +# CONFIG_ED is not set +# CONFIG_PATCH is not set +# CONFIG_SED is not set +CONFIG_VI=y +CONFIG_FEATURE_VI_MAX_LEN=4096 +# CONFIG_FEATURE_VI_8BIT is not set +# CONFIG_FEATURE_VI_COLON is not set +# CONFIG_FEATURE_VI_COLON_EXPAND is not set +# CONFIG_FEATURE_VI_YANKMARK is not set +CONFIG_FEATURE_VI_SEARCH=y +# CONFIG_FEATURE_VI_REGEX_SEARCH is not set +CONFIG_FEATURE_VI_USE_SIGNALS=y +CONFIG_FEATURE_VI_DOT_CMD=y +# CONFIG_FEATURE_VI_READONLY is not set +# CONFIG_FEATURE_VI_SETOPTS is not set +# CONFIG_FEATURE_VI_SET is not set +# CONFIG_FEATURE_VI_WIN_RESIZE is not set +# CONFIG_FEATURE_VI_ASK_TERMINAL is not set +# CONFIG_FEATURE_VI_UNDO is not set +# CONFIG_FEATURE_VI_UNDO_QUEUE is not set +CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=0 +# CONFIG_FEATURE_VI_VERBOSE_STATUS is not set +# CONFIG_FEATURE_ALLOW_EXEC is not set + +# +# Finding Utilities +# +# CONFIG_FIND is not set +# CONFIG_FEATURE_FIND_PRINT0 is not set +# CONFIG_FEATURE_FIND_MTIME is not set +# CONFIG_FEATURE_FIND_MMIN is not set +# CONFIG_FEATURE_FIND_PERM is not set +# CONFIG_FEATURE_FIND_TYPE is not set +# CONFIG_FEATURE_FIND_EXECUTABLE is not set +# CONFIG_FEATURE_FIND_XDEV is not set +# CONFIG_FEATURE_FIND_MAXDEPTH is not set +# CONFIG_FEATURE_FIND_NEWER is not set +# CONFIG_FEATURE_FIND_INUM is not set +# CONFIG_FEATURE_FIND_EXEC is not set +# CONFIG_FEATURE_FIND_EXEC_PLUS is not set +# CONFIG_FEATURE_FIND_USER is not set +# CONFIG_FEATURE_FIND_GROUP is not set +# CONFIG_FEATURE_FIND_NOT is not set +# CONFIG_FEATURE_FIND_DEPTH is not set +# CONFIG_FEATURE_FIND_PAREN is not set +# CONFIG_FEATURE_FIND_SIZE is not set +# CONFIG_FEATURE_FIND_PRUNE is not set +# CONFIG_FEATURE_FIND_QUIT is not set +# CONFIG_FEATURE_FIND_DELETE is not set +# CONFIG_FEATURE_FIND_EMPTY is not set +# CONFIG_FEATURE_FIND_PATH is not set +# CONFIG_FEATURE_FIND_REGEX is not set +# CONFIG_FEATURE_FIND_CONTEXT is not set +# CONFIG_FEATURE_FIND_LINKS is not set +# CONFIG_GREP is not set +# CONFIG_EGREP is not set +# CONFIG_FGREP is not set +# CONFIG_FEATURE_GREP_CONTEXT is not set +# CONFIG_XARGS is not set +# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set +# CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set +# CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set +# CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set +# CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR is not set +# CONFIG_FEATURE_XARGS_SUPPORT_PARALLEL is not set +# CONFIG_FEATURE_XARGS_SUPPORT_ARGS_FILE is not set + +# +# Init Utilities +# +# CONFIG_BOOTCHARTD is not set +# CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set +# CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set +# CONFIG_HALT is not set +CONFIG_POWEROFF=y +CONFIG_REBOOT=y +# CONFIG_FEATURE_WAIT_FOR_INIT is not set +# CONFIG_FEATURE_CALL_TELINIT is not set +CONFIG_TELINIT_PATH="" +CONFIG_INIT=y +# CONFIG_LINUXRC is not set +CONFIG_FEATURE_USE_INITTAB=y +# CONFIG_FEATURE_KILL_REMOVED is not set +CONFIG_FEATURE_KILL_DELAY=0 +CONFIG_FEATURE_INIT_SCTTY=y +CONFIG_FEATURE_INIT_SYSLOG=y +CONFIG_FEATURE_INIT_QUIET=y +# CONFIG_FEATURE_INIT_COREDUMPS is not set +CONFIG_INIT_TERMINAL_TYPE="linux" +CONFIG_FEATURE_INIT_MODIFY_CMDLINE=y + +# +# Login/Password Management Utilities +# +# CONFIG_FEATURE_SHADOWPASSWDS is not set +# CONFIG_USE_BB_PWD_GRP is not set +# CONFIG_USE_BB_SHADOW is not set +# CONFIG_USE_BB_CRYPT is not set +# CONFIG_USE_BB_CRYPT_SHA is not set +# CONFIG_ADD_SHELL is not set +# CONFIG_REMOVE_SHELL is not set +# CONFIG_ADDGROUP is not set +# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set +# CONFIG_ADDUSER is not set +# CONFIG_FEATURE_CHECK_NAMES is not set +CONFIG_LAST_ID=0 +CONFIG_FIRST_SYSTEM_ID=0 +CONFIG_LAST_SYSTEM_ID=0 +# CONFIG_CHPASSWD is not set +CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="" +# CONFIG_CRYPTPW is not set +# CONFIG_MKPASSWD is not set +# CONFIG_DELUSER is not set +# CONFIG_DELGROUP is not set +# CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set +# CONFIG_GETTY is not set +# CONFIG_LOGIN is not set +# CONFIG_LOGIN_SESSION_AS_CHILD is not set +# CONFIG_LOGIN_SCRIPTS is not set +# CONFIG_FEATURE_NOLOGIN is not set +# CONFIG_FEATURE_SECURETTY is not set +# CONFIG_PASSWD is not set +# CONFIG_FEATURE_PASSWD_WEAK_CHECK is not set +# CONFIG_SU is not set +# CONFIG_FEATURE_SU_SYSLOG is not set +# CONFIG_FEATURE_SU_CHECKS_SHELLS is not set +# CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set +# CONFIG_SULOGIN is not set +# CONFIG_VLOCK is not set + +# +# Linux Ext2 FS Progs +# +# CONFIG_CHATTR is not set +# CONFIG_FSCK is not set +# CONFIG_LSATTR is not set +# CONFIG_TUNE2FS is not set + +# +# Linux Module Utilities +# +# CONFIG_MODPROBE_SMALL is not set +# CONFIG_DEPMOD is not set +# CONFIG_INSMOD is not set +# CONFIG_LSMOD is not set +# CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set +# CONFIG_MODINFO is not set +# CONFIG_MODPROBE is not set +# CONFIG_FEATURE_MODPROBE_BLACKLIST is not set +# CONFIG_RMMOD is not set + +# +# Options common to multiple modutils +# +# CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS is not set +# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set +# CONFIG_FEATURE_2_4_MODULES is not set +# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set +# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set +# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set +# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set +# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set +# CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set +# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set +# CONFIG_FEATURE_MODUTILS_ALIAS is not set +# CONFIG_FEATURE_MODUTILS_SYMBOLS is not set +CONFIG_DEFAULT_MODULES_DIR="" +CONFIG_DEFAULT_DEPMOD_FILE="" + +# +# Linux System Utilities +# +# CONFIG_ACPID is not set +# CONFIG_FEATURE_ACPID_COMPAT is not set +# CONFIG_BLKDISCARD is not set +# CONFIG_BLKID is not set +# CONFIG_FEATURE_BLKID_TYPE is not set +# CONFIG_BLOCKDEV is not set +# CONFIG_CAL is not set +# CONFIG_CHRT is not set +CONFIG_DMESG=y +# CONFIG_FEATURE_DMESG_PRETTY is not set +# CONFIG_EJECT is not set +# CONFIG_FEATURE_EJECT_SCSI is not set +# CONFIG_FALLOCATE is not set +# CONFIG_FATATTR is not set +# CONFIG_FBSET is not set +# CONFIG_FEATURE_FBSET_FANCY is not set +# CONFIG_FEATURE_FBSET_READMODE is not set +# CONFIG_FDFORMAT is not set +CONFIG_FDISK=y +CONFIG_FDISK_SUPPORT_LARGE_DISKS=y +CONFIG_FEATURE_FDISK_WRITABLE=y +# CONFIG_FEATURE_AIX_LABEL is not set +# CONFIG_FEATURE_SGI_LABEL is not set +# CONFIG_FEATURE_SUN_LABEL is not set +# CONFIG_FEATURE_OSF_LABEL is not set +# CONFIG_FEATURE_GPT_LABEL is not set +CONFIG_FEATURE_FDISK_ADVANCED=y +# CONFIG_FINDFS is not set +# CONFIG_FLOCK is not set +# CONFIG_FDFLUSH is not set +# CONFIG_FREERAMDISK is not set +# CONFIG_FSCK_MINIX is not set +# CONFIG_FSFREEZE is not set +# CONFIG_FSTRIM is not set +# CONFIG_GETOPT is not set +# CONFIG_FEATURE_GETOPT_LONG is not set +# CONFIG_HEXDUMP is not set +# CONFIG_HD is not set +# CONFIG_XXD is not set +# CONFIG_HWCLOCK is not set +# CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set +# CONFIG_IONICE is not set +# CONFIG_IPCRM is not set +# CONFIG_IPCS is not set +# CONFIG_LAST is not set +# CONFIG_FEATURE_LAST_FANCY is not set +# CONFIG_LOSETUP is not set +CONFIG_LSPCI=y +# CONFIG_LSUSB is not set +# CONFIG_MDEV is not set +# CONFIG_FEATURE_MDEV_CONF is not set +# CONFIG_FEATURE_MDEV_RENAME is not set +# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set +# CONFIG_FEATURE_MDEV_EXEC is not set +# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set +# CONFIG_FEATURE_MDEV_DAEMON is not set +# CONFIG_MESG is not set +# CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP is not set +# CONFIG_MKE2FS is not set +# CONFIG_MKFS_EXT2 is not set +# CONFIG_MKFS_MINIX is not set +# CONFIG_FEATURE_MINIX2 is not set +# CONFIG_MKFS_REISER is not set +# CONFIG_MKDOSFS is not set +# CONFIG_MKFS_VFAT is not set +# CONFIG_MKSWAP is not set +# CONFIG_FEATURE_MKSWAP_UUID is not set +# CONFIG_MORE is not set +# CONFIG_MOUNT is not set +# CONFIG_FEATURE_MOUNT_FAKE is not set +# CONFIG_FEATURE_MOUNT_VERBOSE is not set +# CONFIG_FEATURE_MOUNT_HELPERS is not set +# CONFIG_FEATURE_MOUNT_LABEL is not set +# CONFIG_FEATURE_MOUNT_NFS is not set +# CONFIG_FEATURE_MOUNT_CIFS is not set +# CONFIG_FEATURE_MOUNT_FLAGS is not set +# CONFIG_FEATURE_MOUNT_FSTAB is not set +# CONFIG_FEATURE_MOUNT_OTHERTAB is not set +# CONFIG_MOUNTPOINT is not set +# CONFIG_NOLOGIN is not set +# CONFIG_NOLOGIN_DEPENDENCIES is not set +# CONFIG_NSENTER is not set +# CONFIG_PIVOT_ROOT is not set +# CONFIG_RDATE is not set +# CONFIG_RDEV is not set +# CONFIG_READPROFILE is not set +# CONFIG_RENICE is not set +# CONFIG_REV is not set +# CONFIG_RTCWAKE is not set +# CONFIG_SCRIPT is not set +# CONFIG_SCRIPTREPLAY is not set +# CONFIG_SETARCH is not set +# CONFIG_LINUX32 is not set +# CONFIG_LINUX64 is not set +# CONFIG_SETPRIV is not set +# CONFIG_FEATURE_SETPRIV_DUMP is not set +# CONFIG_FEATURE_SETPRIV_CAPABILITIES is not set +# CONFIG_FEATURE_SETPRIV_CAPABILITY_NAMES is not set +# CONFIG_SETSID is not set +# CONFIG_SWAPON is not set +# CONFIG_FEATURE_SWAPON_DISCARD is not set +# CONFIG_FEATURE_SWAPON_PRI is not set +# CONFIG_SWAPOFF is not set +# CONFIG_FEATURE_SWAPONOFF_LABEL is not set +# CONFIG_SWITCH_ROOT is not set +# CONFIG_TASKSET is not set +# CONFIG_FEATURE_TASKSET_FANCY is not set +# CONFIG_FEATURE_TASKSET_CPULIST is not set +# CONFIG_UEVENT is not set +CONFIG_UMOUNT=y +CONFIG_FEATURE_UMOUNT_ALL=y +# CONFIG_UNSHARE is not set +# CONFIG_WALL is not set + +# +# Common options for mount/umount +# +# CONFIG_FEATURE_MOUNT_LOOP is not set +# CONFIG_FEATURE_MOUNT_LOOP_CREATE is not set +# CONFIG_FEATURE_MTAB_SUPPORT is not set +# CONFIG_VOLUMEID is not set +# CONFIG_FEATURE_VOLUMEID_BCACHE is not set +# CONFIG_FEATURE_VOLUMEID_BTRFS is not set +# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set +# CONFIG_FEATURE_VOLUMEID_EROFS is not set +# CONFIG_FEATURE_VOLUMEID_EXFAT is not set +# CONFIG_FEATURE_VOLUMEID_EXT is not set +# CONFIG_FEATURE_VOLUMEID_F2FS is not set +# CONFIG_FEATURE_VOLUMEID_FAT is not set +# CONFIG_FEATURE_VOLUMEID_HFS is not set +# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set +# CONFIG_FEATURE_VOLUMEID_JFS is not set +# CONFIG_FEATURE_VOLUMEID_LFS is not set +# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set +# CONFIG_FEATURE_VOLUMEID_LINUXSWAP is not set +# CONFIG_FEATURE_VOLUMEID_LUKS is not set +# CONFIG_FEATURE_VOLUMEID_MINIX is not set +# CONFIG_FEATURE_VOLUMEID_NILFS is not set +# CONFIG_FEATURE_VOLUMEID_NTFS is not set +# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set +# CONFIG_FEATURE_VOLUMEID_REISERFS is not set +# CONFIG_FEATURE_VOLUMEID_ROMFS is not set +# CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set +# CONFIG_FEATURE_VOLUMEID_SYSV is not set +# CONFIG_FEATURE_VOLUMEID_UBIFS is not set +# CONFIG_FEATURE_VOLUMEID_UDF is not set +# CONFIG_FEATURE_VOLUMEID_XFS is not set + +# +# Miscellaneous Utilities +# +# CONFIG_ADJTIMEX is not set +# CONFIG_ASCII is not set +# CONFIG_BBCONFIG is not set +# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set +# CONFIG_BC is not set +# CONFIG_DC is not set +# CONFIG_FEATURE_DC_BIG is not set +# CONFIG_FEATURE_DC_LIBM is not set +# CONFIG_FEATURE_BC_INTERACTIVE is not set +# CONFIG_FEATURE_BC_LONG_OPTIONS is not set +# CONFIG_BEEP is not set +CONFIG_FEATURE_BEEP_FREQ=0 +CONFIG_FEATURE_BEEP_LENGTH_MS=0 +# CONFIG_CHAT is not set +# CONFIG_FEATURE_CHAT_NOFAIL is not set +# CONFIG_FEATURE_CHAT_TTY_HIFI is not set +# CONFIG_FEATURE_CHAT_IMPLICIT_CR is not set +# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set +# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set +# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set +# CONFIG_FEATURE_CHAT_CLR_ABORT is not set +# CONFIG_CONSPY is not set +# CONFIG_CROND is not set +# CONFIG_FEATURE_CROND_D is not set +# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set +# CONFIG_FEATURE_CROND_SPECIAL_TIMES is not set +CONFIG_FEATURE_CROND_DIR="" +# CONFIG_CRONTAB is not set +# CONFIG_DEVFSD is not set +# CONFIG_DEVFSD_MODLOAD is not set +# CONFIG_DEVFSD_FG_NP is not set +# CONFIG_DEVFSD_VERBOSE is not set +# CONFIG_FEATURE_DEVFS is not set +# CONFIG_DEVMEM is not set +# CONFIG_FBSPLASH is not set +# CONFIG_FLASH_ERASEALL is not set +# CONFIG_FLASH_LOCK is not set +# CONFIG_FLASH_UNLOCK is not set +# CONFIG_FLASHCP is not set +# CONFIG_HDPARM is not set +# CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set +# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set +# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set +# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set +# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set +# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set +# CONFIG_HEXEDIT is not set +# CONFIG_I2CGET is not set +# CONFIG_I2CSET is not set +# CONFIG_I2CDUMP is not set +# CONFIG_I2CDETECT is not set +# CONFIG_I2CTRANSFER is not set +# CONFIG_INOTIFYD is not set +CONFIG_LESS=y +CONFIG_FEATURE_LESS_MAXLINES=9999999 +# CONFIG_FEATURE_LESS_BRACKETS is not set +# CONFIG_FEATURE_LESS_FLAGS is not set +# CONFIG_FEATURE_LESS_TRUNCATE is not set +# CONFIG_FEATURE_LESS_MARKS is not set +# CONFIG_FEATURE_LESS_REGEXP is not set +# CONFIG_FEATURE_LESS_WINCH is not set +# CONFIG_FEATURE_LESS_ASK_TERMINAL is not set +# CONFIG_FEATURE_LESS_DASHCMD is not set +# CONFIG_FEATURE_LESS_LINENUMS is not set +# CONFIG_FEATURE_LESS_RAW is not set +# CONFIG_FEATURE_LESS_ENV is not set +# CONFIG_LSSCSI is not set +# CONFIG_MAKEDEVS is not set +# CONFIG_FEATURE_MAKEDEVS_LEAF is not set +# CONFIG_FEATURE_MAKEDEVS_TABLE is not set +# CONFIG_MAN is not set +# CONFIG_MICROCOM is not set +# CONFIG_MIM is not set +# CONFIG_MT is not set +# CONFIG_NANDWRITE is not set +# CONFIG_NANDDUMP is not set +# CONFIG_PARTPROBE is not set +# CONFIG_RAIDAUTORUN is not set +# CONFIG_READAHEAD is not set +# CONFIG_RFKILL is not set +# CONFIG_RUNLEVEL is not set +# CONFIG_RX is not set +# CONFIG_SETFATTR is not set +# CONFIG_SETSERIAL is not set +# CONFIG_STRINGS is not set +# CONFIG_TIME is not set +# CONFIG_TS is not set +# CONFIG_TTYSIZE is not set +# CONFIG_UBIATTACH is not set +# CONFIG_UBIDETACH is not set +# CONFIG_UBIMKVOL is not set +# CONFIG_UBIRMVOL is not set +# CONFIG_UBIRSVOL is not set +# CONFIG_UBIUPDATEVOL is not set +# CONFIG_UBIRENAME is not set +# CONFIG_VOLNAME is not set +# CONFIG_WATCHDOG is not set +# CONFIG_FEATURE_WATCHDOG_OPEN_TWICE is not set + +# +# Networking Utilities +# +# CONFIG_FEATURE_IPV6 is not set +# CONFIG_FEATURE_UNIX_LOCAL is not set +# CONFIG_FEATURE_PREFER_IPV4_ADDRESS is not set +# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set +# CONFIG_FEATURE_TLS_SHA1 is not set +# CONFIG_ARP is not set +# CONFIG_ARPING is not set +# CONFIG_BRCTL is not set +# CONFIG_FEATURE_BRCTL_FANCY is not set +# CONFIG_FEATURE_BRCTL_SHOW is not set +# CONFIG_DNSD is not set +# CONFIG_ETHER_WAKE is not set +# CONFIG_FTPD is not set +# CONFIG_FEATURE_FTPD_WRITE is not set +# CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set +# CONFIG_FEATURE_FTPD_AUTHENTICATION is not set +# CONFIG_FTPGET is not set +# CONFIG_FTPPUT is not set +# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set +# CONFIG_HOSTNAME is not set +# CONFIG_DNSDOMAINNAME is not set +# CONFIG_HTTPD is not set +# CONFIG_FEATURE_HTTPD_RANGES is not set +# CONFIG_FEATURE_HTTPD_SETUID is not set +# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set +# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set +# CONFIG_FEATURE_HTTPD_CGI is not set +# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set +# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set +# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set +# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set +# CONFIG_FEATURE_HTTPD_PROXY is not set +# CONFIG_FEATURE_HTTPD_GZIP is not set +# CONFIG_FEATURE_HTTPD_ETAG is not set +# CONFIG_FEATURE_HTTPD_LAST_MODIFIED is not set +# CONFIG_FEATURE_HTTPD_DATE is not set +# CONFIG_FEATURE_HTTPD_ACL_IP is not set +CONFIG_IFCONFIG=y +CONFIG_FEATURE_IFCONFIG_STATUS=y +# CONFIG_FEATURE_IFCONFIG_SLIP is not set +# CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set +# CONFIG_FEATURE_IFCONFIG_HW is not set +CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y +# CONFIG_IFENSLAVE is not set +# CONFIG_IFPLUGD is not set +# CONFIG_IFUP is not set +# CONFIG_IFDOWN is not set +CONFIG_IFUPDOWN_IFSTATE_PATH="" +# CONFIG_FEATURE_IFUPDOWN_IP is not set +# CONFIG_FEATURE_IFUPDOWN_IPV4 is not set +# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set +# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set +# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set +# CONFIG_INETD is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set +# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set +# CONFIG_FEATURE_INETD_RPC is not set +CONFIG_IP=y +# CONFIG_IPADDR is not set +# CONFIG_IPLINK is not set +# CONFIG_IPROUTE is not set +# CONFIG_IPTUNNEL is not set +# CONFIG_IPRULE is not set +# CONFIG_IPNEIGH is not set +CONFIG_FEATURE_IP_ADDRESS=y +CONFIG_FEATURE_IP_LINK=y +CONFIG_FEATURE_IP_ROUTE=y +CONFIG_FEATURE_IP_ROUTE_DIR="/etc/iproute2" +# CONFIG_FEATURE_IP_TUNNEL is not set +CONFIG_FEATURE_IP_RULE=y +# CONFIG_FEATURE_IP_NEIGH is not set +# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set +# CONFIG_IPCALC is not set +# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set +# CONFIG_FEATURE_IPCALC_FANCY is not set +# CONFIG_FAKEIDENTD is not set +# CONFIG_NAMEIF is not set +# CONFIG_FEATURE_NAMEIF_EXTENDED is not set +# CONFIG_NBDCLIENT is not set +# CONFIG_NC is not set +# CONFIG_NETCAT is not set +# CONFIG_NC_SERVER is not set +# CONFIG_NC_EXTRA is not set +# CONFIG_NC_110_COMPAT is not set +# CONFIG_NETSTAT is not set +# CONFIG_FEATURE_NETSTAT_WIDE is not set +# CONFIG_FEATURE_NETSTAT_PRG is not set +# CONFIG_NSLOOKUP is not set +# CONFIG_FEATURE_NSLOOKUP_BIG is not set +# CONFIG_FEATURE_NSLOOKUP_LONG_OPTIONS is not set +# CONFIG_NTPD is not set +# CONFIG_FEATURE_NTPD_SERVER is not set +# CONFIG_FEATURE_NTPD_CONF is not set +# CONFIG_FEATURE_NTP_AUTH is not set +# CONFIG_PING is not set +# CONFIG_PING6 is not set +# CONFIG_FEATURE_FANCY_PING is not set +# CONFIG_PSCAN is not set +# CONFIG_ROUTE is not set +# CONFIG_SLATTACH is not set +# CONFIG_SSL_CLIENT is not set +# CONFIG_TC is not set +# CONFIG_FEATURE_TC_INGRESS is not set +# CONFIG_TCPSVD is not set +# CONFIG_UDPSVD is not set +# CONFIG_TELNET is not set +# CONFIG_FEATURE_TELNET_TTYPE is not set +# CONFIG_FEATURE_TELNET_AUTOLOGIN is not set +# CONFIG_FEATURE_TELNET_WIDTH is not set +# CONFIG_TELNETD is not set +# CONFIG_FEATURE_TELNETD_STANDALONE is not set +# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set +# CONFIG_TFTP is not set +# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set +# CONFIG_FEATURE_TFTP_HPA_COMPAT is not set +# CONFIG_TFTPD is not set +# CONFIG_FEATURE_TFTP_GET is not set +# CONFIG_FEATURE_TFTP_PUT is not set +# CONFIG_FEATURE_TFTP_BLOCKSIZE is not set +# CONFIG_TFTP_DEBUG is not set +# CONFIG_TLS is not set +# CONFIG_TRACEROUTE is not set +# CONFIG_TRACEROUTE6 is not set +# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set +# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set +# CONFIG_TUNCTL is not set +# CONFIG_FEATURE_TUNCTL_UG is not set +# CONFIG_VCONFIG is not set +CONFIG_WGET=y +# CONFIG_FEATURE_WGET_LONG_OPTIONS is not set +# CONFIG_FEATURE_WGET_STATUSBAR is not set +# CONFIG_FEATURE_WGET_FTP is not set +# CONFIG_FEATURE_WGET_AUTHENTICATION is not set +# CONFIG_FEATURE_WGET_TIMEOUT is not set +# CONFIG_FEATURE_WGET_HTTPS is not set +# CONFIG_FEATURE_WGET_OPENSSL is not set +# CONFIG_WHOIS is not set +# CONFIG_ZCIP is not set +# CONFIG_UDHCPD is not set +# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set +# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set +CONFIG_DHCPD_LEASES_FILE="" +# CONFIG_DUMPLEASES is not set +# CONFIG_DHCPRELAY is not set +CONFIG_UDHCPC=y +# CONFIG_FEATURE_UDHCPC_ARPING is not set +# CONFIG_FEATURE_UDHCPC_SANITIZEOPT is not set +CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" +# CONFIG_UDHCPC6 is not set +# CONFIG_FEATURE_UDHCPC6_RFC3646 is not set +# CONFIG_FEATURE_UDHCPC6_RFC4704 is not set +# CONFIG_FEATURE_UDHCPC6_RFC4833 is not set +# CONFIG_FEATURE_UDHCPC6_RFC5970 is not set + +# +# Common options for DHCP applets +# +CONFIG_UDHCPC_DEFAULT_INTERFACE="eth0" +# CONFIG_FEATURE_UDHCP_PORT is not set +CONFIG_UDHCP_DEBUG=2 +CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 +# CONFIG_FEATURE_UDHCP_RFC3397 is not set +# CONFIG_FEATURE_UDHCP_8021Q is not set +CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="" + +# +# Print Utilities +# +# CONFIG_LPD is not set +# CONFIG_LPR is not set +# CONFIG_LPQ is not set + +# +# Mail Utilities +# +# CONFIG_MAKEMIME is not set +# CONFIG_POPMAILDIR is not set +# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set +# CONFIG_REFORMIME is not set +# CONFIG_FEATURE_REFORMIME_COMPAT is not set +# CONFIG_SENDMAIL is not set +CONFIG_FEATURE_MIME_CHARSET="" + +# +# Process Utilities +# +# CONFIG_FREE is not set +# CONFIG_FUSER is not set +# CONFIG_IOSTAT is not set +# CONFIG_KILL is not set +# CONFIG_KILLALL is not set +# CONFIG_KILLALL5 is not set +# CONFIG_LSOF is not set +# CONFIG_MPSTAT is not set +# CONFIG_NMETER is not set +# CONFIG_PGREP is not set +# CONFIG_PKILL is not set +# CONFIG_PIDOF is not set +# CONFIG_FEATURE_PIDOF_SINGLE is not set +# CONFIG_FEATURE_PIDOF_OMIT is not set +# CONFIG_PMAP is not set +# CONFIG_POWERTOP is not set +# CONFIG_FEATURE_POWERTOP_INTERACTIVE is not set +# CONFIG_PS is not set +# CONFIG_FEATURE_PS_WIDE is not set +# CONFIG_FEATURE_PS_LONG is not set +# CONFIG_FEATURE_PS_TIME is not set +# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set +# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set +# CONFIG_PSTREE is not set +# CONFIG_PWDX is not set +# CONFIG_SMEMCAP is not set +# CONFIG_BB_SYSCTL is not set +# CONFIG_TOP is not set +# CONFIG_FEATURE_TOP_INTERACTIVE is not set +# CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE is not set +# CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS is not set +# CONFIG_FEATURE_TOP_SMP_CPU is not set +# CONFIG_FEATURE_TOP_DECIMALS is not set +# CONFIG_FEATURE_TOP_SMP_PROCESS is not set +# CONFIG_FEATURE_TOPMEM is not set +# CONFIG_UPTIME is not set +# CONFIG_FEATURE_UPTIME_UTMP_SUPPORT is not set +# CONFIG_WATCH is not set +# CONFIG_FEATURE_SHOW_THREADS is not set + +# +# Runit Utilities +# +# CONFIG_CHPST is not set +# CONFIG_SETUIDGID is not set +# CONFIG_ENVUIDGID is not set +# CONFIG_ENVDIR is not set +# CONFIG_SOFTLIMIT is not set +# CONFIG_RUNSV is not set +# CONFIG_RUNSVDIR is not set +# CONFIG_FEATURE_RUNSVDIR_LOG is not set +# CONFIG_SV is not set +CONFIG_SV_DEFAULT_SERVICE_DIR="" +# CONFIG_SVC is not set +# CONFIG_SVOK is not set +# CONFIG_SVLOGD is not set +# CONFIG_CHCON is not set +# CONFIG_GETENFORCE is not set +# CONFIG_GETSEBOOL is not set +# CONFIG_LOAD_POLICY is not set +# CONFIG_MATCHPATHCON is not set +# CONFIG_RUNCON is not set +# CONFIG_SELINUXENABLED is not set +# CONFIG_SESTATUS is not set +# CONFIG_SETENFORCE is not set +# CONFIG_SETFILES is not set +# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set +# CONFIG_RESTORECON is not set +# CONFIG_SETSEBOOL is not set + +# +# Shells +# +CONFIG_SH_IS_ASH=y +# CONFIG_SH_IS_HUSH is not set +# CONFIG_SH_IS_NONE is not set +# CONFIG_BASH_IS_ASH is not set +# CONFIG_BASH_IS_HUSH is not set +CONFIG_BASH_IS_NONE=y +CONFIG_SHELL_ASH=y +CONFIG_ASH=y +CONFIG_ASH_OPTIMIZE_FOR_SIZE=y +# CONFIG_ASH_INTERNAL_GLOB is not set +# CONFIG_ASH_BASH_COMPAT is not set +# CONFIG_ASH_BASH_SOURCE_CURDIR is not set +# CONFIG_ASH_BASH_NOT_FOUND_HOOK is not set +# CONFIG_ASH_JOB_CONTROL is not set +# CONFIG_ASH_ALIAS is not set +# CONFIG_ASH_RANDOM_SUPPORT is not set +# CONFIG_ASH_EXPAND_PRMT is not set +# CONFIG_ASH_IDLE_TIMEOUT is not set +# CONFIG_ASH_MAIL is not set +# CONFIG_ASH_ECHO is not set +# CONFIG_ASH_PRINTF is not set +# CONFIG_ASH_TEST is not set +# CONFIG_ASH_HELP is not set +# CONFIG_ASH_GETOPTS is not set +# CONFIG_ASH_CMDCMD is not set +# CONFIG_CTTYHACK is not set +# CONFIG_HUSH is not set +# CONFIG_SHELL_HUSH is not set +# CONFIG_HUSH_BASH_COMPAT is not set +# CONFIG_HUSH_BRACE_EXPANSION is not set +# CONFIG_HUSH_BASH_SOURCE_CURDIR is not set +# CONFIG_HUSH_LINENO_VAR is not set +# CONFIG_HUSH_INTERACTIVE is not set +# CONFIG_HUSH_SAVEHISTORY is not set +# CONFIG_HUSH_JOB is not set +# CONFIG_HUSH_TICK is not set +# CONFIG_HUSH_IF is not set +# CONFIG_HUSH_LOOPS is not set +# CONFIG_HUSH_CASE is not set +# CONFIG_HUSH_FUNCTIONS is not set +# CONFIG_HUSH_LOCAL is not set +# CONFIG_HUSH_RANDOM_SUPPORT is not set +# CONFIG_HUSH_MODE_X is not set +# CONFIG_HUSH_ECHO is not set +# CONFIG_HUSH_PRINTF is not set +# CONFIG_HUSH_TEST is not set +# CONFIG_HUSH_HELP is not set +# CONFIG_HUSH_EXPORT is not set +# CONFIG_HUSH_EXPORT_N is not set +# CONFIG_HUSH_READONLY is not set +# CONFIG_HUSH_KILL is not set +# CONFIG_HUSH_WAIT is not set +# CONFIG_HUSH_COMMAND is not set +# CONFIG_HUSH_TRAP is not set +# CONFIG_HUSH_TYPE is not set +# CONFIG_HUSH_TIMES is not set +# CONFIG_HUSH_READ is not set +# CONFIG_HUSH_SET is not set +# CONFIG_HUSH_UNSET is not set +# CONFIG_HUSH_ULIMIT is not set +# CONFIG_HUSH_UMASK is not set +# CONFIG_HUSH_GETOPTS is not set +# CONFIG_HUSH_MEMLEAK is not set + +# +# Options common to all shells +# +# CONFIG_FEATURE_SH_MATH is not set +# CONFIG_FEATURE_SH_MATH_64 is not set +# CONFIG_FEATURE_SH_MATH_BASE is not set +# CONFIG_FEATURE_SH_EXTRA_QUIET is not set +# CONFIG_FEATURE_SH_STANDALONE is not set +# CONFIG_FEATURE_SH_NOFORK is not set +# CONFIG_FEATURE_SH_READ_FRAC is not set +# CONFIG_FEATURE_SH_HISTFILESIZE is not set +# CONFIG_FEATURE_SH_EMBEDDED_SCRIPTS is not set + +# +# System Logging Utilities +# +# CONFIG_KLOGD is not set +# CONFIG_FEATURE_KLOGD_KLOGCTL is not set +# CONFIG_LOGGER is not set +# CONFIG_LOGREAD is not set +# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set +# CONFIG_SYSLOGD is not set +# CONFIG_FEATURE_ROTATE_LOGFILE is not set +# CONFIG_FEATURE_REMOTE_LOG is not set +# CONFIG_FEATURE_SYSLOGD_DUP is not set +# CONFIG_FEATURE_SYSLOGD_CFG is not set +# CONFIG_FEATURE_SYSLOGD_PRECISE_TIMESTAMPS is not set +CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=0 +# CONFIG_FEATURE_IPC_SYSLOG is not set +CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0 +# CONFIG_FEATURE_KMSG_SYSLOG is not set diff --git a/floppy/configs/config-full-for-archinstall-linux-i486 b/floppy/configs/config-full-for-archinstall-linux-i486 new file mode 100644 index 0000000..6f5214b --- /dev/null +++ b/floppy/configs/config-full-for-archinstall-linux-i486 @@ -0,0 +1,2556 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/x86 5.18.1-arch1 Kernel Configuration +# +CONFIG_CC_VERSION_TEXT="gcc (GCC) 12.1.1 20220730" +CONFIG_CC_IS_GCC=y +CONFIG_GCC_VERSION=120101 +CONFIG_CLANG_VERSION=0 +CONFIG_AS_IS_GNU=y +CONFIG_AS_VERSION=23800 +CONFIG_LD_IS_BFD=y +CONFIG_LD_VERSION=23800 +CONFIG_LLD_VERSION=0 +CONFIG_CC_HAS_ASM_GOTO=y +CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y +CONFIG_CC_HAS_ASM_INLINE=y +CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y +CONFIG_PAHOLE_VERSION=123 +CONFIG_IRQ_WORK=y +CONFIG_BUILDTIME_TABLE_SORT=y +CONFIG_THREAD_INFO_IN_TASK=y + +# +# General setup +# +CONFIG_BROKEN_ON_SMP=y +CONFIG_INIT_ENV_ARG_LIMIT=32 +# CONFIG_COMPILE_TEST is not set +# CONFIG_WERROR is not set +CONFIG_LOCALVERSION="" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_BUILD_SALT="" +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_BZIP2=y +CONFIG_HAVE_KERNEL_LZMA=y +CONFIG_HAVE_KERNEL_XZ=y +CONFIG_HAVE_KERNEL_LZO=y +CONFIG_HAVE_KERNEL_LZ4=y +CONFIG_HAVE_KERNEL_ZSTD=y +# CONFIG_KERNEL_GZIP is not set +# CONFIG_KERNEL_BZIP2 is not set +# CONFIG_KERNEL_LZMA is not set +# CONFIG_KERNEL_XZ is not set +# CONFIG_KERNEL_LZO is not set +# CONFIG_KERNEL_LZ4 is not set +CONFIG_KERNEL_ZSTD=y +CONFIG_DEFAULT_INIT="" +CONFIG_DEFAULT_HOSTNAME="(none)" +CONFIG_SWAP=y +# CONFIG_SYSVIPC is not set +CONFIG_POSIX_MQUEUE=y +CONFIG_POSIX_MQUEUE_SYSCTL=y +# CONFIG_WATCH_QUEUE is not set +# CONFIG_CROSS_MEMORY_ATTACH is not set +# CONFIG_USELIB is not set +# CONFIG_AUDIT is not set +CONFIG_HAVE_ARCH_AUDITSYSCALL=y + +# +# IRQ subsystem +# +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_GENERIC_IRQ_RESERVATION_MODE=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_SPARSE_IRQ=y +# end of IRQ subsystem + +CONFIG_CLOCKSOURCE_WATCHDOG=y +CONFIG_ARCH_CLOCKSOURCE_INIT=y +CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y +CONFIG_GENERIC_TIME_VSYSCALL=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y +CONFIG_GENERIC_CMOS_UPDATE=y +CONFIG_HAVE_POSIX_CPU_TIMERS_TASK_WORK=y +CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y + +# +# Timers subsystem +# +CONFIG_HZ_PERIODIC=y +# CONFIG_NO_HZ_IDLE is not set +# CONFIG_NO_HZ is not set +# CONFIG_HIGH_RES_TIMERS is not set +CONFIG_CLOCKSOURCE_WATCHDOG_MAX_SKEW_US=100 +# end of Timers subsystem + +CONFIG_BPF=y +CONFIG_HAVE_EBPF_JIT=y + +# +# BPF subsystem +# +# CONFIG_BPF_SYSCALL is not set +# CONFIG_BPF_JIT is not set +# end of BPF subsystem + +CONFIG_PREEMPT_NONE_BUILD=y +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PREEMPT is not set +# CONFIG_PREEMPT_DYNAMIC is not set + +# +# CPU/Task time and stats accounting +# +CONFIG_TICK_CPU_ACCOUNTING=y +# CONFIG_IRQ_TIME_ACCOUNTING is not set +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_TASKSTATS is not set +# CONFIG_PSI is not set +# end of CPU/Task time and stats accounting + +# +# RCU Subsystem +# +CONFIG_TINY_RCU=y +# CONFIG_RCU_EXPERT is not set +CONFIG_SRCU=y +CONFIG_TINY_SRCU=y +# end of RCU Subsystem + +# CONFIG_IKCONFIG is not set +# CONFIG_IKHEADERS is not set +CONFIG_LOG_BUF_SHIFT=16 +CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=12 +CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y + +# +# Scheduler features +# +# end of Scheduler features + +CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y +CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5" +CONFIG_CGROUPS=y +CONFIG_PAGE_COUNTER=y +CONFIG_MEMCG=y +CONFIG_MEMCG_SWAP=y +CONFIG_BLK_CGROUP=y +CONFIG_CGROUP_WRITEBACK=y +CONFIG_CGROUP_SCHED=y +CONFIG_FAIR_GROUP_SCHED=y +# CONFIG_CFS_BANDWIDTH is not set +# CONFIG_RT_GROUP_SCHED is not set +CONFIG_CGROUP_PIDS=y +CONFIG_CGROUP_RDMA=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_CGROUP_PERF=y +# CONFIG_CGROUP_MISC is not set +# CONFIG_CGROUP_DEBUG is not set +# CONFIG_NAMESPACES is not set +# CONFIG_CHECKPOINT_RESTORE is not set +# CONFIG_SCHED_AUTOGROUP is not set +# CONFIG_SYSFS_DEPRECATED is not set +# CONFIG_RELAY is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +# CONFIG_RD_GZIP is not set +# CONFIG_RD_BZIP2 is not set +# CONFIG_RD_LZMA is not set +# CONFIG_RD_XZ is not set +# CONFIG_RD_LZO is not set +# CONFIG_RD_LZ4 is not set +CONFIG_RD_ZSTD=y +# CONFIG_BOOT_CONFIG is not set +# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_LD_ORPHAN_WARN=y +CONFIG_SYSCTL=y +CONFIG_HAVE_UID16=y +CONFIG_SYSCTL_EXCEPTION_TRACE=y +CONFIG_HAVE_PCSPKR_PLATFORM=y +CONFIG_EXPERT=y +CONFIG_UID16=y +CONFIG_MULTIUSER=y +# CONFIG_SGETMASK_SYSCALL is not set +# CONFIG_SYSFS_SYSCALL is not set +CONFIG_FHANDLE=y +CONFIG_POSIX_TIMERS=y +CONFIG_PRINTK=y +# CONFIG_BUG is not set +CONFIG_PCSPKR_PLATFORM=y +# CONFIG_BASE_FULL is not set +CONFIG_FUTEX=y +CONFIG_FUTEX_PI=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +# CONFIG_AIO is not set +# CONFIG_IO_URING is not set +# CONFIG_ADVISE_SYSCALLS is not set +# CONFIG_MEMBARRIER is not set +# CONFIG_KALLSYMS is not set +# CONFIG_USERFAULTFD is not set +CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y +# CONFIG_KCMP is not set +# CONFIG_RSEQ is not set +CONFIG_EMBEDDED=y +CONFIG_HAVE_PERF_EVENTS=y +# CONFIG_PC104 is not set + +# +# Kernel Performance Events And Counters +# +CONFIG_PERF_EVENTS=y +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +# end of Kernel Performance Events And Counters + +# CONFIG_VM_EVENT_COUNTERS is not set +# CONFIG_COMPAT_BRK is not set +# CONFIG_SLAB is not set +# CONFIG_SLUB is not set +CONFIG_SLOB=y +# CONFIG_SHUFFLE_PAGE_ALLOCATOR is not set +# CONFIG_PROFILING is not set +# end of General setup + +# CONFIG_64BIT is not set +CONFIG_X86_32=y +CONFIG_X86=y +CONFIG_INSTRUCTION_DECODER=y +CONFIG_OUTPUT_FORMAT="elf32-i386" +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_MMU=y +CONFIG_ARCH_MMAP_RND_BITS_MIN=8 +CONFIG_ARCH_MMAP_RND_BITS_MAX=16 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 +CONFIG_GENERIC_ISA_DMA=y +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_ARCH_HAS_CPU_RELAX=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_NR_GPIO=512 +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ARCH_SUPPORTS_UPROBES=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_PGTABLE_LEVELS=2 +CONFIG_CC_HAS_SANE_STACKPROTECTOR=y + +# +# Processor type and features +# +# CONFIG_SMP is not set +CONFIG_X86_FEATURE_NAMES=y +# CONFIG_GOLDFISH is not set +# CONFIG_RETPOLINE is not set +CONFIG_CC_HAS_SLS=y +# CONFIG_X86_CPU_RESCTRL is not set +# CONFIG_X86_EXTENDED_PLATFORM is not set +# CONFIG_IOSF_MBI is not set +# CONFIG_X86_32_IRIS is not set +# CONFIG_SCHED_OMIT_FRAME_POINTER is not set +# CONFIG_HYPERVISOR_GUEST is not set +# CONFIG_M486SX is not set +CONFIG_M486=y +# CONFIG_M586 is not set +# CONFIG_M586TSC is not set +# CONFIG_M586MMX is not set +# CONFIG_M686 is not set +# CONFIG_MPENTIUMII is not set +# CONFIG_MPENTIUMIII is not set +# CONFIG_MPENTIUMM is not set +# CONFIG_MPENTIUM4 is not set +# CONFIG_MK6 is not set +# CONFIG_MK7 is not set +# CONFIG_MK8 is not set +# CONFIG_MCRUSOE is not set +# CONFIG_MEFFICEON is not set +# CONFIG_MWINCHIPC6 is not set +# CONFIG_MWINCHIP3D is not set +# CONFIG_MELAN is not set +# CONFIG_MGEODEGX1 is not set +# CONFIG_MGEODE_LX is not set +# CONFIG_MCYRIXIII is not set +# CONFIG_MVIAC3_2 is not set +# CONFIG_MVIAC7 is not set +# CONFIG_MCORE2 is not set +# CONFIG_MATOM is not set +# CONFIG_X86_GENERIC is not set +CONFIG_X86_INTERNODE_CACHE_SHIFT=4 +CONFIG_X86_L1_CACHE_SHIFT=4 +CONFIG_X86_F00F_BUG=y +CONFIG_X86_INVD_BUG=y +CONFIG_X86_ALIGNMENT_16=y +CONFIG_X86_MINIMUM_CPU_FAMILY=4 +CONFIG_IA32_FEAT_CTL=y +CONFIG_X86_VMX_FEATURE_NAMES=y +CONFIG_PROCESSOR_SELECT=y +CONFIG_CPU_SUP_INTEL=y +CONFIG_CPU_SUP_CYRIX_32=y +CONFIG_CPU_SUP_AMD=y +CONFIG_CPU_SUP_HYGON=y +CONFIG_CPU_SUP_CENTAUR=y +CONFIG_CPU_SUP_TRANSMETA_32=y +CONFIG_CPU_SUP_UMC_32=y +CONFIG_CPU_SUP_ZHAOXIN=y +CONFIG_CPU_SUP_VORTEX_32=y +# CONFIG_HPET_TIMER is not set +# CONFIG_DMI is not set +CONFIG_NR_CPUS_RANGE_BEGIN=1 +CONFIG_NR_CPUS_RANGE_END=1 +CONFIG_NR_CPUS_DEFAULT=1 +CONFIG_NR_CPUS=1 +# CONFIG_X86_UP_APIC is not set +# CONFIG_X86_MCE is not set + +# +# Performance monitoring +# +CONFIG_PERF_EVENTS_INTEL_UNCORE=y +CONFIG_PERF_EVENTS_INTEL_RAPL=y +CONFIG_PERF_EVENTS_INTEL_CSTATE=y +# CONFIG_PERF_EVENTS_AMD_POWER is not set +# CONFIG_PERF_EVENTS_AMD_UNCORE is not set +# end of Performance monitoring + +# CONFIG_X86_LEGACY_VM86 is not set +# CONFIG_X86_IOPL_IOPERM is not set +# CONFIG_TOSHIBA is not set +# CONFIG_X86_REBOOTFIXUPS is not set +# CONFIG_MICROCODE is not set +# CONFIG_X86_MSR is not set +# CONFIG_X86_CPUID is not set +CONFIG_NOHIGHMEM=y +# CONFIG_HIGHMEM4G is not set +CONFIG_VMSPLIT_3G=y +# CONFIG_VMSPLIT_3G_OPT is not set +# CONFIG_VMSPLIT_2G is not set +# CONFIG_VMSPLIT_2G_OPT is not set +# CONFIG_VMSPLIT_1G is not set +CONFIG_PAGE_OFFSET=0xC0000000 +# CONFIG_X86_PAE is not set +CONFIG_ARCH_FLATMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ILLEGAL_POINTER_VALUE=0 +# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set +# CONFIG_MTRR is not set +# CONFIG_ARCH_RANDOM is not set +# CONFIG_X86_SMAP is not set +# CONFIG_X86_UMIP is not set +CONFIG_CC_HAS_IBT=y +CONFIG_X86_INTEL_TSX_MODE_OFF=y +# CONFIG_X86_INTEL_TSX_MODE_ON is not set +# CONFIG_X86_INTEL_TSX_MODE_AUTO is not set +# CONFIG_HZ_100 is not set +CONFIG_HZ_250=y +# CONFIG_HZ_300 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ=250 +# CONFIG_KEXEC is not set +CONFIG_PHYSICAL_START=0x1000000 +# CONFIG_RELOCATABLE is not set +CONFIG_PHYSICAL_ALIGN=0x200000 +# CONFIG_COMPAT_VDSO is not set +# CONFIG_CMDLINE_BOOL is not set +# CONFIG_MODIFY_LDT_SYSCALL is not set +# CONFIG_STRICT_SIGALTSTACK_SIZE is not set +# end of Processor type and features + +CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y + +# +# Power management and ACPI options +# +# CONFIG_SUSPEND is not set +# CONFIG_HIBERNATION is not set +# CONFIG_PM is not set +CONFIG_ARCH_SUPPORTS_ACPI=y +# CONFIG_ACPI is not set + +# +# CPU Frequency scaling +# +# CONFIG_CPU_FREQ is not set +# end of CPU Frequency scaling + +# +# CPU Idle +# +# CONFIG_CPU_IDLE is not set +# end of CPU Idle +# end of Power management and ACPI options + +# +# Bus options (PCI etc.) +# +# CONFIG_PCI_GOBIOS is not set +# CONFIG_PCI_GOMMCONFIG is not set +# CONFIG_PCI_GODIRECT is not set +CONFIG_PCI_GOANY=y +CONFIG_PCI_BIOS=y +CONFIG_PCI_DIRECT=y +# CONFIG_PCI_CNB20LE_QUIRK is not set +CONFIG_ISA_BUS=y +CONFIG_ISA_DMA_API=y +CONFIG_ISA=y +# CONFIG_SCx200 is not set +# CONFIG_OLPC is not set +# CONFIG_ALIX is not set +# CONFIG_NET5501 is not set +CONFIG_AMD_NB=y +# end of Bus options (PCI etc.) + +# +# Binary Emulations +# +CONFIG_COMPAT_32=y +# end of Binary Emulations + +CONFIG_HAVE_ATOMIC_IOMAP=y +CONFIG_HAVE_KVM=y +# CONFIG_VIRTUALIZATION is not set +CONFIG_AS_AVX512=y +CONFIG_AS_SHA1_NI=y +CONFIG_AS_SHA256_NI=y +CONFIG_AS_TPAUSE=y + +# +# General architecture-dependent options +# +CONFIG_GENERIC_ENTRY=y +# CONFIG_KPROBES is not set +# CONFIG_JUMP_LABEL is not set +# CONFIG_STATIC_CALL_SELFTEST is not set +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_ARCH_USE_BUILTIN_BSWAP=y +CONFIG_HAVE_IOREMAP_PROT=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_OPTPROBES=y +CONFIG_HAVE_KPROBES_ON_FTRACE=y +CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y +CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y +CONFIG_HAVE_NMI=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_DMA_CONTIGUOUS=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_ARCH_HAS_FORTIFY_SOURCE=y +CONFIG_ARCH_HAS_SET_MEMORY=y +CONFIG_ARCH_HAS_SET_DIRECT_MAP=y +CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y +CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y +CONFIG_ARCH_WANTS_NO_INSTR=y +CONFIG_ARCH_32BIT_OFF_T=y +CONFIG_HAVE_ASM_MODVERSIONS=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_RSEQ=y +CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=y +CONFIG_HAVE_HW_BREAKPOINT=y +CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y +CONFIG_HAVE_USER_RETURN_NOTIFIER=y +CONFIG_HAVE_PERF_EVENTS_NMI=y +CONFIG_HAVE_HARDLOCKUP_DETECTOR_PERF=y +CONFIG_HAVE_PERF_REGS=y +CONFIG_HAVE_PERF_USER_STACK_DUMP=y +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_HAVE_ARCH_JUMP_LABEL_RELATIVE=y +CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y +CONFIG_HAVE_CMPXCHG_LOCAL=y +CONFIG_HAVE_CMPXCHG_DOUBLE=y +CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y +CONFIG_HAVE_ARCH_SECCOMP=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +# CONFIG_SECCOMP is not set +CONFIG_HAVE_ARCH_STACKLEAK=y +CONFIG_HAVE_STACKPROTECTOR=y +# CONFIG_STACKPROTECTOR is not set +CONFIG_ARCH_SUPPORTS_LTO_CLANG=y +CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y +CONFIG_LTO_NONE=y +CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y +CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_MOVE_PUD=y +CONFIG_HAVE_MOVE_PMD=y +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y +CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y +CONFIG_HAVE_MOD_ARCH_SPECIFIC=y +CONFIG_MODULES_USE_ELF_REL=y +CONFIG_HAVE_SOFTIRQ_ON_OWN_STACK=y +CONFIG_ARCH_HAS_ELF_RANDOMIZE=y +CONFIG_HAVE_ARCH_MMAP_RND_BITS=y +CONFIG_HAVE_EXIT_THREAD=y +CONFIG_ARCH_MMAP_RND_BITS=8 +CONFIG_PAGE_SIZE_LESS_THAN_64KB=y +CONFIG_PAGE_SIZE_LESS_THAN_256KB=y +CONFIG_ISA_BUS_API=y +CONFIG_CLONE_BACKWARDS=y +CONFIG_OLD_SIGSUSPEND3=y +CONFIG_OLD_SIGACTION=y +CONFIG_COMPAT_32BIT_TIME=y +CONFIG_HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET=y +# CONFIG_RANDOMIZE_KSTACK_OFFSET is not set +CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y +CONFIG_STRICT_KERNEL_RWX=y +CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y +CONFIG_STRICT_MODULE_RWX=y +CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y +CONFIG_ARCH_HAS_MEM_ENCRYPT=y +CONFIG_HAVE_STATIC_CALL=y +CONFIG_HAVE_PREEMPT_DYNAMIC=y +CONFIG_HAVE_PREEMPT_DYNAMIC_CALL=y +CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_ARCH_SPLIT_ARG64=y +CONFIG_ARCH_HAS_PARANOID_L1D_FLUSH=y +CONFIG_DYNAMIC_SIGFRAME=y + +# +# GCOV-based kernel profiling +# +CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y +# end of GCOV-based kernel profiling + +CONFIG_HAVE_GCC_PLUGINS=y +# CONFIG_GCC_PLUGINS is not set +# end of General architecture-dependent options + +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=1 +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_LOAD is not set +CONFIG_MODULE_UNLOAD=y +# CONFIG_MODULE_FORCE_UNLOAD is not set +# CONFIG_MODVERSIONS is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +# CONFIG_MODULE_SIG is not set +CONFIG_MODULE_COMPRESS_NONE=y +# CONFIG_MODULE_COMPRESS_GZIP is not set +# CONFIG_MODULE_COMPRESS_XZ is not set +# CONFIG_MODULE_COMPRESS_ZSTD is not set +# CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set +CONFIG_MODPROBE_PATH="/sbin/modprobe" +# CONFIG_TRIM_UNUSED_KSYMS is not set +CONFIG_MODULES_TREE_LOOKUP=y +CONFIG_BLOCK=y +CONFIG_BLOCK_LEGACY_AUTOLOAD=y +CONFIG_BLK_DEV_BSG_COMMON=y +# CONFIG_BLK_DEV_BSGLIB is not set +# CONFIG_BLK_DEV_INTEGRITY is not set +# CONFIG_BLK_DEV_ZONED is not set +# CONFIG_BLK_DEV_THROTTLING is not set +# CONFIG_BLK_WBT is not set +# CONFIG_BLK_CGROUP_IOLATENCY is not set +# CONFIG_BLK_CGROUP_IOCOST is not set +# CONFIG_BLK_CGROUP_IOPRIO is not set +# CONFIG_BLK_SED_OPAL is not set +# CONFIG_BLK_INLINE_ENCRYPTION is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_AIX_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_KARMA_PARTITION is not set +# CONFIG_EFI_PARTITION is not set +# CONFIG_SYSV68_PARTITION is not set +# CONFIG_CMDLINE_PARTITION is not set +# end of Partition Types + +CONFIG_BLK_MQ_PCI=y + +# +# IO Schedulers +# +CONFIG_MQ_IOSCHED_DEADLINE=y +CONFIG_MQ_IOSCHED_KYBER=y +# CONFIG_IOSCHED_BFQ is not set +# end of IO Schedulers + +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y +CONFIG_INLINE_READ_UNLOCK=y +CONFIG_INLINE_READ_UNLOCK_IRQ=y +CONFIG_INLINE_WRITE_UNLOCK=y +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y +CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y +CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y +CONFIG_ARCH_USE_QUEUED_RWLOCKS=y +CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE=y +CONFIG_ARCH_HAS_SYNC_CORE_BEFORE_USERMODE=y +CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y +CONFIG_FREEZER=y + +# +# Executable file formats +# +CONFIG_BINFMT_ELF=y +CONFIG_ELFCORE=y +CONFIG_BINFMT_SCRIPT=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_COREDUMP is not set +# end of Executable file formats + +# +# Memory Management options +# +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_SPARSEMEM_STATIC=y +CONFIG_HAVE_FAST_GUP=y +CONFIG_EXCLUSIVE_SYSTEM_RAM=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_COMPACTION is not set +# CONFIG_PAGE_REPORTING is not set +CONFIG_VIRT_TO_BUS=y +# CONFIG_KSM is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +# CONFIG_TRANSPARENT_HUGEPAGE is not set +CONFIG_ARCH_WANT_GENERAL_HUGETLB=y +CONFIG_NEED_PER_CPU_KM=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +# CONFIG_CMA is not set +# CONFIG_ZPOOL is not set +# CONFIG_ZSMALLOC is not set +CONFIG_GENERIC_EARLY_IOREMAP=y +# CONFIG_IDLE_PAGE_TRACKING is not set +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +CONFIG_ARCH_HAS_CURRENT_STACK_POINTER=y +CONFIG_ARCH_HAS_FILTER_PGPROT=y +CONFIG_ARCH_HAS_ZONE_DMA_SET=y +# CONFIG_ZONE_DMA is not set +# CONFIG_PERCPU_STATS is not set + +# +# GUP_TEST needs to have DEBUG_FS enabled +# +CONFIG_ARCH_HAS_PTE_SPECIAL=y +CONFIG_KMAP_LOCAL=y + +# +# Data Access Monitoring +# +# CONFIG_DAMON is not set +# end of Data Access Monitoring +# end of Memory Management options + +CONFIG_NET=y +CONFIG_NET_INGRESS=y +CONFIG_NET_EGRESS=y + +# +# Networking options +# +# CONFIG_PACKET is not set +CONFIG_UNIX=y +CONFIG_UNIX_SCM=y +CONFIG_AF_UNIX_OOB=y +# CONFIG_UNIX_DIAG is not set +# CONFIG_TLS is not set +# CONFIG_XFRM_USER is not set +# CONFIG_NET_KEY is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE_DEMUX is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_NET_IPVTI is not set +# CONFIG_NET_FOU is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_DIAG is not set +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +CONFIG_IPV6=y +# CONFIG_IPV6_ROUTER_PREF is not set +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +# CONFIG_INET6_AH is not set +# CONFIG_INET6_ESP is not set +# CONFIG_INET6_IPCOMP is not set +# CONFIG_IPV6_MIP6 is not set +# CONFIG_IPV6_ILA is not set +# CONFIG_IPV6_VTI is not set +# CONFIG_IPV6_SIT is not set +# CONFIG_IPV6_TUNNEL is not set +# CONFIG_IPV6_MULTIPLE_TABLES is not set +# CONFIG_IPV6_MROUTE is not set +# CONFIG_IPV6_SEG6_LWTUNNEL is not set +# CONFIG_IPV6_SEG6_HMAC is not set +# CONFIG_IPV6_RPL_LWTUNNEL is not set +# CONFIG_IPV6_IOAM6_LWTUNNEL is not set +# CONFIG_MPTCP is not set +# CONFIG_NETWORK_SECMARK is not set +CONFIG_NET_PTP_CLASSIFY=y +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +CONFIG_NETFILTER=y +CONFIG_NETFILTER_ADVANCED=y + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_INGRESS=y +CONFIG_NETFILTER_EGRESS=y +# CONFIG_NETFILTER_NETLINK_ACCT is not set +# CONFIG_NETFILTER_NETLINK_QUEUE is not set +# CONFIG_NETFILTER_NETLINK_LOG is not set +# CONFIG_NETFILTER_NETLINK_OSF is not set +# CONFIG_NF_CONNTRACK is not set +# CONFIG_NF_LOG_SYSLOG is not set +# CONFIG_NF_TABLES is not set +# CONFIG_NETFILTER_XTABLES is not set +# end of Core Netfilter Configuration + +# CONFIG_IP_SET is not set +# CONFIG_IP_VS is not set + +# +# IP: Netfilter Configuration +# +# CONFIG_NF_SOCKET_IPV4 is not set +# CONFIG_NF_TPROXY_IPV4 is not set +# CONFIG_NF_DUP_IPV4 is not set +# CONFIG_NF_LOG_ARP is not set +# CONFIG_NF_LOG_IPV4 is not set +# CONFIG_NF_REJECT_IPV4 is not set +# CONFIG_IP_NF_IPTABLES is not set +# CONFIG_IP_NF_ARPTABLES is not set +# end of IP: Netfilter Configuration + +# +# IPv6: Netfilter Configuration +# +# CONFIG_NF_SOCKET_IPV6 is not set +# CONFIG_NF_TPROXY_IPV6 is not set +# CONFIG_NF_DUP_IPV6 is not set +# CONFIG_NF_REJECT_IPV6 is not set +# CONFIG_NF_LOG_IPV6 is not set +# CONFIG_IP6_NF_IPTABLES is not set +# end of IPv6: Netfilter Configuration + +# CONFIG_BPFILTER is not set +# CONFIG_IP_DCCP is not set +# CONFIG_IP_SCTP is not set +# CONFIG_RDS is not set +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +# CONFIG_L2TP is not set +# CONFIG_BRIDGE is not set +# CONFIG_NET_DSA is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_PHONET is not set +# CONFIG_6LOWPAN is not set +# CONFIG_IEEE802154 is not set +# CONFIG_NET_SCHED is not set +# CONFIG_DCB is not set +# CONFIG_BATMAN_ADV is not set +# CONFIG_OPENVSWITCH is not set +# CONFIG_VSOCKETS is not set +# CONFIG_NETLINK_DIAG is not set +# CONFIG_MPLS is not set +# CONFIG_NET_NSH is not set +# CONFIG_HSR is not set +# CONFIG_NET_SWITCHDEV is not set +# CONFIG_NET_L3_MASTER_DEV is not set +# CONFIG_QRTR is not set +# CONFIG_NET_NCSI is not set +# CONFIG_CGROUP_NET_PRIO is not set +# CONFIG_CGROUP_NET_CLASSID is not set +CONFIG_NET_RX_BUSY_POLL=y +CONFIG_BQL=y + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# end of Network testing +# end of Networking options + +# CONFIG_HAMRADIO is not set +# CONFIG_CAN is not set +# CONFIG_BT is not set +# CONFIG_AF_RXRPC is not set +# CONFIG_AF_KCM is not set +# CONFIG_MCTP is not set +# CONFIG_WIRELESS is not set +# CONFIG_RFKILL is not set +# CONFIG_NET_9P is not set +# CONFIG_CAIF is not set +# CONFIG_CEPH_LIB is not set +# CONFIG_NFC is not set +# CONFIG_PSAMPLE is not set +# CONFIG_NET_IFE is not set +# CONFIG_LWTUNNEL is not set +CONFIG_NET_SELFTESTS=m +# CONFIG_FAILOVER is not set +# CONFIG_ETHTOOL_NETLINK is not set + +# +# Device Drivers +# +CONFIG_HAVE_EISA=y +# CONFIG_EISA is not set +CONFIG_HAVE_PCI=y +CONFIG_PCI=y +CONFIG_PCI_DOMAINS=y +# CONFIG_PCIEPORTBUS is not set +CONFIG_PCIEASPM=y +CONFIG_PCIEASPM_DEFAULT=y +# CONFIG_PCIEASPM_POWERSAVE is not set +# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set +# CONFIG_PCIEASPM_PERFORMANCE is not set +# CONFIG_PCIE_PTM is not set +# CONFIG_PCI_MSI is not set +CONFIG_PCI_QUIRKS=y +# CONFIG_PCI_DEBUG is not set +# CONFIG_PCI_STUB is not set +CONFIG_PCI_LOCKLESS_CONFIG=y +# CONFIG_PCI_IOV is not set +# CONFIG_PCI_PRI is not set +# CONFIG_PCI_PASID is not set +# CONFIG_PCIE_BUS_TUNE_OFF is not set +CONFIG_PCIE_BUS_DEFAULT=y +# CONFIG_PCIE_BUS_SAFE is not set +# CONFIG_PCIE_BUS_PERFORMANCE is not set +# CONFIG_PCIE_BUS_PEER2PEER is not set +CONFIG_VGA_ARB=y +CONFIG_VGA_ARB_MAX_GPUS=16 +# CONFIG_HOTPLUG_PCI is not set + +# +# PCI controller drivers +# + +# +# DesignWare PCI Core Support +# +# end of DesignWare PCI Core Support + +# +# Mobiveil PCIe Core Support +# +# end of Mobiveil PCIe Core Support + +# +# Cadence PCIe controllers support +# +# end of Cadence PCIe controllers support +# end of PCI controller drivers + +# +# PCI Endpoint +# +# CONFIG_PCI_ENDPOINT is not set +# end of PCI Endpoint + +# +# PCI switch controller drivers +# +# CONFIG_PCI_SW_SWITCHTEC is not set +# end of PCI switch controller drivers + +# CONFIG_CXL_BUS is not set +# CONFIG_PCCARD is not set +# CONFIG_RAPIDIO is not set + +# +# Generic Driver Options +# +# CONFIG_UEVENT_HELPER is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_DEVTMPFS_SAFE is not set +# CONFIG_STANDALONE is not set +# CONFIG_PREVENT_FIRMWARE_BUILD is not set + +# +# Firmware loader +# +CONFIG_FW_LOADER=m +CONFIG_EXTRA_FIRMWARE="" +# CONFIG_FW_LOADER_USER_HELPER is not set +# CONFIG_FW_LOADER_COMPRESS is not set +# end of Firmware loader + +# CONFIG_ALLOW_DEV_COREDUMP is not set +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set +# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set +CONFIG_GENERIC_CPU_AUTOPROBE=y +CONFIG_GENERIC_CPU_VULNERABILITIES=y +# end of Generic Driver Options + +# +# Bus devices +# +# CONFIG_MHI_BUS is not set +# end of Bus devices + +# CONFIG_CONNECTOR is not set + +# +# Firmware Drivers +# + +# +# ARM System Control and Management Interface Protocol +# +# end of ARM System Control and Management Interface Protocol + +# CONFIG_EDD is not set +# CONFIG_FIRMWARE_MEMMAP is not set +# CONFIG_FW_CFG_SYSFS is not set +CONFIG_SYSFB=y +# CONFIG_SYSFB_SIMPLEFB is not set +# CONFIG_GOOGLE_FIRMWARE is not set + +# +# Tegra firmware driver +# +# end of Tegra firmware driver +# end of Firmware Drivers + +# CONFIG_GNSS is not set +# CONFIG_MTD is not set +# CONFIG_OF is not set +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y +# CONFIG_PARPORT is not set +CONFIG_PNP=y +CONFIG_PNP_DEBUG_MESSAGES=y + +# +# Protocols +# +CONFIG_ISAPNP=y +# CONFIG_PNPBIOS is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_NULL_BLK is not set +CONFIG_BLK_DEV_FD=m +# CONFIG_BLK_DEV_FD_RAWCMD is not set +# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_LOOP_MIN_COUNT=1 +# CONFIG_BLK_DEV_DRBD is not set +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_SX8 is not set +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_BLK_DEV_RBD is not set + +# +# NVME Support +# +# CONFIG_BLK_DEV_NVME is not set +# CONFIG_NVME_FC is not set +# CONFIG_NVME_TCP is not set +# end of NVME Support + +# +# Misc devices +# +# CONFIG_DUMMY_IRQ is not set +# CONFIG_IBM_ASM is not set +# CONFIG_PHANTOM is not set +# CONFIG_TIFM_CORE is not set +# CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_HP_ILO is not set +# CONFIG_PCH_PHUB is not set +# CONFIG_SRAM is not set +# CONFIG_DW_XDATA_PCIE is not set +# CONFIG_PCI_ENDPOINT_TEST is not set +# CONFIG_XILINX_SDFEC is not set +# CONFIG_C2PORT is not set + +# +# EEPROM support +# +# CONFIG_EEPROM_93CX6 is not set +# end of EEPROM support + +# CONFIG_CB710_CORE is not set + +# +# Texas Instruments shared transport line discipline +# +# end of Texas Instruments shared transport line discipline + +# +# Altera FPGA firmware download module (requires I2C) +# +# CONFIG_INTEL_MEI is not set +# CONFIG_INTEL_MEI_ME is not set +# CONFIG_INTEL_MEI_TXE is not set +# CONFIG_VMWARE_VMCI is not set +# CONFIG_ECHO is not set +# CONFIG_MISC_ALCOR_PCI is not set +# CONFIG_MISC_RTSX_PCI is not set +# CONFIG_HABANA_AI is not set +# CONFIG_PVPANIC is not set +# end of Misc devices + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI_COMMON=y +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_BLK_DEV_SR is not set +# CONFIG_CHR_DEV_SG is not set +CONFIG_BLK_DEV_BSG=y +# CONFIG_CHR_DEV_SCH is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_ATTRS is not set +# CONFIG_SCSI_SAS_LIBSAS is not set +# CONFIG_SCSI_SRP_ATTRS is not set +# end of SCSI Transports + +CONFIG_SCSI_LOWLEVEL=y +# CONFIG_ISCSI_TCP is not set +# CONFIG_ISCSI_BOOT_SYSFS is not set +# CONFIG_SCSI_CXGB3_ISCSI is not set +# CONFIG_SCSI_CXGB4_ISCSI is not set +# CONFIG_SCSI_BNX2_ISCSI is not set +# CONFIG_BE2ISCSI is not set +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_SCSI_HPSA is not set +# CONFIG_SCSI_3W_9XXX is not set +# CONFIG_SCSI_3W_SAS is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AHA152X is not set +# CONFIG_SCSI_AHA1542 is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC79XX is not set +# CONFIG_SCSI_AIC94XX is not set +# CONFIG_SCSI_MVSAS is not set +# CONFIG_SCSI_MVUMI is not set +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_ARCMSR is not set +# CONFIG_SCSI_ESAS2R is not set +# CONFIG_MEGARAID_NEWGEN is not set +# CONFIG_MEGARAID_LEGACY is not set +# CONFIG_MEGARAID_SAS is not set +# CONFIG_SCSI_MPT3SAS is not set +# CONFIG_SCSI_MPT2SAS is not set +# CONFIG_SCSI_MPI3MR is not set +# CONFIG_SCSI_SMARTPQI is not set +# CONFIG_SCSI_UFSHCD is not set +# CONFIG_SCSI_HPTIOP is not set +# CONFIG_SCSI_BUSLOGIC is not set +# CONFIG_SCSI_MYRB is not set +# CONFIG_SCSI_MYRS is not set +# CONFIG_VMWARE_PVSCSI is not set +# CONFIG_SCSI_SNIC is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_FDOMAIN_PCI is not set +# CONFIG_SCSI_FDOMAIN_ISA is not set +# CONFIG_SCSI_ISCI is not set +# CONFIG_SCSI_GENERIC_NCR5380 is not set +# CONFIG_SCSI_IPS is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_STEX is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_SCSI_IPR is not set +# CONFIG_SCSI_QLOGIC_FAS is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_QLA_ISCSI is not set +# CONFIG_SCSI_DC395x is not set +# CONFIG_SCSI_AM53C974 is not set +# CONFIG_SCSI_NSP32 is not set +# CONFIG_SCSI_WD719X is not set +# CONFIG_SCSI_DEBUG is not set +# CONFIG_SCSI_PMCRAID is not set +# CONFIG_SCSI_PM8001 is not set +# CONFIG_SCSI_DH is not set +# end of SCSI device support + +CONFIG_ATA=y +CONFIG_PATA_TIMINGS=y +# CONFIG_ATA_VERBOSE_ERROR is not set +# CONFIG_ATA_FORCE is not set + +# +# Controllers with non-SFF native interface +# +# CONFIG_SATA_AHCI is not set +# CONFIG_SATA_AHCI_PLATFORM is not set +# CONFIG_SATA_INIC162X is not set +# CONFIG_SATA_ACARD_AHCI is not set +# CONFIG_SATA_SIL24 is not set +CONFIG_ATA_SFF=y + +# +# SFF controllers with custom DMA interface +# +# CONFIG_PDC_ADMA is not set +# CONFIG_SATA_QSTOR is not set +# CONFIG_SATA_SX4 is not set +CONFIG_ATA_BMDMA=y + +# +# SATA SFF controllers with BMDMA +# +# CONFIG_ATA_PIIX is not set +# CONFIG_SATA_MV is not set +# CONFIG_SATA_NV is not set +# CONFIG_SATA_PROMISE is not set +# CONFIG_SATA_SIL is not set +# CONFIG_SATA_SIS is not set +# CONFIG_SATA_SVW is not set +# CONFIG_SATA_ULI is not set +# CONFIG_SATA_VIA is not set +# CONFIG_SATA_VITESSE is not set + +# +# PATA SFF controllers with BMDMA +# +# CONFIG_PATA_ALI is not set +# CONFIG_PATA_AMD is not set +# CONFIG_PATA_ARTOP is not set +# CONFIG_PATA_ATIIXP is not set +# CONFIG_PATA_ATP867X is not set +# CONFIG_PATA_CMD64X is not set +# CONFIG_PATA_CS5520 is not set +# CONFIG_PATA_CS5530 is not set +# CONFIG_PATA_CS5535 is not set +# CONFIG_PATA_CS5536 is not set +# CONFIG_PATA_CYPRESS is not set +# CONFIG_PATA_EFAR is not set +# CONFIG_PATA_HPT366 is not set +# CONFIG_PATA_HPT37X is not set +# CONFIG_PATA_HPT3X2N is not set +# CONFIG_PATA_HPT3X3 is not set +# CONFIG_PATA_IT8213 is not set +# CONFIG_PATA_IT821X is not set +# CONFIG_PATA_JMICRON is not set +# CONFIG_PATA_MARVELL is not set +# CONFIG_PATA_NETCELL is not set +# CONFIG_PATA_NINJA32 is not set +# CONFIG_PATA_NS87415 is not set +# CONFIG_PATA_OLDPIIX is not set +# CONFIG_PATA_OPTIDMA is not set +# CONFIG_PATA_PDC2027X is not set +# CONFIG_PATA_PDC_OLD is not set +# CONFIG_PATA_RADISYS is not set +# CONFIG_PATA_RDC is not set +# CONFIG_PATA_SC1200 is not set +# CONFIG_PATA_SCH is not set +# CONFIG_PATA_SERVERWORKS is not set +# CONFIG_PATA_SIL680 is not set +# CONFIG_PATA_SIS is not set +# CONFIG_PATA_TOSHIBA is not set +# CONFIG_PATA_TRIFLEX is not set +# CONFIG_PATA_VIA is not set +# CONFIG_PATA_WINBOND is not set + +# +# PIO-only SFF controllers +# +# CONFIG_PATA_CMD640_PCI is not set +# CONFIG_PATA_ISAPNP is not set +# CONFIG_PATA_MPIIX is not set +# CONFIG_PATA_NS87410 is not set +# CONFIG_PATA_OPTI is not set +# CONFIG_PATA_PLATFORM is not set +# CONFIG_PATA_QDI is not set +# CONFIG_PATA_RZ1000 is not set +# CONFIG_PATA_WINBOND_VLB is not set + +# +# Generic fallback / legacy drivers +# +# CONFIG_ATA_GENERIC is not set +CONFIG_PATA_LEGACY=y +# CONFIG_MD is not set +# CONFIG_TARGET_CORE is not set +# CONFIG_FUSION is not set + +# +# IEEE 1394 (FireWire) support +# +# CONFIG_FIREWIRE is not set +# CONFIG_FIREWIRE_NOSY is not set +# end of IEEE 1394 (FireWire) support + +# CONFIG_MACINTOSH_DRIVERS is not set +CONFIG_NETDEVICES=y +CONFIG_MII=m +CONFIG_NET_CORE=y +# CONFIG_BONDING is not set +# CONFIG_DUMMY is not set +# CONFIG_WIREGUARD is not set +# CONFIG_EQUALIZER is not set +# CONFIG_NET_FC is not set +# CONFIG_NET_TEAM is not set +# CONFIG_MACVLAN is not set +# CONFIG_IPVLAN is not set +# CONFIG_VXLAN is not set +# CONFIG_GENEVE is not set +# CONFIG_BAREUDP is not set +# CONFIG_GTP is not set +# CONFIG_MACSEC is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_TUN is not set +# CONFIG_TUN_VNET_CROSS_LE is not set +# CONFIG_VETH is not set +# CONFIG_NLMON is not set +# CONFIG_ARCNET is not set +CONFIG_ETHERNET=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_NET_VENDOR_ADAPTEC is not set +# CONFIG_NET_VENDOR_AGERE is not set +# CONFIG_NET_VENDOR_ALACRITECH is not set +# CONFIG_NET_VENDOR_ALTEON is not set +# CONFIG_ALTERA_TSE is not set +# CONFIG_NET_VENDOR_AMAZON is not set +# CONFIG_NET_VENDOR_AMD is not set +# CONFIG_NET_VENDOR_AQUANTIA is not set +# CONFIG_NET_VENDOR_ARC is not set +# CONFIG_NET_VENDOR_ASIX is not set +# CONFIG_NET_VENDOR_ATHEROS is not set +# CONFIG_CX_ECAT is not set +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_NET_VENDOR_CADENCE is not set +# CONFIG_NET_VENDOR_CAVIUM is not set +# CONFIG_NET_VENDOR_CHELSIO is not set +# CONFIG_NET_VENDOR_CIRRUS is not set +# CONFIG_NET_VENDOR_CISCO is not set +# CONFIG_NET_VENDOR_CORTINA is not set +# CONFIG_NET_VENDOR_DAVICOM is not set +# CONFIG_DNET is not set +# CONFIG_NET_VENDOR_DEC is not set +# CONFIG_NET_VENDOR_DLINK is not set +# CONFIG_NET_VENDOR_EMULEX is not set +# CONFIG_NET_VENDOR_ENGLEDER is not set +# CONFIG_NET_VENDOR_EZCHIP is not set +# CONFIG_NET_VENDOR_FUNGIBLE is not set +# CONFIG_NET_VENDOR_GOOGLE is not set +# CONFIG_NET_VENDOR_HUAWEI is not set +# CONFIG_NET_VENDOR_INTEL is not set +# CONFIG_JME is not set +# CONFIG_NET_VENDOR_LITEX is not set +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MELLANOX is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MICROCHIP is not set +# CONFIG_NET_VENDOR_MICROSEMI is not set +# CONFIG_NET_VENDOR_MICROSOFT is not set +# CONFIG_NET_VENDOR_MYRI is not set +# CONFIG_FEALNX is not set +# CONFIG_NET_VENDOR_NI is not set +CONFIG_NET_VENDOR_NATSEMI=y +# CONFIG_NATSEMI is not set +# CONFIG_NS83820 is not set +# CONFIG_NET_VENDOR_NETERION is not set +# CONFIG_NET_VENDOR_NETRONOME is not set +CONFIG_NET_VENDOR_8390=y +CONFIG_NE2000=m +# CONFIG_NE2K_PCI is not set +# CONFIG_ULTRA is not set +# CONFIG_WD80x3 is not set +# CONFIG_NET_VENDOR_NVIDIA is not set +# CONFIG_NET_VENDOR_OKI is not set +# CONFIG_ETHOC is not set +# CONFIG_NET_VENDOR_PACKET_ENGINES is not set +# CONFIG_NET_VENDOR_PENSANDO is not set +# CONFIG_NET_VENDOR_QLOGIC is not set +# CONFIG_NET_VENDOR_BROCADE is not set +# CONFIG_NET_VENDOR_QUALCOMM is not set +# CONFIG_NET_VENDOR_RDC is not set +CONFIG_NET_VENDOR_REALTEK=y +CONFIG_8139CP=m +CONFIG_8139TOO=m +CONFIG_8139TOO_PIO=y +# CONFIG_8139TOO_TUNE_TWISTER is not set +# CONFIG_8139TOO_8129 is not set +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_R8169=m +# CONFIG_NET_VENDOR_RENESAS is not set +# CONFIG_NET_VENDOR_ROCKER is not set +# CONFIG_NET_VENDOR_SAMSUNG is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SILAN is not set +# CONFIG_NET_VENDOR_SIS is not set +# CONFIG_NET_VENDOR_SOLARFLARE is not set +# CONFIG_NET_VENDOR_SMSC is not set +# CONFIG_NET_VENDOR_SOCIONEXT is not set +# CONFIG_NET_VENDOR_STMICRO is not set +# CONFIG_NET_VENDOR_SUN is not set +# CONFIG_NET_VENDOR_SYNOPSYS is not set +# CONFIG_NET_VENDOR_TEHUTI is not set +# CONFIG_NET_VENDOR_TI is not set +# CONFIG_NET_VENDOR_VERTEXCOM is not set +# CONFIG_NET_VENDOR_VIA is not set +# CONFIG_NET_VENDOR_WIZNET is not set +# CONFIG_NET_VENDOR_XILINX is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_NET_SB1000 is not set +CONFIG_PHYLIB=m +# CONFIG_FIXED_PHY is not set + +# +# MII PHY device drivers +# +# CONFIG_AMD_PHY is not set +# CONFIG_ADIN_PHY is not set +# CONFIG_AQUANTIA_PHY is not set +# CONFIG_AX88796B_PHY is not set +# CONFIG_BROADCOM_PHY is not set +# CONFIG_BCM54140_PHY is not set +# CONFIG_BCM7XXX_PHY is not set +# CONFIG_BCM84881_PHY is not set +# CONFIG_BCM87XX_PHY is not set +# CONFIG_CICADA_PHY is not set +# CONFIG_CORTINA_PHY is not set +# CONFIG_DAVICOM_PHY is not set +# CONFIG_ICPLUS_PHY is not set +# CONFIG_LXT_PHY is not set +# CONFIG_INTEL_XWAY_PHY is not set +# CONFIG_LSI_ET1011C_PHY is not set +# CONFIG_MARVELL_PHY is not set +# CONFIG_MARVELL_10G_PHY is not set +# CONFIG_MARVELL_88X2222_PHY is not set +# CONFIG_MAXLINEAR_GPHY is not set +# CONFIG_MEDIATEK_GE_PHY is not set +# CONFIG_MICREL_PHY is not set +# CONFIG_MICROCHIP_PHY is not set +# CONFIG_MICROCHIP_T1_PHY is not set +# CONFIG_MICROSEMI_PHY is not set +# CONFIG_MOTORCOMM_PHY is not set +# CONFIG_NATIONAL_PHY is not set +# CONFIG_NXP_C45_TJA11XX_PHY is not set +# CONFIG_QSEMI_PHY is not set +CONFIG_REALTEK_PHY=m +# CONFIG_RENESAS_PHY is not set +# CONFIG_ROCKCHIP_PHY is not set +# CONFIG_SMSC_PHY is not set +# CONFIG_STE10XP is not set +# CONFIG_TERANETICS_PHY is not set +# CONFIG_DP83822_PHY is not set +# CONFIG_DP83TC811_PHY is not set +# CONFIG_DP83848_PHY is not set +# CONFIG_DP83867_PHY is not set +# CONFIG_DP83869_PHY is not set +# CONFIG_VITESSE_PHY is not set +# CONFIG_XILINX_GMII2RGMII is not set +CONFIG_MDIO_DEVICE=m +CONFIG_MDIO_BUS=m +CONFIG_MDIO_DEVRES=m +# CONFIG_MDIO_BITBANG is not set +# CONFIG_MDIO_BCM_UNIMAC is not set + +# +# MDIO Multiplexers +# + +# +# PCS device drivers +# +# CONFIG_PCS_XPCS is not set +# end of PCS device drivers + +# CONFIG_PPP is not set +# CONFIG_SLIP is not set + +# +# Host-side USB support is needed for USB Network Adapter support +# +# CONFIG_WLAN is not set +# CONFIG_WAN is not set + +# +# Wireless WAN +# +# CONFIG_WWAN is not set +# end of Wireless WAN + +# CONFIG_VMXNET3 is not set +# CONFIG_NET_FAILOVER is not set +CONFIG_NETDEV_LEGACY_INIT=y +# CONFIG_ISDN is not set + +# +# Input device support +# +CONFIG_INPUT=y +# CONFIG_INPUT_FF_MEMLESS is not set +# CONFIG_INPUT_SPARSEKMAP is not set +# CONFIG_INPUT_MATRIXKMAP is not set +CONFIG_INPUT_VIVALDIFMAP=y + +# +# Userland interfaces +# +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ATKBD=y +# CONFIG_KEYBOARD_LKKBD is not set +# CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_KEYBOARD_OPENCORES is not set +# CONFIG_KEYBOARD_SAMSUNG is not set +# CONFIG_KEYBOARD_STOWAWAY is not set +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_XTKBD is not set +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=y +# CONFIG_MOUSE_PS2_ALPS is not set +# CONFIG_MOUSE_PS2_BYD is not set +# CONFIG_MOUSE_PS2_LOGIPS2PP is not set +# CONFIG_MOUSE_PS2_SYNAPTICS is not set +# CONFIG_MOUSE_PS2_CYPRESS is not set +# CONFIG_MOUSE_PS2_TRACKPOINT is not set +# CONFIG_MOUSE_PS2_ELANTECH is not set +# CONFIG_MOUSE_PS2_SENTELIC is not set +# CONFIG_MOUSE_PS2_TOUCHKIT is not set +# CONFIG_MOUSE_PS2_FOCALTECH is not set +# CONFIG_MOUSE_SERIAL is not set +# CONFIG_MOUSE_INPORT is not set +# CONFIG_MOUSE_LOGIBM is not set +# CONFIG_MOUSE_PC110PAD is not set +# CONFIG_MOUSE_VSXXXAA is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TABLET is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INPUT_MISC is not set +# CONFIG_RMI4_CORE is not set + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y +CONFIG_SERIO_I8042=y +CONFIG_SERIO_SERPORT=y +# CONFIG_SERIO_CT82C710 is not set +# CONFIG_SERIO_PCIPS2 is not set +CONFIG_SERIO_LIBPS2=y +# CONFIG_SERIO_RAW is not set +# CONFIG_SERIO_ALTERA_PS2 is not set +# CONFIG_SERIO_PS2MULT is not set +# CONFIG_SERIO_ARC_PS2 is not set +# CONFIG_USERIO is not set +# CONFIG_GAMEPORT is not set +# end of Hardware I/O ports +# end of Input device support + +# +# Character devices +# +CONFIG_TTY=y +CONFIG_VT=y +# CONFIG_CONSOLE_TRANSLATIONS is not set +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +# CONFIG_VT_HW_CONSOLE_BINDING is not set +CONFIG_UNIX98_PTYS=y +# CONFIG_LEGACY_PTYS is not set +# CONFIG_LDISC_AUTOLOAD is not set + +# +# Serial drivers +# +CONFIG_SERIAL_EARLYCON=y +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +CONFIG_SERIAL_8250_PNP=y +# CONFIG_SERIAL_8250_16550A_VARIANTS is not set +# CONFIG_SERIAL_8250_FINTEK is not set +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_8250_EXAR=y +CONFIG_SERIAL_8250_NR_UARTS=4 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +# CONFIG_SERIAL_8250_EXTENDED is not set +CONFIG_SERIAL_8250_DWLIB=y +# CONFIG_SERIAL_8250_DW is not set +# CONFIG_SERIAL_8250_RT288X is not set +CONFIG_SERIAL_8250_LPSS=y +CONFIG_SERIAL_8250_MID=y +CONFIG_SERIAL_8250_PERICOM=y + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_UARTLITE is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_JSM is not set +# CONFIG_SERIAL_LANTIQ is not set +# CONFIG_SERIAL_SCCNXP is not set +# CONFIG_SERIAL_TIMBERDALE is not set +# CONFIG_SERIAL_ALTERA_JTAGUART is not set +# CONFIG_SERIAL_ALTERA_UART is not set +# CONFIG_SERIAL_PCH_UART is not set +# CONFIG_SERIAL_ARC is not set +# CONFIG_SERIAL_RP2 is not set +# CONFIG_SERIAL_FSL_LPUART is not set +# CONFIG_SERIAL_FSL_LINFLEXUART is not set +# CONFIG_SERIAL_SPRD is not set +# end of Serial drivers + +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_N_GSM is not set +# CONFIG_NOZOMI is not set +# CONFIG_NULL_TTY is not set +# CONFIG_SERIAL_DEV_BUS is not set +# CONFIG_TTY_PRINTK is not set +# CONFIG_VIRTIO_CONSOLE is not set +# CONFIG_IPMI_HANDLER is not set +# CONFIG_HW_RANDOM is not set +# CONFIG_DTLK is not set +# CONFIG_APPLICOM is not set +# CONFIG_SONYPI is not set +# CONFIG_MWAVE is not set +# CONFIG_PC8736x_GPIO is not set +# CONFIG_NSC_GPIO is not set +# CONFIG_DEVMEM is not set +# CONFIG_NVRAM is not set +CONFIG_DEVPORT=y +# CONFIG_HANGCHECK_TIMER is not set +# CONFIG_TCG_TPM is not set +# CONFIG_TELCLOCK is not set +# CONFIG_XILLYBUS is not set +# CONFIG_RANDOM_TRUST_BOOTLOADER is not set +# end of Character devices + +# +# I2C support +# +# CONFIG_I2C is not set +# end of I2C support + +# CONFIG_I3C is not set +# CONFIG_SPI is not set +# CONFIG_SPMI is not set +# CONFIG_HSI is not set +CONFIG_PPS=y +# CONFIG_PPS_DEBUG is not set +# CONFIG_NTP_PPS is not set + +# +# PPS clients support +# +# CONFIG_PPS_CLIENT_KTIMER is not set +# CONFIG_PPS_CLIENT_LDISC is not set +# CONFIG_PPS_CLIENT_GPIO is not set + +# +# PPS generators support +# + +# +# PTP clock support +# +CONFIG_PTP_1588_CLOCK=y +CONFIG_PTP_1588_CLOCK_OPTIONAL=y + +# +# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. +# +# CONFIG_PTP_1588_CLOCK_PCH is not set +# end of PTP clock support + +# CONFIG_PINCTRL is not set +# CONFIG_GPIOLIB is not set +# CONFIG_W1 is not set +# CONFIG_POWER_RESET is not set +# CONFIG_POWER_SUPPLY is not set +# CONFIG_HWMON is not set +# CONFIG_THERMAL is not set +# CONFIG_WATCHDOG is not set +CONFIG_SSB_POSSIBLE=y +# CONFIG_SSB is not set +CONFIG_BCMA_POSSIBLE=y +# CONFIG_BCMA is not set + +# +# Multifunction device drivers +# +# CONFIG_MFD_CS5535 is not set +# CONFIG_MFD_MADERA is not set +# CONFIG_HTC_PASIC3 is not set +# CONFIG_MFD_INTEL_QUARK_I2C_GPIO is not set +# CONFIG_LPC_ICH is not set +# CONFIG_LPC_SCH is not set +# CONFIG_MFD_INTEL_LPSS_PCI is not set +# CONFIG_MFD_JANZ_CMODIO is not set +# CONFIG_MFD_KEMPLD is not set +# CONFIG_MFD_MT6397 is not set +# CONFIG_MFD_RDC321X is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_MFD_SYSCON is not set +# CONFIG_MFD_TI_AM335X_TSCADC is not set +# CONFIG_MFD_TQMX86 is not set +# CONFIG_MFD_VX855 is not set +# end of Multifunction device drivers + +# CONFIG_REGULATOR is not set +# CONFIG_RC_CORE is not set + +# +# CEC support +# +# CONFIG_MEDIA_CEC_SUPPORT is not set +# end of CEC support + +# CONFIG_MEDIA_SUPPORT is not set + +# +# Graphics support +# +# CONFIG_AGP is not set +# CONFIG_DRM is not set +# CONFIG_DRM_DEBUG_MODESET_LOCK is not set + +# +# ARM devices +# +# end of ARM devices + +# +# Frame buffer Devices +# +# CONFIG_FB is not set +# end of Frame buffer Devices + +# +# Backlight & LCD device support +# +# CONFIG_LCD_CLASS_DEVICE is not set +# CONFIG_BACKLIGHT_CLASS_DEVICE is not set +# end of Backlight & LCD device support + +# +# Console display driver support +# +CONFIG_VGA_CONSOLE=y +# CONFIG_MDA_CONSOLE is not set +CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_CONSOLE_COLUMNS=80 +CONFIG_DUMMY_CONSOLE_ROWS=25 +# end of Console display driver support +# end of Graphics support + +# CONFIG_SOUND is not set + +# +# HID support +# +CONFIG_HID=y +# CONFIG_HID_BATTERY_STRENGTH is not set +# CONFIG_HIDRAW is not set +# CONFIG_UHID is not set +CONFIG_HID_GENERIC=y + +# +# Special HID drivers +# +# CONFIG_HID_A4TECH is not set +# CONFIG_HID_ACRUX is not set +# CONFIG_HID_AUREAL is not set +# CONFIG_HID_BELKIN is not set +# CONFIG_HID_CHERRY is not set +# CONFIG_HID_COUGAR is not set +# CONFIG_HID_MACALLY is not set +# CONFIG_HID_CMEDIA is not set +# CONFIG_HID_CYPRESS is not set +# CONFIG_HID_DRAGONRISE is not set +# CONFIG_HID_EMS_FF is not set +# CONFIG_HID_ELECOM is not set +# CONFIG_HID_EZKEY is not set +# CONFIG_HID_GEMBIRD is not set +# CONFIG_HID_GFRM is not set +# CONFIG_HID_GLORIOUS is not set +# CONFIG_HID_VIVALDI is not set +# CONFIG_HID_KEYTOUCH is not set +# CONFIG_HID_KYE is not set +# CONFIG_HID_WALTOP is not set +# CONFIG_HID_VIEWSONIC is not set +# CONFIG_HID_XIAOMI is not set +# CONFIG_HID_GYRATION is not set +# CONFIG_HID_ICADE is not set +# CONFIG_HID_ITE is not set +# CONFIG_HID_JABRA is not set +# CONFIG_HID_TWINHAN is not set +# CONFIG_HID_KENSINGTON is not set +# CONFIG_HID_LCPOWER is not set +# CONFIG_HID_LENOVO is not set +# CONFIG_HID_MAGICMOUSE is not set +# CONFIG_HID_MALTRON is not set +# CONFIG_HID_MAYFLASH is not set +# CONFIG_HID_REDRAGON is not set +# CONFIG_HID_MICROSOFT is not set +# CONFIG_HID_MONTEREY is not set +# CONFIG_HID_MULTITOUCH is not set +# CONFIG_HID_NTI is not set +# CONFIG_HID_ORTEK is not set +# CONFIG_HID_PANTHERLORD is not set +# CONFIG_HID_PETALYNX is not set +# CONFIG_HID_PICOLCD is not set +# CONFIG_HID_PLANTRONICS is not set +# CONFIG_HID_RAZER is not set +# CONFIG_HID_PRIMAX is not set +# CONFIG_HID_SAITEK is not set +# CONFIG_HID_SEMITEK is not set +# CONFIG_HID_SPEEDLINK is not set +# CONFIG_HID_STEAM is not set +# CONFIG_HID_STEELSERIES is not set +# CONFIG_HID_SUNPLUS is not set +# CONFIG_HID_RMI is not set +# CONFIG_HID_GREENASIA is not set +# CONFIG_HID_SMARTJOYPLUS is not set +# CONFIG_HID_TIVO is not set +# CONFIG_HID_TOPSEED is not set +# CONFIG_HID_UDRAW_PS3 is not set +# CONFIG_HID_XINMO is not set +# CONFIG_HID_ZEROPLUS is not set +# CONFIG_HID_ZYDACRON is not set +# CONFIG_HID_SENSOR_HUB is not set +# CONFIG_HID_ALPS is not set +# end of Special HID drivers +# end of HID support + +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +# CONFIG_USB_SUPPORT is not set +# CONFIG_MMC is not set +# CONFIG_MEMSTICK is not set +# CONFIG_NEW_LEDS is not set +# CONFIG_ACCESSIBILITY is not set +# CONFIG_INFINIBAND is not set +CONFIG_EDAC_ATOMIC_SCRUB=y +CONFIG_EDAC_SUPPORT=y +CONFIG_RTC_LIB=y +CONFIG_RTC_MC146818_LIB=y +# CONFIG_RTC_CLASS is not set +# CONFIG_DMADEVICES is not set + +# +# DMABUF options +# +# CONFIG_SYNC_FILE is not set +# CONFIG_DMABUF_HEAPS is not set +# end of DMABUF options + +# CONFIG_AUXDISPLAY is not set +# CONFIG_UIO is not set +# CONFIG_VFIO is not set +# CONFIG_VIRT_DRIVERS is not set +# CONFIG_VIRTIO_MENU is not set +# CONFIG_VDPA is not set +# CONFIG_VHOST_MENU is not set + +# +# Microsoft Hyper-V guest support +# +# end of Microsoft Hyper-V guest support + +# CONFIG_GREYBUS is not set +# CONFIG_COMEDI is not set +# CONFIG_STAGING is not set +# CONFIG_X86_PLATFORM_DEVICES is not set +CONFIG_PMC_ATOM=y +# CONFIG_CHROME_PLATFORMS is not set +# CONFIG_MELLANOX_PLATFORM is not set +# CONFIG_SURFACE_PLATFORMS is not set +CONFIG_HAVE_CLK=y +CONFIG_HAVE_CLK_PREPARE=y +CONFIG_COMMON_CLK=y +# CONFIG_XILINX_VCU is not set +# CONFIG_HWSPINLOCK is not set + +# +# Clock Source drivers +# +CONFIG_CLKSRC_I8253=y +CONFIG_CLKEVT_I8253=y +CONFIG_I8253_LOCK=y +CONFIG_CLKBLD_I8253=y +# end of Clock Source drivers + +# CONFIG_MAILBOX is not set +# CONFIG_IOMMU_SUPPORT is not set + +# +# Remoteproc drivers +# +# CONFIG_REMOTEPROC is not set +# end of Remoteproc drivers + +# +# Rpmsg drivers +# +# CONFIG_RPMSG_VIRTIO is not set +# end of Rpmsg drivers + +# +# SOC (System On Chip) specific Drivers +# + +# +# Amlogic SoC drivers +# +# end of Amlogic SoC drivers + +# +# Broadcom SoC drivers +# +# end of Broadcom SoC drivers + +# +# NXP/Freescale QorIQ SoC drivers +# +# end of NXP/Freescale QorIQ SoC drivers + +# +# i.MX SoC drivers +# +# end of i.MX SoC drivers + +# +# Enable LiteX SoC Builder specific drivers +# +# end of Enable LiteX SoC Builder specific drivers + +# +# Qualcomm SoC drivers +# +# end of Qualcomm SoC drivers + +# CONFIG_SOC_TI is not set + +# +# Xilinx SoC drivers +# +# end of Xilinx SoC drivers +# end of SOC (System On Chip) specific Drivers + +# CONFIG_PM_DEVFREQ is not set +# CONFIG_EXTCON is not set +# CONFIG_MEMORY is not set +# CONFIG_IIO is not set +# CONFIG_NTB is not set +# CONFIG_VME_BUS is not set +# CONFIG_PWM is not set + +# +# IRQ chip support +# +# end of IRQ chip support + +# CONFIG_IPACK_BUS is not set +# CONFIG_RESET_CONTROLLER is not set + +# +# PHY Subsystem +# +# CONFIG_GENERIC_PHY is not set +# CONFIG_PHY_CAN_TRANSCEIVER is not set + +# +# PHY drivers for Broadcom platforms +# +# CONFIG_BCM_KONA_USB2_PHY is not set +# end of PHY drivers for Broadcom platforms + +# CONFIG_PHY_PXA_28NM_HSIC is not set +# CONFIG_PHY_PXA_28NM_USB2 is not set +# CONFIG_PHY_INTEL_LGM_EMMC is not set +# end of PHY Subsystem + +# CONFIG_POWERCAP is not set +# CONFIG_MCB is not set + +# +# Performance monitor support +# +# end of Performance monitor support + +# CONFIG_RAS is not set +# CONFIG_USB4 is not set + +# +# Android +# +# CONFIG_ANDROID is not set +# end of Android + +# CONFIG_DAX is not set +# CONFIG_NVMEM is not set + +# +# HW tracing support +# +# CONFIG_STM is not set +# CONFIG_INTEL_TH is not set +# end of HW tracing support + +# CONFIG_FPGA is not set +# CONFIG_TEE is not set +# CONFIG_SIOX is not set +# CONFIG_SLIMBUS is not set +# CONFIG_INTERCONNECT is not set +# CONFIG_COUNTER is not set +# CONFIG_PECI is not set +# end of Device Drivers + +# +# File systems +# +CONFIG_DCACHE_WORD_ACCESS=y +# CONFIG_VALIDATE_FS_PARSER is not set +CONFIG_FS_IOMAP=y +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set +# CONFIG_EXT3_FS is not set +# CONFIG_EXT4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_BTRFS_FS is not set +# CONFIG_NILFS2_FS is not set +# CONFIG_F2FS_FS is not set +CONFIG_FS_POSIX_ACL=y +CONFIG_EXPORTFS=y +# CONFIG_EXPORTFS_BLOCK_OPS is not set +CONFIG_FILE_LOCKING=y +# CONFIG_FS_ENCRYPTION is not set +# CONFIG_FS_VERITY is not set +CONFIG_FSNOTIFY=y +CONFIG_DNOTIFY=y +CONFIG_INOTIFY_USER=y +# CONFIG_FANOTIFY is not set +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_FUSE_FS is not set +# CONFIG_OVERLAY_FS is not set + +# +# Caches +# +# CONFIG_FSCACHE is not set +# end of Caches + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=m +# CONFIG_JOLIET is not set +# CONFIG_ZISOFS is not set +# CONFIG_UDF_FS is not set +# end of CD-ROM/DVD Filesystems + +# +# DOS/FAT/EXFAT/NT Filesystems +# +CONFIG_FAT_FS=m +CONFIG_MSDOS_FS=m +CONFIG_VFAT_FS=m +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_FAT_DEFAULT_UTF8 is not set +# CONFIG_EXFAT_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS3_FS is not set +# end of DOS/FAT/EXFAT/NT Filesystems + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +# CONFIG_PROC_KCORE is not set +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +# CONFIG_PROC_CHILDREN is not set +CONFIG_PROC_PID_ARCH_STATUS=y +CONFIG_KERNFS=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_TMPFS_XATTR=y +# CONFIG_HUGETLBFS is not set +CONFIG_MEMFD_CREATE=y +# CONFIG_CONFIGFS_FS is not set +# end of Pseudo filesystems + +# CONFIG_MISC_FILESYSTEMS is not set +# CONFIG_NETWORK_FILESYSTEMS is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=m +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ASCII is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_MAC_ROMAN is not set +# CONFIG_NLS_MAC_CELTIC is not set +# CONFIG_NLS_MAC_CENTEURO is not set +# CONFIG_NLS_MAC_CROATIAN is not set +# CONFIG_NLS_MAC_CYRILLIC is not set +# CONFIG_NLS_MAC_GAELIC is not set +# CONFIG_NLS_MAC_GREEK is not set +# CONFIG_NLS_MAC_ICELAND is not set +# CONFIG_NLS_MAC_INUIT is not set +# CONFIG_NLS_MAC_ROMANIAN is not set +# CONFIG_NLS_MAC_TURKISH is not set +# CONFIG_NLS_UTF8 is not set +# CONFIG_UNICODE is not set +# end of File systems + +# +# Security options +# +# CONFIG_KEYS is not set +# CONFIG_SECURITY_DMESG_RESTRICT is not set +# CONFIG_SECURITY is not set +# CONFIG_SECURITYFS is not set +# CONFIG_FORTIFY_SOURCE is not set +# CONFIG_STATIC_USERMODEHELPER is not set +CONFIG_DEFAULT_SECURITY_DAC=y +CONFIG_LSM="landlock,lockdown,yama,loadpin,safesetid,integrity,bpf" + +# +# Kernel hardening options +# + +# +# Memory initialization +# +CONFIG_CC_HAS_AUTO_VAR_INIT_PATTERN=y +CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO=y +# CONFIG_INIT_STACK_NONE is not set +# CONFIG_INIT_STACK_ALL_PATTERN is not set +CONFIG_INIT_STACK_ALL_ZERO=y +# CONFIG_INIT_ON_ALLOC_DEFAULT_ON is not set +# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set +CONFIG_CC_HAS_ZERO_CALL_USED_REGS=y +# CONFIG_ZERO_CALL_USED_REGS is not set +# end of Memory initialization +# end of Kernel hardening options +# end of Security options + +CONFIG_CRYPTO=m + +# +# Crypto core or helper +# +CONFIG_CRYPTO_ALGAPI=m +CONFIG_CRYPTO_ALGAPI2=m +CONFIG_CRYPTO_HASH=m +CONFIG_CRYPTO_HASH2=m +# CONFIG_CRYPTO_MANAGER is not set +# CONFIG_CRYPTO_USER is not set +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y +# CONFIG_CRYPTO_NULL is not set +# CONFIG_CRYPTO_CRYPTD is not set +# CONFIG_CRYPTO_AUTHENC is not set +# CONFIG_CRYPTO_TEST is not set + +# +# Public-key cryptography +# +# CONFIG_CRYPTO_RSA is not set +# CONFIG_CRYPTO_DH is not set +# CONFIG_CRYPTO_ECDH is not set +# CONFIG_CRYPTO_ECDSA is not set +# CONFIG_CRYPTO_ECRDSA is not set +# CONFIG_CRYPTO_SM2 is not set +# CONFIG_CRYPTO_CURVE25519 is not set + +# +# Authenticated Encryption with Associated Data +# +# CONFIG_CRYPTO_CCM is not set +# CONFIG_CRYPTO_GCM is not set +# CONFIG_CRYPTO_CHACHA20POLY1305 is not set +# CONFIG_CRYPTO_AEGIS128 is not set +# CONFIG_CRYPTO_SEQIV is not set +# CONFIG_CRYPTO_ECHAINIV is not set + +# +# Block modes +# +# CONFIG_CRYPTO_CBC is not set +# CONFIG_CRYPTO_CFB is not set +# CONFIG_CRYPTO_CTR is not set +# CONFIG_CRYPTO_CTS is not set +# CONFIG_CRYPTO_ECB is not set +# CONFIG_CRYPTO_LRW is not set +# CONFIG_CRYPTO_OFB is not set +# CONFIG_CRYPTO_PCBC is not set +# CONFIG_CRYPTO_XTS is not set +# CONFIG_CRYPTO_KEYWRAP is not set +# CONFIG_CRYPTO_ADIANTUM is not set +# CONFIG_CRYPTO_ESSIV is not set + +# +# Hash modes +# +# CONFIG_CRYPTO_CMAC is not set +# CONFIG_CRYPTO_HMAC is not set +# CONFIG_CRYPTO_XCBC is not set +# CONFIG_CRYPTO_VMAC is not set + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=m +# CONFIG_CRYPTO_CRC32C_INTEL is not set +# CONFIG_CRYPTO_CRC32 is not set +# CONFIG_CRYPTO_CRC32_PCLMUL is not set +# CONFIG_CRYPTO_XXHASH is not set +# CONFIG_CRYPTO_BLAKE2B is not set +# CONFIG_CRYPTO_BLAKE2S is not set +# CONFIG_CRYPTO_CRCT10DIF is not set +# CONFIG_CRYPTO_GHASH is not set +# CONFIG_CRYPTO_POLY1305 is not set +# CONFIG_CRYPTO_MD4 is not set +# CONFIG_CRYPTO_MD5 is not set +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_RMD160 is not set +# CONFIG_CRYPTO_SHA1 is not set +# CONFIG_CRYPTO_SHA256 is not set +# CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_SHA3 is not set +# CONFIG_CRYPTO_SM3 is not set +# CONFIG_CRYPTO_STREEBOG is not set +# CONFIG_CRYPTO_WP512 is not set + +# +# Ciphers +# +# CONFIG_CRYPTO_AES is not set +# CONFIG_CRYPTO_AES_TI is not set +# CONFIG_CRYPTO_AES_NI_INTEL is not set +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_CAMELLIA is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_DES is not set +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_CHACHA20 is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_SERPENT_SSE2_586 is not set +# CONFIG_CRYPTO_SM4 is not set +# CONFIG_CRYPTO_TWOFISH is not set +# CONFIG_CRYPTO_TWOFISH_586 is not set + +# +# Compression +# +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_LZO is not set +# CONFIG_CRYPTO_842 is not set +# CONFIG_CRYPTO_LZ4 is not set +# CONFIG_CRYPTO_LZ4HC is not set +# CONFIG_CRYPTO_ZSTD is not set + +# +# Random Number Generation +# +# CONFIG_CRYPTO_ANSI_CPRNG is not set +# CONFIG_CRYPTO_DRBG_MENU is not set +# CONFIG_CRYPTO_JITTERENTROPY is not set +# CONFIG_CRYPTO_USER_API_HASH is not set +# CONFIG_CRYPTO_USER_API_SKCIPHER is not set +# CONFIG_CRYPTO_USER_API_RNG is not set +# CONFIG_CRYPTO_USER_API_AEAD is not set +CONFIG_CRYPTO_HW=y +# CONFIG_CRYPTO_DEV_PADLOCK is not set +# CONFIG_CRYPTO_DEV_GEODE is not set +# CONFIG_CRYPTO_DEV_HIFN_795X is not set +# CONFIG_CRYPTO_DEV_CCP is not set +# CONFIG_CRYPTO_DEV_QAT_DH895xCC is not set +# CONFIG_CRYPTO_DEV_QAT_C3XXX is not set +# CONFIG_CRYPTO_DEV_QAT_C62X is not set +# CONFIG_CRYPTO_DEV_QAT_4XXX is not set +# CONFIG_CRYPTO_DEV_QAT_DH895xCCVF is not set +# CONFIG_CRYPTO_DEV_QAT_C3XXXVF is not set +# CONFIG_CRYPTO_DEV_QAT_C62XVF is not set +# CONFIG_CRYPTO_DEV_SAFEXCEL is not set +# CONFIG_CRYPTO_DEV_AMLOGIC_GXL is not set + +# +# Certificates for signature checking +# +# end of Certificates for signature checking + +# +# Library routines +# +# CONFIG_PACKING is not set +CONFIG_BITREVERSE=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GENERIC_NET_UTILS=y +# CONFIG_CORDIC is not set +# CONFIG_PRIME_NUMBERS is not set +CONFIG_RATIONAL=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_GENERIC_IOMAP=y +CONFIG_ARCH_HAS_FAST_MULTIPLIER=y +CONFIG_ARCH_USE_SYM_ANNOTATIONS=y + +# +# Crypto library routines +# +CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y +# CONFIG_CRYPTO_LIB_CHACHA is not set +# CONFIG_CRYPTO_LIB_CURVE25519 is not set +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1 +# CONFIG_CRYPTO_LIB_POLY1305 is not set +# CONFIG_CRYPTO_LIB_CHACHA20POLY1305 is not set +# end of Crypto library routines + +# CONFIG_CRC_CCITT is not set +CONFIG_CRC16=m +# CONFIG_CRC_T10DIF is not set +# CONFIG_CRC64_ROCKSOFT is not set +# CONFIG_CRC_ITU_T is not set +CONFIG_CRC32=y +# CONFIG_CRC32_SELFTEST is not set +CONFIG_CRC32_SLICEBY8=y +# CONFIG_CRC32_SLICEBY4 is not set +# CONFIG_CRC32_SARWATE is not set +# CONFIG_CRC32_BIT is not set +# CONFIG_CRC64 is not set +# CONFIG_CRC4 is not set +# CONFIG_CRC7 is not set +# CONFIG_LIBCRC32C is not set +# CONFIG_CRC8 is not set +CONFIG_XXHASH=y +# CONFIG_RANDOM32_SELFTEST is not set +CONFIG_ZSTD_DECOMPRESS=y +# CONFIG_XZ_DEC is not set +CONFIG_DECOMPRESS_ZSTD=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT_MAP=y +CONFIG_HAS_DMA=y +CONFIG_NEED_SG_DMA_LENGTH=y +# CONFIG_DMA_API_DEBUG is not set +CONFIG_DQL=y +CONFIG_GLOB=y +# CONFIG_GLOB_SELFTEST is not set +CONFIG_NLATTR=y +# CONFIG_IRQ_POLL is not set +CONFIG_HAVE_GENERIC_VDSO=y +CONFIG_GENERIC_GETTIMEOFDAY=y +CONFIG_GENERIC_VDSO_32=y +CONFIG_GENERIC_VDSO_TIME_NS=y +CONFIG_SG_POOL=y +CONFIG_ARCH_STACKWALK=y +CONFIG_SBITMAP=y +# end of Library routines + +# +# Kernel hacking +# + +# +# printk and dmesg options +# +# CONFIG_PRINTK_TIME is not set +# CONFIG_PRINTK_CALLER is not set +# CONFIG_STACKTRACE_BUILD_ID is not set +CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 +CONFIG_CONSOLE_LOGLEVEL_QUIET=4 +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 +# CONFIG_BOOT_PRINTK_DELAY is not set +# CONFIG_DYNAMIC_DEBUG is not set +# CONFIG_DYNAMIC_DEBUG_CORE is not set +# CONFIG_SYMBOLIC_ERRNAME is not set +# end of printk and dmesg options + +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_MISC is not set + +# +# Compile-time checks and compiler options +# +CONFIG_DEBUG_INFO_NONE=y +# CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT is not set +# CONFIG_DEBUG_INFO_DWARF4 is not set +# CONFIG_DEBUG_INFO_DWARF5 is not set +CONFIG_FRAME_WARN=1024 +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_READABLE_ASM is not set +# CONFIG_HEADERS_INSTALL is not set +# CONFIG_DEBUG_SECTION_MISMATCH is not set +# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set +# CONFIG_VMLINUX_MAP is not set +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +# end of Compile-time checks and compiler options + +# +# Generic Kernel Debugging Instruments +# +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_DEBUG_FS is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y +# CONFIG_UBSAN is not set +CONFIG_HAVE_KCSAN_COMPILER=y +# end of Generic Kernel Debugging Instruments + +# +# Networking Debugging +# +# CONFIG_NET_DEV_REFCNT_TRACKER is not set +# CONFIG_NET_NS_REFCNT_TRACKER is not set +# end of Networking Debugging + +# +# Memory Debugging +# +# CONFIG_PAGE_EXTENSION is not set +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_PAGE_OWNER is not set +# CONFIG_PAGE_POISONING is not set +# CONFIG_DEBUG_RODATA_TEST is not set +CONFIG_ARCH_HAS_DEBUG_WX=y +# CONFIG_DEBUG_WX is not set +CONFIG_GENERIC_PTDUMP=y +# CONFIG_DEBUG_OBJECTS is not set +CONFIG_HAVE_DEBUG_KMEMLEAK=y +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_SCHED_STACK_END_CHECK is not set +CONFIG_ARCH_HAS_DEBUG_VM_PGTABLE=y +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_VM_PGTABLE is not set +CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y +# CONFIG_DEBUG_VIRTUAL is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_KMAP_LOCAL is not set +CONFIG_ARCH_SUPPORTS_KMAP_LOCAL_FORCE_MAP=y +# CONFIG_DEBUG_KMAP_LOCAL_FORCE_MAP is not set +CONFIG_HAVE_DEBUG_STACKOVERFLOW=y +# CONFIG_DEBUG_STACKOVERFLOW is not set +CONFIG_CC_HAS_KASAN_GENERIC=y +CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y +CONFIG_HAVE_ARCH_KFENCE=y +# end of Memory Debugging + +# CONFIG_DEBUG_SHIRQ is not set + +# +# Debug Oops, Lockups and Hangs +# +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +CONFIG_PANIC_TIMEOUT=0 +# CONFIG_SOFTLOCKUP_DETECTOR is not set +# CONFIG_HARDLOCKUP_DETECTOR is not set +# CONFIG_DETECT_HUNG_TASK is not set +# CONFIG_WQ_WATCHDOG is not set +# CONFIG_TEST_LOCKUP is not set +# end of Debug Oops, Lockups and Hangs + +# +# Scheduler Debugging +# +CONFIG_SCHED_DEBUG=y +# CONFIG_SCHEDSTATS is not set +# end of Scheduler Debugging + +# CONFIG_DEBUG_TIMEKEEPING is not set + +# +# Lock Debugging (spinlocks, mutexes, etc...) +# +CONFIG_LOCK_DEBUGGING_SUPPORT=y +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set +# CONFIG_DEBUG_RWSEMS is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_DEBUG_ATOMIC_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_LOCK_TORTURE_TEST is not set +# CONFIG_WW_MUTEX_SELFTEST is not set +# CONFIG_SCF_TORTURE_TEST is not set +# end of Lock Debugging (spinlocks, mutexes, etc...) + +# CONFIG_DEBUG_IRQFLAGS is not set +# CONFIG_STACKTRACE is not set +# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set +# CONFIG_DEBUG_KOBJECT is not set + +# +# Debug kernel data structures +# +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_PLIST is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_BUG_ON_DATA_CORRUPTION is not set +# end of Debug kernel data structures + +# CONFIG_DEBUG_CREDENTIALS is not set + +# +# RCU Debugging +# +# CONFIG_RCU_SCALE_TEST is not set +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_REF_SCALE_TEST is not set +# CONFIG_RCU_TRACE is not set +# CONFIG_RCU_EQS_DEBUG is not set +# end of RCU Debugging + +# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set +# CONFIG_LATENCYTOP is not set +CONFIG_USER_STACKTRACE_SUPPORT=y +CONFIG_HAVE_RETHOOK=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_HAVE_BUILDTIME_MCOUNT_SORT=y +CONFIG_TRACING_SUPPORT=y +# CONFIG_FTRACE is not set +# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set +# CONFIG_SAMPLES is not set +CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y + +# +# x86 Debugging +# +CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y +CONFIG_X86_VERBOSE_BOOTUP=y +# CONFIG_EARLY_PRINTK is not set +# CONFIG_DEBUG_TLBFLUSH is not set +CONFIG_HAVE_MMIOTRACE_SUPPORT=y +# CONFIG_X86_DECODER_SELFTEST is not set +CONFIG_IO_DELAY_0X80=y +# CONFIG_IO_DELAY_0XED is not set +# CONFIG_IO_DELAY_UDELAY is not set +# CONFIG_IO_DELAY_NONE is not set +# CONFIG_CPA_DEBUG is not set +# CONFIG_DEBUG_ENTRY is not set +# CONFIG_X86_DEBUG_FPU is not set +# CONFIG_PUNIT_ATOM_DEBUG is not set +# CONFIG_UNWINDER_FRAME_POINTER is not set +CONFIG_UNWINDER_GUESS=y +# end of x86 Debugging + +# +# Kernel Testing and Coverage +# +# CONFIG_KUNIT is not set +# CONFIG_NOTIFIER_ERROR_INJECTION is not set +# CONFIG_FAULT_INJECTION is not set +CONFIG_CC_HAS_SANCOV_TRACE_PC=y +# CONFIG_RUNTIME_TESTING_MENU is not set +CONFIG_ARCH_USE_MEMTEST=y +# CONFIG_MEMTEST is not set +# end of Kernel Testing and Coverage +# end of Kernel hacking diff --git a/floppy/configs/config-linux-i486 b/floppy/configs/config-linux-i486 new file mode 100644 index 0000000..3b96401 --- /dev/null +++ b/floppy/configs/config-linux-i486 @@ -0,0 +1,1574 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/x86 5.18.1-arch1 Kernel Configuration +# +CONFIG_CC_VERSION_TEXT="gcc (GCC) 12.1.0" +CONFIG_CC_IS_GCC=y +CONFIG_GCC_VERSION=120100 +CONFIG_CLANG_VERSION=0 +CONFIG_AS_IS_GNU=y +CONFIG_AS_VERSION=23800 +CONFIG_LD_IS_BFD=y +CONFIG_LD_VERSION=23800 +CONFIG_LLD_VERSION=0 +CONFIG_CC_HAS_ASM_GOTO=y +CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y +CONFIG_CC_HAS_ASM_INLINE=y +CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y +CONFIG_PAHOLE_VERSION=123 +CONFIG_IRQ_WORK=y +CONFIG_BUILDTIME_TABLE_SORT=y +CONFIG_THREAD_INFO_IN_TASK=y + +# +# General setup +# +CONFIG_BROKEN_ON_SMP=y +CONFIG_INIT_ENV_ARG_LIMIT=32 +# CONFIG_COMPILE_TEST is not set +# CONFIG_WERROR is not set +CONFIG_LOCALVERSION="" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_BUILD_SALT="" +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_BZIP2=y +CONFIG_HAVE_KERNEL_LZMA=y +CONFIG_HAVE_KERNEL_XZ=y +CONFIG_HAVE_KERNEL_LZO=y +CONFIG_HAVE_KERNEL_LZ4=y +CONFIG_HAVE_KERNEL_ZSTD=y +# CONFIG_KERNEL_GZIP is not set +# CONFIG_KERNEL_BZIP2 is not set +# CONFIG_KERNEL_LZMA is not set +CONFIG_KERNEL_XZ=y +# CONFIG_KERNEL_LZO is not set +# CONFIG_KERNEL_LZ4 is not set +# CONFIG_KERNEL_ZSTD is not set +CONFIG_DEFAULT_INIT="" +CONFIG_DEFAULT_HOSTNAME="(none)" +CONFIG_SWAP=y +# CONFIG_SYSVIPC is not set +# CONFIG_WATCH_QUEUE is not set +# CONFIG_CROSS_MEMORY_ATTACH is not set +# CONFIG_USELIB is not set +CONFIG_HAVE_ARCH_AUDITSYSCALL=y + +# +# IRQ subsystem +# +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_GENERIC_IRQ_RESERVATION_MODE=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_SPARSE_IRQ=y +# end of IRQ subsystem + +CONFIG_CLOCKSOURCE_WATCHDOG=y +CONFIG_ARCH_CLOCKSOURCE_INIT=y +CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y +CONFIG_GENERIC_TIME_VSYSCALL=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y +CONFIG_GENERIC_CMOS_UPDATE=y +CONFIG_HAVE_POSIX_CPU_TIMERS_TASK_WORK=y + +# +# Timers subsystem +# +CONFIG_HZ_PERIODIC=y +# CONFIG_NO_HZ_IDLE is not set +# CONFIG_NO_HZ is not set +# CONFIG_HIGH_RES_TIMERS is not set +CONFIG_CLOCKSOURCE_WATCHDOG_MAX_SKEW_US=100 +# end of Timers subsystem + +CONFIG_HAVE_EBPF_JIT=y + +# +# BPF subsystem +# +# CONFIG_BPF_SYSCALL is not set +# end of BPF subsystem + +CONFIG_PREEMPT_NONE_BUILD=y +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PREEMPT is not set +# CONFIG_PREEMPT_DYNAMIC is not set + +# +# CPU/Task time and stats accounting +# +CONFIG_TICK_CPU_ACCOUNTING=y +# CONFIG_IRQ_TIME_ACCOUNTING is not set +# CONFIG_PSI is not set +# end of CPU/Task time and stats accounting + +# +# RCU Subsystem +# +CONFIG_TINY_RCU=y +# CONFIG_RCU_EXPERT is not set +CONFIG_SRCU=y +CONFIG_TINY_SRCU=y +# end of RCU Subsystem + +# CONFIG_IKCONFIG is not set +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 +CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y + +# +# Scheduler features +# +# end of Scheduler features + +CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y +CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5" +# CONFIG_CGROUPS is not set +# CONFIG_CHECKPOINT_RESTORE is not set +# CONFIG_SCHED_AUTOGROUP is not set +# CONFIG_RELAY is not set +# CONFIG_BLK_DEV_INITRD is not set +# CONFIG_BOOT_CONFIG is not set +# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_LD_ORPHAN_WARN=y +CONFIG_HAVE_UID16=y +CONFIG_SYSCTL_EXCEPTION_TRACE=y +CONFIG_HAVE_PCSPKR_PLATFORM=y +CONFIG_EXPERT=y +# CONFIG_MULTIUSER is not set +# CONFIG_SGETMASK_SYSCALL is not set +# CONFIG_SYSFS_SYSCALL is not set +# CONFIG_FHANDLE is not set +# CONFIG_POSIX_TIMERS is not set +CONFIG_PRINTK=y +# CONFIG_BUG is not set +# CONFIG_PCSPKR_PLATFORM is not set +# CONFIG_BASE_FULL is not set +# CONFIG_FUTEX is not set +# CONFIG_EPOLL is not set +# CONFIG_SIGNALFD is not set +# CONFIG_TIMERFD is not set +# CONFIG_EVENTFD is not set +# CONFIG_SHMEM is not set +# CONFIG_AIO is not set +# CONFIG_IO_URING is not set +# CONFIG_ADVISE_SYSCALLS is not set +# CONFIG_MEMBARRIER is not set +# CONFIG_KALLSYMS is not set +# CONFIG_USERFAULTFD is not set +CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y +# CONFIG_KCMP is not set +# CONFIG_RSEQ is not set +CONFIG_EMBEDDED=y +CONFIG_HAVE_PERF_EVENTS=y +# CONFIG_PC104 is not set + +# +# Kernel Performance Events And Counters +# +CONFIG_PERF_EVENTS=y +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +# end of Kernel Performance Events And Counters + +# CONFIG_VM_EVENT_COUNTERS is not set +# CONFIG_COMPAT_BRK is not set +# CONFIG_SLAB is not set +# CONFIG_SLUB is not set +CONFIG_SLOB=y +# CONFIG_SHUFFLE_PAGE_ALLOCATOR is not set +# CONFIG_PROFILING is not set +# end of General setup + +# CONFIG_64BIT is not set +CONFIG_X86_32=y +CONFIG_X86=y +CONFIG_INSTRUCTION_DECODER=y +CONFIG_OUTPUT_FORMAT="elf32-i386" +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_MMU=y +CONFIG_ARCH_MMAP_RND_BITS_MIN=8 +CONFIG_ARCH_MMAP_RND_BITS_MAX=16 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 +CONFIG_GENERIC_ISA_DMA=y +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_ARCH_HAS_CPU_RELAX=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_NR_GPIO=512 +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ARCH_SUPPORTS_UPROBES=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_PGTABLE_LEVELS=2 +CONFIG_CC_HAS_SANE_STACKPROTECTOR=y + +# +# Processor type and features +# +# CONFIG_SMP is not set +# CONFIG_X86_FEATURE_NAMES is not set +# CONFIG_GOLDFISH is not set +# CONFIG_RETPOLINE is not set +CONFIG_CC_HAS_SLS=y +# CONFIG_X86_CPU_RESCTRL is not set +# CONFIG_X86_EXTENDED_PLATFORM is not set +# CONFIG_X86_32_IRIS is not set +# CONFIG_SCHED_OMIT_FRAME_POINTER is not set +# CONFIG_HYPERVISOR_GUEST is not set +# CONFIG_M486SX is not set +CONFIG_M486=y +# CONFIG_M586 is not set +# CONFIG_M586TSC is not set +# CONFIG_M586MMX is not set +# CONFIG_M686 is not set +# CONFIG_MPENTIUMII is not set +# CONFIG_MPENTIUMIII is not set +# CONFIG_MPENTIUMM is not set +# CONFIG_MPENTIUM4 is not set +# CONFIG_MK6 is not set +# CONFIG_MK7 is not set +# CONFIG_MK8 is not set +# CONFIG_MCRUSOE is not set +# CONFIG_MEFFICEON is not set +# CONFIG_MWINCHIPC6 is not set +# CONFIG_MWINCHIP3D is not set +# CONFIG_MELAN is not set +# CONFIG_MGEODEGX1 is not set +# CONFIG_MGEODE_LX is not set +# CONFIG_MCYRIXIII is not set +# CONFIG_MVIAC3_2 is not set +# CONFIG_MVIAC7 is not set +# CONFIG_MCORE2 is not set +# CONFIG_MATOM is not set +# CONFIG_X86_GENERIC is not set +CONFIG_X86_INTERNODE_CACHE_SHIFT=4 +CONFIG_X86_L1_CACHE_SHIFT=4 +CONFIG_X86_F00F_BUG=y +CONFIG_X86_INVD_BUG=y +CONFIG_X86_ALIGNMENT_16=y +CONFIG_X86_MINIMUM_CPU_FAMILY=4 +CONFIG_IA32_FEAT_CTL=y +# CONFIG_PROCESSOR_SELECT is not set +CONFIG_CPU_SUP_INTEL=y +CONFIG_CPU_SUP_CYRIX_32=y +CONFIG_CPU_SUP_AMD=y +CONFIG_CPU_SUP_HYGON=y +CONFIG_CPU_SUP_CENTAUR=y +CONFIG_CPU_SUP_TRANSMETA_32=y +CONFIG_CPU_SUP_UMC_32=y +CONFIG_CPU_SUP_ZHAOXIN=y +CONFIG_CPU_SUP_VORTEX_32=y +# CONFIG_HPET_TIMER is not set +# CONFIG_DMI is not set +CONFIG_NR_CPUS_RANGE_BEGIN=1 +CONFIG_NR_CPUS_RANGE_END=1 +CONFIG_NR_CPUS_DEFAULT=1 +CONFIG_NR_CPUS=1 +# CONFIG_X86_UP_APIC is not set +# CONFIG_X86_MCE is not set + +# +# Performance monitoring +# +# CONFIG_PERF_EVENTS_AMD_POWER is not set +# CONFIG_PERF_EVENTS_AMD_UNCORE is not set +# end of Performance monitoring + +# CONFIG_X86_LEGACY_VM86 is not set +# CONFIG_X86_IOPL_IOPERM is not set +# CONFIG_TOSHIBA is not set +# CONFIG_X86_REBOOTFIXUPS is not set +# CONFIG_MICROCODE is not set +# CONFIG_X86_MSR is not set +# CONFIG_X86_CPUID is not set +CONFIG_NOHIGHMEM=y +# CONFIG_HIGHMEM4G is not set +CONFIG_VMSPLIT_3G=y +# CONFIG_VMSPLIT_3G_OPT is not set +# CONFIG_VMSPLIT_2G is not set +# CONFIG_VMSPLIT_2G_OPT is not set +# CONFIG_VMSPLIT_1G is not set +CONFIG_PAGE_OFFSET=0xC0000000 +# CONFIG_X86_PAE is not set +CONFIG_ARCH_FLATMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ILLEGAL_POINTER_VALUE=0 +# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set +# CONFIG_MTRR is not set +# CONFIG_ARCH_RANDOM is not set +# CONFIG_X86_SMAP is not set +# CONFIG_X86_UMIP is not set +CONFIG_CC_HAS_IBT=y +CONFIG_X86_INTEL_TSX_MODE_OFF=y +# CONFIG_X86_INTEL_TSX_MODE_ON is not set +# CONFIG_X86_INTEL_TSX_MODE_AUTO is not set +# CONFIG_HZ_100 is not set +CONFIG_HZ_250=y +# CONFIG_HZ_300 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ=250 +# CONFIG_KEXEC is not set +CONFIG_PHYSICAL_START=0x1000000 +# CONFIG_RELOCATABLE is not set +CONFIG_PHYSICAL_ALIGN=0x200000 +# CONFIG_COMPAT_VDSO is not set +# CONFIG_CMDLINE_BOOL is not set +# CONFIG_MODIFY_LDT_SYSCALL is not set +# CONFIG_STRICT_SIGALTSTACK_SIZE is not set +# end of Processor type and features + +CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y + +# +# Power management and ACPI options +# +# CONFIG_SUSPEND is not set +# CONFIG_HIBERNATION is not set +# CONFIG_PM is not set +CONFIG_ARCH_SUPPORTS_ACPI=y +# CONFIG_ACPI is not set + +# +# CPU Frequency scaling +# +# CONFIG_CPU_FREQ is not set +# end of CPU Frequency scaling + +# +# CPU Idle +# +# CONFIG_CPU_IDLE is not set +# end of CPU Idle +# end of Power management and ACPI options + +# +# Bus options (PCI etc.) +# +# CONFIG_ISA_BUS is not set +CONFIG_ISA_DMA_API=y +# CONFIG_ISA is not set +# CONFIG_SCx200 is not set +# CONFIG_OLPC is not set +# CONFIG_ALIX is not set +# CONFIG_NET5501 is not set +# end of Bus options (PCI etc.) + +# +# Binary Emulations +# +CONFIG_COMPAT_32=y +# end of Binary Emulations + +CONFIG_HAVE_ATOMIC_IOMAP=y +CONFIG_HAVE_KVM=y +# CONFIG_VIRTUALIZATION is not set +CONFIG_AS_AVX512=y +CONFIG_AS_SHA1_NI=y +CONFIG_AS_SHA256_NI=y +CONFIG_AS_TPAUSE=y + +# +# General architecture-dependent options +# +CONFIG_GENERIC_ENTRY=y +# CONFIG_JUMP_LABEL is not set +# CONFIG_STATIC_CALL_SELFTEST is not set +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_ARCH_USE_BUILTIN_BSWAP=y +CONFIG_HAVE_IOREMAP_PROT=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_OPTPROBES=y +CONFIG_HAVE_KPROBES_ON_FTRACE=y +CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y +CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y +CONFIG_HAVE_NMI=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_DMA_CONTIGUOUS=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_ARCH_HAS_FORTIFY_SOURCE=y +CONFIG_ARCH_HAS_SET_MEMORY=y +CONFIG_ARCH_HAS_SET_DIRECT_MAP=y +CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y +CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y +CONFIG_ARCH_WANTS_NO_INSTR=y +CONFIG_ARCH_32BIT_OFF_T=y +CONFIG_HAVE_ASM_MODVERSIONS=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_RSEQ=y +CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=y +CONFIG_HAVE_HW_BREAKPOINT=y +CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y +CONFIG_HAVE_USER_RETURN_NOTIFIER=y +CONFIG_HAVE_PERF_EVENTS_NMI=y +CONFIG_HAVE_HARDLOCKUP_DETECTOR_PERF=y +CONFIG_HAVE_PERF_REGS=y +CONFIG_HAVE_PERF_USER_STACK_DUMP=y +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_HAVE_ARCH_JUMP_LABEL_RELATIVE=y +CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y +CONFIG_HAVE_CMPXCHG_LOCAL=y +CONFIG_HAVE_CMPXCHG_DOUBLE=y +CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y +CONFIG_HAVE_ARCH_SECCOMP=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +# CONFIG_SECCOMP is not set +CONFIG_HAVE_ARCH_STACKLEAK=y +CONFIG_HAVE_STACKPROTECTOR=y +# CONFIG_STACKPROTECTOR is not set +CONFIG_ARCH_SUPPORTS_LTO_CLANG=y +CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y +CONFIG_LTO_NONE=y +CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y +CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_MOVE_PUD=y +CONFIG_HAVE_MOVE_PMD=y +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y +CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y +CONFIG_HAVE_MOD_ARCH_SPECIFIC=y +CONFIG_MODULES_USE_ELF_REL=y +CONFIG_HAVE_SOFTIRQ_ON_OWN_STACK=y +CONFIG_ARCH_HAS_ELF_RANDOMIZE=y +CONFIG_HAVE_ARCH_MMAP_RND_BITS=y +CONFIG_HAVE_EXIT_THREAD=y +CONFIG_ARCH_MMAP_RND_BITS=8 +CONFIG_PAGE_SIZE_LESS_THAN_64KB=y +CONFIG_PAGE_SIZE_LESS_THAN_256KB=y +CONFIG_CLONE_BACKWARDS=y +CONFIG_OLD_SIGSUSPEND3=y +CONFIG_OLD_SIGACTION=y +# CONFIG_COMPAT_32BIT_TIME is not set +CONFIG_HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET=y +# CONFIG_RANDOMIZE_KSTACK_OFFSET is not set +CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y +CONFIG_STRICT_KERNEL_RWX=y +CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y +CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y +CONFIG_ARCH_HAS_MEM_ENCRYPT=y +CONFIG_HAVE_STATIC_CALL=y +CONFIG_HAVE_PREEMPT_DYNAMIC=y +CONFIG_HAVE_PREEMPT_DYNAMIC_CALL=y +CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_ARCH_SPLIT_ARG64=y +CONFIG_ARCH_HAS_PARANOID_L1D_FLUSH=y +CONFIG_DYNAMIC_SIGFRAME=y + +# +# GCOV-based kernel profiling +# +CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y +# end of GCOV-based kernel profiling + +CONFIG_HAVE_GCC_PLUGINS=y +# CONFIG_GCC_PLUGINS is not set +# end of General architecture-dependent options + +CONFIG_BASE_SMALL=1 +# CONFIG_MODULES is not set +CONFIG_MODULES_TREE_LOOKUP=y +CONFIG_BLOCK=y +CONFIG_BLOCK_LEGACY_AUTOLOAD=y +# CONFIG_BLK_DEV_BSGLIB is not set +# CONFIG_BLK_DEV_INTEGRITY is not set +# CONFIG_BLK_DEV_ZONED is not set +# CONFIG_BLK_WBT is not set +# CONFIG_BLK_SED_OPAL is not set +# CONFIG_BLK_INLINE_ENCRYPTION is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +CONFIG_EFI_PARTITION=y +# end of Partition Types + +# +# IO Schedulers +# +CONFIG_MQ_IOSCHED_DEADLINE=y +CONFIG_MQ_IOSCHED_KYBER=y +# CONFIG_IOSCHED_BFQ is not set +# end of IO Schedulers + +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y +CONFIG_INLINE_READ_UNLOCK=y +CONFIG_INLINE_READ_UNLOCK_IRQ=y +CONFIG_INLINE_WRITE_UNLOCK=y +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y +CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y +CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y +CONFIG_ARCH_USE_QUEUED_RWLOCKS=y +CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE=y +CONFIG_ARCH_HAS_SYNC_CORE_BEFORE_USERMODE=y +CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y + +# +# Executable file formats +# +CONFIG_BINFMT_ELF=y +CONFIG_ELFCORE=y +CONFIG_BINFMT_SCRIPT=y +# CONFIG_BINFMT_MISC is not set +# CONFIG_COREDUMP is not set +# end of Executable file formats + +# +# Memory Management options +# +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_SPARSEMEM_STATIC=y +CONFIG_HAVE_FAST_GUP=y +CONFIG_EXCLUSIVE_SYSTEM_RAM=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_COMPACTION is not set +# CONFIG_PAGE_REPORTING is not set +CONFIG_VIRT_TO_BUS=y +# CONFIG_KSM is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +# CONFIG_TRANSPARENT_HUGEPAGE is not set +CONFIG_ARCH_WANT_GENERAL_HUGETLB=y +CONFIG_NEED_PER_CPU_KM=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +# CONFIG_CMA is not set +# CONFIG_ZPOOL is not set +# CONFIG_ZSMALLOC is not set +CONFIG_GENERIC_EARLY_IOREMAP=y +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +CONFIG_ARCH_HAS_CURRENT_STACK_POINTER=y +CONFIG_ARCH_HAS_FILTER_PGPROT=y +CONFIG_ARCH_HAS_ZONE_DMA_SET=y +# CONFIG_ZONE_DMA is not set +# CONFIG_PERCPU_STATS is not set + +# +# GUP_TEST needs to have DEBUG_FS enabled +# +CONFIG_ARCH_HAS_PTE_SPECIAL=y +CONFIG_KMAP_LOCAL=y + +# +# Data Access Monitoring +# +# CONFIG_DAMON is not set +# end of Data Access Monitoring +# end of Memory Management options + +# CONFIG_NET is not set + +# +# Device Drivers +# +CONFIG_HAVE_EISA=y +# CONFIG_EISA is not set +CONFIG_HAVE_PCI=y +# CONFIG_PCI is not set +# CONFIG_PCCARD is not set + +# +# Generic Driver Options +# +# CONFIG_UEVENT_HELPER is not set +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_DEVTMPFS_SAFE is not set +# CONFIG_STANDALONE is not set +# CONFIG_PREVENT_FIRMWARE_BUILD is not set + +# +# Firmware loader +# +# CONFIG_FW_LOADER is not set +# end of Firmware loader + +# CONFIG_ALLOW_DEV_COREDUMP is not set +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set +CONFIG_GENERIC_CPU_AUTOPROBE=y +CONFIG_GENERIC_CPU_VULNERABILITIES=y +# end of Generic Driver Options + +# +# Bus devices +# +# CONFIG_MHI_BUS is not set +# end of Bus devices + +# +# Firmware Drivers +# + +# +# ARM System Control and Management Interface Protocol +# +# end of ARM System Control and Management Interface Protocol + +# CONFIG_EDD is not set +# CONFIG_FIRMWARE_MEMMAP is not set +CONFIG_SYSFB=y +# CONFIG_SYSFB_SIMPLEFB is not set +# CONFIG_GOOGLE_FIRMWARE is not set + +# +# Tegra firmware driver +# +# end of Tegra firmware driver +# end of Firmware Drivers + +# CONFIG_GNSS is not set +# CONFIG_MTD is not set +# CONFIG_OF is not set +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y +# CONFIG_PARPORT is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_NULL_BLK is not set +CONFIG_BLK_DEV_FD=y +# CONFIG_BLK_DEV_FD_RAWCMD is not set +# CONFIG_BLK_DEV_LOOP is not set + +# +# DRBD disabled because PROC_FS or INET not selected +# +# CONFIG_BLK_DEV_RAM is not set + +# +# NVME Support +# +# CONFIG_NVME_FC is not set +# end of NVME Support + +# +# Misc devices +# +# CONFIG_DUMMY_IRQ is not set +# CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_SRAM is not set +# CONFIG_XILINX_SDFEC is not set +# CONFIG_C2PORT is not set + +# +# EEPROM support +# +# CONFIG_EEPROM_93CX6 is not set +# end of EEPROM support + +# +# Texas Instruments shared transport line discipline +# +# end of Texas Instruments shared transport line discipline + +# +# Altera FPGA firmware download module (requires I2C) +# +# CONFIG_ECHO is not set +# CONFIG_PVPANIC is not set +# end of Misc devices + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +# CONFIG_RAID_ATTRS is not set +# CONFIG_SCSI is not set +# end of SCSI device support + +# CONFIG_ATA is not set +# CONFIG_MD is not set +# CONFIG_TARGET_CORE is not set +# CONFIG_MACINTOSH_DRIVERS is not set + +# +# Input device support +# +CONFIG_INPUT=y +# CONFIG_INPUT_FF_MEMLESS is not set +# CONFIG_INPUT_SPARSEKMAP is not set +# CONFIG_INPUT_MATRIXKMAP is not set +CONFIG_INPUT_VIVALDIFMAP=y + +# +# Userland interfaces +# +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ATKBD=y +# CONFIG_KEYBOARD_LKKBD is not set +# CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_KEYBOARD_OPENCORES is not set +# CONFIG_KEYBOARD_STOWAWAY is not set +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_XTKBD is not set +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=y +# CONFIG_MOUSE_PS2_ALPS is not set +# CONFIG_MOUSE_PS2_BYD is not set +# CONFIG_MOUSE_PS2_LOGIPS2PP is not set +# CONFIG_MOUSE_PS2_SYNAPTICS is not set +# CONFIG_MOUSE_PS2_CYPRESS is not set +# CONFIG_MOUSE_PS2_TRACKPOINT is not set +# CONFIG_MOUSE_PS2_ELANTECH is not set +# CONFIG_MOUSE_PS2_SENTELIC is not set +# CONFIG_MOUSE_PS2_TOUCHKIT is not set +# CONFIG_MOUSE_PS2_FOCALTECH is not set +# CONFIG_MOUSE_SERIAL is not set +# CONFIG_MOUSE_VSXXXAA is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TABLET is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INPUT_MISC is not set +# CONFIG_RMI4_CORE is not set + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y +CONFIG_SERIO_I8042=y +CONFIG_SERIO_SERPORT=y +# CONFIG_SERIO_CT82C710 is not set +CONFIG_SERIO_LIBPS2=y +# CONFIG_SERIO_RAW is not set +# CONFIG_SERIO_ALTERA_PS2 is not set +# CONFIG_SERIO_PS2MULT is not set +# CONFIG_SERIO_ARC_PS2 is not set +# CONFIG_USERIO is not set +# CONFIG_GAMEPORT is not set +# end of Hardware I/O ports +# end of Input device support + +# +# Character devices +# +CONFIG_TTY=y +CONFIG_VT=y +# CONFIG_CONSOLE_TRANSLATIONS is not set +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +# CONFIG_VT_HW_CONSOLE_BINDING is not set +CONFIG_UNIX98_PTYS=y +# CONFIG_LEGACY_PTYS is not set +# CONFIG_LDISC_AUTOLOAD is not set + +# +# Serial drivers +# +CONFIG_SERIAL_EARLYCON=y +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +# CONFIG_SERIAL_8250_16550A_VARIANTS is not set +# CONFIG_SERIAL_8250_FINTEK is not set +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=4 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_DW is not set +# CONFIG_SERIAL_8250_RT288X is not set + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_UARTLITE is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_LANTIQ is not set +# CONFIG_SERIAL_SCCNXP is not set +# CONFIG_SERIAL_TIMBERDALE is not set +# CONFIG_SERIAL_ALTERA_JTAGUART is not set +# CONFIG_SERIAL_ALTERA_UART is not set +# CONFIG_SERIAL_ARC is not set +# CONFIG_SERIAL_FSL_LPUART is not set +# CONFIG_SERIAL_FSL_LINFLEXUART is not set +# end of Serial drivers + +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_NULL_TTY is not set +# CONFIG_SERIAL_DEV_BUS is not set +# CONFIG_TTY_PRINTK is not set +# CONFIG_VIRTIO_CONSOLE is not set +# CONFIG_IPMI_HANDLER is not set +# CONFIG_HW_RANDOM is not set +# CONFIG_MWAVE is not set +# CONFIG_PC8736x_GPIO is not set +# CONFIG_NSC_GPIO is not set +# CONFIG_DEVMEM is not set +# CONFIG_NVRAM is not set +# CONFIG_HANGCHECK_TIMER is not set +# CONFIG_TCG_TPM is not set +# CONFIG_TELCLOCK is not set +# CONFIG_RANDOM_TRUST_BOOTLOADER is not set +# end of Character devices + +# +# I2C support +# +# CONFIG_I2C is not set +# end of I2C support + +# CONFIG_I3C is not set +# CONFIG_SPI is not set +# CONFIG_SPMI is not set +# CONFIG_HSI is not set +# CONFIG_PPS is not set + +# +# PTP clock support +# +CONFIG_PTP_1588_CLOCK_OPTIONAL=y + +# +# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. +# +# end of PTP clock support + +# CONFIG_PINCTRL is not set +# CONFIG_GPIOLIB is not set +# CONFIG_W1 is not set +# CONFIG_POWER_RESET is not set +# CONFIG_POWER_SUPPLY is not set +# CONFIG_HWMON is not set +# CONFIG_THERMAL is not set +# CONFIG_WATCHDOG is not set +CONFIG_SSB_POSSIBLE=y +# CONFIG_SSB is not set +CONFIG_BCMA_POSSIBLE=y +# CONFIG_BCMA is not set + +# +# Multifunction device drivers +# +# CONFIG_MFD_MADERA is not set +# CONFIG_HTC_PASIC3 is not set +# CONFIG_MFD_KEMPLD is not set +# CONFIG_MFD_MT6397 is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_MFD_SYSCON is not set +# CONFIG_MFD_TI_AM335X_TSCADC is not set +# CONFIG_MFD_TQMX86 is not set +# end of Multifunction device drivers + +# CONFIG_REGULATOR is not set +# CONFIG_RC_CORE is not set + +# +# CEC support +# +# CONFIG_MEDIA_CEC_SUPPORT is not set +# end of CEC support + +# CONFIG_MEDIA_SUPPORT is not set + +# +# Graphics support +# +# CONFIG_DRM is not set +# CONFIG_DRM_DEBUG_MODESET_LOCK is not set + +# +# ARM devices +# +# end of ARM devices + +# +# Frame buffer Devices +# +# CONFIG_FB is not set +# end of Frame buffer Devices + +# +# Backlight & LCD device support +# +# CONFIG_LCD_CLASS_DEVICE is not set +# CONFIG_BACKLIGHT_CLASS_DEVICE is not set +# end of Backlight & LCD device support + +# +# Console display driver support +# +CONFIG_VGA_CONSOLE=y +CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_CONSOLE_COLUMNS=80 +CONFIG_DUMMY_CONSOLE_ROWS=25 +# end of Console display driver support +# end of Graphics support + +# CONFIG_SOUND is not set + +# +# HID support +# +CONFIG_HID=y +# CONFIG_HID_BATTERY_STRENGTH is not set +# CONFIG_HIDRAW is not set +# CONFIG_UHID is not set +CONFIG_HID_GENERIC=y + +# +# Special HID drivers +# +# CONFIG_HID_A4TECH is not set +# CONFIG_HID_ACRUX is not set +# CONFIG_HID_AUREAL is not set +# CONFIG_HID_BELKIN is not set +# CONFIG_HID_CHERRY is not set +# CONFIG_HID_COUGAR is not set +# CONFIG_HID_MACALLY is not set +# CONFIG_HID_CMEDIA is not set +# CONFIG_HID_CYPRESS is not set +# CONFIG_HID_DRAGONRISE is not set +# CONFIG_HID_EMS_FF is not set +# CONFIG_HID_ELECOM is not set +# CONFIG_HID_EZKEY is not set +# CONFIG_HID_GEMBIRD is not set +# CONFIG_HID_GFRM is not set +# CONFIG_HID_GLORIOUS is not set +# CONFIG_HID_VIVALDI is not set +# CONFIG_HID_KEYTOUCH is not set +# CONFIG_HID_KYE is not set +# CONFIG_HID_WALTOP is not set +# CONFIG_HID_VIEWSONIC is not set +# CONFIG_HID_XIAOMI is not set +# CONFIG_HID_GYRATION is not set +# CONFIG_HID_ICADE is not set +# CONFIG_HID_ITE is not set +# CONFIG_HID_JABRA is not set +# CONFIG_HID_TWINHAN is not set +# CONFIG_HID_KENSINGTON is not set +# CONFIG_HID_LCPOWER is not set +# CONFIG_HID_LENOVO is not set +# CONFIG_HID_MAGICMOUSE is not set +# CONFIG_HID_MALTRON is not set +# CONFIG_HID_MAYFLASH is not set +# CONFIG_HID_REDRAGON is not set +# CONFIG_HID_MICROSOFT is not set +# CONFIG_HID_MONTEREY is not set +# CONFIG_HID_MULTITOUCH is not set +# CONFIG_HID_NTI is not set +# CONFIG_HID_ORTEK is not set +# CONFIG_HID_PANTHERLORD is not set +# CONFIG_HID_PETALYNX is not set +# CONFIG_HID_PICOLCD is not set +# CONFIG_HID_PLANTRONICS is not set +# CONFIG_HID_RAZER is not set +# CONFIG_HID_PRIMAX is not set +# CONFIG_HID_SAITEK is not set +# CONFIG_HID_SEMITEK is not set +# CONFIG_HID_SPEEDLINK is not set +# CONFIG_HID_STEAM is not set +# CONFIG_HID_STEELSERIES is not set +# CONFIG_HID_SUNPLUS is not set +# CONFIG_HID_RMI is not set +# CONFIG_HID_GREENASIA is not set +# CONFIG_HID_SMARTJOYPLUS is not set +# CONFIG_HID_TIVO is not set +# CONFIG_HID_TOPSEED is not set +# CONFIG_HID_UDRAW_PS3 is not set +# CONFIG_HID_XINMO is not set +# CONFIG_HID_ZEROPLUS is not set +# CONFIG_HID_ZYDACRON is not set +# CONFIG_HID_SENSOR_HUB is not set +# CONFIG_HID_ALPS is not set +# end of Special HID drivers +# end of HID support + +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +# CONFIG_USB_SUPPORT is not set +# CONFIG_MMC is not set +# CONFIG_MEMSTICK is not set +# CONFIG_NEW_LEDS is not set +# CONFIG_ACCESSIBILITY is not set +CONFIG_EDAC_ATOMIC_SCRUB=y +CONFIG_EDAC_SUPPORT=y +CONFIG_RTC_LIB=y +CONFIG_RTC_MC146818_LIB=y +# CONFIG_RTC_CLASS is not set +# CONFIG_DMADEVICES is not set + +# +# DMABUF options +# +# CONFIG_SYNC_FILE is not set +# CONFIG_DMABUF_HEAPS is not set +# end of DMABUF options + +# CONFIG_AUXDISPLAY is not set +# CONFIG_UIO is not set +# CONFIG_VFIO is not set +# CONFIG_VIRT_DRIVERS is not set +# CONFIG_VIRTIO_MENU is not set +# CONFIG_VHOST_MENU is not set + +# +# Microsoft Hyper-V guest support +# +# end of Microsoft Hyper-V guest support + +# CONFIG_COMEDI is not set +# CONFIG_STAGING is not set +# CONFIG_X86_PLATFORM_DEVICES is not set +# CONFIG_CHROME_PLATFORMS is not set +# CONFIG_MELLANOX_PLATFORM is not set +# CONFIG_SURFACE_PLATFORMS is not set +# CONFIG_COMMON_CLK is not set +# CONFIG_HWSPINLOCK is not set + +# +# Clock Source drivers +# +CONFIG_CLKSRC_I8253=y +CONFIG_CLKEVT_I8253=y +CONFIG_CLKBLD_I8253=y +# end of Clock Source drivers + +# CONFIG_MAILBOX is not set +# CONFIG_IOMMU_SUPPORT is not set + +# +# Remoteproc drivers +# +# CONFIG_REMOTEPROC is not set +# end of Remoteproc drivers + +# +# Rpmsg drivers +# +# CONFIG_RPMSG_VIRTIO is not set +# end of Rpmsg drivers + +# +# SOC (System On Chip) specific Drivers +# + +# +# Amlogic SoC drivers +# +# end of Amlogic SoC drivers + +# +# Broadcom SoC drivers +# +# end of Broadcom SoC drivers + +# +# NXP/Freescale QorIQ SoC drivers +# +# end of NXP/Freescale QorIQ SoC drivers + +# +# i.MX SoC drivers +# +# end of i.MX SoC drivers + +# +# Enable LiteX SoC Builder specific drivers +# +# end of Enable LiteX SoC Builder specific drivers + +# +# Qualcomm SoC drivers +# +# end of Qualcomm SoC drivers + +# CONFIG_SOC_TI is not set + +# +# Xilinx SoC drivers +# +# end of Xilinx SoC drivers +# end of SOC (System On Chip) specific Drivers + +# CONFIG_PM_DEVFREQ is not set +# CONFIG_EXTCON is not set +# CONFIG_MEMORY is not set +# CONFIG_IIO is not set +# CONFIG_PWM is not set + +# +# IRQ chip support +# +# end of IRQ chip support + +# CONFIG_IPACK_BUS is not set +# CONFIG_RESET_CONTROLLER is not set + +# +# PHY Subsystem +# +# CONFIG_GENERIC_PHY is not set +# CONFIG_PHY_CAN_TRANSCEIVER is not set + +# +# PHY drivers for Broadcom platforms +# +# CONFIG_BCM_KONA_USB2_PHY is not set +# end of PHY drivers for Broadcom platforms + +# CONFIG_PHY_PXA_28NM_HSIC is not set +# CONFIG_PHY_PXA_28NM_USB2 is not set +# CONFIG_PHY_INTEL_LGM_EMMC is not set +# end of PHY Subsystem + +# CONFIG_POWERCAP is not set +# CONFIG_MCB is not set + +# +# Performance monitor support +# +# end of Performance monitor support + +# CONFIG_RAS is not set + +# +# Android +# +# CONFIG_ANDROID is not set +# end of Android + +# CONFIG_DAX is not set +# CONFIG_NVMEM is not set + +# +# HW tracing support +# +# CONFIG_STM is not set +# CONFIG_INTEL_TH is not set +# end of HW tracing support + +# CONFIG_FPGA is not set +# CONFIG_TEE is not set +# CONFIG_SIOX is not set +# CONFIG_SLIMBUS is not set +# CONFIG_INTERCONNECT is not set +# CONFIG_COUNTER is not set +# CONFIG_PECI is not set +# end of Device Drivers + +# +# File systems +# +CONFIG_DCACHE_WORD_ACCESS=y +# CONFIG_VALIDATE_FS_PARSER is not set +# CONFIG_EXT2_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_EXT4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_BTRFS_FS is not set +# CONFIG_NILFS2_FS is not set +# CONFIG_F2FS_FS is not set +# CONFIG_EXPORTFS_BLOCK_OPS is not set +# CONFIG_FILE_LOCKING is not set +# CONFIG_FS_ENCRYPTION is not set +# CONFIG_FS_VERITY is not set +# CONFIG_DNOTIFY is not set +# CONFIG_INOTIFY_USER is not set +# CONFIG_FANOTIFY is not set +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_FUSE_FS is not set +# CONFIG_OVERLAY_FS is not set + +# +# Caches +# +# CONFIG_FSCACHE is not set +# end of Caches + +# +# CD-ROM/DVD Filesystems +# +# CONFIG_ISO9660_FS is not set +# CONFIG_UDF_FS is not set +# end of CD-ROM/DVD Filesystems + +# +# DOS/FAT/EXFAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +# CONFIG_VFAT_FS is not set +CONFIG_FAT_DEFAULT_CODEPAGE=437 +# CONFIG_EXFAT_FS is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS3_FS is not set +# end of DOS/FAT/EXFAT/NT Filesystems + +# +# Pseudo filesystems +# +# CONFIG_PROC_FS is not set +# CONFIG_PROC_CHILDREN is not set +# CONFIG_SYSFS is not set +# CONFIG_HUGETLBFS is not set +# CONFIG_CONFIGFS_FS is not set +# end of Pseudo filesystems + +# CONFIG_MISC_FILESYSTEMS is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ASCII is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_MAC_ROMAN is not set +# CONFIG_NLS_MAC_CELTIC is not set +# CONFIG_NLS_MAC_CENTEURO is not set +# CONFIG_NLS_MAC_CROATIAN is not set +# CONFIG_NLS_MAC_CYRILLIC is not set +# CONFIG_NLS_MAC_GAELIC is not set +# CONFIG_NLS_MAC_GREEK is not set +# CONFIG_NLS_MAC_ICELAND is not set +# CONFIG_NLS_MAC_INUIT is not set +# CONFIG_NLS_MAC_ROMANIAN is not set +# CONFIG_NLS_MAC_TURKISH is not set +# CONFIG_NLS_UTF8 is not set +# CONFIG_UNICODE is not set +# end of File systems + +# +# Security options +# +# CONFIG_KEYS is not set +# CONFIG_SECURITY_DMESG_RESTRICT is not set +# CONFIG_SECURITYFS is not set +# CONFIG_FORTIFY_SOURCE is not set +# CONFIG_STATIC_USERMODEHELPER is not set +CONFIG_DEFAULT_SECURITY_DAC=y +CONFIG_LSM="landlock,lockdown,yama,loadpin,safesetid,integrity,bpf" + +# +# Kernel hardening options +# + +# +# Memory initialization +# +CONFIG_CC_HAS_AUTO_VAR_INIT_PATTERN=y +CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO=y +# CONFIG_INIT_STACK_NONE is not set +# CONFIG_INIT_STACK_ALL_PATTERN is not set +CONFIG_INIT_STACK_ALL_ZERO=y +# CONFIG_INIT_ON_ALLOC_DEFAULT_ON is not set +# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set +CONFIG_CC_HAS_ZERO_CALL_USED_REGS=y +# CONFIG_ZERO_CALL_USED_REGS is not set +# end of Memory initialization +# end of Kernel hardening options +# end of Security options + +# CONFIG_CRYPTO is not set + +# +# Library routines +# +# CONFIG_PACKING is not set +CONFIG_BITREVERSE=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +# CONFIG_CORDIC is not set +# CONFIG_PRIME_NUMBERS is not set +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_GENERIC_IOMAP=y +CONFIG_ARCH_HAS_FAST_MULTIPLIER=y +CONFIG_ARCH_USE_SYM_ANNOTATIONS=y + +# +# Crypto library routines +# +CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y +# CONFIG_CRYPTO_LIB_CURVE25519 is not set +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1 +# CONFIG_CRYPTO_LIB_POLY1305 is not set +# end of Crypto library routines + +# CONFIG_CRC_CCITT is not set +# CONFIG_CRC16 is not set +# CONFIG_CRC_T10DIF is not set +# CONFIG_CRC64_ROCKSOFT is not set +# CONFIG_CRC_ITU_T is not set +CONFIG_CRC32=y +# CONFIG_CRC32_SELFTEST is not set +CONFIG_CRC32_SLICEBY8=y +# CONFIG_CRC32_SLICEBY4 is not set +# CONFIG_CRC32_SARWATE is not set +# CONFIG_CRC32_BIT is not set +# CONFIG_CRC64 is not set +# CONFIG_CRC4 is not set +# CONFIG_CRC7 is not set +# CONFIG_LIBCRC32C is not set +# CONFIG_CRC8 is not set +# CONFIG_RANDOM32_SELFTEST is not set +# CONFIG_XZ_DEC is not set +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT_MAP=y +CONFIG_HAS_DMA=y +CONFIG_NEED_SG_DMA_LENGTH=y +# CONFIG_DMA_API_DEBUG is not set +# CONFIG_IRQ_POLL is not set +CONFIG_HAVE_GENERIC_VDSO=y +CONFIG_GENERIC_GETTIMEOFDAY=y +CONFIG_GENERIC_VDSO_32=y +CONFIG_GENERIC_VDSO_TIME_NS=y +CONFIG_ARCH_STACKWALK=y +CONFIG_SBITMAP=y +# end of Library routines + +# +# Kernel hacking +# + +# +# printk and dmesg options +# +# CONFIG_PRINTK_TIME is not set +# CONFIG_PRINTK_CALLER is not set +# CONFIG_STACKTRACE_BUILD_ID is not set +CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 +CONFIG_CONSOLE_LOGLEVEL_QUIET=4 +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 +# CONFIG_BOOT_PRINTK_DELAY is not set +# CONFIG_SYMBOLIC_ERRNAME is not set +# end of printk and dmesg options + +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_MISC is not set + +# +# Compile-time checks and compiler options +# +CONFIG_DEBUG_INFO_NONE=y +# CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT is not set +# CONFIG_DEBUG_INFO_DWARF4 is not set +# CONFIG_DEBUG_INFO_DWARF5 is not set +CONFIG_FRAME_WARN=1024 +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_READABLE_ASM is not set +# CONFIG_HEADERS_INSTALL is not set +# CONFIG_DEBUG_SECTION_MISMATCH is not set +# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set +# CONFIG_VMLINUX_MAP is not set +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +# end of Compile-time checks and compiler options + +# +# Generic Kernel Debugging Instruments +# +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_DEBUG_FS is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y +# CONFIG_UBSAN is not set +CONFIG_HAVE_KCSAN_COMPILER=y +# end of Generic Kernel Debugging Instruments + +# +# Networking Debugging +# +# CONFIG_NET_DEV_REFCNT_TRACKER is not set +# CONFIG_NET_NS_REFCNT_TRACKER is not set +# end of Networking Debugging + +# +# Memory Debugging +# +# CONFIG_PAGE_EXTENSION is not set +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_PAGE_OWNER is not set +# CONFIG_PAGE_POISONING is not set +# CONFIG_DEBUG_RODATA_TEST is not set +CONFIG_ARCH_HAS_DEBUG_WX=y +# CONFIG_DEBUG_WX is not set +CONFIG_GENERIC_PTDUMP=y +# CONFIG_DEBUG_OBJECTS is not set +CONFIG_HAVE_DEBUG_KMEMLEAK=y +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_SCHED_STACK_END_CHECK is not set +CONFIG_ARCH_HAS_DEBUG_VM_PGTABLE=y +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_VM_PGTABLE is not set +CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y +# CONFIG_DEBUG_VIRTUAL is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_KMAP_LOCAL is not set +CONFIG_ARCH_SUPPORTS_KMAP_LOCAL_FORCE_MAP=y +# CONFIG_DEBUG_KMAP_LOCAL_FORCE_MAP is not set +CONFIG_HAVE_DEBUG_STACKOVERFLOW=y +# CONFIG_DEBUG_STACKOVERFLOW is not set +CONFIG_CC_HAS_KASAN_GENERIC=y +CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y +CONFIG_HAVE_ARCH_KFENCE=y +# end of Memory Debugging + +# CONFIG_DEBUG_SHIRQ is not set + +# +# Debug Oops, Lockups and Hangs +# +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +CONFIG_PANIC_TIMEOUT=0 +# CONFIG_SOFTLOCKUP_DETECTOR is not set +# CONFIG_HARDLOCKUP_DETECTOR is not set +# CONFIG_DETECT_HUNG_TASK is not set +# CONFIG_WQ_WATCHDOG is not set +# end of Debug Oops, Lockups and Hangs + +# +# Scheduler Debugging +# +# end of Scheduler Debugging + +# CONFIG_DEBUG_TIMEKEEPING is not set + +# +# Lock Debugging (spinlocks, mutexes, etc...) +# +CONFIG_LOCK_DEBUGGING_SUPPORT=y +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set +# CONFIG_DEBUG_RWSEMS is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_DEBUG_ATOMIC_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_LOCK_TORTURE_TEST is not set +# CONFIG_WW_MUTEX_SELFTEST is not set +# CONFIG_SCF_TORTURE_TEST is not set +# end of Lock Debugging (spinlocks, mutexes, etc...) + +# CONFIG_DEBUG_IRQFLAGS is not set +# CONFIG_STACKTRACE is not set +# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set +# CONFIG_DEBUG_KOBJECT is not set + +# +# Debug kernel data structures +# +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_PLIST is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_BUG_ON_DATA_CORRUPTION is not set +# end of Debug kernel data structures + +# CONFIG_DEBUG_CREDENTIALS is not set + +# +# RCU Debugging +# +# CONFIG_RCU_SCALE_TEST is not set +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_REF_SCALE_TEST is not set +# CONFIG_RCU_TRACE is not set +# CONFIG_RCU_EQS_DEBUG is not set +# end of RCU Debugging + +# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set +CONFIG_USER_STACKTRACE_SUPPORT=y +CONFIG_HAVE_RETHOOK=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_HAVE_BUILDTIME_MCOUNT_SORT=y +CONFIG_TRACING_SUPPORT=y +# CONFIG_FTRACE is not set +# CONFIG_SAMPLES is not set +CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y + +# +# x86 Debugging +# +CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y +# CONFIG_X86_VERBOSE_BOOTUP is not set +# CONFIG_EARLY_PRINTK is not set +# CONFIG_DEBUG_TLBFLUSH is not set +CONFIG_HAVE_MMIOTRACE_SUPPORT=y +# CONFIG_X86_DECODER_SELFTEST is not set +CONFIG_IO_DELAY_0X80=y +# CONFIG_IO_DELAY_0XED is not set +# CONFIG_IO_DELAY_UDELAY is not set +# CONFIG_IO_DELAY_NONE is not set +# CONFIG_CPA_DEBUG is not set +# CONFIG_DEBUG_ENTRY is not set +# CONFIG_X86_DEBUG_FPU is not set +# CONFIG_UNWINDER_FRAME_POINTER is not set +CONFIG_UNWINDER_GUESS=y +# end of x86 Debugging + +# +# Kernel Testing and Coverage +# +# CONFIG_KUNIT is not set +# CONFIG_NOTIFIER_ERROR_INJECTION is not set +# CONFIG_FAULT_INJECTION is not set +CONFIG_CC_HAS_SANCOV_TRACE_PC=y +# CONFIG_RUNTIME_TESTING_MENU is not set +CONFIG_ARCH_USE_MEMTEST=y +# CONFIG_MEMTEST is not set +# end of Kernel Testing and Coverage +# end of Kernel hacking diff --git a/floppy/configs/kernel-config.i486 b/floppy/configs/kernel-config.i486 new file mode 100644 index 0000000..bbb8003 --- /dev/null +++ b/floppy/configs/kernel-config.i486 @@ -0,0 +1,2374 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/x86 4.14.3 Kernel Configuration +# +# CONFIG_64BIT is not set +CONFIG_X86_32=y +CONFIG_X86=y +CONFIG_INSTRUCTION_DECODER=y +CONFIG_OUTPUT_FORMAT="elf32-i386" +CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig" +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_MMU=y +CONFIG_ARCH_MMAP_RND_BITS_MIN=8 +CONFIG_ARCH_MMAP_RND_BITS_MAX=16 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 +CONFIG_NEED_SG_DMA_LENGTH=y +CONFIG_GENERIC_ISA_DMA=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_ARCH_HAS_CPU_RELAX=y +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y +CONFIG_ARCH_WANT_GENERAL_HUGETLB=y +CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_X86_32_LAZY_GS=y +CONFIG_ARCH_SUPPORTS_UPROBES=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_PGTABLE_LEVELS=2 +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" +CONFIG_IRQ_WORK=y +CONFIG_BUILDTIME_EXTABLE_SORT=y +CONFIG_THREAD_INFO_IN_TASK=y + +# +# General setup +# +CONFIG_BROKEN_ON_SMP=y +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_CROSS_COMPILE="" +# CONFIG_COMPILE_TEST is not set +CONFIG_LOCALVERSION="" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_BZIP2=y +CONFIG_HAVE_KERNEL_LZMA=y +CONFIG_HAVE_KERNEL_XZ=y +CONFIG_HAVE_KERNEL_LZO=y +CONFIG_HAVE_KERNEL_LZ4=y +CONFIG_KERNEL_GZIP=y +# CONFIG_KERNEL_BZIP2 is not set +# CONFIG_KERNEL_LZMA is not set +# CONFIG_KERNEL_XZ is not set +# CONFIG_KERNEL_LZO is not set +# CONFIG_KERNEL_LZ4 is not set +CONFIG_DEFAULT_HOSTNAME="(none)" +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +# CONFIG_POSIX_MQUEUE is not set +CONFIG_CROSS_MEMORY_ATTACH=y +CONFIG_FHANDLE=y +CONFIG_USELIB=y +# CONFIG_AUDIT is not set +CONFIG_HAVE_ARCH_AUDITSYSCALL=y + +# +# IRQ subsystem +# +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_SPARSE_IRQ=y +CONFIG_CLOCKSOURCE_WATCHDOG=y +CONFIG_ARCH_CLOCKSOURCE_DATA=y +CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y +CONFIG_GENERIC_TIME_VSYSCALL=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y +CONFIG_GENERIC_CMOS_UPDATE=y + +# +# Timers subsystem +# +CONFIG_HZ_PERIODIC=y +# CONFIG_NO_HZ_IDLE is not set +# CONFIG_NO_HZ is not set +# CONFIG_HIGH_RES_TIMERS is not set + +# +# CPU/Task time and stats accounting +# +CONFIG_TICK_CPU_ACCOUNTING=y +# CONFIG_IRQ_TIME_ACCOUNTING is not set +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_TASKSTATS is not set + +# +# RCU Subsystem +# +CONFIG_TINY_RCU=y +# CONFIG_RCU_EXPERT is not set +CONFIG_SRCU=y +CONFIG_TINY_SRCU=y +# CONFIG_TASKS_RCU is not set +# CONFIG_RCU_STALL_COMMON is not set +# CONFIG_RCU_NEED_SEGCBLIST is not set +# CONFIG_BUILD_BIN2C is not set +# CONFIG_IKCONFIG is not set +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 +CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y +CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y +# CONFIG_CGROUPS is not set +# CONFIG_CHECKPOINT_RESTORE is not set +CONFIG_NAMESPACES=y +# CONFIG_UTS_NS is not set +# CONFIG_IPC_NS is not set +# CONFIG_USER_NS is not set +CONFIG_PID_NS=y +CONFIG_NET_NS=y +# CONFIG_SCHED_AUTOGROUP is not set +CONFIG_SYSFS_DEPRECATED=y +CONFIG_SYSFS_DEPRECATED_V2=y +# CONFIG_RELAY is not set +# CONFIG_BLK_DEV_INITRD is not set +# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_SYSCTL=y +CONFIG_ANON_INODES=y +CONFIG_HAVE_UID16=y +CONFIG_SYSCTL_EXCEPTION_TRACE=y +CONFIG_HAVE_PCSPKR_PLATFORM=y +CONFIG_BPF=y +# CONFIG_EXPERT is not set +CONFIG_UID16=y +CONFIG_MULTIUSER=y +CONFIG_SGETMASK_SYSCALL=y +CONFIG_SYSFS_SYSCALL=y +# CONFIG_SYSCTL_SYSCALL is not set +CONFIG_POSIX_TIMERS=y +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ABSOLUTE_PERCPU is not set +CONFIG_KALLSYMS_BASE_RELATIVE=y +CONFIG_PRINTK=y +CONFIG_PRINTK_NMI=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_PCSPKR_PLATFORM=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_FUTEX_PI=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +# CONFIG_BPF_SYSCALL is not set +CONFIG_SHMEM=y +CONFIG_AIO=y +CONFIG_ADVISE_SYSCALLS=y +# CONFIG_USERFAULTFD is not set +CONFIG_PCI_QUIRKS=y +CONFIG_MEMBARRIER=y +# CONFIG_EMBEDDED is not set +CONFIG_HAVE_PERF_EVENTS=y +# CONFIG_PC104 is not set + +# +# Kernel Performance Events And Counters +# +CONFIG_PERF_EVENTS=y +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_SLUB_DEBUG=y +CONFIG_COMPAT_BRK=y +# CONFIG_SLAB is not set +CONFIG_SLUB=y +CONFIG_SLAB_MERGE_DEFAULT=y +# CONFIG_SLAB_FREELIST_RANDOM is not set +# CONFIG_SLAB_FREELIST_HARDENED is not set +# CONFIG_SYSTEM_DATA_VERIFICATION is not set +# CONFIG_PROFILING is not set +CONFIG_HAVE_OPROFILE=y +CONFIG_OPROFILE_NMI_TIMER=y +# CONFIG_KPROBES is not set +# CONFIG_JUMP_LABEL is not set +# CONFIG_UPROBES is not set +# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_ARCH_USE_BUILTIN_BSWAP=y +CONFIG_HAVE_IOREMAP_PROT=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_OPTPROBES=y +CONFIG_HAVE_KPROBES_ON_FTRACE=y +CONFIG_HAVE_NMI=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_DMA_CONTIGUOUS=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_ARCH_HAS_FORTIFY_SOURCE=y +CONFIG_ARCH_HAS_SET_MEMORY=y +CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_CLK=y +CONFIG_HAVE_DMA_API_DEBUG=y +CONFIG_HAVE_HW_BREAKPOINT=y +CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y +CONFIG_HAVE_USER_RETURN_NOTIFIER=y +CONFIG_HAVE_PERF_EVENTS_NMI=y +CONFIG_HAVE_HARDLOCKUP_DETECTOR_PERF=y +CONFIG_HAVE_PERF_REGS=y +CONFIG_HAVE_PERF_USER_STACK_DUMP=y +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_HAVE_RCU_TABLE_FREE=y +CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y +CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y +CONFIG_HAVE_CMPXCHG_LOCAL=y +CONFIG_HAVE_CMPXCHG_DOUBLE=y +CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_HAVE_GCC_PLUGINS=y +# CONFIG_GCC_PLUGINS is not set +CONFIG_HAVE_CC_STACKPROTECTOR=y +# CONFIG_CC_STACKPROTECTOR is not set +CONFIG_CC_STACKPROTECTOR_NONE=y +# CONFIG_CC_STACKPROTECTOR_REGULAR is not set +# CONFIG_CC_STACKPROTECTOR_STRONG is not set +CONFIG_THIN_ARCHIVES=y +CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y +CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y +CONFIG_HAVE_MOD_ARCH_SPECIFIC=y +CONFIG_MODULES_USE_ELF_REL=y +CONFIG_ARCH_HAS_ELF_RANDOMIZE=y +CONFIG_HAVE_ARCH_MMAP_RND_BITS=y +CONFIG_HAVE_EXIT_THREAD=y +CONFIG_ARCH_MMAP_RND_BITS=8 +CONFIG_HAVE_COPY_THREAD_TLS=y +# CONFIG_HAVE_ARCH_HASH is not set +# CONFIG_ISA_BUS_API is not set +CONFIG_CLONE_BACKWARDS=y +CONFIG_OLD_SIGSUSPEND3=y +CONFIG_OLD_SIGACTION=y +# CONFIG_CPU_NO_EFFICIENT_FFS is not set +# CONFIG_HAVE_ARCH_VMAP_STACK is not set +# CONFIG_ARCH_OPTIONAL_KERNEL_RWX is not set +# CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT is not set +CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y +CONFIG_STRICT_KERNEL_RWX=y +CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y +CONFIG_STRICT_MODULE_RWX=y +# CONFIG_REFCOUNT_FULL is not set + +# +# GCOV-based kernel profiling +# +CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_SLABINFO=y +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_LOAD is not set +# CONFIG_MODULE_UNLOAD is not set +# CONFIG_MODVERSIONS is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +# CONFIG_MODULE_SIG is not set +# CONFIG_MODULE_COMPRESS is not set +# CONFIG_TRIM_UNUSED_KSYMS is not set +CONFIG_MODULES_TREE_LOOKUP=y +CONFIG_BLOCK=y +CONFIG_LBDAF=y +CONFIG_BLK_SCSI_REQUEST=y +CONFIG_BLK_DEV_BSG=y +# CONFIG_BLK_DEV_BSGLIB is not set +# CONFIG_BLK_DEV_INTEGRITY is not set +# CONFIG_BLK_DEV_ZONED is not set +# CONFIG_BLK_CMDLINE_PARSER is not set +# CONFIG_BLK_WBT is not set +# CONFIG_BLK_SED_OPAL is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_AIX_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_KARMA_PARTITION is not set +# CONFIG_EFI_PARTITION is not set +# CONFIG_SYSV68_PARTITION is not set +# CONFIG_CMDLINE_PARTITION is not set +CONFIG_BLK_MQ_PCI=y + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +# CONFIG_IOSCHED_DEADLINE is not set +# CONFIG_IOSCHED_CFQ is not set +CONFIG_DEFAULT_NOOP=y +CONFIG_DEFAULT_IOSCHED="noop" +CONFIG_MQ_IOSCHED_DEADLINE=y +CONFIG_MQ_IOSCHED_KYBER=y +# CONFIG_IOSCHED_BFQ is not set +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y +CONFIG_INLINE_READ_UNLOCK=y +CONFIG_INLINE_READ_UNLOCK_IRQ=y +CONFIG_INLINE_WRITE_UNLOCK=y +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y +CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y +CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y +CONFIG_ARCH_USE_QUEUED_RWLOCKS=y +# CONFIG_FREEZER is not set + +# +# Processor type and features +# +CONFIG_ZONE_DMA=y +# CONFIG_SMP is not set +CONFIG_X86_FEATURE_NAMES=y +CONFIG_X86_FAST_FEATURE_TESTS=y +# CONFIG_GOLDFISH is not set +# CONFIG_INTEL_RDT is not set +CONFIG_X86_EXTENDED_PLATFORM=y +# CONFIG_X86_GOLDFISH is not set +# CONFIG_X86_INTEL_LPSS is not set +# CONFIG_X86_AMD_PLATFORM_DEVICE is not set +# CONFIG_IOSF_MBI is not set +# CONFIG_X86_RDC321X is not set +CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y +# CONFIG_X86_32_IRIS is not set +CONFIG_SCHED_OMIT_FRAME_POINTER=y +CONFIG_HYPERVISOR_GUEST=y +# CONFIG_PARAVIRT is not set +CONFIG_NO_BOOTMEM=y +CONFIG_M486=y +# CONFIG_M586 is not set +# CONFIG_M586TSC is not set +# CONFIG_M586MMX is not set +# CONFIG_M686 is not set +# CONFIG_MPENTIUMII is not set +# CONFIG_MPENTIUMIII is not set +# CONFIG_MPENTIUMM is not set +# CONFIG_MPENTIUM4 is not set +# CONFIG_MK6 is not set +# CONFIG_MK7 is not set +# CONFIG_MK8 is not set +# CONFIG_MCRUSOE is not set +# CONFIG_MEFFICEON is not set +# CONFIG_MWINCHIPC6 is not set +# CONFIG_MWINCHIP3D is not set +# CONFIG_MELAN is not set +# CONFIG_MGEODEGX1 is not set +# CONFIG_MGEODE_LX is not set +# CONFIG_MCYRIXIII is not set +# CONFIG_MVIAC3_2 is not set +# CONFIG_MVIAC7 is not set +# CONFIG_MCORE2 is not set +# CONFIG_MATOM is not set +# CONFIG_X86_GENERIC is not set +CONFIG_X86_INTERNODE_CACHE_SHIFT=4 +CONFIG_X86_L1_CACHE_SHIFT=4 +# CONFIG_X86_PPRO_FENCE is not set +CONFIG_X86_F00F_BUG=y +CONFIG_X86_INVD_BUG=y +CONFIG_X86_ALIGNMENT_16=y +CONFIG_X86_MINIMUM_CPU_FAMILY=4 +CONFIG_CPU_SUP_INTEL=y +CONFIG_CPU_SUP_CYRIX_32=y +CONFIG_CPU_SUP_AMD=y +CONFIG_CPU_SUP_CENTAUR=y +CONFIG_CPU_SUP_TRANSMETA_32=y +CONFIG_CPU_SUP_UMC_32=y +CONFIG_HPET_TIMER=y +CONFIG_DMI=y +CONFIG_NR_CPUS=1 +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PREEMPT is not set +# CONFIG_X86_UP_APIC is not set +CONFIG_X86_MCE=y +# CONFIG_X86_MCELOG_LEGACY is not set +# CONFIG_X86_ANCIENT_MCE is not set + +# +# Performance monitoring +# +CONFIG_PERF_EVENTS_INTEL_UNCORE=y +CONFIG_PERF_EVENTS_INTEL_RAPL=y +CONFIG_PERF_EVENTS_INTEL_CSTATE=y +# CONFIG_PERF_EVENTS_AMD_POWER is not set +# CONFIG_X86_LEGACY_VM86 is not set +# CONFIG_VM86 is not set +CONFIG_X86_16BIT=y +CONFIG_X86_ESPFIX32=y +# CONFIG_TOSHIBA is not set +# CONFIG_I8K is not set +# CONFIG_X86_REBOOTFIXUPS is not set +# CONFIG_MICROCODE is not set +# CONFIG_X86_MSR is not set +# CONFIG_X86_CPUID is not set +# CONFIG_NOHIGHMEM is not set +CONFIG_HIGHMEM4G=y +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_HIGHMEM=y +CONFIG_ARCH_HAS_MEM_ENCRYPT=y +CONFIG_ARCH_FLATMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ILLEGAL_POINTER_VALUE=0 +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_SPARSEMEM_STATIC=y +CONFIG_HAVE_MEMBLOCK=y +CONFIG_HAVE_MEMBLOCK_NODE_MAP=y +CONFIG_HAVE_GENERIC_GUP=y +CONFIG_ARCH_DISCARD_MEMBLOCK=y +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_COMPACTION=y +CONFIG_MIGRATION=y +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_BOUNCE=y +CONFIG_VIRT_TO_BUS=y +# CONFIG_KSM is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y +# CONFIG_MEMORY_FAILURE is not set +# CONFIG_TRANSPARENT_HUGEPAGE is not set +# CONFIG_ARCH_WANTS_THP_SWAP is not set +CONFIG_NEED_PER_CPU_KM=y +# CONFIG_CLEANCACHE is not set +# CONFIG_FRONTSWAP is not set +# CONFIG_CMA is not set +# CONFIG_ZPOOL is not set +# CONFIG_ZBUD is not set +# CONFIG_ZSMALLOC is not set +CONFIG_GENERIC_EARLY_IOREMAP=y +CONFIG_ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT=y +# CONFIG_IDLE_PAGE_TRACKING is not set +# CONFIG_PERCPU_STATS is not set +# CONFIG_HIGHPTE is not set +# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set +CONFIG_X86_RESERVE_LOW=64 +# CONFIG_MATH_EMULATION is not set +CONFIG_MTRR=y +CONFIG_MTRR_SANITIZER=y +CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0 +CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1 +CONFIG_X86_PAT=y +CONFIG_ARCH_USES_PG_UNCACHED=y +CONFIG_ARCH_RANDOM=y +CONFIG_X86_SMAP=y +# CONFIG_EFI is not set +# CONFIG_SECCOMP is not set +# CONFIG_HZ_100 is not set +CONFIG_HZ_250=y +# CONFIG_HZ_300 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ=250 +# CONFIG_SCHED_HRTICK is not set +# CONFIG_KEXEC is not set +# CONFIG_CRASH_DUMP is not set +CONFIG_PHYSICAL_START=0x1000000 +CONFIG_RELOCATABLE=y +CONFIG_RANDOMIZE_BASE=y +CONFIG_X86_NEED_RELOCS=y +CONFIG_PHYSICAL_ALIGN=0x1000000 +CONFIG_COMPAT_VDSO=y +# CONFIG_CMDLINE_BOOL is not set +CONFIG_MODIFY_LDT_SYSCALL=y +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y + +# +# Power management and ACPI options +# +# CONFIG_SUSPEND is not set +# CONFIG_HIBERNATION is not set +CONFIG_PM=y +# CONFIG_PM_DEBUG is not set +CONFIG_PM_CLK=y +# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set +CONFIG_ACPI=y +CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y +CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y +CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y +# CONFIG_ACPI_DEBUGGER is not set +CONFIG_ACPI_PROCFS_POWER=y +CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y +# CONFIG_ACPI_EC_DEBUGFS is not set +CONFIG_ACPI_AC=y +CONFIG_ACPI_BATTERY=y +CONFIG_ACPI_BUTTON=y +CONFIG_ACPI_FAN=y +# CONFIG_ACPI_DOCK is not set +CONFIG_ACPI_CPU_FREQ_PSS=y +CONFIG_ACPI_PROCESSOR_CSTATE=y +CONFIG_ACPI_PROCESSOR_IDLE=y +CONFIG_ACPI_PROCESSOR=y +# CONFIG_ACPI_PROCESSOR_AGGREGATOR is not set +CONFIG_ACPI_THERMAL=y +# CONFIG_ACPI_CUSTOM_DSDT is not set +CONFIG_ARCH_HAS_ACPI_TABLE_UPGRADE=y +# CONFIG_ACPI_DEBUG is not set +# CONFIG_ACPI_PCI_SLOT is not set +CONFIG_X86_PM_TIMER=y +# CONFIG_ACPI_CONTAINER is not set +# CONFIG_ACPI_SBS is not set +# CONFIG_ACPI_HED is not set +# CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set +CONFIG_HAVE_ACPI_APEI=y +CONFIG_HAVE_ACPI_APEI_NMI=y +# CONFIG_ACPI_APEI is not set +# CONFIG_DPTF_POWER is not set +# CONFIG_PMIC_OPREGION is not set +# CONFIG_ACPI_CONFIGFS is not set +# CONFIG_SFI is not set + +# +# CPU Frequency scaling +# +# CONFIG_CPU_FREQ is not set + +# +# CPU Idle +# +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_LADDER=y +# CONFIG_CPU_IDLE_GOV_MENU is not set +# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set +# CONFIG_INTEL_IDLE is not set + +# +# Bus options (PCI etc.) +# +CONFIG_PCI=y +# CONFIG_PCI_GOBIOS is not set +# CONFIG_PCI_GOMMCONFIG is not set +# CONFIG_PCI_GODIRECT is not set +CONFIG_PCI_GOANY=y +CONFIG_PCI_BIOS=y +CONFIG_PCI_DIRECT=y +CONFIG_PCI_MMCONFIG=y +CONFIG_PCI_DOMAINS=y +# CONFIG_PCIEPORTBUS is not set +# CONFIG_PCI_MSI is not set +# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set +# CONFIG_PCI_STUB is not set +CONFIG_PCI_LOCKLESS_CONFIG=y +# CONFIG_PCI_IOV is not set +# CONFIG_PCI_PRI is not set +# CONFIG_PCI_PASID is not set +CONFIG_PCI_LABEL=y +# CONFIG_HOTPLUG_PCI is not set + +# +# DesignWare PCI Core Support +# + +# +# PCI host controller drivers +# + +# +# PCI Endpoint +# +# CONFIG_PCI_ENDPOINT is not set + +# +# PCI switch controller drivers +# +# CONFIG_PCI_SW_SWITCHTEC is not set +CONFIG_ISA_DMA_API=y +# CONFIG_ISA is not set +# CONFIG_SCx200 is not set +# CONFIG_OLPC is not set +# CONFIG_ALIX is not set +# CONFIG_NET5501 is not set +# CONFIG_GEOS is not set +CONFIG_AMD_NB=y +# CONFIG_PCCARD is not set +# CONFIG_RAPIDIO is not set +# CONFIG_X86_SYSFB is not set + +# +# Executable file formats / Emulations +# +CONFIG_BINFMT_ELF=y +CONFIG_ELFCORE=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +# CONFIG_BINFMT_SCRIPT is not set +CONFIG_HAVE_AOUT=y +# CONFIG_BINFMT_AOUT is not set +# CONFIG_BINFMT_MISC is not set +CONFIG_COREDUMP=y +CONFIG_COMPAT_32=y +CONFIG_HAVE_ATOMIC_IOMAP=y +CONFIG_NET=y + +# +# Networking options +# +# CONFIG_PACKET is not set +CONFIG_UNIX=y +# CONFIG_UNIX_DIAG is not set +# CONFIG_TLS is not set +# CONFIG_XFRM_USER is not set +# CONFIG_NET_KEY is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE_DEMUX is not set +# CONFIG_NET_IP_TUNNEL is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_NET_UDP_TUNNEL is not set +# CONFIG_NET_FOU is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_XFRM_TUNNEL is not set +# CONFIG_INET_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_DIAG is not set +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +# CONFIG_IPV6 is not set +# CONFIG_NETWORK_SECMARK is not set +# CONFIG_NET_PTP_CLASSIFY is not set +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +# CONFIG_NETFILTER is not set +# CONFIG_IP_DCCP is not set +# CONFIG_IP_SCTP is not set +# CONFIG_RDS is not set +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +# CONFIG_L2TP is not set +# CONFIG_BRIDGE is not set +CONFIG_HAVE_NET_DSA=y +# CONFIG_NET_DSA is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_PHONET is not set +# CONFIG_IEEE802154 is not set +# CONFIG_NET_SCHED is not set +# CONFIG_DCB is not set +# CONFIG_BATMAN_ADV is not set +# CONFIG_OPENVSWITCH is not set +# CONFIG_VSOCKETS is not set +# CONFIG_NETLINK_DIAG is not set +# CONFIG_MPLS is not set +# CONFIG_NET_NSH is not set +# CONFIG_HSR is not set +# CONFIG_NET_SWITCHDEV is not set +# CONFIG_NET_L3_MASTER_DEV is not set +# CONFIG_NET_NCSI is not set +CONFIG_NET_RX_BUSY_POLL=y +CONFIG_BQL=y + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO is not set +# CONFIG_CAN is not set +# CONFIG_BT is not set +# CONFIG_AF_RXRPC is not set +# CONFIG_AF_KCM is not set +# CONFIG_STREAM_PARSER is not set +# CONFIG_WIRELESS is not set +# CONFIG_WIMAX is not set +# CONFIG_RFKILL is not set +# CONFIG_NET_9P is not set +# CONFIG_CAIF is not set +# CONFIG_CEPH_LIB is not set +# CONFIG_NFC is not set +# CONFIG_PSAMPLE is not set +# CONFIG_NET_IFE is not set +# CONFIG_LWTUNNEL is not set +# CONFIG_DST_CACHE is not set +# CONFIG_GRO_CELLS is not set +# CONFIG_NET_DEVLINK is not set +CONFIG_MAY_USE_DEVLINK=y + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER=y +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=y +# CONFIG_FIRMWARE_IN_KERNEL is not set +CONFIG_EXTRA_FIRMWARE="" +# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set +CONFIG_ALLOW_DEV_COREDUMP=y +# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set +# CONFIG_SYS_HYPERVISOR is not set +# CONFIG_GENERIC_CPU_DEVICES is not set +CONFIG_GENERIC_CPU_AUTOPROBE=y +# CONFIG_DMA_SHARED_BUFFER is not set + +# +# Bus devices +# +# CONFIG_CONNECTOR is not set +# CONFIG_MTD is not set +# CONFIG_OF is not set +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y +# CONFIG_PARPORT is not set +CONFIG_PNP=y +CONFIG_PNP_DEBUG_MESSAGES=y + +# +# Protocols +# +CONFIG_PNPACPI=y +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_NULL_BLK is not set +CONFIG_BLK_DEV_FD=y +# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +# CONFIG_BLK_DEV_COW_COMMON is not set +# CONFIG_BLK_DEV_LOOP is not set +# CONFIG_BLK_DEV_DRBD is not set +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_SX8 is not set +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_BLK_DEV_RBD is not set +# CONFIG_BLK_DEV_RSXX is not set +# CONFIG_BLK_DEV_NVME is not set +# CONFIG_NVME_FC is not set + +# +# Misc devices +# +# CONFIG_SENSORS_LIS3LV02D is not set +# CONFIG_DUMMY_IRQ is not set +# CONFIG_IBM_ASM is not set +# CONFIG_PHANTOM is not set +# CONFIG_SGI_IOC4 is not set +# CONFIG_TIFM_CORE is not set +# CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_HP_ILO is not set +# CONFIG_PCH_PHUB is not set +# CONFIG_SRAM is not set +# CONFIG_PCI_ENDPOINT_TEST is not set +# CONFIG_C2PORT is not set + +# +# EEPROM support +# +# CONFIG_EEPROM_93CX6 is not set +# CONFIG_CB710_CORE is not set + +# +# Texas Instruments shared transport line discipline +# + +# +# Altera FPGA firmware download module +# +# CONFIG_INTEL_MEI is not set +# CONFIG_INTEL_MEI_ME is not set +# CONFIG_INTEL_MEI_TXE is not set +# CONFIG_VMWARE_VMCI is not set + +# +# Intel MIC Bus Driver +# + +# +# SCIF Bus Driver +# + +# +# VOP Bus Driver +# + +# +# Intel MIC Host Driver +# + +# +# Intel MIC Card Driver +# + +# +# SCIF Driver +# + +# +# Intel MIC Coprocessor State Management (COSM) Drivers +# + +# +# VOP Driver +# +# CONFIG_ECHO is not set +# CONFIG_CXL_BASE is not set +# CONFIG_CXL_AFU_DRIVER_OPS is not set +# CONFIG_CXL_LIB is not set +CONFIG_HAVE_IDE=y +CONFIG_IDE=y + +# +# Please see Documentation/ide/ide.txt for help/info on IDE drives +# +CONFIG_IDE_XFER_MODE=y +CONFIG_IDE_ATAPI=y +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_IDE_GD=y +CONFIG_IDE_GD_ATA=y +# CONFIG_IDE_GD_ATAPI is not set +CONFIG_BLK_DEV_IDECD=y +CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEACPI is not set +# CONFIG_IDE_TASK_IOCTL is not set +CONFIG_IDE_PROC_FS=y + +# +# IDE chipset support/bugfixes +# +# CONFIG_IDE_GENERIC is not set +# CONFIG_BLK_DEV_PLATFORM is not set +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_IDEPNP is not set +CONFIG_BLK_DEV_IDEDMA_SFF=y + +# +# PCI IDE chipsets support +# +CONFIG_BLK_DEV_IDEPCI=y +CONFIG_IDEPCI_PCIBUS_ORDER=y +# CONFIG_BLK_DEV_OFFBOARD is not set +CONFIG_BLK_DEV_GENERIC=y +# CONFIG_BLK_DEV_OPTI621 is not set +# CONFIG_BLK_DEV_RZ1000 is not set +CONFIG_BLK_DEV_IDEDMA_PCI=y +# CONFIG_BLK_DEV_AEC62XX is not set +# CONFIG_BLK_DEV_ALI15X3 is not set +# CONFIG_BLK_DEV_AMD74XX is not set +# CONFIG_BLK_DEV_ATIIXP is not set +# CONFIG_BLK_DEV_CMD64X is not set +# CONFIG_BLK_DEV_TRIFLEX is not set +# CONFIG_BLK_DEV_CS5520 is not set +# CONFIG_BLK_DEV_CS5530 is not set +# CONFIG_BLK_DEV_CS5535 is not set +# CONFIG_BLK_DEV_CS5536 is not set +# CONFIG_BLK_DEV_HPT366 is not set +# CONFIG_BLK_DEV_JMICRON is not set +# CONFIG_BLK_DEV_SC1200 is not set +CONFIG_BLK_DEV_PIIX=y +# CONFIG_BLK_DEV_IT8172 is not set +# CONFIG_BLK_DEV_IT8213 is not set +# CONFIG_BLK_DEV_IT821X is not set +# CONFIG_BLK_DEV_NS87415 is not set +# CONFIG_BLK_DEV_PDC202XX_OLD is not set +# CONFIG_BLK_DEV_PDC202XX_NEW is not set +# CONFIG_BLK_DEV_SVWKS is not set +# CONFIG_BLK_DEV_SIIMAGE is not set +# CONFIG_BLK_DEV_SIS5513 is not set +# CONFIG_BLK_DEV_SLC90E66 is not set +# CONFIG_BLK_DEV_TRM290 is not set +# CONFIG_BLK_DEV_VIA82CXXX is not set +# CONFIG_BLK_DEV_TC86C001 is not set +CONFIG_BLK_DEV_IDEDMA=y + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_NETLINK is not set +# CONFIG_SCSI_MQ_DEFAULT is not set +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +# CONFIG_BLK_DEV_SD is not set +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +# CONFIG_BLK_DEV_SR is not set +# CONFIG_CHR_DEV_SG is not set +# CONFIG_CHR_DEV_SCH is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_ATTRS is not set +# CONFIG_SCSI_SAS_LIBSAS is not set +# CONFIG_SCSI_SRP_ATTRS is not set +CONFIG_SCSI_LOWLEVEL=y +# CONFIG_ISCSI_TCP is not set +# CONFIG_ISCSI_BOOT_SYSFS is not set +# CONFIG_SCSI_CXGB3_ISCSI is not set +# CONFIG_SCSI_CXGB4_ISCSI is not set +# CONFIG_SCSI_BNX2_ISCSI is not set +# CONFIG_BE2ISCSI is not set +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_SCSI_HPSA is not set +# CONFIG_SCSI_3W_9XXX is not set +# CONFIG_SCSI_3W_SAS is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC79XX is not set +# CONFIG_SCSI_AIC94XX is not set +# CONFIG_SCSI_MVSAS is not set +# CONFIG_SCSI_MVUMI is not set +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_ARCMSR is not set +# CONFIG_SCSI_ESAS2R is not set +# CONFIG_MEGARAID_NEWGEN is not set +# CONFIG_MEGARAID_LEGACY is not set +# CONFIG_MEGARAID_SAS is not set +# CONFIG_SCSI_MPT3SAS is not set +# CONFIG_SCSI_MPT2SAS is not set +# CONFIG_SCSI_SMARTPQI is not set +# CONFIG_SCSI_UFSHCD is not set +# CONFIG_SCSI_HPTIOP is not set +# CONFIG_SCSI_BUSLOGIC is not set +# CONFIG_VMWARE_PVSCSI is not set +# CONFIG_SCSI_SNIC is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_EATA is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GDTH is not set +# CONFIG_SCSI_ISCI is not set +# CONFIG_SCSI_IPS is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_STEX is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_SCSI_IPR is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_QLA_ISCSI is not set +# CONFIG_SCSI_DC395x is not set +# CONFIG_SCSI_AM53C974 is not set +# CONFIG_SCSI_NSP32 is not set +# CONFIG_SCSI_WD719X is not set +# CONFIG_SCSI_DEBUG is not set +# CONFIG_SCSI_PMCRAID is not set +# CONFIG_SCSI_PM8001 is not set +# CONFIG_SCSI_DH is not set +# CONFIG_SCSI_OSD_INITIATOR is not set +CONFIG_ATA=y +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_VERBOSE_ERROR=y +CONFIG_ATA_ACPI=y +# CONFIG_SATA_ZPODD is not set +CONFIG_SATA_PMP=y + +# +# Controllers with non-SFF native interface +# +CONFIG_SATA_AHCI=y +# CONFIG_SATA_AHCI_PLATFORM is not set +# CONFIG_SATA_INIC162X is not set +# CONFIG_SATA_ACARD_AHCI is not set +# CONFIG_SATA_SIL24 is not set +CONFIG_ATA_SFF=y + +# +# SFF controllers with custom DMA interface +# +# CONFIG_PDC_ADMA is not set +# CONFIG_SATA_QSTOR is not set +# CONFIG_SATA_SX4 is not set +CONFIG_ATA_BMDMA=y + +# +# SATA SFF controllers with BMDMA +# +CONFIG_ATA_PIIX=y +# CONFIG_SATA_MV is not set +# CONFIG_SATA_NV is not set +# CONFIG_SATA_PROMISE is not set +# CONFIG_SATA_SIL is not set +# CONFIG_SATA_SIS is not set +# CONFIG_SATA_SVW is not set +# CONFIG_SATA_ULI is not set +# CONFIG_SATA_VIA is not set +# CONFIG_SATA_VITESSE is not set + +# +# PATA SFF controllers with BMDMA +# +# CONFIG_PATA_ALI is not set +# CONFIG_PATA_AMD is not set +# CONFIG_PATA_ARTOP is not set +# CONFIG_PATA_ATIIXP is not set +# CONFIG_PATA_ATP867X is not set +# CONFIG_PATA_CMD64X is not set +# CONFIG_PATA_CS5520 is not set +# CONFIG_PATA_CS5530 is not set +# CONFIG_PATA_CS5535 is not set +# CONFIG_PATA_CS5536 is not set +# CONFIG_PATA_CYPRESS is not set +# CONFIG_PATA_EFAR is not set +# CONFIG_PATA_HPT366 is not set +# CONFIG_PATA_HPT37X is not set +# CONFIG_PATA_HPT3X2N is not set +# CONFIG_PATA_HPT3X3 is not set +# CONFIG_PATA_IT8213 is not set +# CONFIG_PATA_IT821X is not set +# CONFIG_PATA_JMICRON is not set +# CONFIG_PATA_MARVELL is not set +# CONFIG_PATA_NETCELL is not set +# CONFIG_PATA_NINJA32 is not set +# CONFIG_PATA_NS87415 is not set +CONFIG_PATA_OLDPIIX=y +# CONFIG_PATA_OPTIDMA is not set +# CONFIG_PATA_PDC2027X is not set +# CONFIG_PATA_PDC_OLD is not set +# CONFIG_PATA_RADISYS is not set +# CONFIG_PATA_RDC is not set +# CONFIG_PATA_SC1200 is not set +# CONFIG_PATA_SCH is not set +# CONFIG_PATA_SERVERWORKS is not set +# CONFIG_PATA_SIL680 is not set +# CONFIG_PATA_SIS is not set +# CONFIG_PATA_TOSHIBA is not set +# CONFIG_PATA_TRIFLEX is not set +# CONFIG_PATA_VIA is not set +# CONFIG_PATA_WINBOND is not set + +# +# PIO-only SFF controllers +# +# CONFIG_PATA_CMD640_PCI is not set +# CONFIG_PATA_MPIIX is not set +# CONFIG_PATA_NS87410 is not set +# CONFIG_PATA_OPTI is not set +# CONFIG_PATA_RZ1000 is not set + +# +# Generic fallback / legacy drivers +# +# CONFIG_PATA_ACPI is not set +# CONFIG_ATA_GENERIC is not set +# CONFIG_PATA_LEGACY is not set +# CONFIG_MD is not set +# CONFIG_TARGET_CORE is not set +# CONFIG_FUSION is not set + +# +# IEEE 1394 (FireWire) support +# +# CONFIG_FIREWIRE is not set +# CONFIG_FIREWIRE_NOSY is not set +# CONFIG_MACINTOSH_DRIVERS is not set +CONFIG_NETDEVICES=y +CONFIG_MII=y +CONFIG_NET_CORE=y +# CONFIG_BONDING is not set +# CONFIG_DUMMY is not set +# CONFIG_EQUALIZER is not set +# CONFIG_NET_FC is not set +# CONFIG_NET_TEAM is not set +# CONFIG_MACVLAN is not set +# CONFIG_VXLAN is not set +# CONFIG_MACSEC is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set +# CONFIG_TUN is not set +# CONFIG_TUN_VNET_CROSS_LE is not set +# CONFIG_VETH is not set +# CONFIG_NLMON is not set +# CONFIG_ARCNET is not set + +# +# CAIF transport drivers +# + +# +# Distributed Switch Architecture drivers +# +CONFIG_ETHERNET=y +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_NET_VENDOR_ADAPTEC is not set +# CONFIG_NET_VENDOR_AGERE is not set +# CONFIG_NET_VENDOR_ALACRITECH is not set +# CONFIG_NET_VENDOR_ALTEON is not set +# CONFIG_ALTERA_TSE is not set +# CONFIG_NET_VENDOR_AMAZON is not set +# CONFIG_NET_VENDOR_AMD is not set +# CONFIG_NET_VENDOR_AQUANTIA is not set +# CONFIG_NET_VENDOR_ARC is not set +# CONFIG_NET_VENDOR_ATHEROS is not set +# CONFIG_NET_VENDOR_AURORA is not set +# CONFIG_NET_CADENCE is not set +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_NET_VENDOR_BROCADE is not set +# CONFIG_NET_VENDOR_CAVIUM is not set +# CONFIG_NET_VENDOR_CHELSIO is not set +# CONFIG_NET_VENDOR_CISCO is not set +# CONFIG_CX_ECAT is not set +# CONFIG_DNET is not set +CONFIG_NET_VENDOR_DEC=y +CONFIG_NET_TULIP=y +# CONFIG_DE2104X is not set +CONFIG_TULIP=y +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +# CONFIG_TULIP_NAPI is not set +# CONFIG_DE4X5 is not set +# CONFIG_WINBOND_840 is not set +# CONFIG_DM9102 is not set +# CONFIG_ULI526X is not set +# CONFIG_NET_VENDOR_DLINK is not set +# CONFIG_NET_VENDOR_EMULEX is not set +# CONFIG_NET_VENDOR_EZCHIP is not set +# CONFIG_NET_VENDOR_EXAR is not set +# CONFIG_NET_VENDOR_HP is not set +CONFIG_NET_VENDOR_HUAWEI=y +CONFIG_NET_VENDOR_INTEL=y +CONFIG_E100=y +CONFIG_E1000=y +# CONFIG_E1000E is not set +# CONFIG_IGB is not set +# CONFIG_IGBVF is not set +# CONFIG_IXGB is not set +# CONFIG_IXGBE is not set +# CONFIG_I40E is not set +# CONFIG_NET_VENDOR_I825XX is not set +# CONFIG_JME is not set +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MELLANOX is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MYRI is not set +# CONFIG_FEALNX is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_NETRONOME is not set +# CONFIG_NET_VENDOR_NVIDIA is not set +# CONFIG_NET_VENDOR_OKI is not set +# CONFIG_ETHOC is not set +# CONFIG_NET_PACKET_ENGINE is not set +# CONFIG_NET_VENDOR_QLOGIC is not set +CONFIG_NET_VENDOR_QUALCOMM=y +# CONFIG_QCOM_EMAC is not set +# CONFIG_RMNET is not set +CONFIG_NET_VENDOR_REALTEK=y +CONFIG_8139CP=y +CONFIG_8139TOO=y +CONFIG_8139TOO_PIO=y +# CONFIG_8139TOO_TUNE_TWISTER is not set +# CONFIG_8139TOO_8129 is not set +# CONFIG_8139_OLD_RX_RESET is not set +# CONFIG_R8169 is not set +# CONFIG_NET_VENDOR_RENESAS is not set +# CONFIG_NET_VENDOR_RDC is not set +# CONFIG_NET_VENDOR_ROCKER is not set +# CONFIG_NET_VENDOR_SAMSUNG is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SILAN is not set +# CONFIG_NET_VENDOR_SIS is not set +# CONFIG_NET_VENDOR_SOLARFLARE is not set +# CONFIG_NET_VENDOR_SMSC is not set +# CONFIG_NET_VENDOR_STMICRO is not set +# CONFIG_NET_VENDOR_SUN is not set +# CONFIG_NET_VENDOR_TEHUTI is not set +# CONFIG_NET_VENDOR_TI is not set +# CONFIG_NET_VENDOR_VIA is not set +# CONFIG_NET_VENDOR_WIZNET is not set +# CONFIG_NET_VENDOR_SYNOPSYS is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_NET_SB1000 is not set +# CONFIG_MDIO_DEVICE is not set +# CONFIG_MDIO_BUS is not set +# CONFIG_PHYLIB is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set +# CONFIG_USB_NET_DRIVERS is not set +# CONFIG_WLAN is not set + +# +# Enable WiMAX (Networking options) to see the WiMAX drivers +# +# CONFIG_WAN is not set +# CONFIG_VMXNET3 is not set +# CONFIG_FUJITSU_ES is not set +# CONFIG_ISDN is not set +# CONFIG_NVM is not set + +# +# Input device support +# +CONFIG_INPUT=y +# CONFIG_INPUT_FF_MEMLESS is not set +# CONFIG_INPUT_POLLDEV is not set +# CONFIG_INPUT_SPARSEKMAP is not set +# CONFIG_INPUT_MATRIXKMAP is not set + +# +# Userland interfaces +# +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ATKBD=y +# CONFIG_KEYBOARD_LKKBD is not set +# CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_KEYBOARD_OPENCORES is not set +# CONFIG_KEYBOARD_SAMSUNG is not set +# CONFIG_KEYBOARD_STOWAWAY is not set +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_XTKBD is not set +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=y +CONFIG_MOUSE_PS2_ALPS=y +CONFIG_MOUSE_PS2_BYD=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_CYPRESS=y +CONFIG_MOUSE_PS2_LIFEBOOK=y +CONFIG_MOUSE_PS2_TRACKPOINT=y +# CONFIG_MOUSE_PS2_ELANTECH is not set +# CONFIG_MOUSE_PS2_SENTELIC is not set +# CONFIG_MOUSE_PS2_TOUCHKIT is not set +CONFIG_MOUSE_PS2_FOCALTECH=y +# CONFIG_MOUSE_PS2_VMMOUSE is not set +# CONFIG_MOUSE_SERIAL is not set +# CONFIG_MOUSE_APPLETOUCH is not set +# CONFIG_MOUSE_BCM5974 is not set +# CONFIG_MOUSE_VSXXXAA is not set +# CONFIG_MOUSE_SYNAPTICS_USB is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TABLET is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INPUT_MISC is not set +# CONFIG_RMI4_CORE is not set + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y +CONFIG_SERIO_I8042=y +CONFIG_SERIO_SERPORT=y +# CONFIG_SERIO_CT82C710 is not set +# CONFIG_SERIO_PCIPS2 is not set +CONFIG_SERIO_LIBPS2=y +# CONFIG_SERIO_RAW is not set +# CONFIG_SERIO_ALTERA_PS2 is not set +# CONFIG_SERIO_PS2MULT is not set +# CONFIG_SERIO_ARC_PS2 is not set +# CONFIG_USERIO is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +CONFIG_TTY=y +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +# CONFIG_VT_HW_CONSOLE_BINDING is not set +CONFIG_UNIX98_PTYS=y +# CONFIG_LEGACY_PTYS is not set +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_NOZOMI is not set +# CONFIG_N_GSM is not set +# CONFIG_TRACE_SINK is not set +CONFIG_DEVMEM=y +CONFIG_DEVKMEM=y + +# +# Serial drivers +# +CONFIG_SERIAL_EARLYCON=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y +CONFIG_SERIAL_8250_PNP=y +# CONFIG_SERIAL_8250_FINTEK is not set +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_8250_EXAR=y +CONFIG_SERIAL_8250_NR_UARTS=4 +CONFIG_SERIAL_8250_RUNTIME_UARTS=1 +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_FSL is not set +# CONFIG_SERIAL_8250_DW is not set +# CONFIG_SERIAL_8250_RT288X is not set +CONFIG_SERIAL_8250_LPSS=y +CONFIG_SERIAL_8250_MID=y +# CONFIG_SERIAL_8250_MOXA is not set + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_UARTLITE is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_JSM is not set +# CONFIG_SERIAL_SCCNXP is not set +# CONFIG_SERIAL_TIMBERDALE is not set +# CONFIG_SERIAL_ALTERA_JTAGUART is not set +# CONFIG_SERIAL_ALTERA_UART is not set +# CONFIG_SERIAL_PCH_UART is not set +# CONFIG_SERIAL_ARC is not set +# CONFIG_SERIAL_RP2 is not set +# CONFIG_SERIAL_FSL_LPUART is not set +# CONFIG_SERIAL_DEV_BUS is not set +# CONFIG_IPMI_HANDLER is not set +# CONFIG_HW_RANDOM is not set +# CONFIG_NVRAM is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set +# CONFIG_SONYPI is not set +# CONFIG_MWAVE is not set +# CONFIG_PC8736x_GPIO is not set +# CONFIG_NSC_GPIO is not set +# CONFIG_RAW_DRIVER is not set +# CONFIG_HPET is not set +# CONFIG_HANGCHECK_TIMER is not set +# CONFIG_TCG_TPM is not set +# CONFIG_TELCLOCK is not set +CONFIG_DEVPORT=y +# CONFIG_XILLYBUS is not set + +# +# I2C support +# +# CONFIG_I2C is not set +# CONFIG_SPI is not set +# CONFIG_SPMI is not set +# CONFIG_HSI is not set +# CONFIG_PPS is not set + +# +# PTP clock support +# +# CONFIG_PTP_1588_CLOCK is not set + +# +# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. +# +# CONFIG_PTP_1588_CLOCK_PCH is not set +# CONFIG_GPIOLIB is not set +# CONFIG_W1 is not set +# CONFIG_POWER_AVS is not set +# CONFIG_POWER_RESET is not set +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +# CONFIG_PDA_POWER is not set +# CONFIG_TEST_POWER is not set +# CONFIG_BATTERY_DS2780 is not set +# CONFIG_BATTERY_DS2781 is not set +# CONFIG_BATTERY_BQ27XXX is not set +# CONFIG_CHARGER_MAX8903 is not set +# CONFIG_HWMON is not set +CONFIG_THERMAL=y +CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 +# CONFIG_THERMAL_WRITABLE_TRIPS is not set +CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y +# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set +# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set +# CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set +# CONFIG_THERMAL_GOV_FAIR_SHARE is not set +CONFIG_THERMAL_GOV_STEP_WISE=y +# CONFIG_THERMAL_GOV_BANG_BANG is not set +# CONFIG_THERMAL_GOV_USER_SPACE is not set +# CONFIG_THERMAL_GOV_POWER_ALLOCATOR is not set +# CONFIG_THERMAL_EMULATION is not set +# CONFIG_INTEL_POWERCLAMP is not set +# CONFIG_INTEL_SOC_DTS_THERMAL is not set + +# +# ACPI INT340X thermal drivers +# +# CONFIG_INT340X_THERMAL is not set +# CONFIG_INTEL_PCH_THERMAL is not set +# CONFIG_WATCHDOG is not set +CONFIG_SSB_POSSIBLE=y + +# +# Sonics Silicon Backplane +# +# CONFIG_SSB is not set +CONFIG_BCMA_POSSIBLE=y +# CONFIG_BCMA is not set + +# +# Multifunction device drivers +# +# CONFIG_MFD_CORE is not set +# CONFIG_MFD_CS5535 is not set +# CONFIG_MFD_CROS_EC is not set +# CONFIG_MFD_DLN2 is not set +# CONFIG_HTC_PASIC3 is not set +# CONFIG_MFD_INTEL_QUARK_I2C_GPIO is not set +# CONFIG_LPC_ICH is not set +# CONFIG_LPC_SCH is not set +# CONFIG_MFD_INTEL_LPSS_ACPI is not set +# CONFIG_MFD_INTEL_LPSS_PCI is not set +# CONFIG_MFD_JANZ_CMODIO is not set +# CONFIG_MFD_KEMPLD is not set +# CONFIG_MFD_MT6397 is not set +# CONFIG_MFD_VIPERBOARD is not set +# CONFIG_MFD_RDC321X is not set +# CONFIG_MFD_RTSX_PCI is not set +# CONFIG_MFD_RTSX_USB is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_ABX500_CORE is not set +# CONFIG_MFD_SYSCON is not set +# CONFIG_MFD_TI_AM335X_TSCADC is not set +# CONFIG_MFD_TMIO is not set +# CONFIG_MFD_VX855 is not set +# CONFIG_REGULATOR is not set +CONFIG_RC_CORE=y +CONFIG_RC_MAP=y +CONFIG_RC_DECODERS=y +# CONFIG_LIRC is not set +CONFIG_IR_NEC_DECODER=y +CONFIG_IR_RC5_DECODER=y +CONFIG_IR_RC6_DECODER=y +CONFIG_IR_JVC_DECODER=y +CONFIG_IR_SONY_DECODER=y +CONFIG_IR_SANYO_DECODER=y +CONFIG_IR_SHARP_DECODER=y +CONFIG_IR_MCE_KBD_DECODER=y +CONFIG_IR_XMP_DECODER=y +# CONFIG_RC_DEVICES is not set +# CONFIG_MEDIA_SUPPORT is not set + +# +# Graphics support +# +# CONFIG_AGP is not set +CONFIG_VGA_ARB=y +CONFIG_VGA_ARB_MAX_GPUS=16 +# CONFIG_VGA_SWITCHEROO is not set +# CONFIG_DRM is not set + +# +# ACP (Audio CoProcessor) Configuration +# +# CONFIG_DRM_LIB_RANDOM is not set + +# +# Frame buffer Devices +# +# CONFIG_FB is not set +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set +# CONFIG_VGASTATE is not set + +# +# Console display driver support +# +CONFIG_VGA_CONSOLE=y +# CONFIG_VGACON_SOFT_SCROLLBACK is not set +CONFIG_DUMMY_CONSOLE=y +CONFIG_DUMMY_CONSOLE_COLUMNS=80 +CONFIG_DUMMY_CONSOLE_ROWS=25 +# CONFIG_SOUND is not set + +# +# HID support +# +CONFIG_HID=y +# CONFIG_HID_BATTERY_STRENGTH is not set +# CONFIG_HIDRAW is not set +# CONFIG_UHID is not set +CONFIG_HID_GENERIC=y + +# +# Special HID drivers +# +CONFIG_HID_A4TECH=y +# CONFIG_HID_ACCUTOUCH is not set +# CONFIG_HID_ACRUX is not set +CONFIG_HID_APPLE=y +# CONFIG_HID_APPLEIR is not set +# CONFIG_HID_AUREAL is not set +CONFIG_HID_BELKIN=y +# CONFIG_HID_BETOP_FF is not set +CONFIG_HID_CHERRY=y +CONFIG_HID_CHICONY=y +# CONFIG_HID_CMEDIA is not set +CONFIG_HID_CYPRESS=y +# CONFIG_HID_DRAGONRISE is not set +# CONFIG_HID_EMS_FF is not set +# CONFIG_HID_ELECOM is not set +# CONFIG_HID_ELO is not set +CONFIG_HID_EZKEY=y +# CONFIG_HID_GEMBIRD is not set +# CONFIG_HID_GFRM is not set +# CONFIG_HID_HOLTEK is not set +# CONFIG_HID_KEYTOUCH is not set +# CONFIG_HID_KYE is not set +# CONFIG_HID_UCLOGIC is not set +# CONFIG_HID_WALTOP is not set +# CONFIG_HID_GYRATION is not set +# CONFIG_HID_ICADE is not set +CONFIG_HID_ITE=y +# CONFIG_HID_TWINHAN is not set +CONFIG_HID_KENSINGTON=y +# CONFIG_HID_LCPOWER is not set +# CONFIG_HID_LENOVO is not set +CONFIG_HID_LOGITECH=y +# CONFIG_HID_LOGITECH_HIDPP is not set +# CONFIG_LOGITECH_FF is not set +# CONFIG_LOGIRUMBLEPAD2_FF is not set +# CONFIG_LOGIG940_FF is not set +# CONFIG_LOGIWHEELS_FF is not set +# CONFIG_HID_MAGICMOUSE is not set +# CONFIG_HID_MAYFLASH is not set +CONFIG_HID_MICROSOFT=y +CONFIG_HID_MONTEREY=y +# CONFIG_HID_MULTITOUCH is not set +# CONFIG_HID_NTI is not set +# CONFIG_HID_NTRIG is not set +# CONFIG_HID_ORTEK is not set +# CONFIG_HID_PANTHERLORD is not set +# CONFIG_HID_PENMOUNT is not set +# CONFIG_HID_PETALYNX is not set +# CONFIG_HID_PICOLCD is not set +# CONFIG_HID_PLANTRONICS is not set +# CONFIG_HID_PRIMAX is not set +# CONFIG_HID_RETRODE is not set +# CONFIG_HID_ROCCAT is not set +# CONFIG_HID_SAITEK is not set +# CONFIG_HID_SAMSUNG is not set +# CONFIG_HID_SPEEDLINK is not set +# CONFIG_HID_STEELSERIES is not set +# CONFIG_HID_SUNPLUS is not set +# CONFIG_HID_RMI is not set +# CONFIG_HID_GREENASIA is not set +# CONFIG_HID_SMARTJOYPLUS is not set +# CONFIG_HID_TIVO is not set +# CONFIG_HID_TOPSEED is not set +# CONFIG_HID_THRUSTMASTER is not set +# CONFIG_HID_UDRAW_PS3 is not set +# CONFIG_HID_WACOM is not set +# CONFIG_HID_XINMO is not set +# CONFIG_HID_ZEROPLUS is not set +# CONFIG_HID_ZYDACRON is not set +# CONFIG_HID_SENSOR_HUB is not set +# CONFIG_HID_ALPS is not set + +# +# USB HID support +# +CONFIG_USB_HID=y +# CONFIG_HID_PID is not set +# CONFIG_USB_HIDDEV is not set +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +CONFIG_USB_SUPPORT=y +CONFIG_USB_COMMON=y +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB=y +CONFIG_USB_PCI=y +# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEFAULT_PERSIST=y +# CONFIG_USB_DYNAMIC_MINORS is not set +# CONFIG_USB_OTG is not set +# CONFIG_USB_OTG_WHITELIST is not set +# CONFIG_USB_MON is not set +# CONFIG_USB_WUSB_CBAF is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_C67X00_HCD is not set +# CONFIG_USB_XHCI_HCD is not set +# CONFIG_USB_EHCI_HCD is not set +# CONFIG_USB_OXU210HP_HCD is not set +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_ISP1362_HCD is not set +# CONFIG_USB_FOTG210_HCD is not set +# CONFIG_USB_OHCI_HCD is not set +CONFIG_USB_UHCI_HCD=y +# CONFIG_USB_SL811_HCD is not set +# CONFIG_USB_R8A66597_HCD is not set +# CONFIG_USB_HCD_TEST_MODE is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set +# CONFIG_USB_WDM is not set +# CONFIG_USB_TMC is not set + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +# CONFIG_USB_STORAGE is not set + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USBIP_CORE is not set +# CONFIG_USB_MUSB_HDRC is not set +# CONFIG_USB_DWC3 is not set +# CONFIG_USB_DWC2 is not set +# CONFIG_USB_ISP1760 is not set + +# +# USB port drivers +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_ADUTUX is not set +# CONFIG_USB_SEVSEG is not set +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_LEGOTOWER is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_FTDI_ELAN is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set +# CONFIG_USB_TEST is not set +# CONFIG_USB_EHSET_TEST_FIXTURE is not set +# CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_YUREX is not set +# CONFIG_USB_EZUSB_FX2 is not set +# CONFIG_USB_LINK_LAYER_TEST is not set + +# +# USB Physical Layer drivers +# +# CONFIG_USB_PHY is not set +# CONFIG_NOP_USB_XCEIV is not set +# CONFIG_USB_GADGET is not set + +# +# USB Power Delivery and Type-C drivers +# +# CONFIG_TYPEC_UCSI is not set +# CONFIG_USB_ULPI_BUS is not set +# CONFIG_UWB is not set +# CONFIG_MMC is not set +# CONFIG_MEMSTICK is not set +# CONFIG_NEW_LEDS is not set +# CONFIG_ACCESSIBILITY is not set +# CONFIG_INFINIBAND is not set +CONFIG_EDAC_ATOMIC_SCRUB=y +CONFIG_EDAC_SUPPORT=y +CONFIG_RTC_LIB=y +CONFIG_RTC_MC146818_LIB=y +# CONFIG_RTC_CLASS is not set +# CONFIG_DMADEVICES is not set + +# +# DMABUF options +# +# CONFIG_SYNC_FILE is not set +# CONFIG_AUXDISPLAY is not set +# CONFIG_UIO is not set +# CONFIG_VIRT_DRIVERS is not set + +# +# Virtio drivers +# +# CONFIG_VIRTIO_PCI is not set +# CONFIG_VIRTIO_MMIO is not set + +# +# Microsoft Hyper-V guest support +# +# CONFIG_HYPERV_TSCPAGE is not set +# CONFIG_STAGING is not set +CONFIG_X86_PLATFORM_DEVICES=y +# CONFIG_ACERHDF is not set +# CONFIG_DELL_SMO8800 is not set +# CONFIG_FUJITSU_TABLET is not set +# CONFIG_HP_ACCEL is not set +# CONFIG_HP_WIRELESS is not set +# CONFIG_SENSORS_HDAPS is not set +# CONFIG_INTEL_MENLOW is not set +# CONFIG_ASUS_WIRELESS is not set +# CONFIG_ACPI_WMI is not set +# CONFIG_TOPSTAR_LAPTOP is not set +# CONFIG_TOSHIBA_BT_RFKILL is not set +# CONFIG_TOSHIBA_HAPS is not set +# CONFIG_ACPI_CMPC is not set +# CONFIG_INTEL_HID_EVENT is not set +# CONFIG_INTEL_VBTN is not set +# CONFIG_INTEL_IPS is not set +# CONFIG_INTEL_PMC_CORE is not set +# CONFIG_IBM_RTL is not set +# CONFIG_SAMSUNG_Q10 is not set +# CONFIG_INTEL_RST is not set +# CONFIG_INTEL_SMARTCONNECT is not set +# CONFIG_PVPANIC is not set +# CONFIG_INTEL_PMC_IPC is not set +# CONFIG_SURFACE_PRO3_BUTTON is not set +# CONFIG_INTEL_PUNIT_IPC is not set +# CONFIG_MLX_CPLD_PLATFORM is not set +CONFIG_PMC_ATOM=y +# CONFIG_CHROME_PLATFORMS is not set +CONFIG_CLKDEV_LOOKUP=y +CONFIG_HAVE_CLK_PREPARE=y +CONFIG_COMMON_CLK=y + +# +# Common Clock Framework +# +# CONFIG_COMMON_CLK_NXP is not set +# CONFIG_COMMON_CLK_PXA is not set +# CONFIG_COMMON_CLK_PIC32 is not set +# CONFIG_HWSPINLOCK is not set + +# +# Clock Source drivers +# +CONFIG_CLKSRC_I8253=y +CONFIG_CLKEVT_I8253=y +CONFIG_I8253_LOCK=y +CONFIG_CLKBLD_I8253=y +# CONFIG_ATMEL_PIT is not set +# CONFIG_SH_TIMER_CMT is not set +# CONFIG_SH_TIMER_MTU2 is not set +# CONFIG_SH_TIMER_TMU is not set +# CONFIG_EM_TIMER_STI is not set +# CONFIG_MAILBOX is not set +CONFIG_IOMMU_SUPPORT=y + +# +# Generic IOMMU Pagetable Support +# + +# +# Remoteproc drivers +# +# CONFIG_REMOTEPROC is not set + +# +# Rpmsg drivers +# + +# +# SOC (System On Chip) specific Drivers +# + +# +# Amlogic SoC drivers +# + +# +# Broadcom SoC drivers +# + +# +# i.MX SoC drivers +# + +# +# Qualcomm SoC drivers +# +# CONFIG_SUNXI_SRAM is not set +# CONFIG_SOC_TI is not set +# CONFIG_PM_DEVFREQ is not set +# CONFIG_EXTCON is not set +# CONFIG_MEMORY is not set +# CONFIG_IIO is not set +# CONFIG_NTB is not set +# CONFIG_VME_BUS is not set +# CONFIG_PWM is not set +CONFIG_ARM_GIC_MAX_NR=1 +# CONFIG_IPACK_BUS is not set +# CONFIG_RESET_CONTROLLER is not set +# CONFIG_FMC is not set + +# +# PHY Subsystem +# +# CONFIG_GENERIC_PHY is not set +# CONFIG_BCM_KONA_USB2_PHY is not set +# CONFIG_PHY_PXA_28NM_HSIC is not set +# CONFIG_PHY_PXA_28NM_USB2 is not set +# CONFIG_POWERCAP is not set +# CONFIG_MCB is not set + +# +# Performance monitor support +# +# CONFIG_RAS is not set +# CONFIG_THUNDERBOLT is not set + +# +# Android +# +# CONFIG_ANDROID is not set +# CONFIG_DAX is not set +# CONFIG_NVMEM is not set +# CONFIG_STM is not set +# CONFIG_INTEL_TH is not set +# CONFIG_FPGA is not set + +# +# FSI support +# +# CONFIG_FSI is not set + +# +# Firmware Drivers +# +# CONFIG_EDD is not set +CONFIG_FIRMWARE_MEMMAP=y +# CONFIG_DELL_RBU is not set +# CONFIG_DCDBAS is not set +# CONFIG_DMIID is not set +# CONFIG_DMI_SYSFS is not set +CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y +# CONFIG_ISCSI_IBFT_FIND is not set +# CONFIG_FW_CFG_SYSFS is not set +# CONFIG_GOOGLE_FIRMWARE is not set +# CONFIG_EFI_DEV_PATH_PARSER is not set + +# +# Tegra firmware driver +# + +# +# File systems +# +CONFIG_DCACHE_WORD_ACCESS=y +# CONFIG_EXT2_FS is not set +# CONFIG_EXT3_FS is not set +CONFIG_EXT4_FS=y +CONFIG_EXT4_USE_FOR_EXT2=y +# CONFIG_EXT4_FS_POSIX_ACL is not set +# CONFIG_EXT4_FS_SECURITY is not set +# CONFIG_EXT4_ENCRYPTION is not set +# CONFIG_EXT4_DEBUG is not set +CONFIG_JBD2=y +# CONFIG_JBD2_DEBUG is not set +CONFIG_FS_MBCACHE=y +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_BTRFS_FS is not set +# CONFIG_NILFS2_FS is not set +# CONFIG_F2FS_FS is not set +# CONFIG_FS_DAX is not set +# CONFIG_FS_POSIX_ACL is not set +CONFIG_EXPORTFS=y +# CONFIG_EXPORTFS_BLOCK_OPS is not set +CONFIG_FILE_LOCKING=y +CONFIG_MANDATORY_FILE_LOCKING=y +# CONFIG_FS_ENCRYPTION is not set +CONFIG_FSNOTIFY=y +CONFIG_DNOTIFY=y +CONFIG_INOTIFY_USER=y +# CONFIG_FANOTIFY is not set +# CONFIG_QUOTA is not set +# CONFIG_QUOTACTL is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_FUSE_FS is not set +# CONFIG_OVERLAY_FS is not set + +# +# Caches +# +# CONFIG_FSCACHE is not set + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +# CONFIG_ZISOFS is not set +# CONFIG_UDF_FS is not set + +# +# DOS/FAT/NT Filesystems +# +# CONFIG_MSDOS_FS is not set +# CONFIG_VFAT_FS is not set +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +# CONFIG_PROC_KCORE is not set +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +# CONFIG_PROC_CHILDREN is not set +CONFIG_KERNFS=y +CONFIG_SYSFS=y +# CONFIG_TMPFS is not set +# CONFIG_HUGETLBFS is not set +# CONFIG_HUGETLB_PAGE is not set +# CONFIG_CONFIGFS_FS is not set +# CONFIG_MISC_FILESYSTEMS is not set +# CONFIG_NETWORK_FILESYSTEMS is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ASCII is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_MAC_ROMAN is not set +# CONFIG_NLS_MAC_CELTIC is not set +# CONFIG_NLS_MAC_CENTEURO is not set +# CONFIG_NLS_MAC_CROATIAN is not set +# CONFIG_NLS_MAC_CYRILLIC is not set +# CONFIG_NLS_MAC_GAELIC is not set +# CONFIG_NLS_MAC_GREEK is not set +# CONFIG_NLS_MAC_ICELAND is not set +# CONFIG_NLS_MAC_INUIT is not set +# CONFIG_NLS_MAC_ROMANIAN is not set +# CONFIG_NLS_MAC_TURKISH is not set +CONFIG_NLS_UTF8=y + +# +# Kernel hacking +# +CONFIG_TRACE_IRQFLAGS_SUPPORT=y + +# +# printk and dmesg options +# +# CONFIG_PRINTK_TIME is not set +CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 + +# +# Compile-time checks and compiler options +# +CONFIG_ENABLE_WARN_DEPRECATED=y +# CONFIG_ENABLE_MUST_CHECK is not set +CONFIG_FRAME_WARN=1024 +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_UNUSED_SYMBOLS is not set +# CONFIG_DEBUG_FS is not set +# CONFIG_HEADERS_CHECK is not set +# CONFIG_DEBUG_SECTION_MISMATCH is not set +CONFIG_SECTION_MISMATCH_WARN_ONLY=y +CONFIG_FRAME_POINTER=y +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_DEBUG_KERNEL is not set + +# +# Memory Debugging +# +# CONFIG_PAGE_EXTENSION is not set +# CONFIG_PAGE_POISONING is not set +# CONFIG_DEBUG_RODATA_TEST is not set +# CONFIG_SLUB_DEBUG_ON is not set +# CONFIG_SLUB_STATS is not set +CONFIG_HAVE_DEBUG_KMEMLEAK=y +CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y +CONFIG_DEBUG_MEMORY_INIT=y +CONFIG_HAVE_DEBUG_STACKOVERFLOW=y +CONFIG_HAVE_ARCH_KMEMCHECK=y + +# +# Debug Lockups and Hangs +# +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +CONFIG_PANIC_TIMEOUT=0 +# CONFIG_SCHED_INFO is not set +# CONFIG_DEBUG_TIMEKEEPING is not set + +# +# Lock Debugging (spinlocks, mutexes, etc...) +# +# CONFIG_WW_MUTEX_SELFTEST is not set +# CONFIG_STACKTRACE is not set +# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set +CONFIG_DEBUG_BUGVERBOSE=y + +# +# RCU Debugging +# +# CONFIG_PROVE_RCU is not set +# CONFIG_TORTURE_TEST is not set +CONFIG_USER_STACKTRACE_SUPPORT=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_TRACING_SUPPORT=y +# CONFIG_FTRACE is not set +# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set +# CONFIG_DMA_API_DEBUG is not set + +# +# Runtime Testing +# +# CONFIG_TEST_LIST_SORT is not set +# CONFIG_TEST_SORT is not set +# CONFIG_ATOMIC64_SELFTEST is not set +# CONFIG_TEST_HEXDUMP is not set +# CONFIG_TEST_STRING_HELPERS is not set +# CONFIG_TEST_KSTRTOX is not set +# CONFIG_TEST_PRINTF is not set +# CONFIG_TEST_BITMAP is not set +# CONFIG_TEST_UUID is not set +# CONFIG_TEST_RHASHTABLE is not set +# CONFIG_TEST_HASH is not set +# CONFIG_TEST_LKM is not set +# CONFIG_TEST_USER_COPY is not set +# CONFIG_TEST_BPF is not set +# CONFIG_TEST_FIRMWARE is not set +# CONFIG_TEST_SYSCTL is not set +# CONFIG_TEST_UDELAY is not set +# CONFIG_TEST_STATIC_KEYS is not set +# CONFIG_TEST_KMOD is not set +# CONFIG_MEMTEST is not set +# CONFIG_BUG_ON_DATA_CORRUPTION is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_ARCH_KGDB=y +CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y +# CONFIG_ARCH_WANTS_UBSAN_NO_NULL is not set +# CONFIG_UBSAN is not set +CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y +# CONFIG_STRICT_DEVMEM is not set +CONFIG_X86_VERBOSE_BOOTUP=y +CONFIG_EARLY_PRINTK=y +# CONFIG_EARLY_PRINTK_DBGP is not set +# CONFIG_EARLY_PRINTK_USB_XDBC is not set +# CONFIG_X86_PTDUMP_CORE is not set +# CONFIG_DEBUG_WX is not set +CONFIG_DOUBLEFAULT=y +# CONFIG_IOMMU_STRESS is not set +CONFIG_HAVE_MMIOTRACE_SUPPORT=y +CONFIG_IO_DELAY_TYPE_0X80=0 +CONFIG_IO_DELAY_TYPE_0XED=1 +CONFIG_IO_DELAY_TYPE_UDELAY=2 +CONFIG_IO_DELAY_TYPE_NONE=3 +CONFIG_IO_DELAY_0X80=y +# CONFIG_IO_DELAY_0XED is not set +# CONFIG_IO_DELAY_UDELAY is not set +# CONFIG_IO_DELAY_NONE is not set +CONFIG_DEFAULT_IO_DELAY_TYPE=0 +# CONFIG_OPTIMIZE_INLINING is not set +# CONFIG_PUNIT_ATOM_DEBUG is not set +CONFIG_FRAME_POINTER_UNWINDER=y + +# +# Security options +# +# CONFIG_KEYS is not set +# CONFIG_SECURITY_DMESG_RESTRICT is not set +# CONFIG_SECURITY is not set +# CONFIG_SECURITYFS is not set +CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y +# CONFIG_HARDENED_USERCOPY is not set +# CONFIG_FORTIFY_SOURCE is not set +# CONFIG_STATIC_USERMODEHELPER is not set +CONFIG_DEFAULT_SECURITY_DAC=y +CONFIG_DEFAULT_SECURITY="" +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_AEAD=y +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_BLKCIPHER2=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG=y +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_RNG_DEFAULT=y +CONFIG_CRYPTO_AKCIPHER2=y +CONFIG_CRYPTO_KPP2=y +CONFIG_CRYPTO_ACOMP2=y +# CONFIG_CRYPTO_RSA is not set +# CONFIG_CRYPTO_DH is not set +# CONFIG_CRYPTO_ECDH is not set +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +# CONFIG_CRYPTO_USER is not set +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y +# CONFIG_CRYPTO_GF128MUL is not set +CONFIG_CRYPTO_NULL=y +CONFIG_CRYPTO_NULL2=y +CONFIG_CRYPTO_WORKQUEUE=y +# CONFIG_CRYPTO_CRYPTD is not set +# CONFIG_CRYPTO_MCRYPTD is not set +# CONFIG_CRYPTO_AUTHENC is not set +# CONFIG_CRYPTO_TEST is not set + +# +# Authenticated Encryption with Associated Data +# +# CONFIG_CRYPTO_CCM is not set +# CONFIG_CRYPTO_GCM is not set +# CONFIG_CRYPTO_CHACHA20POLY1305 is not set +# CONFIG_CRYPTO_SEQIV is not set +CONFIG_CRYPTO_ECHAINIV=y + +# +# Block modes +# +# CONFIG_CRYPTO_CBC is not set +# CONFIG_CRYPTO_CTR is not set +# CONFIG_CRYPTO_CTS is not set +# CONFIG_CRYPTO_ECB is not set +# CONFIG_CRYPTO_LRW is not set +# CONFIG_CRYPTO_PCBC is not set +# CONFIG_CRYPTO_XTS is not set +# CONFIG_CRYPTO_KEYWRAP is not set + +# +# Hash modes +# +# CONFIG_CRYPTO_CMAC is not set +CONFIG_CRYPTO_HMAC=y +# CONFIG_CRYPTO_XCBC is not set +# CONFIG_CRYPTO_VMAC is not set + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=y +# CONFIG_CRYPTO_CRC32C_INTEL is not set +# CONFIG_CRYPTO_CRC32 is not set +# CONFIG_CRYPTO_CRC32_PCLMUL is not set +# CONFIG_CRYPTO_CRCT10DIF is not set +# CONFIG_CRYPTO_GHASH is not set +# CONFIG_CRYPTO_POLY1305 is not set +# CONFIG_CRYPTO_MD4 is not set +# CONFIG_CRYPTO_MD5 is not set +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_RMD128 is not set +# CONFIG_CRYPTO_RMD160 is not set +# CONFIG_CRYPTO_RMD256 is not set +# CONFIG_CRYPTO_RMD320 is not set +# CONFIG_CRYPTO_SHA1 is not set +CONFIG_CRYPTO_SHA256=y +# CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_SHA3 is not set +# CONFIG_CRYPTO_TGR192 is not set +# CONFIG_CRYPTO_WP512 is not set + +# +# Ciphers +# +CONFIG_CRYPTO_AES=y +# CONFIG_CRYPTO_AES_TI is not set +# CONFIG_CRYPTO_AES_586 is not set +# CONFIG_CRYPTO_AES_NI_INTEL is not set +# CONFIG_CRYPTO_ANUBIS is not set +# CONFIG_CRYPTO_ARC4 is not set +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_CAMELLIA is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_DES is not set +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_SALSA20 is not set +# CONFIG_CRYPTO_SALSA20_586 is not set +# CONFIG_CRYPTO_CHACHA20 is not set +# CONFIG_CRYPTO_SEED is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_SERPENT_SSE2_586 is not set +# CONFIG_CRYPTO_TEA is not set +# CONFIG_CRYPTO_TWOFISH is not set +# CONFIG_CRYPTO_TWOFISH_586 is not set + +# +# Compression +# +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_LZO is not set +# CONFIG_CRYPTO_842 is not set +# CONFIG_CRYPTO_LZ4 is not set +# CONFIG_CRYPTO_LZ4HC is not set + +# +# Random Number Generation +# +# CONFIG_CRYPTO_ANSI_CPRNG is not set +CONFIG_CRYPTO_DRBG_MENU=y +CONFIG_CRYPTO_DRBG_HMAC=y +# CONFIG_CRYPTO_DRBG_HASH is not set +CONFIG_CRYPTO_DRBG=y +CONFIG_CRYPTO_JITTERENTROPY=y +# CONFIG_CRYPTO_USER_API_HASH is not set +# CONFIG_CRYPTO_USER_API_SKCIPHER is not set +# CONFIG_CRYPTO_USER_API_RNG is not set +# CONFIG_CRYPTO_USER_API_AEAD is not set +CONFIG_CRYPTO_HW=y +# CONFIG_CRYPTO_DEV_PADLOCK is not set +# CONFIG_CRYPTO_DEV_GEODE is not set +# CONFIG_CRYPTO_DEV_HIFN_795X is not set +# CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_DESC is not set +# CONFIG_CRYPTO_DEV_CCP is not set +# CONFIG_CRYPTO_DEV_QAT_DH895xCC is not set +# CONFIG_CRYPTO_DEV_QAT_C3XXX is not set +# CONFIG_CRYPTO_DEV_QAT_C62X is not set +# CONFIG_CRYPTO_DEV_QAT_DH895xCCVF is not set +# CONFIG_CRYPTO_DEV_QAT_C3XXXVF is not set +# CONFIG_CRYPTO_DEV_QAT_C62XVF is not set + +# +# Certificates for signature checking +# +CONFIG_HAVE_KVM=y +# CONFIG_VIRTUALIZATION is not set +# CONFIG_BINARY_PRINTF is not set + +# +# Library routines +# +CONFIG_BITREVERSE=y +# CONFIG_HAVE_ARCH_BITREVERSE is not set +CONFIG_RATIONAL=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GENERIC_NET_UTILS=y +CONFIG_GENERIC_FIND_FIRST_BIT=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_GENERIC_IOMAP=y +CONFIG_GENERIC_IO=y +CONFIG_ARCH_HAS_FAST_MULTIPLIER=y +# CONFIG_CRC_CCITT is not set +CONFIG_CRC16=y +# CONFIG_CRC_T10DIF is not set +# CONFIG_CRC_ITU_T is not set +CONFIG_CRC32=y +# CONFIG_CRC32_SELFTEST is not set +CONFIG_CRC32_SLICEBY8=y +# CONFIG_CRC32_SLICEBY4 is not set +# CONFIG_CRC32_SARWATE is not set +# CONFIG_CRC32_BIT is not set +# CONFIG_CRC4 is not set +# CONFIG_CRC7 is not set +# CONFIG_LIBCRC32C is not set +# CONFIG_CRC8 is not set +# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set +# CONFIG_RANDOM32_SELFTEST is not set +# CONFIG_XZ_DEC is not set +# CONFIG_XZ_DEC_BCJ is not set +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT_MAP=y +CONFIG_HAS_DMA=y +# CONFIG_DMA_NOOP_OPS is not set +# CONFIG_DMA_VIRT_OPS is not set +CONFIG_DQL=y +CONFIG_GLOB=y +# CONFIG_GLOB_SELFTEST is not set +CONFIG_NLATTR=y +# CONFIG_CORDIC is not set +CONFIG_DDR=y +# CONFIG_IRQ_POLL is not set +# CONFIG_SG_SPLIT is not set +CONFIG_SG_POOL=y +CONFIG_ARCH_HAS_SG_CHAIN=y +CONFIG_SBITMAP=y +# CONFIG_STRING_SELFTEST is not set diff --git a/floppy/doc/ELC-E Linux Awareness.pdf b/floppy/doc/ELC-E Linux Awareness.pdf new file mode 100644 index 0000000..d4797d9 Binary files /dev/null and b/floppy/doc/ELC-E Linux Awareness.pdf differ diff --git a/floppy/doc/FILE_ID.DIZ b/floppy/doc/FILE_ID.DIZ new file mode 100644 index 0000000..27549e1 --- /dev/null +++ b/floppy/doc/FILE_ID.DIZ @@ -0,0 +1,10 @@ +x86/MS-DOS Interrupt List, Release 61 +A Comprehensive listing of interrupt +calls, both documented and undocumented, +plus ports/memory/CMOS/etc. Over 9600 +entries (plus 5400 tables) in INTER61A +to INTER61D, utility programs and +viewers in INTER61E, and hypertext +conversion progs & WinHelp utilities in +INTER60F. Over 8 million bytes of +text! Released 2000/07/16. diff --git a/floppy/doc/INTERRUP.A b/floppy/doc/INTERRUP.A new file mode 100644 index 0000000..ea3a860 --- /dev/null +++ b/floppy/doc/INTERRUP.A @@ -0,0 +1,9492 @@ +Interrupt List Release 61 Last change 16jul00 +Copyright (c) 1989-1999,2000 Ralf Brown +--------!---FILELIST------------------------- +Please redistribute the following files unmodified as a group, in a quartet of +archives named INTER61A through INTER61D (preferably the original authenticated +PKZIP archives): + INTERRUP.1ST the read-me file, containing credits, availability info + INTERRUP.A INT 00 through INT 10/BE \ + INTERRUP.B INT 10/BF through INT 15/0F\ + INTERRUP.C INT 15/10 through INT 15/E7 \ + INTERRUP.D INT 15/E8 through INT 1A/B0 \ + INTERRUP.E INT 1A/B1 through INT 1F \ total 2520 pages at + INTERRUP.F INT 20 through INT 21/43 \ 60 lines per page, + INTERRUP.G INT 21/44 through INT 21/5E \ 2684 with INTPRINT -p + INTERRUP.H INT 21/5F through INT 21/E2 >(8754 entries) + INTERRUP.I INT 21/E3 through INT 21/F1 / (4135 tables) + INTERRUP.J INT 21/F2 through INT 25 / + INTERRUP.K INT 26 through INT 2F/15 / + INTERRUP.L INT 2F/16 through INT 2F/79 / + INTERRUP.M INT 2F/7A through INT 2F/D9 / + INTERRUP.N INT 2F/DA through INT 50 / + INTERRUP.O INT 51 through INT 61 / + INTERRUP.P INT 62 through INT 6A / + INTERRUP.Q INT 6B through INT 91 / + INTERRUP.R INT 92 through INT FF / + INTERRUP.PRI a brief introduction to interrupts + INTPRINT.COM a simple formatter that also generates a list summary + INTPRINT.DOC instructions for INTPRINT + OVERVIEW.LST brief listing of major uses of each interrupt + 86BUGS.LST a listing of CPU bugs and undocumented features + BIBLIO.LST bibliography of information sources for the list + CMOS.LST a description of the CMOS RAM data bytes + FARCALL.LST APIs available through FAR CALLs + GLOSSARY.LST a glossary of terms, abbreviations, and acronyms + MEMORY.LST format of the BIOS data area + OPCODES.LST a listing of recent and undocumented CPU instructions + PORTS.A a listing of I/O ports 0000h-013Fh + PORTS.B a listing of I/O ports 0140h-0AD5h + PORTS.C a listing of I/O ports 0AD6h-FFFFh + CATEGORY.KEY descriptions of divider-line category letters + COMBINE.COM combine the pieces of the list into a single file + COMBINE.DOC documentation for COMBINE +The following files should be distributed in an archive called INTER61E: + 86BUGSnn.ZIP programs to test for CPU bugs + COMBINE.ASM source code for COMBINE.COM + INT.* invoke interrupts from commandline + INTHLP??.ZIP Interrupt Helper viewer for the interrupt list + INTLIST.E Epsilon extension for handling list + INTPRINT.C source code for INTPRINT + INTSUM??.ZIP interrupt list browser (Interrupt Summary) + IVIEW*.ZIP another interrupt list browser +Finally, the following should be distributed in an archive called INTER61F: + INT2RTF.ZIP Slava Gostrenko's Windows Help converter + INT2WHLP.ZIP convert list into Windows Help database + INTERRUP.ICO icon for interrupt list + HINTSRCH.ZIP WinHelp DLL for full-text searches of interrupt list + IL2ME???.ZIP convert list into Multi-Edit help database + INT2GUID.* convert list into TurboPower GUIDE or POPHELP database + INT2HLP.ZIP convert list into QuickHelp database + INT2IPF.ZIP convert list into OS/2 .IPF database + INT2QH.* program to convert list into QuickHelp database + INT2TPH.ZIP convert to Turbo/Borland Pascal help file (.TPH) + INTHELP.* convert list into TurboPower GUIDE database + RB2NG???.ZIP convert list into Norton Guides database + WH_ED*.ZIP WinHelp-file editor +--------!---CONTACT_INFO--------------------- +If you notice any mistakes or omissions, please let me know! It is only with +YOUR help that the list can continue to grow at the current rate. Please send +all changes to me rather than distributing a modified version of the list. + +Please read the file INTERRUP.1ST before asking me any questions. You may find +that they have already been addressed. + + Ralf Brown + +Internet: ralf@pobox.com (currently forwards to ralf@telerama.lm.com) +FIDO: Ralf Brown 1:129/26.1 + or post a message to me in the DR_DEBUG echo (I probably won't see it + unless you address it to me) + +I reply to all e-mail submissions, but some of my replies bounce because of +bad return paths. If you don't get a response from me within a reasonable +period of time, send it again with a better return path (many mailers are +improperly configured and do not produce a valid From: address). +--------!---Note----------------------------- +See INTERRUP.1ST for the key to system abbreviations and a list of the +trademarks mentioned here. +--------!---DISCLAIMER----------------------- +DISCLAIMER: THIS MATERIAL IS PROVIDED "AS IS". I verify the information +contained in this list to the best of my ability, but I cannot be held +responsible for any problems caused by use or misuse of the information, +especially for those functions not officially documented. If it is marked +"internal" or undocumented, you should check it carefully to make sure it +works the same way in your version of the software (and please let me know +whether or not it works the same way). Information marked with "???" is +known to be incomplete or guesswork. +--------!---FLAGS---------------------------- +The use of -> instead of = signifies that the indicated register or register +pair contains a pointer to the specified item, rather than the item itself. +Register pairs (such as AX:BX) indicate that the item is split across the +registers, with the high-order half in the first register. + +One or more letters may follow the interrupt number; they have the following +meanings: U - undocumented function, u - partially documented function, +P - available only in protected mode, R - available only in real or V86 mode, +C - callout or callback (usually hooked rather than called), +O - obsolete (no longer present in current versions) +--------!---CATEGORIES----------------------- +The ninth column of the divider line preceding an entry usually contains a +classification code (the entry has not been classified if that character is +a dash). The codes currently in use are: + A - applications, a - access software (screen readers, etc), + B - BIOS, b - vendor-specific BIOS extensions, + C - CPU-generated, c - caches/spoolers, + D - DOS kernel, d - disk I/O enhancements, + E - DOS extenders, e - electronic mail, F - FAX, + f - file manipulation, G - debuggers/debugging tools, g - games, + H - hardware, h - vendor-specific hardware, + I - IBM workstation/terminal emulators, i - system info/monitoring, + J - Japanese, j - joke programs, + K - keyboard enhancers, k - file/disk compression, + l - shells/command interpreters, + M - mouse/pointing device, m - memory management, + N - network, n - non-traditional input devices, + O - other operating systems, + P - printer enhancements, p - power management, + Q - DESQview/TopView and Quarterdeck programs, + R - remote control/file access, r - runtime support, + S - serial I/O, s - sound/speech, + T - DOS-based task switchers/multitaskers, t - TSR libraries + U - resident utilities, u - emulators, + V - video, v - virus/antivirus, + W - MS Windows, + X - expansion bus BIOSes, x - non-volatile config storage + y - security, * - reserved (and not otherwise classified) +--------C-00--------------------------------- +INT 00 C - CPU-generated - DIVIDE ERROR +Desc: generated if the divisor of a DIV or IDIV instruction is zero or the + quotient overflows the result register; DX and AX will be unchanged. +Notes: on an 8086/8088, the return address points to the following instruction + on an 80286+, the return address points to the divide instruction + an 8086/8088 will generate this interrupt if the result of a division + is 80h (byte) or 8000h (word) +SeeAlso: INT 04,OPCODE "AAD" +--------G-00--------------------------------- +INT 00 - Zenith - ROM DEBUGGER +Desc: invokes the ROM Debugger when at the BIOS level; equivalent to + pressing Ctrl-Alt-Ins on booting. +Note: since DOS revectors INT 00, it is necessary to restore this vector to + its original ROM BIOS value in order to invoke the debugger once DOS + loads +SeeAlso: INT 03"Columbia" +--------C-01--------------------------------- +INT 01 C - CPU-generated - SINGLE STEP +Desc: generated after each instruction if TF (trap flag) is set; TF is + cleared on invoking the single-step interrupt handler +Notes: interrupts are prioritized such that external interrupts are invoked + after the INT 01 pushes CS:IP/FLAGS and clears TF, but before the + first instruction of the handler executes + used by debuggers for single-instruction execution tracing, such as + MS-DOS DEBUG's T command +SeeAlso: INT 03"CPU" +--------C-01--------------------------------- +INT 01 C - CPU-generated (80386+) - DEBUGGING EXCEPTIONS +Desc: generated by the CPU on various occurrences which may be of interest + to a debugger program +Note: events which may trigger the interrupt: + Instruction address breakpoint fault - will return to execute inst + Data address breakpoint trap - will return to following instruction + General detect fault, debug registers in use + Task-switch breakpoint trap + undocumented 386/486 opcode F1h - will return to following instruc +SeeAlso: INT 03"CPU" +--------H-02--------------------------------- +INT 02 C - external hardware - NON-MASKABLE INTERRUPT +Desc: generated by the CPU when the input to the NMI pin is asserted +Notes: return address points to start of interrupted instruction on 80286+ + on the 80286+, further NMIs are disabled until the next IRET + instruction, but one additional NMI is remembered by the hardware + and will be serviced after the IRET instruction reenables NMIs + maskable interrupts may interrupt the NMI handler if interrupts are + enabled + although the Intel documentation states that this interrupt is + typically used for power-failure procedures, it has many other uses + on IBM-compatible machines: + Memory parity error: all except Jr, CONV, and some machines + without memory parity + Breakout switch on hardware debuggers + Coprocessor interrupt: all except Jr and CONV + Keyboard interrupt: Jr, CONV + I/O channel check: CONV, PS50+ + Disk-controller power-on request: CONV + System suspend: CONV + Real-time clock: CONV + System watch-dog timer, time-out interrupt: PS50+ + DMA timer time-out interrupt: PS50+ + Low battery: HP 95LX + Module pulled: HP 95LX +--------m-02----SI0714----------------------- +INT 02 U - STB RAPIDMAP.SYS - ??? + SI = 0714h + ES:DI -> ??? +Return: ??? +SeeAlso: INT 67/AX=6100h"STB",PORT 00E1h"STB" +--------C-03--------------------------------- +INT 03 C - CPU-generated - BREAKPOINT +Desc: generated by the one-byte breakpoint instruction (opcode CCh) +Notes: used by debuggers to implement breakpoints, such as MS-DOS DEBUG's G + command + also used by Turbo Pascal versions 1,2,3 when {$U+} specified + return address points to byte following the breakpoint instruction + called by Novell DOS 7 EMM386 after displaying an exception error + message (GPF, illegal opcodes, etc.) and before waiting for user + input + called by QEMM-386 if the user presses 'I' (undocumented) when prompted + after an exception error message +SeeAlso: INT 01"CPU" +--------G-03--------------------------------- +INT 03 - Columbia PCs (desktop,VP portables) - ROM DEBUGGER +Desc: invokes the ROM Debugger if INT 03 has not been revectored; equivalent + to pressing Esc on booting. +SeeAlso: INT 00"Zenith",INT 03"Realia" +--------G-03--------------------------------- +INT 03 - Realia COBOL - DEBUGGER SUPPORT +Note: Realia COBOL checks for a signature eight bytes prior to the interrupt + handler when it starts up +BUG: if the offset of the INT 03 vector is less than 8, the compiler and + all executables generated by it will crash the system +SeeAlso: INT 03"Columbia" +--------G-03--------------------------------- +INT 03 U - Watcom WVIDEO, Watcom WD - OUTPUT DEBUGGING MESSAGE + STACK: DWORD selector + DWORD offset of ASCIZ message to display +Notes: the INT 03h instruction which invokes the debugger must be followed by + a JMP SHORT and the signature string "WVIDEO" + to check whether this interface is available, define a public byte + variable named ___WD_Present, which the debugger will set to 01h + before running the program +SeeAlso: AX=0910h +--------U-03--------------------------------- +INT 03 - DTown Utilities - POP UP +Program: DTown Software Development's DTown Utilities contains various tools + which are useful to programmers, such as a memory viewer and + disassembler +Note: DTU pops up on INT 03 (if not hooked by a debugger) to allow the + user to inspect memory or code when the machine crashes; various + memory managers will invoke INT 03 when displaying a CPU exception + error message (either automatically or when the user presses a + particular key) +SeeAlso: INT 2D/AL=20h"DTown" +--------G-030000----------------------------- +INT 03 - Soft-ICE - BACK DOOR COMMANDS - GET Soft-ICE VERSION + AX = 0000h + SI = magic value 4647h ('FG') + DI = magic value 4A4Dh ('JM') +Return: SI = BCD version (0280h = v2.80) +SeeAlso: INT 03/AX=0910h +--------G-0301------------------------------- +INT 03 - Soft-ICE - BACK DOOR COMMANDS - ??? + AH = 01h + SI = magic value 4647h ('FG') + DI = magic value 4A4Dh ('JM') +Return: ??? +SeeAlso: AX=0000h,AX=090Bh,INT 03/AH=10h +--------G-030900----------------------------- +INT 03 - Soft-ICE v2.80 - BACK DOOR COMMANDS - ??? + AX = 0900h + SI = magic value 4647h ('FG') + DI = magic value 4A4Dh ('JM') + DS:BX -> ??? + CX = ??? + DX = ??? +Return: ??? +SeeAlso: AX=0000h,AH=01h,AX=0902h,AX=0914h +--------G-030902----------------------------- +INT 03 - Soft-ICE v2.80 - BACK DOOR COMMANDS - POPUP & START A DEBUG SESSION + AX = 0902h + SI = magic value 4647h ('FG') + DI = magic value 4A4Dh ('JM') + DS:BX -> initial register values (see #00001) +Return: registers as specified in initial register values table +Note: This function is called by LDR.EXE in loading a program to + be debugged. After executing the function, Soft-ICE pops up its + debugging window and you may start debugging your program. +Return: ??? +SeeAlso: AX=0000h,AX=090Ah,AX=0910h,AX=0914h + +Format of Soft-ICE initial register values: +Offset Size Description (Table 00001) + 00h WORD initial value of SP + 02h WORD initial value of SS + 04h WORD initial value of IP + 06h WORD initial value of CS + 08h WORD initial value of DS and ES + 0Ah WORD ??? + 0Ch WORD ??? + 0Eh WORD ??? + 10h WORD initial value of AX + 12h WORD ??? (defaults to 000AH ???) + 14h WORD ??? (defaults to 0001H ???) + 16h WORD ??? (defaults to 0100H ???) +--------G-030903----------------------------- +INT 03 - Soft-ICE v2.80 - BACK DOOR COMMANDS - ??? + AX = 0903h + SI = magic value 4647h ('FG') + DI = magic value 4A4Dh ('JM') + DS:BX -> ??? + CX = ??? + DX = ??? +Return: ??? +SeeAlso: AX=0000h,AX=0902h,AX=0907h,AX=0914h +--------G-030907----------------------------- +INT 03 - Soft-ICE v2.80 - BACK DOOR COMMANDS - ??? + AX = 0907h + SI = magic value 4647h ('FG') + DI = magic value 4A4Dh ('JM') + DS:BX -> ??? + CX = ??? + DX = ??? +Return: ??? +SeeAlso: AX=0000h,AX=0903h,AX=090Ah,AX=0914h +--------G-03090A----------------------------- +INT 03 - Soft-ICE v2.80 - BACK DOOR COMMANDS - ??? + AX = 090Ah + SI = magic value 4647h ('FG') + DI = magic value 4A4Dh ('JM') + DS:BX -> ??? + CX = ??? + DX = ??? +Return: ??? +SeeAlso: AX=0000h,AX=0907h,AX=090Bh,AX=0914h +--------G-03090B----------------------------- +INT 03 - Soft-ICE v2.80 - BACK DOOR COMMANDS - ??? + AX = 090Bh + SI = magic value 4647h ('FG') + DI = magic value 4A4Dh ('JM') + DS:BX -> ??? + CX = ??? + DX = ??? +Return: ??? +SeeAlso: AX=0000h,AX=090Ah,AX=0910h,AX=0914h +--------G-030910----------------------------- +INT 03 - Soft-ICE - BACK DOOR COMMANDS - DISPLAY STRING IN Soft-ICE WINDOW + AX = 0910h + SI = magic value 4647h ('FG') + DI = magic value 4A4Dh ('JM') + DS:DX -> ASCIZ string to display (max 100 bytes, 0Dh OK) +Program: Soft-ICE is a debugger by Nu-Mega Technologies, Inc. +SeeAlso: INT 03"WVIDEO" +--------G-030911----------------------------- +INT 03 - Soft-ICE - BACK DOOR COMMANDS - EXECUTE Soft-ICE COMMAND + AX = 0911h + SI = magic value 4647h ('FG') + DI = magic value 4A4Dh ('JM') + DS:DX -> ASCIZ command string (max 100 bytes, 0Dh OK) +Return: nothing +SeeAlso: AX=0912h,AX=0913h +--------G-030912----------------------------- +INT 03 - Soft-ICE - BACK DOOR COMMANDS - GET BREAKPOINT INFORMATION + AX = 0912h + SI = magic value 4647h ('FG') + DI = magic value 4A4Dh ('JM') +Return: BH = entry number of last breakpoint set + BL = type of last breakpoint set (see #00002) + DH = entry number of last breakpoint to be triggered + DL = type of last triggered breakpoint (see #00002) +Program: Soft-ICE is a debugger by Nu-Mega Technologies, Inc. +SeeAlso: AX=0911h,AX=0913h,AX=0914h + +(Table 00002) +Values for Soft-ICE breakpoint type: + 00h BPM (breakpoint register types) + 01h I/O + 02h INTerrupt + 03h BPX (INT 03-style breakpoint) + 04h reserved + 05h range +--------G-030913----------------------------- +INT 03 - Soft-ICE v2.5x - BACK DOOR COMMANDS - SET Soft-ICE BREAKPOINT + AX = 0913h + SI = magic value 4647h ('FG') + DI = magic value 4A4Dh ('JM') + DS:DX -> breakpoint structure (see #00003) +Return: AX = status + 00h successful + BX = breakpoint number + 03h breakpoint table full + 06h memory limit error + 07h I/O limit error + 09h range limit error + 16h duplicate breakpoint +SeeAlso: AX=0911h,AX=0912h,AX=0914h + +Format of Soft-ICE breakpoint structure: +Offset Size Description (Table 00003) + 00h BYTE breakpoint type (see #00004) + 01h DWORD breakpoint address 1 + (lower range limit for memory BPs, + interrupt number for interrupt BPs, + address of BP for execution BPs, + I/O address (only word) for I/O BPs) + 05h DWORD breakpoint address 2 + (upper range limit for memory BPs, + optional value to check for for interrupt BPs, + overlay number (0 = root) for execution BPs) + 09h DWORD breakpoint address 3 + 0Dh BYTE breakpoint mode 1 (see #00005) + (for interrupt BPs = register to check + 00h no value checking + 01h check AL + 02h check AH + 03h check AX) + 0Eh BYTE breakpoint mode 2 (see #00005) + 0Fh BYTE breakpoint size (00h byte, 01h word, 03h dword) + 10h BYTE breakpoint pass count before program stop + 11h BYTE breakpoint state +Note: all unused fields should contain zeros + +(Table 00004) +Values for Soft-ICE breakpoint type: + 00h memory location + 01h memory range + 03h I/O + 04h interrupt + 05h execution break + +(Table 00005) +Values for Soft-ICE breakpoint mode: + 01h read + 02h write + 04h execution +--------G-030914----------------------------- +INT 03 - Soft-ICE v2.5x - BACK DOOR COMMANDS - REMOVE Soft-ICE BREAKPOINT + AX = 0914h + SI = magic value 4647h ('FG') + DI = magic value 4A4Dh ('JM') + BX = breakpoint number (returned by AX=0913h) +Return: BX = ??? +Program: Soft-ICE is a debugger by Nu-Mega Technologies, Inc. +SeeAlso: AX=0912h,AX=0913h +--------G-030918----------------------------- +INT 03 - Soft-ICE v2.80 - BACK DOOR COMMANDS - ??? + AX = 0918h + SI = magic value 4647h ('FG') + DI = magic value 4A4Dh ('JM') + DS:BX -> ??? + CX = ??? + DX = ??? +Return: ??? +SeeAlso: INT 03/AX=0000h,INT 03/AX=0910h,INT 03/AX=0914h,INT 03/AH=10h +--------G-0310------------------------------- +INT 03 - Soft-ICE v2.80 - BACK DOOR COMMANDS - ??? + AH = 10h + SI = magic value 4647h ('FG') + DI = magic value 4A4Dh ('JM') +Return: ??? +SeeAlso: INT 03/AX=0000h,INT 03/AX=0910h,INT 03/AH=01h,INT 03/AH=11h +--------G-0311------------------------------- +INT 03 - Soft-ICE v2.80 - BACK DOOR COMMANDS - ??? + AH = 11h + SI = magic value 4647h ('FG') + DI = magic value 4A4Dh ('JM') +Return: none??? +SeeAlso: INT 03/AX=0000h,INT 03/AX=0910h,INT 03/AH=10h,INT 03/AX=130Ch +--------G-03130C----------------------------- +INT 03 - Soft-ICE v2.80 - BACK DOOR COMMANDS - ??? + AX = 130Ch + SI = magic value 4647h ('FG') + DI = magic value 4A4Dh ('JM') + BX = ??? + CX = ??? + DX = ??? +Return: AX = ??? (1300h) +SeeAlso: INT 03/AX=0000h,INT 03/AX=0910h,INT 03/AH=11h,INT 03/AX=130Eh +--------G-03130E----------------------------- +INT 03 - Soft-ICE v2.80 - BACK DOOR COMMANDS - ??? + AX = 130Eh + SI = magic value 4647h ('FG') + DI = magic value 4A4Dh ('JM') + BX = ??? + CX = ??? + DX = ??? +Return: AX = ??? (1300h) +SeeAlso: INT 03/AX=0000h,INT 03/AX=0910h,INT 03/AX=130Ch,INT 03/AX=1313h +--------G-031313----------------------------- +INT 03 - Soft-ICE v2.80 - BACK DOOR COMMANDS - ??? + AX = 1313h + SI = magic value 4647h ('FG') + DI = magic value 4A4Dh ('JM') + BX = ??? + CX = ??? + DX = ??? +Return: AX = ??? (1300h) +SeeAlso: INT 03/AX=0000h,INT 03/AX=0910h,INT 03/AX=130Eh +--------G-030900----------------------------- +INT 03 - Soft-ICE v2.80 - BACK DOOR COMMANDS - ??? + AX = 0900h + SI = magic value 4647h ('FG') + DI = magic value 4A4Dh ('JM') +Return: none??? +SeeAlso: INT 03/AX=0000h,INT 03/AX=0910h,INT 03/AH=10h,INT 03/AH=12h +--------C-04--------------------------------- +INT 04 C - CPU-generated - INTO DETECTED OVERFLOW +Desc: the INTO instruction will generate this interrupt if OF (Overflow Flag) + is set; otherwise, INTO is effectively a NOP +Note: may be used for convenient overflow testing (to prevent errors from + propagating) instead of JO or a JNO/JMP combination +SeeAlso: INT 00"CPU",OPCODE "AAD",OPCODE "AAM" +--------B-05--------------------------------- +INT 05 - PRINT SCREEN +Desc: dump the current text screen to the first printer +Notes: normally invoked by the INT 09 handler when PrtSc key is pressed, but + may be invoked directly by applications + byte at 0050h:0000h contains status used by default handler + 00h not active + 01h PrtSc in progress + FFh last PrtSc encountered error + default handler is at F000h:FF54h in IBM PC and 100%-compatible BIOSes + since the BOUND instruction also calls INT 05h, but returns control + to the BOUND instruction, a failed BOUND check will cause an infinite + loop of PrtScreens unless the INT 05 handler is aware of the problem + and checks whether the interrupt was invoked by a BOUND instruction +BUG: some old BIOSes/applications appear to destroy BP on return +SeeAlso: INT 10/AH=12h/BL=20h,INT 4A"Tandy 2000",INT 5E"TI Professional" +SeeAlso: INT 80"Phar Lap" +--------C-05--------------------------------- +INT 05 C - CPU-generated (80186+) - BOUND RANGE EXCEEDED +Desc: generated by BOUND instruction when the value to be tested is less than + the indicated lower bound or greater than the indicated upper bound. +Note: returning from this interrupt re-executes the failing BOUND instruction +--------P-05454A----------------------------- +INT 05 U - PSPS v2.01 - EJECT PAGE + AX = 454Ah ('EJ') +Program: PSPS is shareware PostScript PrintScreen utility by A.N.D. + Technologies +Note: sends a ^D to the current printer +SeeAlso: AX=4E57h,AX=5053h,AX=554Eh +--------P-054E57----------------------------- +INT 05 U - PSPS v2.01 - SET PARAMETERS + AX = 4E57h ('NW') + ES:SI -> 11-byte buffer containing new settings +Return: buffer filled +SeeAlso: AX=454Ah,AX=5053h,INT 17/AH=63h +--------P-055053----------------------------- +INT 05 U - PSPS v2.01 - GET PARAMETERS + AX = 5053h ('PS') + ES:SI -> 11-byte buffer for settings +Return: buffer filled +SeeAlso: AX=4E57h,AX=554Eh,INT 17/AH=64h +--------P-05554E----------------------------- +INT 05 U - PSPS v2.01 - UNINSTALL + AX = 554Eh ('UN') +Program: PSPS is shareware PostScript PrintScreen utility by A.N.D. + Technologies +SeeAlso: AX=454Ah,AX=4E57h,INT 17/AH=62h +--------C-06--------------------------------- +INT 06 C - CPU-generated (80186+) - INVALID OPCODE +Desc: this interrupt is generated when the CPU attempts to execute an + invalid opcode (most protected-mode instructions are considered + invalid in real mode) or a BOUND, LDS, LES, or LIDT instruction + which specifies a register rather than a memory address +Notes: return address points to beginning of invalid instruction + with proper programming, this interrupt may be used to emulate + instructions which do not exist; many 386 BIOSes emulate the 80286 + undocumented LOADALL instruction which was removed from the 80386+ + generated by the 80386+ when the LOCK prefix is used with instructions + other than BTS, BTR, BTC, XCHG, XADD (486), CMPXCHG (486), INC, DEC, + NOT, NEG, ADD, ADC, SUB, SBB, AND, OR, or XOR, or any instruction + not accessing memory. +SeeAlso: INT 0C"CPU",INT 0D"CPU" +--------b-06--------------------------------- +INT 06 C - HP 95LX - SLEEP/WAKEUP +Desc: this interrupt is called just before going into light or deep + (shutdown) sleep and just after returning from light or deep sleep +SeeAlso: INT 0B"HP 95LX",INT 15/AX=4DD4h,INT 15/AH=4Eh +--------V-06--------------------------------- +INT 06 U - no-name clone - GRAPHICS CHARACTER TABLE (NOT A VECTOR!) +Desc: points at graphics data for characters 00h-7Fh of the current font +SeeAlso: INT 43"EGA",INT 44"VIDEO" +--------C-07--------------------------------- +INT 07 C - CPU-generated (80286+) - PROCESSOR EXTENSION NOT AVAILABLE +Desc: this interrupt is automatically called if a coprocessor instruction is + encountered when no coprocessor is installed +Note: can be used to emulate a numeric coprocessor in software +SeeAlso: INT 09"CPU" +--------H-08--------------------------------- +INT 08 C - IRQ0 - SYSTEM TIMER +Desc: generated 18.2 times per second by channel 0 of the 8254 system timer, + this interrupt is used to keep the time-of-day clock updated +Notes: programs which need to be invoked regularly should use INT 1C unless + they need to reprogram the timer while still keeping the time-of-day + clock running at the proper rate + default handler is at F000h:FEA5h in IBM PC and 100%-compatible BIOSes + may be masked by setting bit 0 on I/O port 21h +SeeAlso: INT 1C,INT 4A"SYSTEM",INT 50"DESQview",INT 58"DoubleDOS",INT 70"IRQ8" +SeeAlso: INT 78"GO32",INT D8"Screen Thief",MEM 0040h:0040h,MEM 0040h:006Ch +--------C-08--------------------------------- +INT 08 C - CPU-generated (80286+) - DOUBLE EXCEPTION DETECTED +Desc: called when multiple exceptions occur on one instruction, or an + exception occurs in an exception handler +Notes: called in protected mode if an interrupt above the defined limit of + the interrupt vector table occurs + return address points at beginning of instruction with errors or the + beginning of the instruction which was about to execute when the + external interrupt caused the exception + if an exception occurs in the double fault handler, the CPU goes into + SHUTDOWN mode (which circuitry in the PC/AT converts to a reset); + this "triple fault" is a faster way of returning to real mode on + many 80286 machines than the standard keyboard controller reset +--------H-09--------------------------------- +INT 09 C - IRQ1 - KEYBOARD DATA READY +Desc: this interrupt is generated when data is received from the keyboard. + This is normally a scan code (from either a keypress *or* a key + release), but may also be an ACK or NAK of a command on AT-class + keyboards. +Notes: this IRQ may be masked by setting bit 1 on I/O port 21h + if the BIOS supports an enhanced (101/102-key) keyboard, it calls + INT 15/AH=4Fh after reading the scan code (see #00006) from the + keyboard and before further processing; all further processing uses + the scan code returned from INT 15/AH=4Fh + the default interrupt handler is at F000h:E987h in 100%-compatible + BIOSes + the interrupt handler performs the following actions for certain + special keystrokes: + Ctrl-Break clear keyboard buffer, place word 0000h in buffer, + invoke INT 1B, and set flag at 0040h:0071h + SysReq invoke INT 15/AH=85h (SysReq is often labeled SysRq) + Ctrl-Numlock place system in a tight wait loop until next INT 09 + Ctrl-Alt-Del jump to BIOS startup code (either F000h:FFF0h or the + destination of the jump at that address) + Shift-PrtSc invoke INT 05 + Ctrl-Alt-Plus (HP Vectra) enable keyclick + Ctrl-Alt-Plus (many clones) set clock speed to high + Ctrl-Alt-Minus (HP Vectra) reduce keyclick volume + Ctrl-Alt-Minus (many clones) set clock speed to low + Ctrl-Alt-SysReq (HP Vectra) generate hard reset + Ctrl-Alt-S (many clones) run BIOS setup program + Ctrl-Alt-Esc (many clones) run BIOS setup program + Ctrl-Alt-Ins (many clones) run BIOS setup program + Ctrl-Alt-LeftShift-GrayMinus (some clones) turn off system cache + Ctrl-Alt-LeftShift-GrayPlus (some clones) turn on system cache + DR DOS hooks this interrupt to control the cursor shape (underscore/ + half block) for overwrite/insert mode + DR Multiuser DOS hooks this interrupt for cursor shape control and to + control whether Ctrl-Alt-Del reboots the current session or the + entire system +SeeAlso: INT 05"PRINT SCREEN",INT 0B"HP 95LX",INT 15/AH=4Fh,INT 15/AH=85h +SeeAlso: INT 16/AH=00h,INT 16/AH=10h,INT 1B,INT 2F/AX=A901h,INT 4A/AH=00h"TI" +SeeAlso: INT 51"DESQview",INT 59"DoubleDOS",INT 79"GO32" + +(Table 00006) +Values for keyboard make/break (scan) code: + 01h Esc 31h N + 02h 1 ! 32h M + 03h 2 @ 33h , < 63h F16 + 04h 3 # 34h . > 64h F17 + 05h 4 $ 35h / ? 65h F18 + 06h 5 % 36h Right Shift 66h F19 + 07h 6 ^ 37h Grey* 67h F20 + 08h 7 & 38h Alt 68h F21 (Fn) [*] + 09h 8 * 39h SpaceBar 69h F22 + 0Ah 9 ( 3Ah CapsLock 6Ah F23 + 0Bh 0 ) 3Bh F1 6Bh F24 + 0Ch - _ 3Ch F2 6Ch -- + 0Dh = + 3Dh F3 6Dh EraseEOF + 0Eh Backspace 3Eh F4 + 0Fh Tab 3Fh F5 6Fh Copy/Play + 10h Q 40h F6 + 11h W 41h F7 + 12h E 42h F8 72h CrSel + 13h R 43h F9 73h [*] + 14h T 44h F10 74h ExSel + 15h Y 45h NumLock 75h -- + 16h U 46h ScrollLock 76h Clear + 17h I 47h Home 77h [Note2] Joyst But1 + 18h O 48h UpArrow 78h [Note2] Joyst But2 + 19h P 49h PgUp 79h [Note2] Joyst Right + 1Ah [ { 4Ah Grey- 7Ah [Note2] Joyst Left + 1Bh ] } 4Bh LeftArrow 7Bh [Note2] Joyst Up + 1Ch Enter 4Ch Keypad 5 7Ch [Note2] Joyst Down + 1Dh Ctrl 4Dh RightArrow 7Dh [Note2] right mouse + 1Eh A 4Eh Grey+ 7Eh [Note2] left mouse + 1Fh S 4Fh End + 20h D 50h DownArrow + 21h F 51h PgDn + 22h G 52h Ins + 23h H 53h Del + 24h J 54h SysReq ---non-key codes--- + 25h K 55h [Note1] F11 00h kbd buffer full + 26h L 56h left \| (102-key) + 27h ; : 57h F11 AAh self-test complete + 28h ' " 58h F12 E0h prefix code + 29h ` ~ 59h [Note1] F15 E1h prefix code + 2Ah Left Shift 5Ah PA1 EEh ECHO + 2Bh \ | 5Bh F13 (LWin) F0h prefix code (key break) + 2Ch Z 5Ch F14 (RWin) FAh ACK + 2Dh X 5Dh F15 (Menu) FCh diag failure (MF-kbd) + 2Eh C FDh diag failure (AT-kbd) + 2Fh V FEh RESEND + 30h B FFh kbd error/buffer full +Notes: scan codes 56h-E1h are only available on the extended (101/102-key) + keyboard and Host Connected (122-key) keyboard; scan codes 5Bh-5Dh + are only available on the 122-key keyboard and the Microsoft Natural + Keyboard; scan codes 5Eh-76h are only available on the 122-key + keyboard + in the default configuration, break codes are the make scan codes with + the high bit set; make codes 60h,61h,70h, etc. are not available + because the corresponding break codes conflict with prefix codes + (code 2Ah is available because the self-test result code AAh is only + sent on keyboard initialization). An alternate keyboard + configuration can be enabled on AT and later systems with enhanced + keyboards, in which break codes are the same as make codes, but + prefixed with an F0h scan code + prefix code E0h indicates that the following make/break code is for a + "gray" duplicate to a key which existed on the original PC keyboard; + prefix code E1h indicates that the following make code has no + corresponding break code (currently only the Pause key generates no + break code) + the Microsoft Natural Keyboard sends make codes 5Bh, 5Ch, and 5Dh + (all with an E0h prefix) for the Left Windows, Right Windows, and + Menu keys on the bottom row + the European "Cherry G81-3000 SAx/04" keyboard contains contacts for + four additional keys, which can be made available by a user + modification; the three new keys located directly below the cursor + pad's Delete, End, and PgDn keys send make codes 66h-68h (F19-F21); + the fourth new key, named , sends make code 73h + the SysReq key is often labeled SysRq + the "Accord" ergonomic keyboard with optional touchpad (no other + identification visible on keyboard or in owner's booklet) has an + additional key above the Grey- key marked with a left-pointing + triangle and labeled "Fn" in the owner's booklet which returns + scan codes E0h 68h on make and E0h E8h on break + the "Preh Commander AT" keyboard with additional F11-F22 keys treats + F11-F20 as Shift-F1..Shift-F10 and F21/F22 as Ctrl-F1/Ctrl-F2; the + Eagle PC-2 keyboard with F11-F24 keys treated those additional keys + in the same way + [Note1] the "Cherry G80-0777" keyboard has additional F11-F15 keys + which generate make codes 55h-59h; some other extended keyboards + generate codes 55h and 56h for F11 and F12, which cannot be managed + by standard DOS keyboard drivers + [Note2] the Schneider/Amstrad PC1512 PC keyboards contain extra keys, + a mouse, and a digital joystick, which are handled like extra keys. + The joystick's motion scancodes are converted into standard arrow + keys by the BIOS, and the joystick and mouse button scan codes are + converted to FFFFh codes in the BIOS keyboard buffer + (see CMOS 15h"AMSTRAD"). + In addition to the keys listed in the table above, there are + Del-> (delete forward) 70h + Enter 74h +SeeAlso: #00602 at INT 16/AX=6F07h,#03214 at INT 4A/AH=05h +--------C-09--------------------------------- +INT 09 C - CPU-generated (80286,80386) - PROCESSOR EXTENSION PROTECTION ERROR +Desc: called if the coprocessor attempts to access memory outside a segment + boundary; it may occur at an arbitrary time after the coprocessor + instruction was issued +Notes: until the condition is cleared or the coprocessor is reset, the only + coprocessor instruction which may be used is FNINIT; WAIT or other + coprocessor instructions will cause a deadlock because the + coprocessor is still busy waiting for data + for the 486+, a coprocessor protection error generates an INT 0D +SeeAlso: INT 07"CPU" +--------*-09--------------------------------- +INT 09 P - internal hardware - RESERVED BY Intel (80486) +Note: this exception has been moved to INT 0D +SeeAlso: INT 09"CPU",INT 0D +--------H-0A--------------------------------- +INT 0A C - IRQ2 - LPT2 (PC), VERTICAL RETRACE INTERRUPT (EGA,VGA) +Notes: the TOPS and PCnet adapters use this interrupt request line by default + DOS 3.2 revectors IRQ2 to a stack-switching routine; DOS 3.3+ does so + unless STACKS=0 has been set in CONFIG.SYS. MS/PC-DOS 3.3+ use the + IBM Interrupt Sharing Protocol (see #02568) when hooking this IRQ + on ATs and above, the physical data line for IRQ2 is labeled IRQ9 and + connects to the slave 8259. The BIOS redirects the interrupt for + IRQ9 back here. + under DESQview, only the INT 15h vector and BASIC segment address (the + word at 0000h:0510h) may be assumed to be valid for the handler's + process + many VGA boards do not implement the vertical retrace interrupt, + including the IBM VGA Adapter where the traces are either cut or + removed +SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71,INT 7A"GO32" +--------H-0A--------------------------------- +INT 0A C - IRQ2 - Tandy 1000-series HARD DISK +Notes: this interrupt may be masked by setting bit 2 on I/O port 21h + the Tandy 1000, 1000A, and 1000HD use IRQ2 for the hard disk; the + 1000EX, HX, RLX, RLX-HD, RLX-B, RLX-HD-B use IRQ5 instead; the + 1000RL, RL-HD, SL, SL/2, TL, TL/2, and TL/3 are jumper-selectable + for either IRQ2 or IRQ5 (default IRQ5); the 1000SX and TX are + DIP-switch selectable for IRQ2 or IRQ5 (default IRQ2); the RSX and + RSX-HD use IRQ14. Tandy systems which use IRQ2 for the hard disk + interrupt use IRQ5 for vertical retrace. +SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71 +--------H-0A--------------------------------- +INT 0A - IRQ2 - ROLAND MPU MIDI INTERFACE +Note: newer Roland cards and MIDI interfaces by other manufacturers use + a jumper-selectable IRQ, but software and hardware generally defaults + to IRQ2 +SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71,INT 7A"GO32" +--------C-0A--------------------------------- +INT 0A CP - CPU-generated (80286+) - INVALID TASK STATE SEGMENT +Desc: automatically called during a task switch if the new TSS specified by + the task gate is invalid for any of the following reasons: + TSS limit is less than 43 (80286) or 103 (80386/80486) + LDT selector invalid or segment not present + null SS selector, or SS selector outside LDT/GDT limit + stack segment is read-only + stack segment DPL differs from new CPL, or RPL <> CPL + CS selector is outside LDT/GDT limit or not code + non-conforming code segment's DPL differs from CPL + conforming code segment's DPL > CPL + DS/ES selectors outside LDT/GDT limit or not readable segments +Note: the handler must use a task gate in order to have a valid TSS under + which to execute; it must also reset the busy bit in the new TSS +SeeAlso: INT 0B"CPU" +--------H-0B--------------------------------- +INT 0B C - IRQ3 - SERIAL COMMUNICATIONS (COM2) +Desc: automatically asserted by the UART when COM2 needs attention, if the + UART has been programmed to generate interrupts +Notes: the TOPS and PCnet adapters use this interrupt request line as an + alternate + on PS/2s, COM2 through COM8 share this interrupt; on many PC's, COM4 + shares this interrupt + may be masked by setting bit 3 on I/O port 21h + DOS 3.3+ revectors IRQ3 to a stack-switching routine unless STACKS=0 + has been set in CONFIG.SYS. MS/PC-DOS use the IBM Interrupt Sharing + Protocol (see #02568) when hooking this IRQ +SeeAlso: INT 0C"COM1",INT 53"DESQview",INT 5B"DoubleDOS",INT 7B"GO32" +--------C-0B--------------------------------- +INT 0B CP - CPU-generated (80286+) - SEGMENT NOT PRESENT +Desc: generated when loading a segment register if the segment descriptor + indicates that the segment is not currently in memory, unless the + segment is an LDT (see INT 0A"CPU") or stack segment (see + INT 0C"CPU") needed by a task switch +Note: may be used to implement virtual memory by loading in segments as they + are accessed, clearing the "not present" bit after loading +SeeAlso: INT 0A"CPU",INT 0E"CPU" +--------h-0B--------------------------------- +INT 0B - HP 95LX - LOW-LEVEL KEYBOARD HANDLER +Desc: this is the lowest-level keyboard handler on an HP 95LX palmtop +Note: debounces key, places the keycode in I/O register 60h, and calls INT 09 +SeeAlso: INT 09,INT 0D"HP 95LX",INT 15/AX=4DD4h +--------H-0C--------------------------------- +INT 0C C - IRQ4 - SERIAL COMMUNICATIONS (COM1) +Desc: automatically asserted by the UART when COM1 needs attention, if the + UART has been programmed to generate interrupts +BUG: this vector is modified but not restored by Direct Access v4.0, and + may be left dangling by other programs written with the same version + of compiled BASIC +Notes: on many PC's, COM3 shares this interrupt + may be masked by setting bit 4 on I/O port 21h + DOS 3.3+ revectors IRQ4 to a stack-switching routine unless STACKS=0 + has been set in CONFIG.SYS. MS/PC-DOS use the IBM Interrupt Sharing + Protocol (see #02568) when hooking this IRQ +SeeAlso: INT 0B"COM2",INT 54"DESQview",INT 5C"DoubleDOS",INT 7C"GO32" +--------C-0C--------------------------------- +INT 0C C - CPU-generated (80286+) - STACK FAULT +Desc: this interrupt is generated in protected mode on a stack overflow or + underflow, or if an inter-level transition or task switch references + a stack segment marked "not present"; it is generated in real mode + on accessing a word operand at SS:FFFFh +Note: the 80286 will shut down in real mode if SP=1 before a push. On the + PC AT and compatibles, external circuitry generates a reset on + shutdown. +SeeAlso: INT 0B"CPU",INT 0D"CPU" +--------I-0C--------------------------------- +INT 0C - IBM SYSTEM 36/38 WORKSTATION EMULATION - API POINTER +Desc: the IBM System 36/38 emulator may be invoked through a private API, + whose entry point address (see #00007) is offset 100h in the segment + pointed at by this vector + +(Table 00007) +Call the System 36/38 emulator API entry point with: + AH = function + 03h update screen + 05h select next session + AL = session number (00h-03h) + Return: AL = session type code + 00h not active + 01h display session + 02h printer session + FEh invalid session number + DS = requested session's data segment (0 if not active) + (see #00008) +Return: ??? + +Format of System 36/38 emulator's data area: +Offset Size Description (Table 00008) +13Eh BYTE bit flags for status line indicators turned on since this byte + last zerod +13Fh BYTE bit flags for status line indicators turned off since this + byte last set to FFh +140h WORD offset of EBCDIC to ASCII translation +146h WORD offset of EBCDIC screen buffer +148h WORD offset of EC (engineering change) level signature +150h BYTE "KEYI" +151h BYTE 5250 key scan code to be sent to remote +15Bh BYTE "SYSAV" +15Dh BYTE 5250 cursor column +15Eh BYTE 5250 cursor row +167h BYTE "DVCTAD" +178h BYTE "FLAGS" +184h BYTE "SESSNOAD" +193h BYTE "STNAD" +198h BYTE "NSDS" +Note: offsets are from the interrupt handler's segment +--------H-0D--------------------------------- +INT 0D C - IRQ5 - FIXED DISK (PC,XT), LPT2 (AT), reserved (PS/2) +Notes: under DESQview, only the INT 15h vector and BASIC segment address (the + word at 0000h:0510h) may be assumed to be valid for the handler's + process + DOS 3.3+ revectors IRQ5 to a stack-switching routine unless STACKS=0 + has been set in CONFIG.SYS. MS/PC-DOS use the IBM Interrupt Sharing + Protocol (see #02568) when hooking this IRQ + the Tandy 1000, 1000A, and 1000HD use IRQ2 for the hard disk; the + 1000EX, HX, RLX, RLX-HD, RLX-B, RLX-HD-B use IRQ5 instead; the + 1000RL, RL-HD, SL, SL/2, TL, TL/2, and TL/3 are jumper-selectable + for either IRQ2 or IRQ5 (default IRQ5); the 1000SX and TX are + DIP-switch selectable for IRQ2 or IRQ5 (default IRQ2); the RSX and + RSX-HD use IRQ14. Tandy systems which use IRQ2 for the hard disk + interrupt use IRQ5 for vertical retrace. + may be masked by setting bit 5 on I/O port 21h +SeeAlso: INT 0E"IRQ6",INT 0F"IRQ7",INT 55"DESQview",INT 5D"DoubleDOS" +SeeAlso: INT 7D"GO32" +--------H-0D--------------------------------- +INT 0D C - IRQ5 - Tandy 1000 60 Hz RAM REFRESH +Desc: used to ensure that the dynamic RAM retains its contents in earlier + 1000-series models; later models use normal DMA for RAM refresh + (some early models have no DMA unless it is added via an expansion + card) +SeeAlso: INT 55 +--------h-0D--------------------------------- +INT 0D - HP 95LX - INFRARED INTERRUPT +Desc: this interrupt is used to perform communications over the infrared + data link +SeeAlso: INT 0B"HP 95LX",INT 0E"HP 95LX",INT 15/AX=4DD4h +--------C-0D--------------------------------- +INT 0D C - CPU-generated (80286+) - GENERAL PROTECTION VIOLATION +Desc: the CPU generates this interrupt when it detects a protection violation + which does not fit under any other category having a separate + interrupt +Notes: called in real mode when + an instruction accesses a memory operand extending beyond offset + FFFFh (i.e. WORD at FFFFh or DWORD at FFFDh or higher) in segment + CS, DS, ES, FG, or GS + a PUSH MEM or POP MEM instruction contains an invalid bit encoding + in the second byte + an instruction exceeds the maximum length allowed (10 bytes for + 80286, 15 bytes for 80386/80486) + an instruction wraps from offset FFFFh to offset 0000h + called in protected mode on protection violations not covered by INT 06 + through INT 0C, including + segment limit violations + write to read-only segments + accesses using null DS or ES selectors + accesses to segments with privilege greater than CPL + wrong descriptor type + called on 80486 protected-mode floating-point protection fault +SeeAlso: INT 09"80486",INT 0C"STACK" +--------H-0E--------------------------------- +INT 0E C - IRQ6 - DISKETTE CONTROLLER +Desc: this interrupt is generated by the floppy disk controller on + completion of an operation +Notes: default handler is at F000h:EF57h in IBM PC and 100%-compatible BIOSes + may be masked by setting bit 6 on I/O port 21h + DOS 3.3+ revectors IRQ6 to a stack-switching routine unless STACKS=0 + has been set in CONFIG.SYS. MS/PC-DOS use the IBM Interrupt Sharing + Protocol (see #02568) when hooking this IRQ +SeeAlso: INT 0D"IRQ5",INT 56"DESQview",INT 5E"DoubleDOS",INT 7E"GO32" +--------C-0E--------------------------------- +INT 0E C - CPU-generated (80386+ native mode) - PAGE FAULT +Desc: this interrupt is generated in protected and virtual-86 modes on + attempting to access a 4K memory page whose page table entry has + the "present" bit cleared +Notes: used to implement virtual memory--when the page fault occurs, the + operating system can load the appropriate page from disk + a protected-mode program written in the Flat memory model will often + generate this interrupt (typically reported as an Exception #14 or + Exception 0E with a register dump) when dereferencing an + uninitialized or corrupted pointer +SeeAlso: INT 0B"CPU" +--------h-0E--------------------------------- +INT 0E C - HP 95LX - EXTERNAL CARD INTERRUPT +SeeAlso: INT 0D"HP 95LX",INT 0F"HP 95LX",INT 15/AX=4DD4h +--------H-0F--------------------------------- +INT 0F C - IRQ7 - PARALLEL PRINTER +Desc: this interrupt is generated by the LPT1 printer adapter when the + printer becomes ready +Notes: most printer adapters do not reliably generate this interrupt + the 8259 interrupt controller generates an interrupt corresponding to + IRQ7 when an error condition occurs +SeeAlso: INT 0D"IRQ5",INT 57"DESQview",INT 5F"DoubleDOS",INT 7F"GO32" +SeeAlso: MEM 0040h:006Bh +--------h-0F--------------------------------- +INT 0F C - HP 95LX - REAL-TIME CLOCK +SeeAlso: INT 0E"HP 95LX",INT 15/AX=4DD4h,INT 70"IRQ8" +--------C-10--------------------------------- +INT 10 C - CPU-generated (80286+) - COPROCESSOR ERROR +Desc: this interrupt is generated by the CPU when the -ERROR pin is asserted + by the coprocessor +Note: AT's and clones usually wire the coprocessor to use IRQ13, but not all + get it right +SeeAlso: INT 09"hardware",INT 75 +--------V-10--------------------------------- +INT 10h - LIRVGA19 - CHAR HEIGHT HOOK +Desc: LIRVGA19.COM fixes display problems on some notebooks by hooking + INT 10h and resetting the BIOS character height (MEM 0040h:0085h) + to 10h on return, if it happens to be greater than 10h. +Program: LIRVGA19.COM is part of the Lithuanian LIR codepage support package + developed by LABAS u.a.b. +SeeAlso: INT 10/AX=5555h/BX=BBBBh,MEM 0040h:0085h +--------V-1000------------------------------- +INT 10 - VIDEO - SET VIDEO MODE + AH = 00h + AL = desired video mode (see #00010) +Return: AL = video mode flag (Phoenix, AMI BIOS) + 20h mode > 7 + 30h modes 0-5 and 7 + 3Fh mode 6 + AL = CRT controller mode byte (Phoenix 386 BIOS v1.10) +Desc: specify the display mode for the currently active display adapter +InstallCheck: for Ahead adapters, the signature "AHEAD" at C000h:0025h + for Paradise adapters, the signature "VGA=" at C000h:007Dh + for Oak Tech OTI-037/057/067/077 chipsets, the signature "OAK VGA" at + C000h:0008h + for ATI adapters, the signature "761295520" at C000h:0031h; the byte + at C000h:0043h indicates the chipset revision: + 31h for 18800 + 32h for 18800-1 + 33h for 18800-2 + 34h for 18800-4 + 35h for 18800-5 + 62h for 68800AX (Mach32) (see also #00732) + the two bytes at C000h:0040h indicate the adapter type + "22" EGA Wonder + "31" VGA Wonder + "32" EGA Wonder800+ + the byte at C000h:0042h contains feature flags + bit 1: mouse port present + bit 4: programmable video clock + the byte at C000h:0044h contains additional feature flags if chipset + byte > 30h (see #00009) + for Genoa video adapters, the signature 77h XXh 99h 66h at C000h:NNNNh, + where NNNNh is stored at C000h:0037h and XXh is + 00h for Genoa 6200/6300 + 11h for Genoa 6400/6600 + 22h for Genoa 6100 + 33h for Genoa 5100/5200 + 55h for Genoa 5300/5400 + for SuperEGA BIOS v2.41+, C000h:0057h contains the product level + for Genoa SuperEGA BIOS v3.0+, C000h:0070h contains the signature + "EXTMODE", indicating support for extended modes +Notes: IBM standard modes do not clear the screen if the high bit of AL is set + (EGA or higher only) + the Tseng ET4000 chipset is used by the Orchid Prodesigner II, Diamond + SpeedSTAR VGA, Groundhog Graphics Shadow VGA, Boca Super X VGA, + Everex EV-673, etc. + intercepted by GRAFTABL from Novell DOS 7 and Caldera OpenDOS 7.01. +SeeAlso: AX=0070h,AX=007Eh,AX=10E0h,AX=10F0h,AH=40h,AX=6F05h,AH=FFh"GO32" +SeeAlso: INT 33/AX=0028h,INT 5F/AH=00h,INT 62/AX=0001h,MEM 0040h:0049h +Index: installation check;Tseng ET4000|installation check;Ahead video cards +Index: installation check;Oak Technologies|installation check;ATI video cards +Index: installation check;Paradise video|installation check;Genoa video cards + +Bitfields for ATI additional feature flags: +Bit(s) Description (Table 00009) + 0 70 Hz non-interlaced display + 1 Korean (double-byte) characters + 2 45 MHz memory clock rather than 40 MHz + 3 zero wait states + 4 paged ROMs + 6 no 8514/A monitor support + 7 HiColor DAC + +(Table 00010) +Values for video mode: + text/ text pixel pixel colors disply scrn system + grph resol box resolution pages addr + 00h = T 40x25 8x8 320x200 16gray 8 B800 CGA,PCjr,Tandy + = T 40x25 8x14 320x350 16gray 8 B800 EGA + = T 40x25 8x16 320x400 16 8 B800 MCGA + = T 40x25 9x16 360x400 16 8 B800 VGA + 01h = T 40x25 8x8 320x200 16 8 B800 CGA,PCjr,Tandy + = T 40x25 8x14 320x350 16 8 B800 EGA + = T 40x25 8x16 320x400 16 8 B800 MCGA + = T 40x25 9x16 360x400 16 8 B800 VGA + 02h = T 80x25 8x8 640x200 16gray 4 B800 CGA,PCjr,Tandy + = T 80x25 8x14 640x350 16gray 8 B800 EGA + = T 80x25 8x16 640x400 16 8 B800 MCGA + = T 80x25 9x16 720x400 16 8 B800 VGA + 03h = T 80x25 8x8 640x200 16 4 B800 CGA,PCjr,Tandy + = T 80x25 8x14 640x350 16/64 8 B800 EGA + = T 80x25 8x16 640x400 16 8 B800 MCGA + = T 80x25 9x16 720x400 16 8 B800 VGA + = T 80x43 8x8 640x350 16 4 B800 EGA,VGA [17] + = T 80x50 8x8 640x400 16 4 B800 VGA [17] + 04h = G 40x25 8x8 320x200 4 . B800 CGA,PCjr,EGA,MCGA,VGA + 05h = G 40x25 8x8 320x200 4gray . B800 CGA,PCjr,EGA + = G 40x25 8x8 320x200 4 . B800 MCGA,VGA + 06h = G 80x25 8x8 640x200 2 . B800 CGA,PCjr,EGA,MCGA,VGA + = G 80x25 . . mono . B000 HERCULES.COM on HGC [14] + 07h = T 80x25 9x14 720x350 mono var B000 MDA,Hercules,EGA + = T 80x25 9x16 720x400 mono . B000 VGA + 08h = T 132x25 8x8 1056x200 16 . B800 ATI EGA/VGA Wonder [2] + = T 132x25 8x8 1056x200 mono . B000 ATI EGA/VGA Wonder [2] + = G 20x25 8x8 160x200 16 . . PCjr, Tandy 1000 + = G 80x25 8x16 640x400 color . . Tandy 2000 + = G 90x43 8x8 720x348 mono . B000 Hercules + MSHERC.COM + = G 90x45 8x8 720x360 mono . B000 Hercules + HERKULES [11] + = G 90x29 8x12 720x348 mono . . Hercules + HERCBIOS [15] + 09h = G 40x25 8x8 320x200 16 . . PCjr, Tandy 1000 + = G 80x25 8x16 640x400 mono . . Tandy 2000 + = G 90x43 8x8 720x348 mono . . Hercules + HERCBIOS [15] + 0Ah = G 80x25 8x8 640x200 4 . . PCjr, Tandy 1000 + 0Bh = reserved (EGA BIOS internal use) + = G 80x25 8x8 640x200 16 . . Tandy 1000 SL/TL [13] + 0Ch = reserved (EGA BIOS internal use) + 0Dh = G 40x25 8x8 320x200 16 8 A000 EGA,VGA + 0Eh = G 80x25 8x8 640x200 16 4 A000 EGA,VGA + 0Fh = G 80x25 8x14 640x350 mono 2 A000 EGA,VGA + 10h = G 80x25 8x14 640x350 4 2 A000 64k EGA + = G . . 640x350 16 . A000 256k EGA,VGA + 11h = G 80x30 8x16 640x480 mono . A000 VGA,MCGA,ATI EGA,ATI VIP + 12h = G 80x30 8x16 640x480 16/256K . A000 VGA,ATI VIP + = G 80x30 8x16 640x480 16/64 . A000 ATI EGA Wonder + = G . . 640x480 16 . . UltraVision+256K EGA + 13h = G 40x25 8x8 320x200 256/256K . A000 VGA,MCGA,ATI VIP + 14h = T 132x25 Nx16 . 16 . B800 XGA, IBM Enhanced VGA [3] + = T 132x25 8x16 1056x400 16/256K . . Cirrus CL-GD5420/5422/5426 + = G 80x25 8x8 640x200 . . . Lava Chrome II EGA + = G . . 640x400 16 . . Tecmar VGA/AD + 15h = G 80x25 8x14 640x350 . . . Lava Chrome II EGA + 16h = G 80x25 8x14 640x350 . . . Lava Chrome II EGA + = G . . 800x600 16 . . Tecmar VGA/AD + 17h = T 132x25 . . . . . Tecmar VGA/AD + = T 80x43 8x8 640x348 16 4 B800 Tseng ET4000 BIOS [10] + = G 80x34 8x14 640x480 . . . Lava Chrome II EGA + 18h = T 80x30 9x16 720x480 16 1 A000 Realtek RTVGA [12] + = T 132x25 . . mono . B000 Cirrus 5320 chipset + = T 132x44 8x8 1056x352 mono . B000 Tseng Labs EVA + = T 132x44 9x8 1188x352 4gray 2 B000 Tseng ET3000 chipset + = T 132x44 8x8 1056x352 16/256 2 B000 Tseng ET4000 chipset + = G 80x34 8x14 640x480 . . . Lava Chrome II EGA + = G 1024x768 16 . . Tecmar VGA/AD + 19h = T 80x43 9x11 720x473 16 1 A000 Realtek RTVGA [12] + = T 132x25 8x14 1056x350 mono . B000 Tseng Labs EVA + = T 132x25 9x14 1188x350 4gray 4 B000 Tseng ET3000 chipset + = T 132x25 8x14 1056x350 16/256 4 B000 Tseng ET4000 chipset + = T 132x34 . . mono . B000 Cirrus 5320 chipset + 1Ah = T 80x60 9x8 720x480 16 1 A000 Realtek RTVGA [12] + = T 132x28 8x13 1056x364 mono . B000 Tseng Labs EVA + = T 132x28 9x13 1188x364 4gray 4 B000 Tseng ET3000 chipset + = T 132x28 8x13 1056x364 16/256 4 B000 Tseng ET4000 chipset + = T 132x44 . . mono . B000 Cirrus 5320 chipset + = G . . 640x350 256 . . Tecmar VGA/AD + 1Bh = T 132x25 9x14 1188x350 16 1 A000 Realtek RTVGA [12] + = G . . 640x400 256 . . Tecmar VGA/AD + 1Ch = T 132x25 . . . . . Cirrus 5320 chipset + = T 132x30 9x16 1188x480 16 1 A000 Realtek RTVGA [12] + = G . . 640x480 256 . . Tecmar VGA/AD + 1Dh = T 132x43 . . . . . Cirrus 5320 chipset + = T 132x43 9x11 1188x473 16 1 A000 Realtek RTVGA [12] + = G . . 800x600 256 . . Tecmar VGA/AD + 1Eh = T 132x44 . . . . . Cirrus 5320 chipset + = T 132x60 9x8 1188x480 16 1 A000 Realtek RTVGA [12] + 1Fh = G 100x75 8x8 800x600 16 1 A000 Realtek RTVGA + 20h = T 132x25 . . 16 . . Avance Logic AL2101 + = G 40x16 . 240x128 mono . B000 HP 95LX/100LX/200LX + = G 80x30 8x16 640x480 16 . . C&T 64310/65530 BIOS + = G 120x45 8x16 960x720 16 1 A000 Realtek RTVGA + 21h = T 80x25 . . mono . B000 HP 200LX + = T 132x30 . . 16 . . Avance Logic AL2101 + = T 132x44 9x9 1188x396 16/256K . B800 WD90C + = T 132x44 9x9 1188x396 16 . B800 Diamond Speedstar 24X + = T 132x60 . . 16 2 B800 Tseng ET4000 chipset [10] + = G 80x43 8x8 720x348 mono . B000 DESQview 2.x+Hercules [4] + = G 128x48 8x16 1024x768 16 1 A000 Realtek RTVGA [12] + 22h = T 132x43 . . . . . Allstar Peacock (VGA) + = T 132x43 . . 16 . . Avance Logic AL2101 + = T 132x44 8x8 1056x352 . . B800 Tseng Labs EVA + = T 132x44 9x8 1188x352 16/256K 2 B800 Tseng ET3000 chipset + = T 132x44 8x8 1056x352 16/256K 2 B800 Tseng ET4000 chipset + = T 132x44 8x8 1056x352 . . . Ahead Systems EGA2001 + = T 132x44 8x8 1056x352 16 2 B800 Ahead B + = T 132x44 8x9 1056x398 16 . . STB Lightspeed ET4000/W32P + = T 132x44 . . 16 . . Orchid Prodesigner VGA + = G 80x43 8x8 720x348 mono . B800 DESQview 2.x+Hercules [4] + = G 96x64 8x16 768x1024 16 1 A000 Realtek RTVGA + = G 100x37 8x16 800x600 16 . . C&T 64310/65530 BIOS + 23h = T 132x25 6x14 792x350 . . B800 Tseng Labs EVA + = T 132x25 9x14 1188x350 16/256K 4 B800 Tseng ET3000 chipset + = T 132x25 8x14 1056x350 16/256 4 B800 Tseng ET4000 chipset + = T 132x25 8x14 1056x350 . . . Ahead Systems EGA2001 + = T 132x25 8x14 1056x350 16 4 B800 Ahead B + = T 132x25 8x8 1056x200 16 . B800 ATI EGA Wonder,ATI VIP + = T 132x25 . . . . . Cirrus 5320 chipset + = T 132x28 . . . . . Allstar Peacock (VGA) + = T 132x28 . . 16 . . Orchid Prodesigner VGA + = T 132x60 . . 16 . . Avance Logic AL2101 + = G 128x48 8x16 1024x768 4 1 A000 Realtek RTVGA + 24h = T 80x30 . . 16 . . Avance Logic AL2101 + = T 132x25 . . . . . Allstar Peacock (VGA) + = T 132x25 . . 16 . . Orchid Prodesigner VGA + = T 132x28 6x13 792x364 . . B800 Tseng Labs EVA + = T 132x28 9x13 1188x364 16/256K 4 B800 Tseng ET3000 chipset + = T 132x28 8x12 1056x336 16 1 B800 Ahead B + = T 132x28 8x13 1056x364 16/256K 4 B800 Tseng ET4000 chipset + = T 132x28 8x14 1056x392 16 . . STB Lightspeed ET4000/W32P + = T 132x28 . . . . . Cirrus 5320 chipset + = G 64x32 8x16 512x512 256 1 A000 Realtek RTVGA + = G 128x48 8x16 1024x768 16 . . C&T 64310/65530 BIOS + 25h = T 80x43 . . 16 . . Avance Logic AL2101 + = G 80x60 8x8 640x480 . . A000 Tseng Labs EVA + = G 80x60 8x8 640x480 16/256K 1 A000 Tseng ET3000/4000 chipset + = G . . 640x480 16 . . VEGA VGA + = G 80x60 8x8 640x480 16 . A000 Orchid Prodesigner VGA + = G 80x60 8x8 640x480 16 1 A000 Ahead B (same as 26h) + = G . . 640x480 16 . . NEC GB-1 + = G . . 640x480 16 . . Cirrus 5320 chipset + = G . . 640x400 256 . . Realtek RTVGA + 26h = T 80x60 8x8 640x480 . . . Tseng Labs EVA + = T 80x60 8x8 640x480 16/256K 3 B800 Tseng ET3000/4000 chipset + = T 80x60 . . . . . Allstar Peacock (VGA) + = T 80x60 . . 16 . . Orchid ProDesigner VGA + = T 80x60 . . 16 . . Avance Logic AL2101 + = G 80x60 8x8 640x480 . . . Ahead Systems EGA2001 + = G 80x60 8x8 640x480 16 1 A000 Ahead B (same as 25h) + = G . . 640x480 256 . . Realtek RTVGA + 27h = T 132x25 8x8 1056x200 mono . B000 ATI EGA Wonder,ATI VIP + = G . . 720x512 16 . . VEGA VGA + = G . . 720x512 16 . . Genoa + = G 100x75 8x8 800x600 256 1 A000 Realtek RTVGA [12] + = G . . 960x720 16 . . Avance Logic AL2101 + 28h = T ???x??? . . . . . VEGA VGA + = G . . 512x512 256 . . Avance Logic AL2101 + = G . . 1024x768 256 . . Realtek RTVGA (1meg) + = G 160x64 8x16 1280x1024 16 . . Chips&Technologies 64310 [1] + 29h = G . . 640x400 256 . . Avance Logic AL2101 + = G . . 800x600 16 . . VEGA VGA + = G 100x37 8x16 800x600 16 . A000 Orchid + = G . . 800x600 16 . A000 STB,Genoa,Sigma + = G . . 800x600 16 . . Allstar Peacock (VGA) + = G 100x37 8x16 800x600 16/256K 1 A000 Tseng ET3000/4000 chipset + = G . . 800x600 ??? . . EIZO MDB10 + = G . . 800x600 16 . . Cirrus 5320 chipset + = G NA . 800x600 16 . . Compaq QVision 1024/1280 + = G . . 1024x1024 256 . . Realtek RTVGA BIOS v3.C10 + 2Ah = T 100x40 . . . . . Allstar Peacock (VGA) + = T 100x40 8x16 800x640 16 . . Orchid Prodesigner VGA + = T 100x40 8x15 800x600 16/256K 4 B800 Tseng ET3000/4000 chipset + = T 100x40 8x15 800x600 16 . . STB Lightspeed ET4000/W32P + = G . . 640x480 256 . . Avance Logic AL2101 + = G . . 1280x1024 16 . . Realtek RTVGA + 2Bh = G . . 800x600 16 . . Avance Logic AL2101 + 2Ch = G . . 800x600 256 . . Avance Logic AL2101 + 2Dh = G . . 640x350 256 . . VEGA VGA + = G . . 640x350 256/256K . A000 Orchid, Genoa, STB + = G 80x25 8x14 640x350 256/256K 1 A000 Tseng ET3000/4000 chipset + = G . . 640x350 256 . . Cirrus 5320 chipset + = G 80x25 8x14 640x350 256 . . STB Lightspeed ET4000/W32P + = G . . 768x1024 16 . . Avance Logic AL2101 + 2Eh = G . . 640x480 256 . . VEGA VGA + = G 80x30 8x16 640x480 256/256K . A000 Orchid + = G . . 640x480 256/256K . A000 STB,Genoa,Sigma + = G 80x30 8x16 640x480 256/256K 1 A000 Tseng ET3000/4000 chipset + = G . . 640x480 256/256K . . Compaq QVision 1024/1280 + = G . . 768x1024 256 . . Avance Logic AL2101 + 2Fh = T 160x50 8x8 1280x400 16 4 B800 Ahead B (Wizard/3270) + = G . . 720x512 256 . . VEGA VGA + = G . . 720x512 256 . . Genoa + = G 80x25 8x16 640x400 256/256K 1 A000 Tseng ET4000 chipset + = G . . 1024x768 4 . . Avance Logic AL2101 + 30h = G 80x30 8x16 640x480 256 . . C&T 64310/65530 BIOS + = G . . . . . B800 AT&T 6300 + = G . . 720x350 2 . . 3270 PC + = G . . 800x600 256 . . VEGA VGA + = G 100x37 8x16 800x600 256/256K . A000 Orchid + = G . . 800x600 256/256K . A000 STB,Genoa,Sigma + = G . . 800x600 256 . . Cardinal + = G 100x37 8x16 800x600 256/256K 1 A000 Tseng ET3000/4000 chipset + = G . . 1024x768 16 . . Avance Logic AL2101 + 31h = G . . 1024x768 256 . . Avance Logic AL2101 + 32h = T 80x34 8x10 . 16 4 B800 Ahead B (Wizard/3270) + = G . . 640x480 256 . . Compaq QVision 1024/1280 + = G 100x37 8x16 800x600 256 . . C&T 64310/65530 BIOS + 33h = T 132x44 8x8 . 16 . B800 ATI EGA Wonder,ATI VIP + = T 80x34 8x8 . 16 4 B800 Ahead B (Wizard/3270) + 34h = T 80x66 8x8 . 16 4 B800 Ahead B (Wizard/3270) + = G . . 800x600 256 . . Compaq QVision 1024/1280 + = G 128x48 8x16 1024x768 256 . . Chips&Technologies 64310 + 36h = G . . 960x720 16 . . VEGA VGA, STB + = G . . 960x720 16 . A000 Tseng ET3000 only + = G . . 1280x1024 16 . . Avance Logic AL2101 + 37h = T 132x44 8x8 . mono . B800 ATI EGA Wonder,ATI VIP + = G . . 1024x768 16 . . VEGA VGA + = G 128x48 8x16 1024x768 16 . A000 Orchid + = G . . 1024x768 16 . A000 STB,Genoa,Sigma + = G . . 1024x768 16 . . Definicon + = G 128x48 8x16 1024x768 16 1 A000 Tseng ET3000/4000 chipset + = G . . 1024x768 16 . . Compaq QVision 1024/1280 + = G . . 1280x1024 256 . . Avance Logic AL2101 + 38h = G . . 1024x768 256 . . STB VGA/EM-16 Plus (1MB) + = G 128x48 8x16 1024x768 256/256K 1 A000 Tseng ET4000 chipset + = G . . 1024x768 256 . . Orchid ProDesigner II + = G . . 1024x768 256 . . Compaq QVision 1024/1280 + = G 160x64 8x16 1280x1024 256 . . Chips&Technologies 64310 [1] + 39h = G . . 1280x1024 16 . . Compaq QVision 1280 + 3Ah = G . . 1280x1024 256 . . Compaq QVision 1280 + 3Bh = G . . 512x480 256 . . Compaq QVision 1024/1280 + 3Ch = G . . 640x400 64K . . Compaq QVision 1024/1280 + 3Dh = G . . 1280x1024 16 . . Definicon + = G 128x64 8x16 1280x1024 16 1 A000 Tseng ET4000 v3.00 [1,7] + 3Eh = G . . 1280x961 16 . . Definicon + = G . . 640x480 64K . . Compaq QVision 1024/1280 + 3Fh = G . . 1280x1024 256 . . Hercules ??? (ET4000W32) + = G . . 800x600 64K . . Compaq QVision 1024/1280 + 40h = T 80x43 . . . . . VEGA VGA, Tecmar VGA/AD + = T 80x43 . . . . . Video7 V-RAM VGA + = T 80x43 . . . . . Tatung VGA + = T 100x30 . . 16 . . MORSE VGA + = T 100x30 . . . . . Cirrus 510/520 chipset + = T 80x25 . 720x350 mono . . Genoa SuperEGA BIOS 3.0+ + = G . . 320x200 64K . . Avance Logic AL2101 + = G 80x25 8x16 640x400 2 1 B800 AT&T 6300, AT&T VDC600 + = G 80x25 8x16 640x400 2 1 B800 Olivetti Quaderno + = G 80x25 8x16 640x400 2 1 B800 Compaq Portable + = G 80x30 8x16 640x480 32K . . Chips&Technologies 64310 + = G . . 1024x768 64K . . Compaq QVision 1280 + 41h = T 132x25 . . . . . VEGA VGA + = T 132x25 . . . . . Tatung VGA + = T 132x25 . . . . . Video7 V-RAM VGA + = T 100x50 . . 16 . . MORSE VGA + = T 100x50 . . . . . Cirrus 510/520 chipset + = T 80x34 9x14 720x476 16/256K . B800 WD90C + = T 80x34 9x14 . 16 . B800 Diamond Speedstar 24X + = G . . 512x512 64K . . Avance Logic AL2101 + = G . . 640x200 16 1 . AT&T 6300 + = G 80x30 8x16 640x480 64K . . Chips&Technologies 64310 + = G 80x25 . 720x348 mono . B000 Genoa SuperEGA BIOS 3.0+ + 42h = T 132x43 . . . . . VEGA VGA + = T 132x43 . . . . . Tatung VGA + = T 132x43 . . . . . Video7 V-RAM VGA + = T 80x34 9x10 . 4 4 B800 Ahead B (Wizard/3270) + = T 100x60 . . 16 . . MORSE VGA + = T 100x60 . . . . . Cirrus 510/520 chipset + = G 80x25 8x16 640x400 16 . . AT&T 6300, AT&T VDC600 + = G . . 640x400 64K . . Avance Logic AL2101 + = G 80x25 . 720x348 mono . B800 Genoa SuperEGA BIOS 3.0+ + = G 100x37 8x16 800x600 32K . . Chips&Technologies 64310 + 43h = T 80x60 . . . . . VEGA VGA + = T 80x60 . . . . . Tatung VGA + = T 80x60 . . . . . Video7 V-RAM VGA + = T 80x45 9x8 . 4 4 B800 Ahead B (Wizard/3270) + = T 100x75 . . 16 . . MORSE VGA + = T 80x29 . 720x348 mono . . Genoa SuperEGA BIOS 3.0+ + = G . . 640x200 of 640x400 viewport AT&T 6300 (unsupported) + = G . . 640x480 64K . . Avance Logic AL2101 + = G 100x37 8x16 800x600 64K . . Chips&Technologies 64310 + 44h = disable VDC and DEB output . AT&T 6300 + = T 100x60 . . . . . VEGA VGA + = T 100x60 . . . . . Tatung VGA + = T 100x60 . . . . . Video7 V-RAM VGA + = T 80x32 . 720x352 mono . . Genoa SuperEGA BIOS 3.0+ + = G . . 800x600 64K . . Avance Logic AL2101 + 45h = T 132x28 . . . . . Tatung VGA + = T 132x28 . . . . . Video7 V-RAM VGA + = T 80x44 . 720x352 mono . . Genoa SuperEGA BIOS 3.0+ + 46h = T 132x25 8x14 . mono . . Genoa 6400 + = T 132x25 9x14 . mono . . Genoa SuperEGA BIOS 3.0+ + = G 100x40 8x15 800x600 2 . . AT&T VDC600 + 47h = T 132x29 8x12 . mono . . Genoa 6400 + = T 132x29 9x12 . mono . . Genoa SuperEGA BIOS 3.0+ + = T 132x28 9x16 1188x448 16/256K . B800 WD90C + = T 132x28 9x16 . 16 . B800 Diamond Speedstar 24X + = G 100x37 8x16 800x600 16 . . AT&T VDC600 + 48h = T 132x32 8x12 . mono . . Genoa 6400 + = T 132x32 9x11 . mono . . Genoa SuperEGA BIOS 3.0+ + = G 80x50 8x8 640x400 2 . B800 AT&T 6300, AT&T VDC600 + = G 80x50 8x8 640x400 2 . B800 Olivetti Quaderno + 49h = T 132x44 8x8 . mono . . Genoa 6400 + = T 132x44 9x8 . mono . . Genoa SuperEGA BIOS 3.0+ + = G 80x30 8x16 640x480 . . . Lava Chrome II EGA + = G 80x30 8x16 640x480 . . A000 Diamond Stealth64 Video 2xx1 + 4Bh = G 100x37 8x16 800x600 . . A000 Diamond Stealth64 Video 2xx1 + 4Dh = T 120x25 . . . . . VEGA VGA + = G . . 512x480 16M . . Compaq QVision 1024/1280 + = G 128x48 8x16 1024x768 . . A000 Diamond Stealth64 Video 2xx1 + 4Eh = T 120x43 . . . . . VEGA VGA + = T 80x60 8x8 . 16/256K . B800 Oak OTI-067/OTI-077 [8] + = G . . 640x400 16M . . Compaq QVision 1024/1280 + = G 144x54 8x16 1152x864 . . A000 Diamond Stealth64 Video 2xx1 + 4Fh = T 132x25 . . . . . VEGA VGA + = T 132x60 . . . . . some Oak Tech VGA [8] + = G . . 640x480 16M . . Compaq QVision 1280 + 50h = T 80x30 8x16 . 16/256K . B800 Trident TVGA 8800/8900 + = T 80x34 . . . . . Lava Chrome II EGA + = T 80x43 . . mono . . VEGA VGA + = T 132x25 9x14 . mono . . Ahead Systems EGA2001 + = T 132x25 9x14 . 4 4 B800 Ahead B + = T 132x25 8x14 . 16 8 B800 OAK Technologies VGA-16 + = T 132x25 8x14 . 16/256K . B800 Oak OTI-037/067/077 [8] + = T 132x25 8x14 1056x350 16 8 B800 UM587 chipset + = T 132x30 . . 16 . . MORSE VGA + = T 132x30 . . . . . Cirrus 510/520 chipset + = G 80x30 8x16 640x480 16 . . Paradise EGA-480 + = G 80x30 8x16 640x480 16 . . NEL Electronics BIOS + = G 80x30 8x16 640x480 16M . . Chips&Technologies 64310 + = G . . 640x480 mono??? . . Taxan 565 EGA + = G 40x25 8x8 320x200 . . . Genoa SuperEGA BIOS 3.0+ + 51h = T 80x30 8x16 . . . . Paradise EGA-480 + = T 80x30 9x16 . . . . NEL Electronics BIOS + = T 80x30 . . . . . Lava Chrome II EGA + = T 80x43 8x11 . 16/256K . B800 Trident TVGA 8800/8900 + = T 132x25 . . mono . . VEGA VGA + = T 132x28 9x12 . 4 4 B800 Ahead B + = T 132x43 8x8 . 16 5 B800 OAK Technologies VGA-16 + = T 132x43 8x8 . 16/256K . B800 Oak OTI-037/067/077 + = T 132x43 8x8 1056x344 16 5 B800 UM587 chipset + = T 132x50 . . 16 . . MORSE VGA + = T 132x50 . . . . . Cirrus 510/520 chipset + = G 80x34 8x14 640x480 16 . . ATI EGA Wonder + = G 80x25 8x8 640x200 . . . Genoa SuperEGA BIOS 3.0+ + 52h = T 80x60 . . . . . Lava Chrome II EGA + = T 80x60 8x8 . 16/256K . B800 Trident TVGA 8800/8900 + = T 132x43 . . mono . . VEGA VGA + = T 132x44 9x8 . mono . . Ahead Systems EGA2001 + = T 132x44 9x8 . 4 2 B800 Ahead B + = T 132x60 . . 16 . . MORSE VGA + = T 132x60 . . . . . Cirrus 510/520 chipset + = G 80x25 8x19 640x480 16 1 A000 AX VGA (Kanji&superimpose) + = G 94x29 8x14 752x410 16 . . ATI EGA Wonder + = G 100x75 8x8 800x600 16 1 A000 OAK Technologies VGA-16 + = G 100x75 8x8 800x600 16 . A000 Oak OTI-037 chipset [8] + = G 100x37 8x16 800x600 16 . A000 Oak OTI-067/077 chips [8] + = G 100x75 8x8 800x600 16 . A000 UM587 chipset + = G 128x30 8x16 1024x480 16 . . NEL Electronics BIOS + 53h = T 80x25 8x16 . . . . NEL Electronics BIOS + = T 80x60 . . 16 . . MORSE VGA + = T 80x60 . . . . . Cirrus 510/520 chipset + = T 132x25 8x14 . 16/256K . B800 Trident TVGA 8800/8900 + = T 132x43 . . . . . Lava Chrome II EGA + = G 80x25 8x19 640x480 16 1 A000 AX VGA (Kanji, no superimp.) + = G . . 640x480 256 . . Oak VGA + = G 80x30 8x16 640x480 256 . A000 Oak OTI-067/OTI-077 [8] + = G 100x40 8x14 800x560 16 . . ATI EGA Wonder,ATI VIP + = G . . . . . . AX PC + 54h = T 132x25 . . . . . Lava Chrome II EGA + = T 132x30 8x16 . 16/256K . B800 Trident TVGA 8800/8900 + = T 132x43 8x8 . . . . Paradise EGA-480 + = T 132x43 8x8 . . . . NEL Electronics BIOS + = T 132x43 7x9 . 16/256K . B800 Paradise VGA + = T 132x43 8x9 . 16/256K . B800 Paradise VGA on multisync + = T 132x43 . . . . . Taxan 565 EGA + = T 132x43 . . . . . AST VGA Plus + = T 132x43 . . . . . Hewlett-Packard D1180A + = T 132x43 7x9 . 16 . . AT&T VDC600 + = T 132x43 9x9 1188x387 16/256K . B800 WD90C + = T 132x43 9x9 1188x387 16/256K . B800 Diamond Speedstar 24X + = T 132x43 9x9 1188x387 16/256K . B800 Diamond Stealth 24 + = T 132x43 8x8 . . . B800 Diamond Stealth64 Video 2xx1 + = T 132x43 8x8 1056x350 16/256K . . Cirrus CL-GD5420/5422/5426 + = T 132x50 8x8 . 16 . A000 NCR 77C22 [9] + = G 100x42 8x14 800x600 16 . A000 ATI EGA Wonder, VGA Wonder + = G 100x42 8x14 800x600 16 . A000 ATI Ultra 8514A, ATI XL + = G . . 800x600 256 . A000 Oak VGA + = G 100x37 8x16 800x600 256 . A000 Oak OTI-067/077 chips [8] + 55h = T 80x66 8x8 . 16/256K . A000 ATI VIP + = T 132x25 8x14 . . . . Paradise EGA-480 + = T 132x25 8x14 . . . . NEL Electronics BIOS + = T 132x25 7x16 . 16/256K . B800 Paradise VGA + = T 132x25 8x16 . 16/256K . B800 Paradise VGA on multisync + = T 132x25 . . . . . Taxan 565 EGA + = T 132x25 . . . . . AST VGA Plus + = T 132x25 . . . . . Hewlett-Packard D1180A + = T 132x25 7x16 . 16 . . AT&T VDC600 + = T 132x25 8x16 . 16 . A000 NCR 77C22 [9] + = T 132x25 9x16 1188x400 16/256K . B800 WD90C + = T 132x25 9x16 1188x400 16/256K . B800 Diamond Speedstar 24X + = T 132x25 9x16 1188x400 16/256K . B800 Diamond Stealth 24 + = T 132x25 8x16 . . . B800 Diamond Stealth64 Video 2xx1 + = T 132x25 8x14 1056x350 16/256K . . Cirrus CL-GD5420/5422/5426 + = T 132x43 8x11 . 16/256K . B800 Trident TVGA 8800/8900 + = G 94x29 8x14 752x410 . . . Lava Chrome II EGA + = G 128x48 8x16 1024x768 16/256K . A000 ATI VGA Wonder v4+ [5] + = G . . 1024x768 16/256K . . ATI VGA Wonder Plus + = G . . 1024x768 16/256K . . ATI Ultra 8514A,ATI XL + = G 128x48 8x16 1024x768 4 . A000 Oak OTI-067/077 chips [8] + 56h = T 132x43 8x8 . 3??? 2 B000 NSI Smart EGA+ + = T 132x43 7x9 . 4 . B000 Paradise VGA + = T 132x43 8x9 . 4 . B000 Paradise VGA on multisync + = T 132x43 . . mono . . Taxan 565 EGA + = T 132x43 7x9 . 2 . . AT&T VDC600 + = T 132x43 9x8 . . . . NEL Electronics BIOS + = T 132x50 8x8 . 4 . A000 NCR 77C22 [9] + = T 132x60 8x8 . 16/256K . B800 Trident TVGA 8800/8900 + = G . . 1024x768 16 . A000 Oak VGA + = G 128x48 8x16 1024x768 16 . A000 Oak OTI-067/077 chips [8] + 57h = T 132x25 8x14 . 3??? 4 B000 NSI Smart EGA+ + = T 132x25 7x16 . 4 . B000 Paradise VGA + = T 132x25 8x16 . 4 . B000 Paradise VGA on multisync + = T 132x25 9x14 . . . . NEL Electronics BIOS + = T 132x25 . . mono . . Taxan 565 EGA + = T 132x25 7x16 . 2 . . AT&T VDC600 + = T 132x25 9x14 . 16/256K . B800 Trident TVGA 8800/8900 + = T 132x25 8x16 . 4 . A000 NCR 77C22 [9] + = G 96x48 8x16 768x1024 16 . A000 Oak OTI-067/077 chips [8] + 58h = T 80x33 8x14 . 16 . B800 ATI EGA Wonder,ATI VIP + = T 80x32 9x16 . 16 . . Genoa 6400 + = T 80x43 8x8 . . . . NEL Electronics BIOS + = T 132x30 9x16 . 16/256K . B800 Trident TVGA 8800/8900 + = G 100x75 8x8 800x600 16/256K . A000 Paradise VGA + = G 100x75 8x8 800x600 16 . . AT&T VDC600 + = G 100x75 8x8 800x600 16 . A000 NCR 77C22 [9] + = G 100x75 8x8 800x600 16 . A000 Diamond Speedstar 24X + = G 100x75 8x8 800x600 16/256K . A000 Paradise VGA, WD90C + = G . . 800x600 16 . . AST VGA Plus, Compaq VGA + = G . . 800x600 16 . . Dell VGA + = G . . 800x600 16 . . Hewlett-Packard D1180A + = G . . 800x600 ??? . . ELT VGA PLUS 16 + = G 100x37 8x16 800x600 16/256K . A000 Cirrus CL-GD5420/5422/5426 + = G 160x64 8x16 1280x1024 16 . A000 Oak OTI-077 chipset [8] + 59h = T 80x43 9x8 . . . . NEL Electronics BIOS + = T 80x66 8x8 . 16/256K . A000 ATI VIP + = T 132x43 9x11 . 16/256K . B800 Trident TVGA 8800/8900 + = G 100x75 8x8 800x600 2 . A000 Paradise VGA + = G 100x75 8x8 800x600 2 . . AT&T VDC600 + = G . . 800x600 2 . . AST VGA Plus, Compaq VGA + = G . . 800x600 2 . . Dell VGA + = G . . 800x600 2 . . Hewlett-Packard D1180A + = G 100x75 8x8 800x600 2 . A000 NCR 77C22 [9] + = G 128x48 8x16 1024x768 256 . A000 Oak OTI-077 chipset [8] + 5Ah = T 80x60 8x8 . . . . NEL Electronics BIOS + = T 132x60 9x8 . 16/256K . B800 Trident TVGA 8800/8900 + = G 128x48 8x16 1024x768 2 . A000 NCR 77C22 [9] + 5Bh = T 80x30 8x16 . . . B800 ATI VGA Wonder (undoc) + = G . . 640x350 256 . . Genoa 6400 + = G 80x25 8x16 640x400 32K . A000 Oak OTI-067/077 chips [8] + = G . . 800x600 16 . . Maxxon, SEFCO TVGA, Imtec + = G 100x75 8x8 800x600 16/256K . A000 Trident TVGA 8800, 8900 + = G . . 800x600 ??? . . Vobis MVGA + = G 100x37 8x16 800x600 . . . NEL Electronics BIOS + = G 128x48 8x16 1024x768 16 . A000 NCR 77C22 [1,9] + 5Ch = T 100x37 8x16 . . . . NEL Electronics BIOS + = G . . 640x400 256 . . Logix, ATI Prism Elite + = G . . 640x400 256 . . Maxxon, SEFCO TVGA, Imtec + = G 80x25 8x16 640x400 256/256K . A000 Zymos Poach, Hi Res 512 + = G 80x25 8x16 640x400 256/256K . A000 Trident TVGA 8800/8900 + = G 80x30 8x16 640x480 256 . . Genoa 6400 + = G 80x30 8x16 640x480 32K . A000 Oak OTI-077 chipset [8] + = G 100x75 8x8 800x600 256 . A000 NCR 77C22 [9] + = G 100x75 8x8 800x600 256/256K . A000 WD90C + = G 100x75 8x8 800x600 256/256K . A000 Diamond Speedstar 24X + = G 100x37 8x16 800x600 256/256K . A000 Cirrus CL-GD5420/5422/5426 + 5Dh = T 100x75 8x8 . . . . NEL Electronics BIOS + = G 80x25 8x14 640x350 64K . . STB Lightspeed ET4000/W32P + = G . . 640x480 256 . . Logix, ATI Prism Elite + = G . . 640x480 256 . . Maxxon, SEFCO TVGA, Imtec + = G 80x30 8x16 640x480 256/256K . A000 Zymos Poach, Hi Res 512 + = G 80x30 8x16 640x480 256/256K . A000 Trident TVGA 8800 (512K) + = G 128x48 8x16 1024x768 16 . A000 NCR 77C22 [9] + = G 128x48 8x16 1024x768 16/256K . A000 WD90C + = G 128x48 8x16 1024x768 16 . A000 Diamond Speedstar 24X + = G 128x48 8x16 1024x768 16/256K . A000 Cirrus CL-GD5420/5422/5426 + 5Eh = G . . 640x400 256 . . Paradise VGA,VEGA VGA + = G . . 640x400 256 . . AST VGA Plus, NCR 77C22 + = G . . 640x400 256 . . Compaq VGA, Dell VGA + = G 80x25 8x16 640x400 256 . . AT&T VDC600 + = G 80x25 8x16 640x400 256 . A000 NCR 77C22 [9] + = G 80x25 8x16 640x400 256/256K . A000 WD90C + = G 80x25 8x16 640x400 256/256K . A000 Diamond Speedstar 24X + = G . . 800x600 16 . . Logix, ATI Prism Elite + = G 100x37 8x16 800x600 16 . . NEL Electronics BIOS + = G 100x75 8x8 800x600 256 . . Genoa 6400 + = G 100x75 8x8 800x600 256/256K . A000 Zymos Poach, Trident 8900 + = G 100x75 8x8 800x600 256/256K . A000 Hi Res 512 + 5Fh = G 80x25 8x16 640x400 64K . . STB Lightspeed ET4000/W32P + = G . . 640x480 256 . . Paradise VGA + = G . . 640x480 256 . . AST VGA Plus, NCR 77C22 + = G . . 640x480 256 . . Compaq VGA, Dell VGA + = G . . 640x480 256 . . Hewlett-Packard D1180A + = G 80x30 8x16 640x480 256 . . AT&T VDC600 (512K) + = G 80x30 8x16 640x480 256 . A000 NCR 77C22 [9] + = G 80x30 8x16 640x480 256/256K . A000 WD90C + = G 80x30 8x16 640x480 256/256K . A000 Diamond Speedstar 24X + = G 80x30 8x16 640x480 256/256K . A000 Cirrus CL-GD5420/5422/5426 + = G . . 1024x768 16 . . Logix, ATI Prism Elite + = G . . 1024x768 16 . . Maxxon, Imtec + = G 128x48 8x16 1024x768 16 . . Genoa 6400 + = G 128x48 8x16 1024x768 16/256K . A000 Zymos Poach, Hi Res 512 + = G 128x48 8x16 1024x768 16/256K . A000 Trident TVGA 88/8900 512K + 60h = T 132x25 8x14 . 16/64 8 B800 Quadram Ultra VGA + = T 132x25 8x14 . 16 . . Genoa 6400 + = T 132x25 8x14 . 16 . . Genoa SuperEGA BIOS 3.0+ + = T 132x25 . . . . . Cirrus 5320 chipset + = T 132x25 8x16 1056x400 16 . B800 Chips&Technologies chipset + = G 80x??? . ???x400 . . . Corona/Cordata BIOS 4.10+ + = G 80x25 8x16 640x400 256 1 A000 Ahead A, Ahead B + = G . . 752x410 . . . VEGA VGA + = G . . 752x410 16 . . Tatung VGA + = G . . 752x410 16 . . Video7 V-RAM VGA + = G 128x48 8x16 1024x768 4/256K . A000 Trident TVGA 8900 + = G 128x48 8x16 1024x768 256/256K . A000 WD90C + = G 128x48 8x16 1024x768 256/256K . A000 Diamond Speedstar 24X + = G 128x48 8x16 1024x768 256/256K . A000 Cirrus CL-GD5420/5422/5426 + = G 144x54 8x16 1152x864 . . A000 Diamond Stealth64 Video 2xx1 + 61h = T 132x29 8x12 . 16/64 8 B800 Quadram Ultra VGA + = T 132x29 8x8 . 16 . . Genoa 6400 + = T 132x29 8x8 . 16 . . Genoa SuperEGA BIOS 3.0+ + = T 132x50 . . . . . Cirrus 5320 chipset + = T 132x50 8x8 1056x400 16 . B800 Chips&Technologies chipset + = T 132x50 8x16 1056x800 16 . B800 Chips&Technologies 64310 + = G . . ???x400 . . . Corona/Cordata BIOS 4.10+ + = G 80x25 8x16 640x400 256 . A000 ATI VGA Wonder,VGA Wonder+ + = G 80x25 8x16 640x400 256 . A000 ATI Ultra 8514A,ATI XL + = G 80x25 8x16 640x400 . . A000 Diamond Stealth64 Video 2xx1 + = G 80x30 8x16 640x480 256 1 A000 Ahead A, Ahead B (512K) + = G . . 720x540 . . . VEGA VGA + = G . . 720x540 16 . . Tatung VGA + = G . . 720x540 16 . . Video7 V-RAM VGA + = G 96x64 8x16 768x1024 16/256K . A000 Trident TVGA 88/8900 512K + = G 128x48 8x16 1024x768 256 . A000 NCR 77C22 [1,9] + = G 144x54 8x16 1152x864 . . A000 Diamond Stealth64 Video 2xx1 + 62h = T 132x32 8x11 . 16/64 6 B800 Quadram Ultra VGA + = T 132x32 8x12 . 16 . . Genoa 6400 + = T 132x32 8x11 . 16 . . Genoa SuperEGA BIOS 3.0+ + = T 132x43 8x8 1056x344 16 . B800 C&T 82C450 BIOS + = G . . 640x450 16 . . Cirrus 510/520 chipset + = G 80x30 8x16 640x480 256 . A000 ATI VGA Wonder,VGA Wonder+ + = G 80x30 8x16 640x480 256 . A000 ATI Ultra 8514A,ATI XL + = G 80x30 8x16 640x480 32K . A000 WD90C + = G 80x30 8x16 640x480 32K . A000 Diamond Speedstar 24X + = G . . 800x600 . . . VEGA VGA + = G . . 800x600 16 . . Tatung VGA + = G . . 800x600 16 . . Video7 V-RAM VGA + = G 100x75 8x8 800x600 256 1 A000 Ahead A, Ahead B (512K) + = G 128x48 8x16 1024x768 256/256K . A000 Trident TVGA 8900, Zymos + = G 128x48 8x16 1024x768 256 . A000 NCR 77C22 [9] + 63h = T 132x44 8x8 . 16/64 5 B800 Quadram Ultra VGA + = T 132x44 8x8 . 16 . . Genoa 6400 + = T 132x44 8x8 . 16 . . Genoa SuperEGA BIOS 3.0+ + = G . . 720x540 16 . . MORSE VGA + = G . . 720x540 16 . . Cirrus 510/520 chipset + = G 100x42 8x14 800x600 256 . A000 ATI VGA Wonder,VGA Wonder+ + = G 100x42 8x14 800x600 256 . A000 ATI Ultra 8514A,ATI XL + = G . . 800x600 32K . A000 WD90C + = G . . 800x600 32K . A000 Diamond Speedstar 24X + = G 128x48 7x16 1024x768 256 1 A000 Ahead B (1MB) + = G . . 1024x768 2 . . Video7 V-RAM VGA + 64h = T 132x60 8x8 . 16 . . Genoa 6400 + = T 80x43 8x8 528x344 16 . B800 C&T 82C450 BIOS + = G . . 640x480 64K . A000 Cirrus CL-GD 5422/5426 + = G . . 800x600 16 . . MORSE VGA + = G . . 800x600 16 . . Cirrus 510/520 chipset + = G . . 800x600 ??? . . SAMPO-Mira VGA + = G . . 1024x768 4 . . Video7 V-RAM VGA + = G 128x48 8x16 1024x768 256 . A000 ATI VGA Wonder Plus,ATI XL + = G 160x64 8x16 1280x1024 16/256K . A000 WD90C [1] + = G 160x64 8x16 1280x1024 16/256K . A000 Diamond Speedstar 24X [1] + 65h = T 80x50 8x8 528x400 16 . B800 C&T 82C450 BIOS + = G . . 800x600 64K . A000 Cirrus CL-GD 5422/5426 + = G . . 1024x768 16 . . Video7 V-RAM VGA + = G 128x48 8x16 1024x768 16 . A000 ATI VGA Wonder + 66h = T 80x50 8x8 640x400 16/256K . B800 WD90C + = T 80x50 8x8 . 16 . B800 Diamond Speedstar 24X + = G . . 640x400 256 . . Tatung VGA + = G . . 640x400 256 . . Video7 V-RAM VGA + = G . . 640x480 32K . A000 Cirrus CL-GD 5422/5426 + 67h = T 80x43 8x8 640x344 16/256K . B800 WD90C + = T 80x43 8x8 . 16 . B800 Diamond Speedstar 24X + = G . . 640x480 256 . . Video7 V-RAM VGA + = G . . 800x600 32K . A000 Cirrus CL-GD 5422/5426 + = G 128x48 8x16 1024x768 4 . A000 ATI VGA Wonder + = G 160x64 8x16 1280x1024 16 . A000 NCR 77C22 [1,9] + 68h = G 80x25 8x16 640x400 . . A000 Diamond Stealth64 Video 2xx1 + 69h = T 132x50 8x8 1056x400 16/256K . B800 WD90C + = T 132x50 8x8 . 16 . B800 Diamond Speedstar 24X + = G 80x30 8x16 640x480 . . A000 Diamond Stealth64 Video 2xx1 + = G . . 720x540 256 . A000 Video7 V-RAM VGA + 6Ah = G . . 800x600 16 . A000 VESA standard interface + = G 100x75 8x8 800x600 16 . A000 Genoa 6400 + = G 100x75 8x8 800x600 16 . A000 Diamond Speedstar 24X + = G . . 800x600 16 . A000 Ahead A + = G 100x75 8x8 800x600 16 1 A000 Ahead B (VESA) [see 71h] + = G . . 800x600 16 . . Zymos Poach, Hi Res 512 + = G . . 800x600 16 . . Epson LT-386SX in CRT Mode + = G . . 800x600 16 . . Compuadd 316SL in CRT Mode + = G 100x37 8x16 800x600 16/256K . A000 Cirrus CL-GD5420/5422/5426 + = G 100x37 8x16 800x600 16 . A000 Diamond Stealth64 Video 2xx1 + = G 100x42 8x14 800x600 . . A000 ATI VGA Wonder (undoc) + = G . . 800x600 16 . A000 Chips&Technologies chipset + = G 160x64 8x16 1280x1024 256 . A000 NCR 77C22 [1,9] + 6Bh = T 100x37 8x16 . 16 . . Genoa 6400 + = T 100x37 8x16 . . . . NEL Electronics BIOS + = G 100x37 8x16 800x600 . . A000 Diamond Stealth64 Video 2xx1 + 6Ch = G 80x30 8x16 640x480 16M . A000 Trident 8900CL/BIOS C04 + = G 100x75 8x8 800x600 256 . . Genoa 6400 + = G 128x48 8x16 1024x768 2 . A000 Diamond Stealth64 Video 2xx1 + = G 160x60 8x16 1280x960 16/256K . A000 WD90C [1] + = G 160x60 8x16 1280x960 16/256K . A000 Diamond Speedstar 24X [1] + = G 160x64 8x16 1280x1024 16/256K . A000 Cirrus CL-GD 5422/5426 [1] + 6Dh = G 80x25 8x14 640x350 64K . A000 STB Lightspeed ET4000/W32P + = G 128x48 8x16 1024x768 . . A000 Diamond Stealth64 Video 2xx1 + = G 160x64 8x16 1280x1024 256/256K . A000 Cirrus CL-GD 5422/5426 [1] + 6Eh = G 40x25 8x8 320x200 64K . A000 Cirrus CL-GD 5422/5426 + = G 160x64 8x16 1280x1024 2 . A000 Diamond Stealth64 Video 2xx1 + 6Fh = G 40x25 8x8 320x200 16M . A000 Cirrus CL-GD 5422/5426 + = G 160x64 8x16 1280x1024 . . A000 Diamond Stealth64 Video 2xx1 + 70h = extended mode set (see AX=0070h) . Everex Micro Enhancer EGA + = T 40x25 8x8 . 16 8 B800 Quadram (CGA double scan) + = T 40x25 8x8 (CGA dblscan) . . Genoa SuperEGA BIOS 3.0+ + = G . . 360x480 256 . . Cirrus 510/520/5320 chips + = G 90x28 8x14 720x392 16 1 A000 Ahead B + = G 80x30 8x16 640x480 . . A000 Diamond Stealth64 Video 2xx1 + = G 100x38 8x16 800x600 16 . A000 C&T chipset, Cardinal + = G . . 1024x480 256 . A000 Trident 8900C BIOS C3.0 + 71h = T 80x25 8x8 . 16 8 B800 Quadram (CGA double scan) + = T 80x25 8x8 (CGA dblscan) . . Genoa SuperEGA BIOS 3.0+ + = G . . 528x400 256 . . Cirrus 510/520 chipset + = G 80x30 8x16 640x480 16M . A000 Cirrus CL-GD 5422/5426 + = G 80x30 8x16 640x480 . . A000 Diamond Stealth64 Video 2xx1 + = G 100x35 8x16 800x600 16/64 . A000 NSI Smart EGA+ + = G 100x75 8x8 800x600 16 1 A000 Ahead B (same as 6Ah) + = G . . 960x720 16 . . C&T chipset, Cardinal + = G . . 1024x480 256 . A000 Trident 8900C BIOS C3.0 + 72h = T 80x60 8x8 . 16 . B800 Quadram Ultra VGA + = T 80x60 8x8 . 16 . B800 Genoa 6400 + = T 80x60 8x8 . 16 . B800 Genoa SuperEGA BIOS 3.0+ + = G . . 528x480 256 . . Cirrus 510/520 chipset + = G 80x25 8x19 640x480 16 1 A000 DOS/V w/ any VGA + = G 80x30 8x16 640x480 . . A000 Diamond Stealth64 Video 2xx1 + = G . . 640x480 32K . A000 ATI + = G . . 640x480 16M . A000 WD90C + = G . . 640x480 16M . A000 Diamond Speedstar 24X + = G . . 1024x768 16 . . C&T chipset, Cardinal + = G 128x48 8x16 1024x768i 16 . A000 C&T 82C450 BIOS + = G 128x48 8x16 1024x768 16 . A000 C&T 65530 BIOS (multisync) + 73h = G 80x60 8x8 640x480 16 . A000 Quadram Ultra VGA + = G 80x60 8x8 640x480 16 . . Genoa 6400 + = G 80x60 8x8 640x480 16 . . Genoa SuperEGA BIOS 3.0+ + = G 100x37 8x16 800x600 . . A000 Diamond Stealth64 Video 2xx1 + = T 80x25 8x19 640x475 16 1 none DOS/V, emulated in VGA graph + 74h = T 80x66 8x8 . 16 . B800 Quadram Ultra VGA + = T 80x66 8x8 . 16 . B800 Genoa 6400 + = T 80x66 8x8 . 16 . B800 Genoa SuperEGA BIOS 3.0+ + = G . . 640x400 2 . B800 Toshiba 3100 AT&T mode + = G 80x30 8x16 640x480 32K . A000 Trident 8900C/BIOS C03 + = G 100x37 8x16 800x600 . . A000 Diamond Stealth64 Video 2xx1 + = G 128x48 8x16 1024x768 16 1 A000 Ahead A, Ahead B (512K) + = G . . 1024x768 64K . A000 Cirrus CL-GD 5422/5426 [1] + 75h = G 80x30 8x16 640x480 64K . A000 Trident 8900C/BIOS C03 + = G 80x66 . 640x528 16??? . A000 Quadram Ultra VGA + = G 80x66 . 640x528 16 . . Genoa SuperEGA BIOS 3.0+ + = G 100x37 8x16 800x600 . . A000 Diamond Stealth64 Video 2xx1 + = G 128x48 8x16 1024x768 4 1 A000 Ahead B + = G 128x48 8x16 1024x768 16 . A000 Chips&Technologies 64310 + 76h = T 94x29 8x14 . 16 . B800 Quadram Ultra VGA + = T 94x29 8x14 . . . . Genoa SuperEGA BIOS 3.0+ + = G 100x75 8x8 800x600 32K . A000 Trident 8900C/BIOS C03 + = G 128x48 8x16 1024x768 2 1 A000 Ahead B + = G 128x48 8x16 1024x768 . . A000 Diamond Stealth64 Video 2xx1 + = G 160x64 8x16 1280x1024 16 . A000 Chips&Technologies 64310 [1] + 77h = G 94x29 . 752x410 16??? . A000 Quadram Ultra VGA + = G 94x29 . 752x410 16 . . Genoa SuperEGA BIOS 3.0+ + = G 100x75 8x8 800x600 64K . A000 Trident 8900C/BIOS C03 + = G 128x48 8x16 1024x768 . . A000 Diamond Stealth64 Video 2xx1 + 78h = T 100x37 8x16 . 16 . . Genoa 6400 + = T 100x75 8x8 . 16 . B800 Quadram Ultra VGA + = T 100x75 8x8 . . . . Genoa SuperEGA BIOS 3.0+ + = G . . 640x400 256 . . STB VGA/EM-16 Plus + = G 80x25 8x16 640x400 256 . . Cardinal, C&T chipset + = G . . 640x400 256 . . Cirrus 5320 chipset + = G 80x25 8x16 640x400 256 . A000 Chips&Technologies 64310 + 79h = G 80x30 8x16 640x480 256 . . Cardinal, C&T chipset + = G 80x30 8x16 640x480 256 . A000 Chips&Technologies 64310 + = G 100x75 . 800x600 16??? . A000 Quadram Ultra VGA + = G 100x75 8x8 800x600 16 . . Genoa SuperEGA BIOS 3.0+ + = G 100x75 8x8 800x600 16 . . Genoa 6400 + 7Ah = T 114x60 8x8 . 16 . B800 Quadram Ultra VGA + = T 114x60 8x8 . . . . Genoa SuperEGA BIOS 3.0+ + = G . . 720x540 256 . . C&T chipset, Cardinal + 7Bh = G . . 800x600 256 . . C&T chipset, Cardinal + = G 114x60 . 912x480 16??? . A000 Quadram Ultra VGA + = G . . 912x480 16 . . Genoa SuperEGA BIOS 3.0+ + 7Ch = G . . 512x512 16 . . Genoa + = G 100x37 8x16 800x600 256 . . C&T 82C453/F65530 chipsets + = G 100x37 8x16 800x600 256 . A000 Chips&Technologies 64310 + = G 200x75 8x16 1600x1200 . [16] . A000 Diamond Stealth64 Video 2xx1 + 7Dh = G 64x32 8x16 512x512 256 . . Genoa + 7Eh = special mode set (see AX=007Eh) . Paradise VGA, AT&T VDC600 + = G 80x25 8x16 640x400 256 . . Genoa 6400 + = G . . 1024x768 256 . . C&T 82C453 chipset + = G 128x48 8x16 1024x768 256 . A000 Chips&Technologies 64310 + = G 90x43 . . mono . B000 HERCULES.COM on HGC [14] + 7Fh = special function set (see AX=007Fh/BH=00h) Paradise VGA, AT&T VDC600 + = G 128x48 8x16 1024x768 4 . . Genoa 6400 + = G 90x29 . . mono . B000 HERCULES.COM on HGC [14] + 82h = T 80x25 . . B&W . . AT&T VDC overlay mode [6] + 83h = T 80x25 . . . . . AT&T VDC overlay mode [6] + 86h = G . . 640x200 B&W . . AT&T VDC overlay mode [6] + 88h = G 90x43 8x8 720x348 mono . B000 Hercules + MSHERC.COM + C0h = G . . 640x400 2/prog palette . AT&T VDC overlay mode [6] + = G . . 640x400 2/prog palette . Olivetti Quaderno overlay + C4h = disable output . . . . AT&T VDC overlay mode [6] + C8h = G 80x50 8x8 640x400 2 . B800 Olivetti Quaderno overlay + D0h = G . . 640x400 2 . B800 DEC VAXmate AT&T mode +Notes: +[1] interlaced only +[2] for ATI EGA Wonder, mode 08h is only valid if SMS.COM is loaded resident. + SMS maps mode 08h to mode 27h if the byte at location 0040:0063 is 0B4h, + otherwise to mode 23h, thus selecting the appropriate (monochrome or + color) 132x25 character mode. + for ATI VGA Wonder, mode 08h is the same, and only valid if VCONFIG loaded + resident +[3] early XGA boards support 132-column text but do not have this BIOS mode +[4] DESQview intercepts calls to change into these two modes (21h is page 0, + 22h is page 1) even if there is no Hercules graphics board installed +[5] ATI BIOS v4-1.00 has a text-scrolling bug in this mode +[6] for AT&T VDC overlay modes, BL contains the DEB mode, which may be 06h, + 40h, or 44h +[7] BIOS text support is broken in this undocumented mode; scrolling moves + only about 1/3 of the screen (and does even that portion incorrectly), + while screen clears only clear about 3/4. +[8] The Oak OTI-037/067/077 modes are present in the Oak VGA BIOS, which OEMs + may choose to use only partially or not at all; thus, not all Oak boards + support all "Oak" modes listed here +[9] this card uses the full 128K A000h-BFFFh range for the video buffer, + precluding the use of a monochrome adapter in the same system +[10] mode 17h supported by Tseng ET4000 BIOS 8.01X dated 1990/09/14, but not + v8.01X dated 1992/02/28; mode 21h supported by 1992/02/28 version but not + 1990/09/14 version +[11] HERKULES simulates a 90x45 text mode in Hercules graphics mode; the + installation check for HERKULES.COM is the signature "Herkules" two + bytes beyond the INT 10 handler +[12] The Realtek RTVGA BIOS v3.C10 crashes when attempting to switch into + modes 21h or 27h; this version of the BIOS also sets the BIOS data area + incorrectly for extended text modes, resulting in scrolling after only + 24 lines (the VMODE.EXE utility does set the data area correctly) +[13] The Tandy 1000SL/TL BIOS does not actually support this mode +[14] HERCULES.COM is a graphics-mode BIOS extension for Hercules-compatible + graphics cards by Soft Warehouse, Inc. Its installation check is to + test whether the word preceding the INT 10 handler is 4137h. +[15] The Hercules-graphics video modes for HERCBIOS (shareware by Dave + Tutelman) may be changed by a command-line switch; the 90x43 + character-cell mode's number is always one higher than the 90x29 mode + (whose default is mode 08h) +[16] Stealth64 Video 2001-series BIOS v1.03 reports 76 lines for mode 7Ch, + resulting in incorrect scrolling for TTY output (scrolling occurs only + after the end of the 76th line, which is not displayed) +[17] For 43-line text on EGA or 43/50-line text on VGA, you must load an 8x8 + font using AX=1102h after switching to mode 3; VGA may also require + using INT 10/AH=12h/BL=30h +SeeAlso: #00011,#00083,#00191 +Index: video modes +Index: installation check;HERKULES|installation check;HERCULES.COM +--------V-100070----------------------------- +INT 10 - VIDEO - Everex Micro Enhancer EGA/Viewpoint VGA - EXTENDED MODE SET + AX = 0070h + BL = mode (see #00011) +Desc: specify a proprietary display mode on the Everex Micro Enhancer or + Viewpoint video adapters +SeeAlso: AH=00h,AX=6F05h,AX=7000h/BX=0004h,AH=FFh"GO32" + +(Table 00011) +Values for Everex video mode: + text/ text pixel pixel colors disply scrn monitor adapter + grph resol box resolution pages addr + 00h = G . . 640x480 16 . . multisync EGA,VGA + 01h = G . . 752x410 16 . . multisync EGA,VGA + 02h = G . . 800x600 16 . . multisync EGA,VGA + 03h = T 80x34 . . . . . multisync EGA,VGA + 04h = T 80x60 . . . . . multisync EGA,VGA + 05h = T 94x29 . . . . . multisync EGA only + 06h = T 94x51 . . . . . multisync EGA only + 07h = T 100x43 8x14 . 16 . . . VGA only + 08h = T 100x75 8x8 . 16 . . . VGA only + 09h = T 80x44 . . . . . EGA EGA only + 0Ah = T 132x25 . . . . . EGA EGA,VGA + 0Bh = T 132x44 . . . . . EGA EGA,VGA + 0Ch = T 132x25 . . . . . CGA EGA only + 0Dh = T 80x44 . . . . . mono EGA only + 0Eh = T 132x25 . . . . . mono + 0Fh = T 132x44 . . . . . mono + 10h = reserved + 11h = G . . 1280x350 4 . . . EGA only + 12h = G . . 1280x600 4 . . . EGA only + 13h = G . . 640x350 256 . . . EGA,EV673 + 14h = G . . 640x400 256 . . . + 15h = G . . 512x480 256 . . . + 16h = T 80x30 8x16 . 256 . . . VGA only + 18h = T 100x27 8x16 . 16 . . . VGA only + 20h = G . . 1024x768 16 . . . Everex 629,678 + . . . . . . . Everex EV-673 + 21h = T 160x64 8x16 1280x1024 16 . . . 1MB VGA only + 30h = G . . 640x480 256 . . . Everex 629,678 + . . . . . . . Everex EV-673 + 31h = G . . 800x600 256 . . . Everex 629,678 + . . . . . . . Everex EV-673 + 32h = G 128x48 8x16 1024x768 256 . . . 1MB VGA only + 40h = T 132x30 8x16 . 16 . . . VGA only + 50h = T 132x32 8x16 . mono . . . VGA only + 62h = G 40x25 8x8 320x200 32K . . . Vwpt TC (EV629) + 70h = G 64x30 8x16 512x480 32K . . . Viewpoint TC + 71h = G 80x30 8x16 640x480 32K . . . Viewpoint TC + 76h = G 64x30 8x16 512x480 16M . . . Viewpoint TC + 77h = G 80x30 8x16 640x480 16M . . . Viewpoint TC +SeeAlso: #00010,#00191 +Index: video modes;Everex +--------V-10007E----------------------------- +INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - SET SPECIAL MODE + AX = 007Eh + BX = horizontal dimension of the mode desired + CX = vertical dimension of the mode desired + (both BX/CX in pixels for graphics modes, rows for alpha modes) + DX = number of colors of the mode desired (0000h for monochrome modes) +Return: BH = 7Eh if successful (Paradise VGA) + AL = 7Eh if successful (AT&T VDC600) +Desc: specify a display mode by resolution rather than mode number +SeeAlso: AH=00h,AX=0070h,AX=007Fh/BH=00h,AX=6F05h,AH=FFh"GO32" +Index: video modes;Paradise|video modes;AT&T +--------V-10007FBH00------------------------- +INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - SET VGA OPERATION + AX = 007Fh + BH = 00h +Return: AL = 7Fh if successful (AT&T VDC600) + BH = status (Paradise/Dell) + 00h invalid function + 7Fh successful +SeeAlso: AX=007Fh/BH=01h,AX=007Fh/BH=02h +--------V-10007FBH01------------------------- +INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - SET NON-VGA OPERATION + AX = 007Fh + BH = 01h +Return: AL = 7Fh if successful (AT&T VDC600) + BH = status (Paradise/Dell) + 00h invalid function + 7Fh successful +Note: color modes (0,1,2,3,4,5,6) will set non-VGA CGA operation, monochrome + mode 7 will set non-VGA MDA/Hercules operation +SeeAlso: AX=007Fh/BH=00h,AX=007Fh/BH=02h +--------V-10007FBH02------------------------- +INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - QUERY MODE STATUS + AX = 007Fh + BH = 02h +Return: AL = 7Fh if successful (AT&T VDC600) + BH = status (Paradise/Dell) + 00h invalid function + 7Fh successful + ---if successful--- + BL = 00h if operating in VGA mode, 01h if non-VGA mode + CH = total video RAM size in 64k byte units + CL = video RAM used by the current mode +Note: under Novell DOS 7 TaskMgr Multitasker, this call always returns 0K + video memory in CX +SeeAlso: AX=007Fh/BH=00h,AX=007Fh/BH=01h +--------V-10007FBH03------------------------- +INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - LOCK CURRENT MODE + AX = 007Fh + BH = 03h +Return: AL = 7Fh if successful (AT&T VDC600) + BH = status (Paradise/Dell) + 00h invalid function + 7Fh successful +Desc: allows current mode (VGA or non-VGA) to survive re-boot +SeeAlso: AX=007Eh,AX=007Fh/BH=04h,AX=007Fh/BH=06h,AH=FFh"Oak" +--------V-10007FBH04------------------------- +INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - ENTER MDA EMULATION MODE + AX = 007Fh + BH = 04h +Return: AL = 7Fh if successful (AT&T VDC600) + BH = status (Paradise/Dell) + 00h invalid function + 7Fh successful +SeeAlso: AX=007Eh,AX=007Fh/BH=03h,AX=007Fh/BH=05h,AH=FFh"Oak" +--------V-10007FBH05------------------------- +INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - ENTER CGA EMULATION MODE + AX = 007Fh + BH = 05h +Return: AL = 7Fh if successful (AT&T VDC600) + BH = status (Paradise/Dell) + 00h invalid function + 7Fh successful +SeeAlso: AX=007Eh,AX=007Fh/BH=03h,AX=007Fh/BH=04h,AH=FFh"Oak" +--------V-10007FBH06------------------------- +INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - ENTER MONOCHROME VGA MODE + AX = 007Fh + BH = 06h +Return: AL = 7Fh if successful (AT&T VDC600) + BH = status (Paradise/Dell) + 00h invalid function + 7Fh successful +Note: this function also switches to video mode 7 +SeeAlso: AX=007Eh,AX=007Fh/BH=03h,AX=007Fh/BH=07h,AH=FFh"Oak" +--------V-10007FBH07------------------------- +INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - ENTER COLOR VGA MODE + AX = 007Fh + BH = 07h +Return: AL = 7Fh if successful (AT&T VDC600) + BH = status (Paradise/Dell) + 00h invalid function + 7Fh successful +Note: this function also switches to video mode 3 +SeeAlso: AX=007Eh,AX=007Fh/BH=03h,AX=007Fh/BH=06h,AH=FFh"Oak" +--------V-10007F----------------------------- +INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - EXTENDED DATA REGISTER ACCESS + AX = 007Fh + BH = function + 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh WRITE PARADISE REGISTERS 0,1,2,3,4,5 + (port 03CEh indices 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh) + BL = value to set in the paradise register + 1Ah,1Bh,1Ch,1Dh,1Eh,1Fh READ PARADISE REGISTERS 0,1,2,3,4,5 + (port 03CEh indices 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh) + Return: BL = value of the paradise register + BH = 7Fh if successful + 29h-2Fh ??? (Paradise VGA for Dell, 1991/07/24) +Return: AL = 7Fh if successful (AT&T VDC600) + BH = status (Paradise/Dell) + 00h invalid function + 7Fh successful +SeeAlso: AX=007Eh,AX=007Fh/BH=03h,AX=007Fh/BH=05h,AH=FFh"Oak" +--------V-10007FBH60------------------------- +INT 10 - Paradise VGA - ??? + AX = 007Fh + BH = 60h + BL = ??? (00h-13h) + ??? +Return: BH = status (00h failed or not supported, 7Fh successful) + ??? +Note: this function is supported by the 1993/5/14 ROM for the Dell 486D +SeeAlso: AX=007Fh/BH=61h +--------V-10007FBH61------------------------- +INT 10 - Paradise VGA - ??? + AX = 007Fh + BH = 61h + ES:DI -> buffer for list of ??? (see #00012) +Return: BH = status (00h failed or not supported, 7Fh successful) + ??? +Note: this function is supported by the 1993/5/14 ROM for the Dell 486D +SeeAlso: AX=007Fh/BH=60h + +Format of Paradise VGA list entry: +Offset Size Description (Table 00012) + 00h BYTE ??? or 00h if end of list + 01h BYTE ??? + 02h WORD ??? + 04h WORD ??? + 06h WORD ??? +--------V-10007FBXA500----------------------- +INT 10 - Paradise VGA - ??? + AX = 007Fh + BX = A500h + ??? +Return: BH = status (00h failed or not supported, 7Fh successful) + ??? +Note: this function is supported by the 1993/5/14 ROM for the Dell 486D +SeeAlso: AX=007Fh/BH=A6h +--------V-10007FBHA5------------------------- +INT 10 - Paradise VGA - ??? + AX = 007Fh + BH = A5h + BL = ??? + bits 3-0: ??? (0-4) + bits 5,4: ??? + ??? +Return: BH = status (00h failed or not supported, 7Fh successful) + ??? +Note: this function is supported by the 1993/5/14 ROM for the Dell 486D +--------V-10007FBHA6------------------------- +INT 10 - Paradise VGA - ??? + AX = 007Fh + BH = A6h + ??? +Return: BH = status (00h failed or not supported, 7Fh successful) + ??? +Note: this function is supported by the 1993/5/14 ROM for the Dell 486D +SeeAlso: AX=007Fh/BH=A5h +--------V-1001------------------------------- +INT 10 - VIDEO - SET TEXT-MODE CURSOR SHAPE + AH = 01h + CH = cursor start and options (see #00013) + CL = bottom scan line containing cursor (bits 0-4) +Return: nothing +Desc: specify the starting and ending scan lines to be occupied by the + hardware cursor in text modes +Notes: buggy on EGA systems--BIOS remaps cursor shape in 43 line modes, but + returns unmapped cursor shape + UltraVision scales size to the current font height by assuming 14-line + monochrome and 8-line color fonts; this call is not valid if cursor + emulation has been disabled + applications which wish to change the cursor by programming the + hardware directly on EGA or above should call INT 10/AX=1130h or + read 0040h:0085h first to determine the current font height + on some adapters, setting the end line greater than the number of lines + in the font will result in the cursor extending to the top of the + next character cell on the right +BUG: AMI 386 BIOS and AST Premier 386 BIOS will lock up the system if AL + is not equal to the current video mode +SeeAlso: AH=03h,AX=CD05h,AH=12h/BL=34h,#03885 + +Bitfields for cursor start and options: +Bit(s) Description (Table 00013) + 7 should be zero + 6,5 cursor blink + (00=normal, 01=invisible, 10=erratic, 11=slow) + (00=normal, other=invisible on EGA/VGA) + 4-0 topmost scan line containing cursor +--------V-1002------------------------------- +INT 10 - VIDEO - SET CURSOR POSITION + AH = 02h + BH = page number + 0-3 in modes 2&3 + 0-7 in modes 0&1 + 0 in graphics modes + DH = row (00h is top) + DL = column (00h is left) +Return: nothing +SeeAlso: AH=03h,AH=05h,INT 60/DI=030Bh,MEM 0040h:0050h +--------V-1003------------------------------- +INT 10 - VIDEO - GET CURSOR POSITION AND SIZE + AH = 03h + BH = page number + 0-3 in modes 2&3 + 0-7 in modes 0&1 + 0 in graphics modes +Return: AX = 0000h (Phoenix BIOS) + CH = start scan line + CL = end scan line + DH = row (00h is top) + DL = column (00h is left) +Notes: a separate cursor is maintained for each of up to 8 display pages + many ROM BIOSes incorrectly return the default size for a color display + (start 06h, end 07h) when a monochrome display is attached + With PhysTechSoft's PTS ROM-DOS the BH value is ignored on entry. +SeeAlso: AH=01h,AH=02h,AH=12h/BL=34h,MEM 0040h:0050h,MEM 0040h:0060h +--------V-1004------------------------------- +INT 10 - VIDEO - READ LIGHT PEN POSITION (except VGA) + AH = 04h +Return: AH = light pen trigger flag + 00h not down/triggered + 01h down/triggered + DH,DL = row,column of character light pen is on + CH = pixel row (graphics modes 04h-06h) + CX = pixel row (graphics modes with >200 rows) + BX = pixel column +Desc: determine the current position and status of the light pen (if + present) +Notes: on a CGA, returned column numbers are always multiples of 2 (320- + column modes) or 4 (640-column modes) + returned row numbers are only accurate to two lines +--------V-1004------------------------------------ +INT 10 - HUNTER 16 - GET CURSOR ADDRESS + AH = 04h + BH = page +Return: DH = row (0..24) + DL = column (0..79) + CH = cursor pixel Y-address (0..199) + CL = cursor pixel X-address (0..639) +Notes: the Husky Hunter 16 is an 8088-based ruggedized laptop. Other family + members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk. + pixel coordinates are for the lower left corner of the character cell + containing the cursor +SeeAlso: AH=60h"HUNTER" +--------V-1005------------------------------- +INT 10 - VIDEO - SELECT ACTIVE DISPLAY PAGE + AH = 05h + AL = new page number (00h to number of pages - 1) (see #00010) +Return: nothing +Desc: specify which of possibly multiple display pages will be visible +Note: to determine whether the requested page actually exists, use AH=0Fh + to query the current page after making this call +SeeAlso: AH=0Fh,AH=43h,AH=45h,MEM 0040h:0062h,MEM 0040h:004Eh +--------V-100500----------------------------- +INT 10 - VIDEO - Corona/Cordata BIOS v4.10+ - SET GRAPHICS BITMAP BUFFER + AX = 0500h + BX = segment of buffer +Return: nothing +Desc: set the address of graphics bitmap buffer for video modes 60h and 61h +SeeAlso: AX=050Fh"Corona" +--------V-10050F----------------------------- +INT 10 - VIDEO - Corona/Cordata BIOS v4.10+ - GET GRAPHICS BITMAP BUFFER + AX = 050Fh +Return: DX = segment of graphics bitmap buffer +Desc: get the address of graphics bitmap buffer for video modes 60h and 61h +SeeAlso: AX=0500h"Corona" +--------V-100580----------------------------- +INT 10 - VIDEO - PCjr, Tandy 1000 - GET CRT/CPU PAGE REGISTERS + AX = 0580h +Return: BH = CRT page register + BL = CPU page register +Notes: the CPU page determines which 16K block of the first 128K of physical + memory will be mapped at B800h by the hardware + the CRT page determines the start address of the memory used by the + video controller +SeeAlso: AH=05h"SET CRT/CPU" +--------V-1005------------------------------- +INT 10 - VIDEO - PCjr, Tandy 1000 - SET CRT/CPU PAGE REGISTERS + AH = 05h + AL = subfunction + 81h set CPU page register + BL = CPU page + 82h set CRT page register + BH = CRT page + 83h set both CPU and CRT page registers + BL = CPU page + BH = CRT page +Return: nothing +Notes: the CPU page determines which 16K block of the first 128K of physical + memory will be mapped at B800h by the hardware + the CRT page determines the start address of the memory used by the + video controller +SeeAlso: AX=0580h +--------V-1006------------------------------- +INT 10 - VIDEO - SCROLL UP WINDOW + AH = 06h + AL = number of lines by which to scroll up (00h = clear entire window) + BH = attribute used to write blank lines at bottom of window + CH,CL = row,column of window's upper left corner + DH,DL = row,column of window's lower right corner +Return: nothing +Note: affects only the currently active page (see AH=05h) +BUGS: some implementations (including the original IBM PC) have a bug which + destroys BP + the Trident TVGA8900CL (BIOS dated 1992/9/8) clears DS to 0000h when + scrolling in an SVGA mode (800x600 or higher) +SeeAlso: AH=07h,AH=12h"Tandy 2000",AH=72h,AH=73h,AX=7F07h,INT 50/AX=0014h +--------V-1007------------------------------- +INT 10 - VIDEO - SCROLL DOWN WINDOW + AH = 07h + AL = number of lines by which to scroll down (00h=clear entire window) + BH = attribute used to write blank lines at top of window + CH,CL = row,column of window's upper left corner + DH,DL = row,column of window's lower right corner +Return: nothing +Note: affects only the currently active page (see AH=05h) +BUGS: some implementations (including the original IBM PC) have a bug which + destroys BP + the Trident TVGA8900CL (BIOS dated 1992/9/8) clears DS to 0000h when + scrolling in an SVGA mode (800x600 or higher) +SeeAlso: AH=06h,AH=12h"Tandy 2000",AH=72h,AH=73h,INT 50/AX=0014h +--------V-1008------------------------------- +INT 10 - VIDEO - READ CHARACTER AND ATTRIBUTE AT CURSOR POSITION + AH = 08h + BH = page number (00h to number of pages - 1) (see #00010) +Return: AH = character's attribute (text mode only) (see #00014) + AH = character's color (Tandy 2000 graphics mode only) + AL = character +Notes: for monochrome displays, a foreground of 1 with background 0 is + underlined + the blink bit may be reprogrammed to enable intense background colors + using AX=1003h or by programming the CRT controller + the foreground intensity bit (3) can be programmed to switch between + character sets A and B on EGA and VGA cards, thus enabling 512 + simultaneous characters on screen. In this case the bit's usual + function (intensity) is regularly turned off. + in graphics modes, only characters drawn with white foreground pixels + are matched by the pattern-comparison routine + on the Tandy 2000, BH=FFh specifies that the current page should be + used + because of the IBM BIOS specifications, there may exist some clone + BIOSes which do not preserve SI or DI; the Novell DOS kernel + preserves SI, DI, and BP before many INT 10h calls to avoid problems + due to those registers not being preserved by the BIOS. +BUG: some IBM PC ROM BIOSes destroy BP when in graphics modes +SeeAlso: AH=09h,AX=1003h,AX=1103h,AH=12h/BL=37h,AX=5001h + +Bitfields for character's display attribute: +Bit(s) Description (Table 00014) + 7 foreground blink or (alternate) background bright (see also AX=1003h) + 6-4 background color (see #00015) + 3 foreground bright or (alternate) alternate character set (see AX=1103h) + 2-0 foreground color (see #00015) +SeeAlso: #00026 + +(Table 00015) +Values for character color: + Normal Bright + 000b black dark gray + 001b blue light blue + 010b green light green + 011b cyan light cyan + 100b red light red + 101b magenta light magenta + 110b brown yellow + 111b light gray white +--------V-1009------------------------------- +INT 10 - VIDEO - WRITE CHARACTER AND ATTRIBUTE AT CURSOR POSITION + AH = 09h + AL = character to display + BH = page number (00h to number of pages - 1) (see #00010) + background color in 256-color graphics modes (ET4000) + BL = attribute (text mode) or color (graphics mode) + if bit 7 set in <256-color graphics mode, character is XOR'ed + onto screen + CX = number of times to write character +Return: nothing +Notes: all characters are displayed, including CR, LF, and BS + replication count in CX may produce an unpredictable result in graphics + modes if it is greater than the number of positions remaining in the + current row + With PhysTechSoft's PTS ROM-DOS the BH, BL, and CX values are ignored + on entry. +SeeAlso: AH=08h,AH=0Ah,AH=4Bh"GRAFIX",INT 17/AH=60h,INT 1F"SYSTEM DATA" +SeeAlso: INT 43"VIDEO DATA",INT 44"VIDEO DATA" +--------V-100A------------------------------- +INT 10 - VIDEO - WRITE CHARACTER ONLY AT CURSOR POSITION + AH = 0Ah + AL = character to display + BH = page number (00h to number of pages - 1) (see #00010) + background color in 256-color graphics modes (ET4000) + BL = attribute (PCjr, Tandy 1000 only) or color (graphics mode) + if bit 7 set in <256-color graphics mode, character is XOR'ed + onto screen + CX = number of times to write character +Return: nothing +Notes: all characters are displayed, including CR, LF, and BS + replication count in CX may produce an unpredictable result in graphics + modes if it is greater than the number of positions remaining in the + current row + With PhysTechSoft's PTS ROM-DOS the BH and CX values are ignored + on entry. +SeeAlso: AH=08h,AH=09h,AH=11h"Tandy 2000",AH=4Bh,INT 17/AH=60h +SeeAlso: INT 1F"SYSTEM DATA",INT 43"VIDEO DATA",INT 44"VIDEO DATA" +--------V-100B--BH00------------------------- +INT 10 - VIDEO - SET BACKGROUND/BORDER COLOR + AH = 0Bh + BH = 00h + BL = background/border color (border only in text modes) +Return: nothing +SeeAlso: AH=0Bh/BH=01h +--------V-100B--BH01------------------------- +INT 10 - VIDEO - SET PALETTE + AH = 0Bh + BH = 01h + BL = palette ID + 00h background, green, red, and brown/yellow + 01h background, cyan, magenta, and white +Return: nothing +Note: this call was only valid in 320x200 graphics on the CGA, but newer + cards support it in many or all graphics modes +SeeAlso: AH=0Bh/BH=00h,MEM 0040h:0066h +--------V-100B--BH02------------------------- +INT 10 - Tandy 2000 - VIDEO - SET PALETTE ENTRY + AH = 0Bh + BH = 02h + BL = palette entry number + AL = new color value for palette entry +Return: nothing +Note: this interrupt is identical to INT 52 for Tandy 2000 +SeeAlso: INT 10/AH=00h,INT 10/AH=0Bh/BH=01h,INT 52"Tandy 2000" +--------V-100C------------------------------- +INT 10 - VIDEO - WRITE GRAPHICS PIXEL + AH = 0Ch + BH = page number + AL = pixel color + if bit 7 set, value is XOR'ed onto screen except in 256-color modes + CX = column + DX = row +Return: nothing +Desc: set a single pixel on the display in graphics modes +Notes: valid only in graphics modes + BH is ignored if the current video mode supports only one page +SeeAlso: AH=0Dh,AH=46h +--------V-100D------------------------------- +INT 10 - VIDEO - READ GRAPHICS PIXEL + AH = 0Dh + BH = page number + CX = column + DX = row +Return: AL = pixel color +Desc: determine the current color of the specified pixel in grahics modes +Notes: valid only in graphics modes + BH is ignored if the current video mode supports only one page +SeeAlso: AH=0Ch,AH=47h +--------V-100E------------------------------- +INT 10 - VIDEO - TELETYPE OUTPUT + AH = 0Eh + AL = character to write + BH = page number + BL = foreground color (graphics modes only) +Return: nothing +Desc: display a character on the screen, advancing the cursor and scrolling + the screen as necessary +Notes: characters 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) are interpreted + and do the expected things + IBM PC ROMs dated 1981/4/24 and 1981/10/19 require that BH be the same + as the current active page +BUG: if the write causes the screen to scroll, BP is destroyed by BIOSes + for which AH=06h destroys BP +SeeAlso: AH=02h,AH=06h,AH=0Ah +--------b-100E--CXABCD----------------------- +INT 10 - V20-XT-BIOS - TELETYPE OUTPUT WITH ATTRIBUTE + AH = 0Eh + CX = ABCDh + BP = ABCDh + AL = character to write + BH = page number + BL = foreground color (text modes as well as graphics modes) +Return: nothing +Program: V20-XT-BIOS is a ROM BIOS replacement with extensions by Peter + Koehlmann / c't magazine +Desc: display a character on the screen, advancing the cursor and scrolling + the screen as necessary +Notes: characters 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) are interpreted + and do the expected things +SeeAlso: INT 15/AH=84h"V20-XT-BIOS" +--------V-100F------------------------------- +INT 10 - VIDEO - GET CURRENT VIDEO MODE + AH = 0Fh +Return: AH = number of character columns + AL = display mode (see #00010 at AH=00h) + BH = active page (see AH=05h) +Notes: if mode was set with bit 7 set ("no blanking"), the returned mode will + also have bit 7 set + EGA, VGA, and UltraVision return either AL=03h (color) or AL=07h + (monochrome) in all extended-row text modes + HP 200LX returns AL=07h (monochrome) if mode was set to AL=21h + and always 80 resp. 40 columns in all text modes regardless of + current zoom setting (see AH=D0h) + when using a Hercules Graphics Card, additional checks are necessary: + mode 05h: if WORD 0040h:0063h is 03B4h, may be in graphics page 1 + (as set by DOSSHELL and other Microsoft software) + mode 06h: if WORD 0040h:0063h is 03B4h, may be in graphics page 0 + (as set by DOSSHELL and other Microsoft software) + mode 07h: if BYTE 0040h:0065h bit 1 is set, Hercules card is in + graphics mode, with bit 7 indicating the page (mode set by + Hercules driver for Borland Turbo C) + the Tandy 2000 BIOS is only documented as returning AL, not AH or BH +SeeAlso: AH=00h,AH=05h,AX=10F2h,AX=1130h,AX=CD04h,MEM 0040h:004Ah +--------V-100F56BX4756----------------------- +INT 10 - VUIMAGE DISPLAY DRIVER (v2.20 and below) + AX = 0F56h + BX = 4756h + CX = 4944h + DL = function + 01h installation check + Return: AX = 5649h + BX = 4443h + CX = 5647h + DH = 01h + 02h get first video mode's parameters + Return: AX = BIOS mode number + BX = width in pixels + CX = height in pixels + DX = number of colors + 03h get next video mode's parameters + Return: as for DL=02h + 04h display line??? + ES:DI -> record (see #00016) + ??? + Return: ??? +Program: VUIMAGE is a shareware GIF/TIFF image viewer by Offe Enterprises +Note: the use of TSR display drivers was discontinued after v2.20 +Index: installation check;VUIMAGE display driver + +Format of record for VUIMAGE Function 04h: +Offset Size Description (Table 00016) + 00h WORD row number + 02h WORD starting column??? + 04h WORD ending column??? + ??? +--------V-100F--SIF123----------------------- +INT 10 - FRIEZE v7.41+ - INSTALLATION CHECK + AH = 0Fh + SI = F123h + DI = 321Fh +Return: AH = number of character columns + AL = display mode (see #00010 at AH=00h) + BH = active page (see AH=05h) + SI = DI = F345h if installed +Notes: if mode was set with bit 7 set ("no blanking"), the returned mode will + also have bit 7 set + EGA, VGA, and UltraVision return either AL=03h (color) or AL=07h + (monochrome) in all extended-row text modes +SeeAlso: AH=0Fh"VIDEO",AH=4Bh"FRIEZE" +--------V-1010------------------------------- +INT 10 - BIOS Window Extension v1.1 - SET WINDOW COORDINATES + AH = 10h + CH,CL = row,column of upper left corner of window + DH,DL = row,column of lower right corner of window +Return: AL = status + 00h successful + 01h failed + AH destroyed +Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal +Note: when a window has been set, all output via AH=0Eh is restricted to + the specified window +SeeAlso: AH=11h"Window",AH=12h"Window" +--------V-1010------------------------------- +INT 10 - VIDEO - Eagle PC2 BIOS Rev. C - SET SCROLL SPEED + AH = 10h + AL = speed + 00h fast + 01h slow (scrolling only moves characters during vertical retrace) +Return: AH = previous speed +--------V-1010------------------------------- +INT 10 - Tandy 2000 - VIDEO - GET/SET CHARACTER FONTS + AH = 10h + AL = control value + bit 0: set character set instead of reading it + bit 1: high 128 characters instead of low 128 characters + ES:BX -> new character set if AL bit 0 set +Return: ES:BX -> current character set if AL bit 0 clear on entry +Notes: this interrupt is identical to INT 52 on Tandy 2000 + the character set consists of 16 bytes for each of the 128 characters, + where each of the 16 bytes describes the pixels in one scan line, + most significant bit leftmost +SeeAlso: AH=00h,AH=0Bh/BH=02h,AH=11h"Tandy 2000",AH=12h"Tandy 2000" +SeeAlso: INT 52"Tandy 2000" +--------V-101000----------------------------- +INT 10 - VIDEO - SET SINGLE PALETTE REGISTER (PCjr,Tandy,EGA,MCGA,VGA) + AX = 1000h + BL = palette register number (00h-0Fh) + = attribute register number (undocumented) (see #00017) + BH = color or attribute register value +Return: nothing +Notes: on MCGA, only BX = 0712h is supported + under UltraVision, the palette locking status (see AX=CD01h) + determines the outcome +SeeAlso: AX=1002h,AX=1007h,AX=CD01h + +(Table 00017) +Values for attribute register number: + 10h attribute mode control register (should let BIOS control this) + 11h overscan color register (see also AX=1001h) + 12h color plane enable register (bits 3-0 enable corresponding + text attribute bit) + 13h horizontal PEL panning register + 14h color select register +--------V-101001----------------------------- +INT 10 - VIDEO - SET BORDER (OVERSCAN) COLOR (PCjr,Tandy,EGA,VGA) + AX = 1001h + BH = border color (00h-3Fh) +Return: nothing +BUG: the original IBM VGA BIOS incorrectly updates the parameter save area + and places the border color at offset 11h of the palette table + rather than offset 10h +Note: under UltraVision, the palette locking status (see AX=CD01h) + determines the outcome +SeeAlso: AX=1002h,AX=1008h,AX=CD01h +--------V-101002----------------------------- +INT 10 - VIDEO - SET ALL PALETTE REGISTERS (PCjr,Tandy,EGA,VGA) + AX = 1002h + ES:DX -> palette register list (see #00018) + BH = 00h to avoid problems on some adapters +Return: nothing +Note: under UltraVision, the palette locking status (see AX=CD01h) + determines the outcome +SeeAlso: AX=1000h,AX=1001h,AX=1009h,AX=CD01h + +Format of palette register list: +Offset Size Description (Table 00018) + 00h 16 BYTEs colors for palette registers 00h through 0Fh + 10h BYTE border color +SeeAlso: #00461 +--------V-101003----------------------------- +INT 10 - VIDEO - TOGGLE INTENSITY/BLINKING BIT (Jr, PS, TANDY 1000, EGA, VGA) + AX = 1003h + BL = new state + 00h background intensity enabled + 01h blink enabled + BH = 00h to avoid problems on some adapters +Return: nothing +Notes: although there is no function to get the current status on adapters + prior to the VGA, bit 5 of 0040h:0065h indicates the state; on the + VGA, use AH=1Bh and check offset 2Dh of the returned data (see #00040) + when configured for a monochrome display, the Boca Research Multi-EGA + with ROM v M1.1 Type D has its screen disrupted if BH is not clear + this call is reported to be "Get Cursor Position" on the Tandy + 1000SL/TL +SeeAlso: AH=08h,AH=1Bh +--------V-101007----------------------------- +INT 10 - VIDEO - GET INDIVIDUAL PALETTE REGISTER (VGA,UltraVision v2+) + AX = 1007h + BL = palette or attribute (undoc) register number (see #00017) +Return: BH = palette or attribute register value +Note: UltraVision v2+ supports this function even on color EGA systems in + video modes 00h-03h, 10h, and 12h; direct programming of the palette + registers will cause incorrect results because the EGA registers are + write-only. To guard against older versions or unsupported video + modes, programs which expect to use this function on EGA systems + should set BH to FFh on entry. +SeeAlso: AX=1000h,AX=1009h +--------V-101008----------------------------- +INT 10 - VIDEO - READ OVERSCAN (BORDER COLOR) REGISTER (VGA,UltraVision v2+) + AX = 1008h +Return: BH = border color (00h-3Fh) +Note: (see AX=1007h) +SeeAlso: AX=1001h +--------V-101009----------------------------- +INT 10 - VIDEO - READ ALL PALETTE REGISTERS AND OVERSCAN REGISTER (VGA) + AX = 1009h + ES:DX -> 17-byte buffer for palette register list (see #00018) +Return: nothing +Note: UltraVision v2+ supports this function even on color EGA systems in + video modes 00h-03h, 10h, and 12h; direct programming of the palette + registers will cause incorrect results because the EGA registers are + write-only. To guard against older versions or unsupported video + modes, programs which expect to use this function on EGA systems + should set the ES:DX buffer to FFh before calling. +SeeAlso: AX=1002h,AX=1007h,AX=CD02h +--------V-101010----------------------------- +INT 10 - VIDEO - SET INDIVIDUAL DAC REGISTER (VGA/MCGA) + AX = 1010h + BX = register number + CH = new value for green (0-63) + CL = new value for blue (0-63) + DH = new value for red (0-63) +Return: nothing +SeeAlso: AX=1012h,AX=1015h +--------V-101012----------------------------- +INT 10 - VIDEO - SET BLOCK OF DAC REGISTERS (VGA/MCGA) + AX = 1012h + BX = starting color register + CX = number of registers to set + ES:DX -> table of 3*CX bytes where each 3 byte group represents one + byte each of red, green and blue (0-63) +Return: nothing +SeeAlso: AX=1010h,AX=1017h,INT 62/AX=00A5h +--------V-101013----------------------------- +INT 10 - VIDEO - SELECT VIDEO DAC COLOR PAGE (VGA) + AX = 1013h + BL = subfunction + 00h select paging mode + BH = 00h select 4 blocks of 64 + BH = 01h select 16 blocks of 16 + 01h select page + BH = page number (00h to 03h) or (00h to 0Fh) +Return: nothing +Note: this function is not valid in mode 13h +SeeAlso: AX=101Ah +--------V-101015----------------------------- +INT 10 - VIDEO - READ INDIVIDUAL DAC REGISTER (VGA/MCGA) + AX = 1015h + BL = palette register number +Return: DH = red value + CH = green value + CL = blue value + AX destroyed by some BIOSes + (e.g. Tseng ET4000 BIOS v8.00n always returns AX=00C9h) +SeeAlso: AX=1010h,AX=1017h +--------V-101017----------------------------- +INT 10 - VIDEO - READ BLOCK OF DAC REGISTERS (VGA/MCGA) + AX = 1017h + BX = starting palette register + CX = number of palette registers to read + ES:DX -> buffer (3 * CX bytes in size) (see also AX=1012h) +Return: buffer filled with CX red, green and blue triples +SeeAlso: AX=1012h,AX=1015h,INT 62/AX=00A4h +--------V-101018----------------------------- +INT 10 U - VIDEO - SET PEL MASK (VGA/MCGA) + AX = 1018h + BL = new PEL value +Return: nothing +SeeAlso: AX=1019h +--------V-101019----------------------------- +INT 10 U - VIDEO - READ PEL MASK (VGA/MCGA) + AX = 1019h +Return: BL = value read +SeeAlso: AX=1018h +--------V-10101A----------------------------- +INT 10 - VIDEO - GET VIDEO DAC COLOR-PAGE STATE (VGA) + AX = 101Ah +Return: BL = paging mode + 00h four pages of 64 + 01h sixteen pages of 16 + BH = current page +SeeAlso: AX=1013h +--------V-10101B----------------------------- +INT 10 - VIDEO - PERFORM GRAY-SCALE SUMMING (VGA/MCGA) + AX = 101Bh + BX = starting palette register + CX = number of registers to convert +Return: nothing +Desc: convert the RGB values of one or more palette registers such that the + resulting values are grays with the same intensities as the original + colors +SeeAlso: AH=12h/BL=33h +--------V-1010E0----------------------------- +INT 10 - VIDEO - Diamond Speedstar 24 - SET 24-BIT GRAPHICS MODE + AX = 10E0h + BL = video mode (see also #00010 at AH=00h) + 2Eh = 640x480 +Return: ??? +SeeAlso: AH=00h,AX=10F0h +--------V-1010F0----------------------------- +INT 10 - VIDEO - Tseng ET-4000 BIOS - SET HiColor GRAPHICS MODE + AX = 10F0h + BL = video mode (see also #00010 at AH=00h) + 13h = 320x200x32K + 2Dh = 640x350x32K + 2Eh = 640x480x32K + 2Fh = 640x400x32K + 30h = 800x600x32K + 3Eh = 640x480x16M (Genoa 7900) + FFh Tseng 24-bit color mode + BH = mode + 2Dh = 640x480 + 2Eh = 640x480x16M + 2Fh = 640x400 + 30h = 800x600 + 38h = 1024x768??? (Tseng ET4000/W32i) +Return: AL = 10h if supported + AH = status + 00h if successful + other on error +Desc: switch the display into a graphics mode with 15 or more bits per pixel +Note: the Tseng HiColor BIOS extensions are supported by: + Diamond Computer Systems SpeedStar HiColor VGA + Everex Systems HC VGA + Focus Information Systems 2theMax 4000 + Cardinal Technologies VGA732 + Orchid ProDesigner IIs Genoa 7900 +SeeAlso: AH=00h,AX=10E0h,AX=10F1h,AX=10F2h +Index: video modes;Tseng Hi-Color +--------V-1010F1----------------------------- +INT 10 - VIDEO - Tseng ET-4000 BIOS - GET DAC TYPE + AX = 10F1h +Return: AL = 10h if supported + BL = type of digital/analog converter (see #00019) +Desc: determine which type of digital-to-analog converter is installed on the + display board +SeeAlso: AX=10F0h,AX=10F2h + +(Table 00019) +Values for type of DAC: + 00h normal VGA DAC + 01h Sierra SC1148x HiColor DAC + ---Diamond SpeedStar 24--- + 02h new Sierra SS24 DAC (24-bit) + ---generic Tseng BIOS v8+ --- + 02h Sierra Mark2 (15-bit) or Mark3 (15/16-bit) DAC + 03h ATT20c490/1/2 (15/16/24-bit) + 04h AcuMos ADAC1 (15/16/24-bit) + 05h unknown 15/16/24-bit DAC + 06h Cirrus Internal 15/16/24-bit (CL-GD54xx series adapters) + 07h Diamond SS2410 (15/24-bit) + 08h unknown 15/16/24-bit DAC + 09h unknown 15/16/24-bit DAC + else other HiColor DAC +--------V-1010F2----------------------------- +INT 10 u - VIDEO - Tseng ET-4000 BIOS - CHECK IF HiColor MODE/SET HiColor MODE + AX = 10F2h + BL = function + 00h get current HiColor mode + 01h set 15-bit HiColor mode + 02h set 16-bit HiColor mode +Return: AX = 0010h if supported + BL = video mode type + 00h not in HiColor mode + 01h 15-bit RGB mode + 02h 16-bit RGB mode + 03h 24-bit RGB mode +Desc: determine whether the display is in a graphics mode with 15 or more + bits per pixel color resolution +Note: set (BL=01h/02h) only works if already in a HiColor mode +SeeAlso: AH=0Fh,AX=10F0h,AX=10F1h +--------V-1011------------------------------- +INT 10 - BIOS Window Extension v1.1 - GET WINDOW COORDINATES + AH = 11h +Return: CH,CL = row,column of upper left corner + DH,DL = row,column of lower right corner +Desc: determine the portion of the display to which output is restricted +Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal +SeeAlso: AH=10h"Window",AH=12h"Window" +--------V-1011------------------------------- +INT 10 - Tandy 2000 - VIDEO - WRITE ATTRIBUTE ONLY + AH = 11h + BL = new character attribute (text modes) or color (graphics) + CX = number of times to write attribute +Return: nothing +Note: this interrupt is identical to INT 52 on Tandy 2000 +SeeAlso: AH=0Ah,AH=0Bh/BH=02h,AH=11h"Tandy 2000",AH=12h"Tandy 2000" +SeeAlso: INT 52"Tandy 2000" +--------V-101100----------------------------- +INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD USER-SPECIFIED PATTERNS (PS,EGA,VGA) + AX = 1100h + ES:BP -> user table + CX = count of patterns to store + DX = character offset into map 2 block + BL = block to load in map 2 + BH = number of bytes per character pattern +Return: nothing +Notes: This function will cause a mode set, completely resetting + the video environment, but without clearing the video buffer + the current block specifiers may be determined with INT 10/AH=1Bh, + looking at offsets 2Bh and 2Ch of the returned data (VGA only) + (see AH=1Bh,#00040) +SeeAlso: AX=1101h,AX=1102h,AX=1103h,AX=1104h,AX=1110h,AH=1Bh,AX=CD10h +SeeAlso: MEM 0040h:0084h +Index: text mode;font|text mode;screen rows +--------V-101101----------------------------- +INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD ROM MONOCHROME PATTERNS (PS,EGA,VGA) + AX = 1101h + BL = block to load +Return: nothing +Notes: (see also AX=1100h) + This function will cause a mode set, completely resetting + the video environment, but without clearing the video buffer + the "monochrome" patters are 8x14 pixels in size +SeeAlso: AX=1100h,AX=1102h,AX=1103h,AX=1104h,AX=1111h,AH=1Bh,AX=CD10h +SeeAlso: MEM 0040h:0084h +Index: text mode;font|text mode;screen rows +--------V-101102----------------------------- +INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD ROM 8x8 DBL-DOT PATTERNS (PS,EGA,VGA) + AX = 1102h + BL = block to load +Return: nothing +Notes: (see AX=1100h) +SeeAlso: AX=1100h,AX=1101h,AX=1103h,AX=1104h,AX=1112h,AH=1Bh,AX=CD10h +SeeAlso: MEM 0040h:0084h +--------V-101103----------------------------- +INT 10 - VIDEO - TEXT-MODE CHARGEN - SET BLOCK SPECIFIER (PS,EGA,VGA) + AX = 1103h + BL = block specifier (see #00020) +Return: nothing +Notes: (see also AX=1110h) + This function allows dual character sets to appear on screen + simultaneously +SeeAlso: AX=1100h,AX=1101h,AX=1102h,AX=1104h,AH=1Bh,AX=CD10h +SeeAlso: MEM 0040h:0084h +Index: text mode;font|text mode;screen rows + +Bitfields for block specifier: +Bit(s) Description (Table 00020) +---EGA/MCGA--- + 0,1 block selected by characters with attribute bit 3 clear + 2,3 block selected by characters with attribute bit 3 set +---VGA--- + 0,1,4 block selected by characters with attribute bit 3 clear + 2,3,5 block selected by characters with attribute bit 3 set +--------V-101104----------------------------- +INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD ROM 8x16 CHARACTER SET (VGA) + AX = 1104h + BL = block to load +Return: nothing +Notes: (see AX=1100h) +SeeAlso: AX=1100h,AX=1101h,AX=1102h,AX=1103h,AX=1114h,AH=1Bh,AX=CD10h +SeeAlso: MEM 0040h:0084h +Index: text mode;font|text mode;screen rows +--------V-1011------------------------------- +INT 10 - VIDEO - Realtek RTVGA - TEXT-MODE CHARACTER GENERATOR FUNCTIONS + AH = 11h + AL = 07h load user-specified patterns and recalculate mode parms + parameters are the same as for AX=1110h + AL = 08h load monochrome patterns (8x14) and recalculate mode parms + parameters are the same as for AX=1111h + AL = 09h load ROM 8 by 8 double-dot patterns and recalculate mode parms + parameters are the same as for AX=1112h + AL = 0Bh load ROM 8x16 character set (VGA) and recalculate mode parms + parameters are the same as for AX=1114h +Note: these functions should only be called under the same conditions as + AL=1xh (see AX=1110h"EGA") +SeeAlso: AX=1100h,AX=1110h"CHARGEN",AX=1110h"Realtek",MEM 0040h:0084h +Index: text mode;font|text mode;screen rows +--------V-10110F----------------------------- +INT 10 - VIDEO - Realtek RTVGA - SET USER 8x8 GRAPHICS CHARACTERS + AX = 110Fh + ES:BP -> user table for INT 1F +Return: nothing +Note: this function is meant to be called immediately after a mode set; + results are unpredictable at other times +SeeAlso: AX=1110h"Realtek",AX=1111h"Realtek",AX=1112h"Realtek",AX=1120h +--------V-101110----------------------------- +INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD USER-SPECIFIED PATTERNS (PS,EGA,VGA) + AX = 1110h + ES:BP -> user table + CX = count of patterns to store + DX = character offset into map 2 block + BL = block to load in map 2 + BH = number of bytes per character pattern +Return: nothing +Notes: This function will cause a mode set, completely resetting + the video environment, but without clearing the video buffer + This function is designed to be called immediately after a mode set, + it is equivalent to AX=110xh except that: + Page 0 must be active. + Bytes/character is recalculated. + Max character rows is recalculated. + CRT buffer length is recalculated. + CRTC registers are reprogrammed as follows: + R09 = bytes/char-1 ; max scan line (mode 7 only) + R0A = bytes/char-2 ; cursor start + R0B = 0 ; cursor end + R12 = ((rows+1)*(bytes/char))-1 ; vertical display end + R14 = bytes/char ; underline loc + (*** BUG: should be 1 less ***) + the current block specifiers may be determined with INT 10/AH=1Bh, + looking at offsets 2Bh and 2Ch of the returned data (VGA only) + (see AH=1Bh,#00040) +SeeAlso: AX=1100h,AX=1111h,AX=1112h,AX=1114h,AH=1Bh,AX=CD10h,MEM 0040h:0084h +Index: text mode;font|text mode;screen rows +--------V-101110----------------------------- +INT 10 - VIDEO - Realtek RTVGA - SET USER GRAPHICS CHARACTERS + AX = 1110h + ES:BP -> user table + CX = bytes per character + BL = row specifier + 00h user set + DL = number of rows + 01h 14 rows + 02h 25 rows + 03h 43 rows +Return: nothing +Note: this function is meant to be called immediately after a mode set; + results are unpredictable at other times +SeeAlso: AX=110Fh"Realtek",AX=1112h"Realtek",AX=1121h +--------V-101111----------------------------- +INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD ROM MONOCHROME PATTERNS (PS,EGA,VGA) + AX = 1111h + BL = block to load +Return: nothing +Notes: (see AX=1110h) + the "monochrome" patters are 8x14 pixels in size +SeeAlso: AX=1101h,AX=1110h,AX=1112h,AX=1114h,AH=1Bh,AX=CD10h +--------V-101111----------------------------- +INT 10 - VIDEO - Realtek RTVGA - SET ROM 8x14 GRAPHICS CHARACTERS + AX = 1111h + BL = row specifier (see AX=1121h) +Return: nothing +Note: this function is meant to be called immediately after a mode set; + results are unpredictable at other times +SeeAlso: AX=110Fh"Realtek",AX=1110h"Realtek",AX=1122h +--------V-101112----------------------------- +INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD ROM 8x8 DBL-DOT PATTERNS (PS,EGA,VGA) + AX = 1112h + BL = block to load +Return: nothing +Notes: (see AX=1110h) +SeeAlso: AX=1103h,AX=1110h,AX=1111h,AX=1114h,AH=1Bh,AX=CD10h +--------V-101112----------------------------- +INT 10 - VIDEO - Realtek RTVGA - SET ROM 8x8 DOUBLE-DOT CHARACTERS + AX = 1112h + BL = row specifier (see AX=1121h) +Return: nothing +Note: this function is meant to be called immediately after a mode set; + results are unpredictable at other times +SeeAlso: AX=110Fh"Realtek",AX=1110h"Realtek",AX=1111h"Realtek",AX=1123h +--------V-101114----------------------------- +INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD ROM 8x16 CHARACTER SET (VGA) + AX = 1114h + BL = block to load +Return: nothing +Notes: (see AX=1110h) +SeeAlso: AX=1104h,AX=1110h,AX=1111h,AX=1112h,AH=1Bh,AX=CD10h +--------V-101118----------------------------- +INT 10 - IBM SurePath BIOS - Officially "Private" Function + AX = 1118h +--------V-101120----------------------------- +INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET USER 8x8 GRAPHICS CHARS (PS,EGA,VGA) + AX = 1120h + ES:BP -> user table for INT 1F +Return: nothing +Note: this function is meant to be called immediately after a mode set; + results are unpredictable at other times +SeeAlso: AX=1121h,AX=1122h,AX=1123h,AX=1124h,AX=1129h,INT 1F"SYSTEM DATA" +SeeAlso: INT 43"VIDEO DATA" +--------V-101121----------------------------- +INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET USER GRAPHICS CHARACTERS (PS,EGA,VGA) + AX = 1121h + ES:BP -> user table + CX = bytes per character + BL = row specifier + 00h user set + DL = number of rows + 01h 14 rows + 02h 25 rows + 03h 43 rows +Return: AL = new number of rows (Diamond Stealth64 Video) +Note: this function is meant to be called immediately after a mode set; + results are unpredictable at other times +SeeAlso: AX=1120h,AX=1122h,AX=1123h,AX=1124h,AX=1129h"Compaq" +SeeAlso: AX=1129h"Diamond",INT 1F"SYSTEM DATA",INT 43"VIDEO DATA" +--------V-101122----------------------------- +INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET ROM 8x14 GRAPHICS CHARS (PS,EGA,VGA) + AX = 1122h + BL = row specifier (see AX=1121h) +Return: nothing +Notes: this function is meant to be called immediately after a mode set; + results are unpredictable at other times + UltraVision v2+ sets INT 43 to the appropriate font on this call +SeeAlso: AX=1111h,AX=1120h,AX=1121h,AX=1123h,AX=1124h,AX=1129h +SeeAlso: INT 1F"SYSTEM DATA",INT 43"VIDEO DATA" +--------V-101123----------------------------- +INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET ROM 8x8 DOUBLE-DOT CHARS (PS,EGA,VGA) + AX = 1123h + BL = row specifier (see AX=1121h) +Return: nothing +Notes: this function is meant to be called immediately after a mode set; + results are unpredictable at other times + UltraVision v2+ sets INT 43 to the appropriate font on this call +SeeAlso: AX=1112h,AX=1120h,AX=1121h,AX=1122h,AX=1124h,AX=1129h +SeeAlso: INT 1F"SYSTEM DATA",INT 43"VIDEO DATA" +--------V-101124----------------------------- +INT 10 - VIDEO - GRAPH-MODE CHARGEN - LOAD 8x16 GRAPHICS CHARS (VGA,MCGA) + AX = 1124h + BL = row specifier (see AX=1121h) +Return: nothing +Notes: this function is meant to be called immediately after a mode set; + results are unpredictable at other times + UltraVision v2+ sets INT 43 to the appropriate font on this call +SeeAlso: AX=1120h,AX=1121h,AX=1122h,AX=1123h,AX=1129h +SeeAlso: INT 1F"SYSTEM DATA",INT 43"VIDEO DATA" +--------V-101129----------------------------- +INT 10 - VIDEO - GRAPH-MODE CHARGEN - LOAD 8x16 GRAPH CHARS (Compaq Systempro) + AX = 1129h + BL = row specifier (see AX=1121h) +Return: nothing +Notes: this function is meant to be called immediately after a mode set; + results are unpredictable at other times + UltraVision v2+ sets INT 43 to the appropriate font on this call +SeeAlso: AX=1120h,AX=1121h,AX=1122h,AX=1123h,AX=1124h,INT 1F"SYSTEM DATA" +SeeAlso: INT 43"VIDEO DATA" +--------V-101129----------------------------- +INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET USER GRAPHICS CHARACTERS (Diamond) + AX = 1129h + DI:BP -> user table + CX = bytes per character + BL = row specifier + 00h user set + DL = number of rows + 01h 14 rows + 02h 25 rows + 03h 43 rows +Return: AL = new number of rows +Notes: this function is meant to be called immediately after a mode set; + results are unpredictable at other times + supported by Diamond Stealth64 Video +SeeAlso: AX=1120h,AX=1122h,AX=1123h,AX=1124h,INT 1F"SYSTEM",INT 43"VIDEO" +--------V-101130----------------------------- +INT 10 - VIDEO - GET FONT INFORMATION (EGA, MCGA, VGA) + AX = 1130h + BH = pointer specifier + 00h INT 1Fh pointer + 01h INT 43h pointer + 02h ROM 8x14 character font pointer + 03h ROM 8x8 double dot font pointer + 04h ROM 8x8 double dot font (high 128 characters) + 05h ROM alpha alternate (9 by 14) pointer (EGA,VGA) + 06h ROM 8x16 font (MCGA, VGA) + 07h ROM alternate 9x16 font (VGA only) (see #00021) + 11h (UltraVision v2+) 8x20 font (VGA) or 8x19 font (autosync EGA) + 12h (UltraVision v2+) 8x10 font (VGA) or 8x11 font (autosync EGA) +Return: ES:BP = specified pointer + CX = bytes/character of on-screen font (not the requested font!) + DL = highest character row on screen +Note: for UltraVision v2+, the 9xN alternate fonts follow the corresponding + 8xN font at ES:BP+256N +BUG: the IBM EGA and some other EGA cards return in DL the number of rows on + screen rather than the highest row number (which is one less). +SeeAlso: AX=1100h,AX=1103h,AX=1120h,INT 1F"SYSTEM DATA",INT 43"VIDEO DATA" + +Format of alternate font table [array]: +Offset Size Description (Table 00021) + 00h BYTE character to be replaced (00h = end of table) + 01h N BYTEs graphics data for character, one byte per scan line +--------V-101130BX4D4F----------------------- +INT 10 - M10_SCR.COM v3.5+ - INSTALLATION CHECK + AX = 1130h + BX = 4D4Fh +Return: CX = 4F4Dh if installed + ES:BP -> M10_SCR INT 10 handler +Program: M10_SCR is a shareware extended text mode and font driver by + I.V. Morozov +SeeAlso: INT 16/AX=4D4Fh +--------V-1012------------------------------- +INT 10 - BIOS Window Extension v1.1 - GET BLANKING ATTRIBUTE + AH = 12h +Return: BH = attribute to use on blanked lines when scrolling +Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal +SeeAlso: AH=11h"Window",AH=12h"Window" +--------V-1012------------------------------- +INT 10 - Tandy 2000 - VIDEO - SCROLL WINDOW + AH = 12h + AL = number of rows or columns to scroll + BH = buffer flag + 00h data in user buffer + ES:SI -> buffer containing character/attribute pairs + 01h no buffer, fill emptied rows/columns with blanks + BL = direction in which to scroll + 00h up + 01h down + 02h left + 03h right + CH,CL = row,column of upper left corner of scroll area + DH,DL = row,column of lower right corner +Return: nothing +Notes: this interrupt is identical to INT 52 on Tandy 2000 + the user buffer, if supplied, must be organized by row; regardless of + the scroll direction, all character/attribute pairs for the first + row are first, then the pairs for the second row, etc. +SeeAlso: AH=00h,AH=0Bh/BH=02h,AH=11h"Tandy 2000",AH=12h"Tandy 2000" +SeeAlso: INT 52"Tandy" +--------V-1012--BL10------------------------- +INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, EGA, VGA, MCGA) - GET EGA INFO + AH = 12h + BL = 10h +Return: BH = video state + 00h color mode in effect (I/O port 3Dxh) + 01h mono mode in effect (I/O port 3Bxh) + BL = installed memory (00h = 64K, 01h = 128K, 02h = 192K, 03h = 256K) + CH = feature connector bits (see #00022) + CL = switch settings (see #00023,#00024) + AH destroyed (at least by Tseng ET4000 BIOS v8.00n) +Note: one possible check for the presence of an EGA or later display card + is to call this function with BH=FFh; if not present, BH will be + unchanged on return + another installation check is used by Athena Digital's HGCIBM, which + sets CX to FFFFh on calling and checks whether it has been changed + on return +Index: installation check;EGA + +Bitfields for feature connector bits: +Bit(s) Description (Table 00022) + 0 FEAT 1 line, state 2 + 1 FEAT 0 line, state 2 + 2 FEAT 1 line, state 1 + 3 FEAT 0 line, state 1 + 4-7 unused (0) + +Bitfields for switch settings: +Bit(s) Description (Table 00023) + 0 switch 1 OFF + 1 switch 2 OFF + 2 switch 3 OFF + 3 switch 4 OFF + 4-7 unused + +(Table 00024) +Values for switch settings on original EGA/VGA: + 00h primary MDA/HGC, secondary EGA+ 40x25 + 01h-03h primary MDA/HGC, secondary EGA+ 80x25 + 04h primary CGA 40x25, secondary EGA+ 80x25 mono + 05h primary CGA 80x25, secondary EGA+ 80x25 mono + 06h primary EGA+ 40x25, secondary MDA/HGC (optional) + 07h-09h primary EGA+ 80x25, secondary MDA/HGC (optional) + 0Ah primary EGA+ 80x25 mono,secondary CGA 40x25 (optional) + 0Bh primary EGA+ 80x25 mono,secondary CGA 80x25 (optional) +--------V-1012--BL11------------------------- +INT 10 - VIDEO - Trident TVGA 8800/8900/9000 BIOS - GET BIOS INFO + AH = 12h + BL = 11h +Return: AL = 12h if function supported + BL = ??? (10h) + ES:BP -> BIOS info structure (see #00025) +SeeAlso: AH=12h/BL=12h"TRIDENT" + +Format of Trident BIOS Info structure: +Offset Size Description (Table 00025) + 00h BYTE ??? (0000h) + 01h BYTE OEM Code (00h for original Trident) + 02h WORD ID??? (1073h for 8800BR, 1074 for 8800CS) + 04h 8 BYTEs BIOS date ('mm/dd/yy') + 0Ch WORD ??? + 0Eh 8 BYTEs BIOS Version (' C3-128 ', ' C3-129 ') +--------V-1012--BL12------------------------- +INT 10 - VIDEO - Trident TVGA 8800/8900/9000 BIOS - GET VIDEO RAM SIZE + AH = 12h + BL = 12h +Return: AL = 12h if function supported + AH = number of 256K banks of RAM installed + (read from CRTC register 1Fh) +SeeAlso: AH=12h/BL=11h"TRIDENT" +--------V-1012--BL20------------------------- +INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS,EGA,VGA,MCGA) - ALTERNATE PRTSC + AH = 12h + BL = 20h select alternate print screen routine +Return: nothing +Desc: installs a PrtSc routine from the video card's BIOS to replace the + default PrtSc handler from the ROM BIOS, which usually does not + understand screen heights other than 25 lines +Note: some adapters disable print-screen instead of enhancing it +SeeAlso: INT 05"PRINT SCREEN" +--------V-1012--BL2E------------------------- +INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG + AH = 12h + BL = 2Eh +Return: nothing +Note: due to an omitted end-of-list marker, these versions of the BIOS will + crash the system on this function +--------V-1012--BL30------------------------- +INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - SELECT VERTICAL RESOLUTION + AH = 12h + BL = 30h + AL = vertical resolution + 00h 200 scan lines + 01h 350 scan lines + 02h 400 scan lines +Return: AL = 12h if function supported +Desc: specify the number of scan lines used to display text modes +Note: the specified resolution will take effect on the next mode set +SeeAlso: AH=00h +--------V-1012--BL31------------------------- +INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - PALETTE LOADING + AH = 12h + BL = 31h + AL = new state + 00h enable default palette loading + 01h disable default palette loading +Return: AL = 12h if function supported +Desc: specify whether a default palette should be loaded when the display + mode is set +SeeAlso: AH=00h +--------V-1012--BL32------------------------- +INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - VIDEO ADDRESSING + AH = 12h + BL = 32h + AL = new state + 00h enable video addressing + 01h disable video addressing +Return: AL = 12h if function supported +Desc: specify whether the CPU should have access to video memory and the + display adapters I/O registers +--------V-1012--BL33------------------------- +INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - GRAY-SCALE SUMMING + AH = 12h + BL = 33h + AL = new state + 00h enable gray scale summing + 01h disable gray scale summing +Return: AL = 12h if function supported +Desc: specify whether or not colors should be converted to gray scale when + palette or color registers are loaded +SeeAlso: AX=101Bh,AX=BF06h,AX=BF08h +--------V-1012--BL34------------------------- +INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - CURSOR EMULATION + AH = 12h + BL = 34h + AL = new state + 00h enable alphanumeric cursor emulation + 01h disable alphanumeric cursor emulation +Return: AL = 12h if function supported +Desc: specify whether the BIOS should automatically remap cursor start/end + according to the current character height in text modes +SeeAlso: AH=01h,AH=03h +--------V-1012--BL35------------------------- +INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS) - DISPLAY-SWITCH INTERFACE + AH = 12h + BL = 35h + AL = subfunction + 00h initial adapter video off + 01h initial planar video on + 02h switch active video off + 03h switch inactive video on + 80h *UNDOCUMENTED* set system board video active flag + ES:DX -> buffer for 128 byte save area (if AL = 00h-03h) +Return: AL = 12h if function supported +Desc: switch between two video adapters which may otherwise have address + conflicts +SeeAlso: AX=BF00h,AX=BF01h,INT 6D"VGA" +--------V-1012--BL36------------------------- +INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, VGA) - VIDEO REFRESH CONTROL + AH = 12h + BL = 36h + AL = new state + 00h enable refresh + 01h disable refresh +Return: AL = 12h if function supported +Desc: specify whether the contents of video memory should be displayed on + the screen; disabling refresh effectively blanks the screen +Note: when display refresh is disabled, the entire screen displays the color + specified by the DAC color register 00h; thus to actually blank the + screen, the application must first ensure that that register has been + set to black +BUG: GEM/VIEWMAX ET3000 and ET4000 drivers dated 1988/6/23 do not correctly + reenable refresh after the screen has been blanked due to inactivity, + resulting in a total loss of video synchronization +SeeAlso: AX=BF05h +--------V-1012--BL37------------------------- +INT 10 - VIDEO - XGA - MAINFRAME INTERACTIVE SUPPORT + AH = 12h + BL = 37h + AL = text attribute type (00h normal VGA, 01h mainframe type) +Return: AL = 12h if supported +SeeAlso: #00026,AH=08h,#00042 + +Bitfields for XGA mainframe type character attributes: +Bit(s) Description (Table 00026) + 7 blink double rate (75% ON time) or use color 8 as background + (see AX=1003h) + 6 reverse video + 5 underlined + 4 left-most and right-most dots of underline area inverted + 3 foreground intensity/character font select + 2-0 foreground color +SeeAlso: #00014,#00036 +--------V-1012--BL38------------------------- +INT 10 - IBM SurePath BIOS - Officially "Private" Function + AH = 12h + BL = 38h +SeeAlso: AX=1118h,AH=12h/BL=39h +--------V-1012--BL39------------------------- +INT 10 - IBM SurePath BIOS - Officially "Private" Function + AH = 12h + BL = 39h +SeeAlso: AX=1118h,AH=12h/BL=38h,AH=12h/BL=3Ah +--------V-1012--BL3A------------------------- +INT 10 - IBM SurePath BIOS - Officially "Private" Function + AH = 12h + BL = 3Ah +SeeAlso: AX=1118h,AH=12h/BL=39h +--------V-1012--BL53------------------------- +INT 10 - Tseng ET-4000 BIOS v8.00 (1991/06/07) - BUG + AH = 12h + BL = 53h +Note: due to an omitted end-of-list marker, this version of the BIOS will + crash the system on this function +--------V-1012--BL57------------------------- +INT 10 - Tseng ET-4000 BIOS v8.00 (1991/06/07) - BUG + AH = 12h + BL = 57h +Note: due to an omitted end-of-list marker, this version of the BIOS will + crash the system on this function +--------V-1012--BH55------------------------- +INT 10 - VIDEO - ALTERNATE FUNC SELECT (ATI,Tatung,Taxan) - ENHANCED FEATURES + AH = 12h + BH = 55h + BL = subfunction + 00h disable enhanced features + 01h enable enhanced features + 02h get status + Return: AL = status flags (see #00027) + 03h disable register trapping (CGA emulation) + 04h enable register trapping + 05h program video mode + ES:BP -> video mode table (see #00028) + 06h get mode table + AL = video mode + Return: ES:BP -> table suitable for mode AL + (and subfunc BL=05h) (see #00028) + BP = FFFFh on error + SI = 0000h (ATI Mach32) +Note: the ATI Mouse driver (MOUSE.COM/MOUSE.SYS) uses subfunction 06h to get + the mode table for mode 03h, and then looks for a signature string + beginning within 32 bytes of the offset specified by the word at + ES:000Ch +SeeAlso: AH=FFh"Oak" +Index: installation check;ATI video adapters + +Bitfields for status flags: +Bit(s) Description (Table 00027) + 3 set if enhanced features enabled + 7-5 monitor type + 000 PS/2 mono + 001 PS/2 color + 010 multi-sync + 011 Taxan 650 25kHz + 100 RGB + 101 mono + 110 EGA + 111 Compaq internal + +Format of ATI VGA Wonder video mode table: +Offset Size Description (Table 00028) + 00h BYTE number of columns + 01h BYTE maximum row (number of rows - 1) + 02h BYTE scan lines per row + 03h WORD video buffer size in bytes + 05h 4 BYTEs values for Sequencer registers 1-4 + 09h BYTE value for Miscellaneous Output register + 0Ah 25 BYTEs values for CRTC registers 00h-18h + 00h horizontal total size (chars) + 01h horizontal displayed (chars) + 02h horizontal sync position (chars) + 03h horizontal sync width (chars) + 04h vertical total size (char rows) + 05h vertical total adjust (scan lines) + 06h vertical displayed (char rows) + 07h vertical sync position (char rows) + 08h interlace mode + 09h max scan line in row + 0Ah cursor start scan line + 0Bh cursor end scan line + 0Ch screen memory start (high) + 0Dh screen memory start (low) + 0Eh cursor address (high) + 0Fh cursor address (low) + 10h light pen (high) + 11h light pen (low) + 23h 20 BYTEs default palette (values for Attribute Controller regs 00h-13h) + 37h 9 BYTEs values for Graphics Controller registers 00h-08h +--------V-1012--BL74------------------------- +INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG + AH = 12h + BL = 74h +Note: due to an omitted end-of-list marker, these versions of the BIOS will + crash the system on this function +--------V-1012--BL80------------------------- +INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG + AH = 12h + BL = 80h +Note: due to an omitted end-of-list marker, these versions of the BIOS will + crash the system on this function +--------V-1012--BL80------------------------- +INT 10 - Cirrus Logic BIOS - INQUIRE VGA TYPE + AH = 12h + BL = 80h +Return: AX = controller type in bits 13-0 (see #00029) + bit 14: ??? + bit 15: ??? + BL = silicon revision number (bit 7 set if not available) + BH = ??? + bit 2 set if using CL-GD 6340 LCD interface +SeeAlso: AH=12h/BL=81h,AH=12h/BL=82h,AH=12h/BL=85h,AH=12h/BL=9Ah,AH=12h/BL=A1h + +(Table 00029) +Values for Cirrus Logic video controller type: + 0000h no extended alternate select support + 0001h reserved + 0002h CL-GD510/520 + 0003h CL-GD610/620 + 0004h CL-GD5320 + 0005h CL-GD6410 + 0006h CL-GD5410 + 0007h CL-GD6420 + 0008h CL-GD6412 + 0010h CL-GD5401 + 0011h CL-GD5402 + 0012h CL-GD5420 + 0013h CL-GD5422 + 0014h CL-GD5424 + 0015h CL-GD5426 + 0016h CL-GD5420r1 + 0017h CL-GD5402r1 + 0018h CL-GD5428 + 0019h CL-GD5429 + 0020h CL-GD6205/15/25 + 0021h CL-GD6215 + 0022h CL-GD6225 + 0023h CL-GD6235 + 0024h CL-GD6245 + 0030h CL-GD5432 + 0031h CL-GD5434 + 0032h CL-GD5430 + 0033h CL-GD5434 rev. E and F + 0035h CL-GD5440 + 0036h CL-GD5436 + 0039h CL-GD5446 + 0040h CL-GD6440 + 0041h CL-GD7542 (Nordic) + 0042h CL-GD7543 (Viking) + 0043h CL-GD7541 (Nordic Lite) + 0050h CL-GD5452 (Northstar) + 0052h CL-GD5452 (Northstar) ??? +SeeAlso: #00732,#00743 +--------V-1012--BL81------------------------- +INT 10 - Cirrus Logic BIOS - GET BIOS VERSION NUMBER + AH = 12h + BL = 81h +Return: AH = BIOS major version + AL = BIOS minor version +SeeAlso: AH=12h/BL=80h,AH=12h/BL=82h +--------V-1012--BL82------------------------- +INT 10 - Cirrus Logic BIOS - GET DESIGN REVISION CODE + AH = 12h + BL = 82h +Return: AL = chip revision + AH = ??? (AFh for v1.01) +SeeAlso: AH=12h/BL=80h,AH=12h/BL=81h,#00732 at INT 1A/AX=B102h +--------V-1012--BL84------------------------- +INT 10 - Cirrus Logic BIOS v3.02 - INQUIRE OPTIONS + AH = 12h + BL = 84h +Return: AX = user options word (see #00030) +SeeAlso: AH=12h/BL=89h,AH=12h/BL=8Ah,AH=12h/BL=8Bh,AH=12h/BL=8Ch,AH=12h/BL=8Fh +SeeAlso: AH=12h/BL=90h,AH=12h/BL=9Ah + +Bitfields for Cirrus Logic user options word: +Bit(s) Description (Table 00030) + 1,0 centering + 00 vertical centered, 01 from bottom, 10 from top, 11 reserved + 3,2 720-dot fix-up options + 00 OR every 8th and 9th pixel + 01 display MGA mode from left + 10 display MGA mode from right + 11 skip every 9th pixel + 4 ??? + 7-5 video mode (001 CGA, 010 MGA, 011 EGA, 100 VGA) + 8 external monitor enabled instead of LCD panel + 9 vertical expand mode enabled + 10 8-bit mode instead of 16-bit mode + 11 normal video rather than reverse video (for LCD) + 12 attribute automap rather than attribute emulation + 13 bold mode disabled (default) + 14 fast bandwidth + 15 ??? +--------V-1012--BL85------------------------- +INT 10 - Cirrus Logic BIOS - GET INSTALLED MEMORY + AH = 12h + BL = 85h +Return: AL = number of 64K banks of video memory +SeeAlso: AH=12h/BL=80h,AH=12h/BL=93h +--------V-1012--BL89------------------------- +INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - EN/DISABLE REVERSE VIDEO MODE + AH = 12h + BL = 89h + AL = new state (00h enabled, 01h disabled) +Return: nothing +SeeAlso: AH=12h/BL=84h,AH=12h/BL=8Ah,AH=12h/BL=8Bh +--------V-1012--BL8A------------------------- +INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - SET FRAME COLOR + AH = 12h + BL = 8Ah + AL = new gray-scale color (00h = black to 0Fh = white) +Return: nothing +SeeAlso: AH=12h/BL=84h,AH=12h/BL=89h,AH=12h/BL=8Fh +--------V-1012--BL8B------------------------- +INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - ENABLE/DISABLE BOLD MODE + AH = 12h + BL = 8Bh + AL = new state (00h enabled, 01h disabled) +Return: nothing +SeeAlso: AH=12h/BL=84h,AH=12h/BL=89h,AH=12h/BL=8Ch,AH=12h/BL=8Fh +--------V-1012--BL8C------------------------- +INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - SET AUTOMAP/EMULATE ATTRIBUTES + AH = 12h + BL = 8Ch + AL = new state + 00h enable automap + 01h disable automap and emulate attributes +Return: nothing +SeeAlso: AH=12h/BL=84h,AH=12h/BL=8Bh +--------V-1012--BL8F------------------------- +INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - ENABLE/DISABLE EXPAND MODE + AH = 12h + BL = 8Fh + AL = new state (00h enabled, 01h disabled) +Return: nothing +Note: when expand mode is enabled, the vertical dimension is enlarged to + full screen +SeeAlso: AH=12h/BL=84h,AH=12h/BL=89h,AH=12h/BL=8Bh,AH=12h/BL=90h +--------V-1012--BL90------------------------- +INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - SET CENTERING MODE + AH = 12h + BL = 90h + AL = new position + 00h centered + 01h from top + 02h from bottom + 03h from top +Return: nothing +SeeAlso: AH=12h/BL=84h,AH=12h/BL=8Fh +--------V-1012--BL91------------------------- +INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - SET 720-DOT FIXUP MODE + AH = 12h + BL = 91h + AL = new mode + 00h display MGA mode from left of screen (default) + 01h display MGA from right + 02h skip every ninth pixel + 03h OR every 8th and 9th pixel +Return: nothing +SeeAlso: AH=12h/BL=84h,AH=12h/BL=8Ah,AH=12h/BL=90h +--------V-1012--BL92------------------------- +INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - SWITCH DISPLAY + AH = 12h + BL = 92h + AL = new display (00h LCD, 01h external monitor) +Return: nothing +Note: the deselected display is disabled +SeeAlso: AH=12h/BL=84h,AH=12h/BL=89h,AH=12h/BL=90h,AH=12h/BL=94h +--------V-1012--BL93------------------------- +INT 10 - Cirrus Logic BIOS - FORCE 8-BIT OR 16-BIT OPERATION + AH = 12h + BL = 93h + AL = new I/O width (00h = 16 bits, 01h = 8 bits) +Return: nothing +SeeAlso: AH=12h/BL=9Ah +--------V-1012--BL94------------------------- +INT 10 - Cirrus Logic BIOS v3.02 - POWER CONSERVATION + AH = 12h + BL = 94h + AL = new state (00h wake up monitor, 01h shut down display) +Return: nothing +Note: AL=01h is reported not to work properly on the LCD panel +SeeAlso: AH=12h/BL=84h,AH=12h/BL=92h +--------V-1012--BL9A------------------------- +INT 10 - Cirrus Logic BIOS - GET USER OPTIONS + AH = 12h + BL = 9Ah +Return: AX = options word 1 (see #00031) + CX = options word 2 (see #00032) + BX,DX reserved +SeeAlso: AH=12h/BL=80h,AH=12h/BL=84h,AH=12h/BL=93h,AH=12h/BL=A0h +SeeAlso: AH=12h/BL=A3h,AH=12h/BL=A4h,#00732 at INT 1A/AX=B102h + +Bitfields for Cirrus Logic options word 1: +Bit(s) Description (Table 00031) + 0,1 reserved + 2-4 monitor type + 5-6 maximum vertical resolution + 7-9 reserved + 10 force 8-bit operation + 11-13 reserved + 14 vertical refresh frequency at 640x480 + =0 60 Hz + =1 high refresh + 15 reserved +SeeAlso: AH=12h/BL=AEh + +Bitfields for Cirrus Logic options word 2: +Bit(s) Description (Table 00032) + 15-13 vertical refresh frequency at 1024x768 + 12-11 vertical refresh frequency at 800x600 + 10-6 reserved + 5-4 vertical refresh frequency at 1280x1024 + 3-0 reserved +SeeAlso: #00033 + +Bitfields for Cirrus Logic Options word 2 (alternate???): +Bit(s) Description (Table 00033) + 15-12 vertical refresh frequency at 1024x768 + 0000 43i Hz + 0001 60 Hz + 0010 70 Hz + 0011 72 Hz + 0100 76 Hz + other reserved + 11-8 vertical refresh frequency at 800x600 + 0000 56 Hz + 0001 60 Hz + 0010 72 Hz + 0011 75 Hz + other reserved + 7-4 maximum vertical resolution + 0000 480 scanlines + 0001 600 scanlines + 0010 768 scanlines + 0011 1024 scanlines + other reserved + 3-1 vertical refresh frequency at 1280x1024 + 000 43i Hz + 001 60 Hz + 010 71.2 Hz (CL-GD5434 rev. E and F) + 011 74 Hz (CL-GD5434 rev. E and F) + other reserved + 0 reserved +SeeAlso: #00032 +--------V-1012--BLA0------------------------- +INT 10 - Cirrus Logic BIOS - GET VIDEO MODE AVAILABILITY + AH = 12h + BL = A0h + AL = video mode number (00h-7Fh) +Return: AH bit 0: video mode supported + BX = offset of BIOS subroutine to fixup standard video parameters + (call subroutine with DS:SI and ES:DI as returned by this call) + DS:SI -> standard video parameters or FFFFh:FFFFh + ES:DI -> supplemental video parameters or FFFFh:FFFFh +SeeAlso: AH=00h,AH=12h/BL=9Ah,AH=12h/BL=A1h +--------V-1012--BLA1------------------------- +INT 10 - Cirrus Logic BIOS - READ MONITOR TYPE AND ID FROM 15-PIN CONNECTOR + AH = 12h + BL = A1h +Return: BH = monitor ID (see #00034) + BL = monitor type (00h color, 01h grayscale, 02h no display) +SeeAlso: AH=12h/BL=9Ah,AH=12h/BL=A2h + +(Table 00034) +Values for Cirrus Logic monitor ID: + 00h-08h reserved + 09h IBM 8604/8507 or equivalent + 0Ah IBM 8514 or equivalent + 0Bh IBM 8515 or equivalent + 0Dh IBM 8503 or equivalent + 0Eh IBM 8512/8513 or equivalent + 0Fh no monitor +--------V-1012--BLA2------------------------- +INT 10 - Cirrus Logic BIOS - SET MONITOR HORIZONTAL RETRACE FREQUENCY + AH = 12h + BL = A2h + AL = retrace rate + 00h standard VGA (31.5 kHz) + 01h 8514-compatible (31.5 kHz and 35.5 kHz interlaced) + 02h SuperVGA (31.5-35.1 kHz) + 03h extended SuperVGA (31.5-35.5 kHz) + 04h multi-frequency (31.5-37.8 kHz) + 05h extended multi-frequency (31.5-48.0 kHz) + 06h super multi-frequency (31.5-56.0 kHz) + 07h extended super multi-frequency (31.5-64.0 kHz) +Return: nothing +SeeAlso: AH=12h/BL=9Ah,AH=12h/BL=A0h,AH=12h/BL=A4h +--------V-1012--BLA3------------------------- +INT 10 - Cirrus Logic BIOS - SET VGA REFRESH + AH = 12h + BL = A3h + AL = refresh rate for 640x480 (00h normal, 01h high) +Return: nothing +SeeAlso: AH=12h/BL=9Ah,AH=12h/BL=A4h +--------V-1012--BLA4------------------------- +INT 10 - Cirrus Logic BIOS - SET MONITOR TYPE + AH = 12h + BL = A4h + AL = options 1 + bits 7-4 = vertical refresh at 640x480 + (0 = 60Hz, 1 = 72Hz, other reserved) + bits 3-0 = maximum vertical resolution + (0 = 480 scanlines, 1 = 600, 2 = 768, 3 = 1024, other reserved) + BH = options 2 + bits 7-4 = vertical refresh at 1024x768 + (0=87Hz-int, 1=60Hz, 2=70Hz, 3=72Hz, 4=76Hz, other reserved) + bits 3-0 = vertical refresh at 800x600 + (0 = 56Hz, 1 = 60Hz, 2 = 72Hz, other reserved) + CH = options 3 + bits 7-4 = vertical refresh at 1280x1024 + (0=87Hz-int, 1=60Hz, 2=70Hz, other reserved) + bits 3-0: reserved + CL,DX reserved +Return: nothing +SeeAlso: AH=12h/BL=9Ah,AH=12h/BL=A3h +--------V-1012--BLAE------------------------- +INT 10 - Cirrus Logic BIOS - GET HIGH REFRESH + AH = 12h + BL = AEh +Return: AL = result + bits 7-1: reserved + bit 0: 640x480 high refresh rate + =0 72 Hz + =1 75 Hz +SeeAlso: AH=12h/BL=9Ah,AH=12h/BL=A3h,AH=12h/BL=A4h,AH=12h/BL=AFh +--------V-1012--BLAF------------------------- +INT 10 - Cirrus Logic BIOS - SET HIGH REFRESH + AH = 12h + BL = AFh + AL = option + bits 7-1: reserved + bit 0: 640x480 high refresh rate + =0 72 Hz + =1 75 Hz +Return: nothing +SeeAlso: AH=12h/BL=9Ah,AH=12h/BL=A3h,AH=12h/BL=A4h,AH=12h/BL=AEh +--------V-1012--BLBE------------------------- +INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG + AH = 12h + BL = BEh +Note: due to an omitted end-of-list marker, these versions of the BIOS will + crash the system on this function +--------V-1012--BLC6------------------------- +INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG + AH = 12h + BL = C6h +Note: due to an omitted end-of-list marker, these versions of the BIOS will + crash the system on this function +--------V-1012--BLF0------------------------- +INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG + AH = 12h + BL = F0h +Note: due to an omitted end-of-list marker, these versions of the BIOS will + crash the system on this function +--------V-1012--BLF1-------------------------- +INT 10 - Tseng ET-4000 BIOS - GET/SET SCREEN REFRESH RATE + AH = 12h + BL = F1h + AL = subfunction + 00h set refresh rate + 01h get refresh rate + BH = video mode + 00h 640x480 + 01h 800x600 + 02h 1024x768 + 03h 1280x1024 + CX = new refresh rate (see #00035) if AL = 00h +Return: AL = 12h if supported + CX = current rate (for AL=00h, a changed CX indicates failure) + +(Table 00035) +Values for Tseng ET4000 refresh rate: + CX 640x480 800x600 1024x768/1280x1024 + 00h 60 Hz 56 Hz interlaced + 01h 72 Hz 60 Hz 60 Hz + 02h 75 Hz 72 Hz 70 Hz + 03h 90 Hz 75 Hz 75 Hz + 04h -- 90 Hz -- +--------V-1013------------------------------- +INT 10 - VIDEO - WRITE STRING (AT and later,EGA) + AH = 13h + AL = write mode + bit 0: update cursor after writing + bit 1: string contains alternating characters and attributes + bits 2-7: reserved (0) + BH = page number + BL = attribute if string contains only characters + CX = number of characters in string + DH,DL = row,column at which to start writing + ES:BP -> string to write +Return: nothing +Notes: recognizes CR, LF, BS, and bell; for the ET4000 BIOS, scrolling, + backspace, and CR only take place in the active page + also available PC or XT with EGA or higher + HP 95LX only supports write mode 00h + IBM documents AL=10h,11h,20h,21h as "private" rather than "reserved" + with PhysTechSoft's PTS ROM-DOS the AL,BH,BL,DH, and DL values are + ignored on entry. +BUG: on the IBM VGA Adapter, any scrolling which may occur is performed on + the active page rather than the requested page +SeeAlso: AH=09h,AH=0Ah,AH=13h"DOS/V" +--------J-1013------------------------------- +INT 10 - DOS/V - READ/WRITE DOUBLE-BYTE CHARACTER SET CHARACTERS/ATTRIBUTES + AH = 13h + AL = function + 10h read characters and standard attributes + 11h read characters and extended attributes + 12h write characters and standard attributes + 13h write characters and extended attributes + BH = 00h + CX = number of characters to transfer + DH,DL = row,column at which to start transfer + ES:BP -> buffer for/containing characters and attributes (see #00036) +Return: ES:BP buffer filled if reading +Program: DOS/V is a Japanese-language version of MS-DOS which can run on + standard (non-Japanese) ATs and compatible equipped with a VGA or + newer video adapter +Notes: subfunctions 11h and 13h are only valid when DOS/V is using video + mode 73h + the cursor position is not changed by these functions + extended attributes consist of three bytes; the first is the standard + character attribute byte, the second is as described below, and the + third is always zero in current versions +SeeAlso: AH=00h,AH=13h"VIDEO" + +Bitfields for DOS/V second extended attribute byte: +Bit(s) Description (Table 00036) + 7 underline using foreground color + 6 reverse foreground/background specified in standard attribute byte + 5-4 unused + 3 vertical white grid line in cell + 2 horizontal white grid line in cell + 1-0 unused +SeeAlso: #00014,#00026 +--------V-101400----------------------------- +INT 10 - VIDEO - LOAD USER-SPECIFIED LCD CHARACTER FONT (CONV,Compaq Port 386) + AX = 1400h + ES:DI -> character font + BH = number of bytes per character + 08h or 10h (Compaq) + BL = 00h load main font (block 0) + 01h load alternate font (block 1) + CX = number of characters to store + DX = character offset into RAM font area +Return: nothing +SeeAlso: AX=1100h,AX=1110h,AX=1401h +--------V-101401----------------------------- +INT 10 - VIDEO - LOAD SYSTEM ROM DEFAULT LCD CHARACTER FONT (CONV,CP386) + AX = 1401h + BL = font to load + 00h main font (block 0) + 01h alternate font (block 1) +Return: nothing +SeeAlso: AX=1100h,AX=1102h,AX=1400h +--------V-101402----------------------------- +INT 10 - VIDEO - SET MAPPING OF LCD HIGH INTENSITY ATTRIBUTES (CONV,CP386) + AX = 1402h + BL = subfunction + 00h ignore high intensity attribute + 01h map high intensity to reverse video + 02h map high intensity to underscore + 03h map high intensity to selected alternate font + B0h half intensity (Compaq) + B1h toggle active intensity bit interpretation (CP386) +Return: nothing +--------V-1015------------------------------- +INT 10 - VIDEO - GET PHYSICAL DISPLAY PARAMETERS (CONVERTIBLE) + AH = 15h +Return: AX = alternate display adapter type (see #00037) + ES:DI -> parameter table (see #00038) +SeeAlso: AH=1Bh + +(Table 00037) +Values for PC Convertible alternate display adapter type: + 0000h none + 5140h LCD + 5153h CGA + 5151h mono + +Format of PC Convertible display parameter table: +Offset Size Description (Table 00038) + 00h WORD monitor model number + 02h WORD vertical pixels per meter + 04h WORD horizontal pixels per meter + 06h WORD total vertical pixels + 08h WORD total horizontal pixels + 0Ah WORD horizontal pixel separation in micrometers + (width, center-to-center) + 0Ch WORD vertical pixel separation in micrometers + (height, center-to-center) +--------V-1015------------------------------- +INT 10 - VIDEO - SET SUPERIMPOSE MODE (Sperry PC) + AH = 15h + AL = superimpose mode + 00h show graphics screen + 01h show text screen + 02h show text screen superimposed on graphics screen +Return: nothing +--------J-1018------------------------------- +INT 10 - VIDEO - DOS/V - GET/SET FONT PATTERN + AH = 18h + AL = subfunction + 00h get font pattern + 01h set font pattern + BX = 0000h + CL = character size in bytes (01h,02h) + CH = 00h + DH = character width in pixels + DL = character height in pixels + ES:DI -> buffer for/containing font image +Return: AL = status (00h successful, else error) + ES:DI buffer filled for function 00h if successful +Note: the supported font sizes are 8x16 single-byte, 8x19 single-byte, + 16x16 double-byte, and 24x24 double-byte +SeeAlso: AH=19h,INT 16/AH=14h +--------V-1019------------------------------- +INT 10 - Japanese VIDEO - DOUBLE-BYTE CHARACTER SET SHIFT INFORMATION + AH = 19h + ??? +Return: ??? +SeeAlso: AH=18h,INT 16/AH=14h +--------V-101A00----------------------------- +INT 10 - VIDEO - GET DISPLAY COMBINATION CODE (PS,VGA/MCGA) + AX = 1A00h +Return: AL = 1Ah if function was supported + BL = active display code (see #00039) + BH = alternate display code (see #00039) +Notes: this function is commonly used to check for the presence of a VGA + this function is supported on the ATI EGA Wonder with certain + undocumented configuration switch settings, even though the EGA + Wonder does not support VGA graphics; to distinguish this case, + call AX=1C00h with CX nonzero, which the EGA Wonder does not support +SeeAlso: AH=12h/BL=35h,AX=1A01h,AH=1Bh,AH=1Ch,MEM 0040h:008Ah +Index: installation check;VGA + +(Table 00039) +Values for display combination code: + 00h no display + 01h monochrome adapter w/ monochrome display + 02h CGA w/ color display + 03h reserved + 04h EGA w/ color display + 05h EGA w/ monochrome display + 06h PGA w/ color display + 07h VGA w/ monochrome analog display + 08h VGA w/ color analog display + 09h reserved + 0Ah MCGA w/ digital color display + 0Bh MCGA w/ monochrome analog display + 0Ch MCGA w/ color analog display + FFh unknown display type +--------V-101A01----------------------------- +INT 10 - VIDEO - SET DISPLAY COMBINATION CODE (PS,VGA/MCGA) + AX = 1A01h + BL = active display code (see #00039) + BH = alternate display code +Return: AL = 1Ah if function was supported +SeeAlso: AH=12h/BL=35h,AX=1A00h +--------V-101B------------------------------- +INT 10 - VIDEO - FUNCTIONALITY/STATE INFORMATION (PS,VGA/MCGA) + AH = 1Bh + BX = implementation type + 0000h return funtionality/state information + ES:DI -> 64-byte buffer for state information (see #00040) +Return: AL = 1Bh if function supported + ES:DI buffer filled with state information +BUG: Trident 8900 (BIOS D3.0 1991/11/12) and Trident 9000 (C3.0 1991/10/25) + do not correctly set the fields at offsets 27h and 29h of the + state information +SeeAlso: AH=15h,AX=1A00h,AX=1F01h + +Format of MCGA+ state information: +Offset Size Description (Table 00040) + 00h DWORD address of static funtionality table (see #00045) + 04h BYTE video mode in effect + 05h WORD number of columns + 07h WORD length of regen buffer in bytes + 09h WORD starting address of regen buffer + 0Bh WORD cursor position for page 0 + 0Dh WORD cursor position for page 1 + 0Fh WORD cursor position for page 2 + 11h WORD cursor position for page 3 + 13h WORD cursor position for page 4 + 15h WORD cursor position for page 5 + 17h WORD cursor position for page 6 + 19h WORD cursor position for page 7 + 1Bh WORD cursor "type" (start/stop scan lines) + 1Dh BYTE active display page + 1Eh WORD CRTC port address + 20h BYTE current setting of PORT 03x8h + 21h BYTE current setting of PORT 03x9h + 22h BYTE number of rows - 1 + 23h WORD bytes/character + 25h BYTE display combination code of active display + 26h BYTE DCC of alternate display + 27h WORD number of colors supported in current mode (0000h = mono) + 29h BYTE number of pages supported in current mode + 2Ah BYTE number of scan lines active + (0,1,2,3) = (200,350,400,480) + Tseng ET3000: (4,5,6 = 512,600,768) + 2Bh BYTE primary character block + 2Ch BYTE secondary character block + 2Dh BYTE miscellaneous flags (see #00041) + 2Eh BYTE non-VGA mode support (see #00042) + 2Fh 2 BYTEs reserved (00h) + 31h BYTE video memory available + 00h = 64K, 01h = 128K, 02h = 192K, 03h = 256K + 32h BYTE save pointer state flags (see #00043) + 33h BYTE display information and status (see #00044) + 34h 12 BYTEs reserved (00h) + +Bitfields for miscellaneous flags: +Bit(s) Description (Table 00041) + 0 all modes on all displays on + 1 gray summing on + 2 monochrome display attached + 3 default palette loading disabled + 4 cursor emulation enabled + 5 0 = intensity; 1 = blinking + 6 flat-panel display is active + 7 unused (0) +SeeAlso: #00040 + +Bitfields for non-VGA mode support: +Bit(s) Description (Table 00042) + 7-5 reserved + 4 132-column mode supported + 3 =1 MFI attributes enabled (see AH=12h/BL=37h) + =0 VGA attributes + 2 16-bit VGA graphics present + 1 adapter interface driver required + 0 BIOS supports information return for adapter interface +SeeAlso: #00040 + +Bitfields for save pointer state flags: +Bit(s) Description (Table 00043) + 0 512 character set active + 1 dynamic save area present + 2 alpha font override active + 3 graphics font override active + 4 palette override active + 5 DCC override active + 6-7 unused (0) +SeeAlso: #00040 + +Bitfields for display information and status: +Bit(s) Description (Table 00044) + 7 640x480 flat-panel can be used simultaneously with CRT controller + 6-3 reserved + 2 color display + 1 flat-panel display active + 0 flat-panel display attached +SeeAlso: #00040 + +Format of Static Functionality Table: +Offset Size Description (Table 00045) + 00h BYTE modes supported 1 + bit 0 to bit 7 = 1 modes 0,1,2,3,4,5,6,7 supported + 01h BYTE modes supported 2 + bit 0 to bit 7 = 1 modes 8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh supported + 02h BYTE modes supported 3 + bit 0 to bit 3 = 1 modes 10h,11h,12h,13h supported + bit 4 to bit 7 unused (0) + 03h BYTE (IBM) reserved + (Tseng ET3000/4000) modes supported 4 + bit 0 to bit 7 = modes 18h-1Fh supported + 04h BYTE (IBM) reserved + (Tseng ET3000/4000) modes supported 5 + bit 0 to bit 7 = modes 20h-27h supported + 05h BYTE (IBM) reserved + (Tseng ET3000/4000) modes supported 6 + bit 0 to bit 7 = modes 28h-2Fh supported + 06h BYTE (IBM) reserved + (Tseng ET3000/4000) modes supported 7 + bit 0 to bit 7 = modes 30h-37h supported + 07h BYTE scan lines supported + bit 0 to bit 2 = 1 if scan lines 200,350,400 supported + bits 3-7 = unused (0) + 08h BYTE total number of character blocks available in text modes + 09h BYTE maximum number of active character blocks in text modes + 0Ah WORD miscellaneous function support flags (see #00046) + 0Ch WORD reserved + 0Eh BYTE save pointer function flags (see #00047) + 0Fh BYTE reserved +SeeAlso: #00040 + +Bitfields for miscellaneous function support flags: +Bit(s) Description (Table 00046) + 0 all modes on all displays function supported + 1 gray summing function supported + 2 character font loading function supported + 3 default palette loading enable/disable supported + 4 cursor emulation function supported + 5 EGA palette present + 6 color palette present + 7 color-register paging function supported + 8 light pen supported (see AH=04h) + 9 save/restore state function 1Ch supported + 10 intensity/blinking function supported (see AX=1003h) + 11 Display Combination Code supported (see #00039) + 12-15 unused (0) +SeeAlso: #00040 + +Bitfields for save pointer function flags: +Bit(s) Description (Table 00047) + 0 512 character set supported + 1 dynamic save area supported + 2 alpha font override supported + 3 graphics font override supported + 4 palette override supported + 5 DCC extension supported + 6-7 unused (0) +SeeAlso: #00040 +--------V-101C------------------------------- +INT 10 - VIDEO - SAVE/RESTORE VIDEO STATE (PS50+,VGA) + AH = 1Ch + AL = function + 00h return state buffer size + Return: BX = number of 64-byte blocks needed + 01h save video state + ES:BX -> buffer + 02h restore video state + ES:BX -> buffer containing previously saved state + CX = requested states (see #00048) +Return: AL = 1Ch if function supported +Notes: many BIOSes corrupt the video registers when saving the state, so a + program should restore the state immediately after saving it (the + saved data is uncorrupted) + the BIOS data area consists of the 96 bytes from 0040h:0049h-00A8h + this function is not supported when DOS/V is running + this function may be a better VGA installation check than the usual + INT 10/AX=1A00h, since some late-model EGA cards (such as the ATI + EGA Wonder) supported that call +SeeAlso: AX=1A00h,AX=5F90h,AX=5FA0h,MEM 0040h:00A8h + +Bitfields for requested states: +Bit(s) Description (Table 00048) + 0 video hardware (see #00049) + 1 BIOS data areas + 2 color registers and DAC state (see #00050) + 3-15 unused (0) +SeeAlso: #00186 + +Format of VGA video hardware state: +Offset Size Description (Table 00049) + 00h BYTE sequencer index register + 01h BYTE CRTC index register + 02h BYTE graphics controller index register + 03h BYTE attribute controller index register + 04h BYTE feature controller register + 05h 4 BYTEs sequencer registers + 09h BYTE sequencer register 0 + 0Ah 25 BYTEs CRTC registers 0-8 + 23h 16 BYTEs palette registers 00h-0Fh + 33h 4 BYTEs attribute registers 10h-13h + 37h 9 BYTEs graphics controller registers 0-8 + 40h BYTE CRTC base address (low) + 41h BYTE CRTC base address (high) + 42h BYTE plane 0 latch + 43h BYTE plane 1 latch + 44h BYTE plane 2 latch + 45h BYTE plane 3 latch + +Format of VGA DAC state: +Offset Size Description (Table 00050) + 00h BYTE read/write mode DAC + 01h BYTE pixel address + 02h BYTE pixel mask + 03h 768 BYTEs color data (256 triples) +303h BYTE color select register +--------J-101D------------------------------- +INT 10 - VIDEO - DOS/V - SHIFT STATUS LINE CONTROL + AH = 1Dh + AL = function + 00h enable shift status line(s) + BX = number of lines to reserve at bottom of screen (usu. 1) + 01h disable shift status line + BX = number of lines reserved at bottom of screen (usually 1) + 02h get number of status lines + Return: BX = number of lines reserved for shift status +SeeAlso: AH=19h +--------V-101D------------------------------- +INT 10 - SpeedSTAR Plus BIOS v4.23+ - SET SYNC PARAMETERS + AH = 1Dh + AL = video mode + ES = caller's segment +Return: nothing +Note: the caller's segment contains at offset 5Ch (FCB field in PSP) + or 100h a table with sync parameters (see #00051) (BIOS looks at both + offsets) + +Format of SpeedSTAR Plus sync table: +Offset Size Description (Table 00051) + 00h 9 BYTEs ID contains string 'ey5CENTER' + 09h 5 BYTEs sync parameters for 640x480 modes 11h,12h,25h,26h,2Eh + 0Bh 5 BYTEs sync parameters for 800x600 modes 29h,30h,2Ah + 13h 5 BYTEs sync parameters for 1024x768 modes 37h,38h +--------V-101D------------------------------- +INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG + AH = 1Dh +Note: these versions of the BIOS jump to a random location on this function + due to a fencepost error +--------V-101DAABXFDEC----------------------- +INT 10 U - Diamond Stealth64 Video - INSTALLATION CHECK + AX = 1DAAh + BX = FDECh +Return: BX = CDEFh if Diamond Stealth64 Video 2001-series video card installed + AL = number of megabytes of video memory + AH = card type??? (4Bh for VL-Bus/5Bh for PCI) + CX = ??? (0000h) + SI:DI -> signature/copyright string +--------V-101E00----------------------------- +INT 10 - VIDEO - FLAT-PANEL - READ INFORMATION + AX = 1E00h +Return: AL = 1Eh if function supported + BL = flat-panel status (see #00052) + ES:DI -> information table (see #00053) +Note: IBM classifies this function as optional +SeeAlso: AX=1E01h,AX=1E02h,AX=1E03h,AX=1E04h,AX=1E05h,AX=1EFEh + +Bitfields for flat-panel status: +Bit(s) Description (Table 00052) + 7-3 reserved + 2 color display + 1 flat panel is active + 0 flat panel is attached +SeeAlso: #00053 + +Format of flat-panel information table: +Offset Size Description (Table 00053) + 00h BYTE number of WORDs in the remainder of the table + 01h WORD number of vertical pixels per meter + 03h WORD number of horizontal pixels per meter + 05h WORD total number of vertical pixels + 07h WORD total number of horizontal pixels + 09h WORD vertical pixel separation in micrometers (center-to-center) + 0Bh WORD horizontal pixel separation in micrometers + 0Dh WORD range of gray levels available, less 1 + 0Fh WORD number of red levels available, less 1 (0000h if nonochrome) + 11h WORD number of green levels available, less 1 (0000h if nonochrome) + 13h WORD number of blue levels available, less 1 (0000h if nonochrome) +SeeAlso: #00052 +--------V-101E01----------------------------- +INT 10 - VIDEO - FLAT-PANEL - LCD/CRT DISPLAY CONTROL + AX = 1E01h + BH = function + bit 7: =1 set display control, =0 query control + bits 6-0: reserved (0) + ---if BH bit 7 set--- + BL = new display combination (see #00054) +Return: AL = 1Eh if function supported + BH = results + bit 7: query/set (copied from input) + bits 6-3: reserved (0) + bit 2: simultaneous display is supported by hardware + bit 1: LCD/CRT display control supported by hardware + bit 0: set operation was successful (always clear on get) + BL = active display combination (see #00054) +SeeAlso: AX=1E00h,AX=1E02h + +Bitfields for Flat-Panel display combination: +Bit(s) Description (Table 00054) + 7-2 reserved (0) + 1-0 combination + 00 reserved + 01 LCD active + 10 CRT active + 11 both LCD and CRT active (simultaneous display) +SeeAlso: #00055 +--------V-101E02----------------------------- +INT 10 - VIDEO - FLAT-PANEL - DISPLAY POSITION + AX = 1E02h + BH = function + bit 7: =1 set display position, =0 query position + bits 6-0: reserved (0) + ---if BH bit 7 set--- + BL = new position setting (see #00055) +Return: AL = 1Eh if function supported + BH = results + bit 7: query/set (copied from input) + bits 6-4: reserved (0) + bit 3: positioning to top is supported by hardware + bit 2: positioning to center is supported by hardware + bit 1: positioning to bottom is supported by hardware + bit 0: set operation was successful (always clear on get) + BL = active position setting (see #00055) +SeeAlso: AX=1E00h,AX=1E01h + +Bitfields for Flat-Panel position setting: +Bit(s) Description (Table 00055) + 7-2 reserved (0) + 1-0 position + 00 center + 01 top + 10 bottom + 11 reserved +SeeAlso: #00054,#00056 +--------V-101E03----------------------------- +INT 10 - VIDEO - FLAT-PANEL - VERTICAL EXPANSION FOR TEXT/GRAPHICS MODES + AX = 1E03h + BH = function + bit 7: =1 set vertical expansion, =0 query expansion + bits 6-0: reserved (0) + ---if BH bit 7 set--- + BL = new vertical expansion setting (see #00056) +Return: AL = 1Eh if function supported + BH = results + bit 7: query/set (copied from input) + bits 6-4: reserved (0) + bit 3: vertical expansion of text is supported by hardware + bit 2: vertical expansion of graphics is supported by hardware + bit 1: hardware supports independent control of expansion in + text and graphics modes + bit 0: set operation was successful (always clear on get) + BL = active vertical expansion setting (see #00056) +SeeAlso: AX=1E00h,AX=1E02h.AX=1E04h + +Bitfields for Flat-Panel vertical expansion setting: +Bit(s) Description (Table 00056) + 7-2 reserved (0) + 1 vertical expansion turned on for text modes + 0 vertical expansion turned on for graphics modes +SeeAlso: #00054,#00055,#00057 +--------V-101E04----------------------------- +INT 10 - VIDEO - FLAT-PANEL - NORMAL/REVERSE VIDEO FOR TEXT/GRAPHICS MODES + AX = 1E04h + BH = function + bit 7: =1 set normal/reverse video, =0 query normal/reverse + bits 6-0: reserved (0) + ---if BH bit 7 set--- + BL = new normal/reverse video setting (see #00057) +Return: AL = 1Eh if function supported + BH = results + bit 7: query/set (copied from input) + bits 6-4: reserved (0) + bit 3: hardware supports reverse video for text modes + bit 2: hardware supports reverse video for graphics modes + bit 1: hardware supports independent control of reverse video + in text and graphics modes + bit 0: set operation was successful (always clear on get) + BL = active normal/reverse video setting (see #00057) +SeeAlso: AX=1E00h,AX=1E03h,AX=1E05h + +Bitfields for Flat-Panel normal/reverse video setting: +Bit(s) Description (Table 00057) + 7-2 reserved (0) + 1 reverse video for text + 0 reverse video for graphics +SeeAlso: #00054,#00056,#00058,#00059 +--------V-101E05----------------------------- +INT 10 - VIDEO - FLAT-PANEL - BRIGHTNESS CONTROL + AX = 1E05h + BH = function + bit 7: =1 set brightness, =0 query brightness + bits 6-0: reserved (0) + ---if BH bit 7 set--- + BL = new brightness setting (see #00058) +Return: AL = 1Eh if function supported + BH = results + bit 7: query/set (copied from input) + bits 6-2: reserved (0) + bit 1: software brightness control is supported + bit 0: set operation was successful (always clear on get) + BL = active brightness setting (see #00058) +Note: this function operates independently of AX=1E07h +SeeAlso: AX=1E00h,AX=1E04h,AX=1E06h,AX=1E07h + +Bitfields for Flat-Panel brightness control: +Bit(s) Description (Table 00058) + 7-1 reserved (0) + 0 high brightness +SeeAlso: #00057,#00059 +--------V-101E06----------------------------- +INT 10 - VIDEO - FLAT-PANEL - CONTRAST CONTROL FOR TEXT/GRAPHICS + AX = 1E06h + BH = function + bit 7: =1 set contrast control, =0 query contrast + bits 6-0: reserved (0) + ---if BH bit 7 set--- + BL = new normal/reverse video setting (see #00059) +Return: AL = 1Eh if function supported + BH = results + bit 7: query/set (copied from input) + bits 6-4: reserved (0) + bit 3: software contrast control supported for text + bit 2: software contrast control supported for graphics + bit 1: hardware supports independent control of contrast + in text and graphics modes + bit 0: set operation was successful (always clear on get) + BL = active contrast setting (see #00059) +Note: this function operates independently of AX=1E08h +SeeAlso: AX=1E00h,AX=1E04h,AX=1E05h,AX=1E07h,AX=1E08h + +Bitfields for Flat-Panel contrast control: +Bit(s) Description (Table 00059) + 7-2 reserved (0) + 1 high contrast for text + 0 high contrast for graphics +SeeAlso: #00057,#00058 +--------V-101E07----------------------------- +INT 10 - VIDEO - FLAT-PANEL - BRIGHTNESS SETTING + AX = 1E07h + BH = function + bit 7: =1 set brightness control, =0 query brightness + bit 6: use standard brightness + bits 5-0: reserved (0) + ---if BH bits 7,6=10--- + BL = brightness (00h = minimum, FFh = maximum) +Return: AL = 1Eh if function supported + BH = results + bit 7: query/set (copied from input) + bit 6: standard/custom (copied from input) + bits 5-2: reserved (0) + bit 1: software brightness control is supported + bit 0: set operation was succesful (always clear on get) + BL = brightness (00h = minimum, FFh = maximum) +Note: this function operates independently of AX=1E05h +SeeAlso: AX=1E00h,AX=1E05h,AX=1E08h +--------V-101E08----------------------------- +INT 10 - VIDEO - FLAT-PANEL - CONTRAST SETTING + AX = 1E08h + BH = function + bit 7: =1 set contrast control, =0 query contrast + bit 6: use standard contrast + bits 5-0: reserved (0) + ---if BH bits 7,6=10--- + BL = contrast (00h = minimum, FFh = maximum) +Return: AL = 1Eh if function supported + BH = results + bit 7: query/set (copied from input) + bit 6: standard/custom (copied from input) + bits 5-2: reserved (0) + bit 1: software contrast control is supported + bit 0: set operation was succesful (always clear on get) + BL = contrast (00h = minimum, FFh = maximum) +Note: this function operates independently of AX=1E06h +SeeAlso: AX=1E00h,AX=1E06h,AX=1E07h +--------V-101EFE----------------------------- +INT 10 - VIDEO - FLAT-PANEL - FUNCTION SUPPORT FLAG + AX = 1EFEh + ES:DI -> DWORD buffer for bitmap of supported functions + (set to all zeros before calling) +Return: ES:DI buffer updated with mask of supported functions +Index: installation check;flat-panel display support +SeeAlso: AX=1E00h,AX=1E06h +--------V-101F00----------------------------- +INT 10 - VIDEO - XGA - GET DMQS (Display Mode Query and Set) DATA LENGTH + AX = 1F00h +Return: AL = 1Fh if supported + BX = number of bytes of DMQS data +Note: not supported on the original IBM XGA, only on XGA-NI (non-interlaced) + and later models. +SeeAlso: AX=1F01h +--------V-101F01----------------------------- +INT 10 - VIDEO - XGA - READ DMQS DATA + AX = 1F01h + ES:DI -> user buffer for return data (call AX=1F00h for size) +Return: AL = 1Fh if function supported + user buffer filled with DMQS data (see #00060) +Note: not supported on the original IBM XGA, only on XGA-NI (non-interlaced) + and later models. +SeeAlso: AH=1Bh,AX=1F00h,AX=3000h + +Format of XGA DMQS buffer: +Offset Size Description (Table 00060) + 00h WORD offset (in bytes) to DMQS data for next XGA instance + 02h BYTE slot number + 03h BYTE XGA implementation function level identifier + 04h BYTE XGA implementation resolution level identifier + 05h WORD vendor identifier - identifies card vendor + 07h WORD vendor defined field + 09h WORD XGA adapter I/O register base address + 0Bh WORD XGA coprocessor register base address + (paragraph--multiply by 10h to get physical address) + 0Dh WORD 1 Megabyte system video memory aperture + 0000h if not allocated + (Multiply by 100000h to get physical address) + 0Fh WORD 4 Megabyte system video memory aperture + 0000h if not allocated + (multiply by 100000h to get physical address) + 11h WORD video memory base address + (multiply by 100000h to get physical address) + 13h WORD composite ID of the attached display + 15h BYTE amount of video memory available, in multiples of 256K bytes + 16h DWORD alternate XGA coprocessor register base address. 0 = none. + 1Ah var DMQS Data for further XGA Instances (as above) +Note: "Instances" refers to the capability of having up to 8 XGA + adapters in one computer. +SeeAlso: #00061 +--------V-101F02----------------------------- +INT 10 - VIDEO - XGA - GET SVGA DMQS DATA LENGTH + AX = 1F02h +Return: AL = 1Fh if function supported + BX = length of SVGA DMQS data in bytes +SeeAlso: AX=1F00h,AX=1F03h +--------V-101F03----------------------------- +INT 10 - VIDEO - XGA - GET SVGA DMQS DATA + AX = 1F03h + ES:DI -> buffer for SVGA DMQS data (see #00061) +Return: AL = 1Fh if function supported + ES:DI buffer filled +SeeAlso: AX=1F00h,AX=1F02h + +Format of SVGA DMQS data: +Offset Size Description (Table 00061) + 00h WORD offset to DMQS data for next SVGA instance or 0000h + 02h BYTE reserved + 03h BYTE SVGA implementation functional level + 04h BYTE SVGA implementation resolution level + 05h WORD vendor ID + 07h WORD vendor-specific + 09h 7 BYTEs reserved + 10h BYTE SVGA linear address window size + 00h 64K + 01h 1M + 02h 2M + 03h 4M + 11h WORD SVGA linear address window location or 0000h if not allocated + (multiply by 10000h [shift left 16 bits] to get physical addr) + 13h WORD attached monitor's composite monitor ID + 15h BYTE available video RAM in multiples of 256K + 16h 11 BYTEs reserved +SeeAlso: #00060 +--------V-103000CX0000----------------------- +INT 10 - VIDEO - LOCATE 3270PC CONFIGURATION TABLE (INSTALLATION CHECK) + AX = 3000h + CX = 0000h + DX = 0000h +Return: CX:DX -> 3270PC configuration table (see #00062) + CX:DX = 0000h:0000h if 3270PC Control Program not active +SeeAlso: AX=1F01h + +Format of 3270 PC configuration table: +Offset Size Description (Table 00062) + 00h BYTE aspect ratio X + 01h BYTE aspect ratio Y + 02h BYTE monitor type (see #00063) + 03h BYTE reserved + 04h BYTE adapter ID + 00h = 5151/5272 adapter + 04h = 5151/5272 with XGA adapter + 30h = 3295 or 3270PC G/GX adapter + 05h BYTE reserved + 06h BYTE function flags 1 (see #00064) + 07h BYTE function flags 2 + bit 6: GPI graphics supported + 08h WORD segment address of Control Program Level table (see #00065) + 0Ah 10 BYTEs reserved + +(Table 00063) +Values for 3270 PC monitor type: + 00h 5151 (mono) or 5272 (color) + 01h 3295 + 02h 5151 or 5272 with XGA (???) graphics adapter + 03h 5279 with 3270PC G adapter + 04h 5379 model C01 with 3270PC GX adapter + 05h 5379 model M01 with 3270PC GX adapter + 07h non-3270PC with 3270 Workstation Program + FFh 3270PC Control Program not loaded + +Bitfields for 3270 PC function flags 1: +Bit(s) Description (Table 00064) + 7 mono text, 1 page + 6 color text, 1 page + 5 color text, 4 pages + 4 CGA color graphics + 3 720x350 two-color graphics + 2 360x350 four-color graphics + 1 720x350 eight-color graphics + +Format of Control Program Level table: +Offset Size Description (Table 00065) + 00h WORD program version + 02xxh = 3270PC Control Program v2.xx + 03xxh = 3270PC Control Program v3.xx + 04xxh = 3270 Workstation Program v1.xx + 02h BYTE Control Program ID (00h) + 03h 27 BYTEs Control Program Descriptor ("IBM 3270 PC CONTROL PROGRAM") +--------a-103800----------------------------- +INT 10 - Tinytalk Personal v1.09f+ - GET CONFIGURATION INFO + AX = 3800h +Return: ES:DI -> configuration info (see #00066) +Program: Tinytalk is a shareware screen reader by OMS Development/Eric Bohlman +Notes: this call is also used as the installation check by verifying that the + returned ES:DI points at valid configuration info + Tinytalk v1.09f ignores AL and always returns the configuration info; + v1.10 adds several subfunctions selected with AL +SeeAlso: AX=3801h,AX=3803h,AX=3806h,AH=39h,INT 14/AX=F0F1h +SeeAlso: INT 2F/AX=FB00h"AutoBraille" +Index: installation check;Tinytalk Personal + +Format of Tinytalk Personal configuration info: +Offset Size Description (Table 00066) + 00h 8 BYTEs signature "TTCONFIG" + 08h WORD size of configuration data, not counting signature, this WORD, + or the following byte + 0Ah BYTE ??? + 0Bh ??? configuration data +--------a-103801----------------------------- +INT 10 - Tinytalk Personal v1.10 - ??? + AX = 3801h + DL = ??? +Return: ??? +SeeAlso: AX=3800h,AX=3802h +--------a-103802----------------------------- +INT 10 - Tinytalk Personal v1.10 - ??? + AX = 3802h + DL = ??? +Return: ??? +SeeAlso: AX=3800h,AX=3801h +--------a-103803----------------------------- +INT 10 - Tinytalk Personal v1.10 - GET ??? + AX = 3803h +Return: AL = ??? +SeeAlso: AX=3800h,AX=3804h,AX=3805h +--------a-103804----------------------------- +INT 10 - Tinytalk Personal v1.10 - GET ??? + AX = 3804h +Return: AX = ??? +SeeAlso: AX=3800h,AX=3803h,AX=3805h +--------a-103805----------------------------- +INT 10 - Tinytalk Personal v1.10 - GET ??? + AX = 3805h +Return: AL = ??? +SeeAlso: AX=3800h,AX=3803h,AX=3804h +--------a-103806----------------------------- +INT 10 - Tinytalk Personal v1.10 - ??? + AX = 3806h + ES:DX -> ASCIZ ??? +Return: ??? +SeeAlso: AX=3800h +--------a-1039------------------------------- +INT 10 - Tinytalk Personal v1.10 - ??? + AH = 39h +Program: Tinytalk is a shareware screen reader by OMS Development/Eric Bohlman +Note: this function was a NOP in TTDEMO.EXE, but may be implemented in other + variants of Tinytalk +--------V-1040------------------------------- +INT 10 - VIDEO - Hercules GRAFIX - "GMODE" - SET GRAPHICS MODE + AH = 40h +Return: nothing +Program: Hercules GRAFIX (or GRAPH X, as it is called in some documentation) + provides text output in graphics mode and some graphics primitives + on the Hercules Graphics Card +Desc: switch the Hercules Graphics Card into graphics mode (720x348) without + clearing the screen; make Page 0 the default for both writing and + display, and set LEVEL (see AH=44h) to 01h +SeeAlso: AH=00h,AH=41h,AH=42h +Index: video modes;Hercules +--------V-1041------------------------------- +INT 10 - VIDEO - Hercules GRAFIX - "TMODE" - SET TEXT MODE + AH = 41h +Return: nothing +Desc: switch the Hercules Graphics Card into text mode +SeeAlso: AH=00h,AH=40h +Index: video modes;Hercules +--------V-1042------------------------------- +INT 10 - VIDEO - Hercules GRAFIX - "CLRSCR" - CLEAR CURRENT PAGE + AH = 42h +Return: nothing +SeeAlso: AH=45h +--------V-1043------------------------------- +INT 10 - VIDEO - Hercules GRAFIX - "GPAGE" - SELECT DRAWING PAGE + AH = 43h + AL = page number (0,1) +Return: nothing +Desc: specify which of the two pages of video memory is to be used for + output +SeeAlso: AH=05h,AH=44h,AH=45h +--------V-1044------------------------------- +INT 10 - VIDEO - Hercules GRAFIX - "LEVEL" - SELECT DRAWING FUNCTION + AH = 44h + AL = drawing function + 00h clear pixels + 01h set pixels + 02h invert pixels +Return: nothing +Desc: specify how graphics output will change the display +SeeAlso: AH=40h,AH=45h,AH=46h,AH=4Bh,AH=4Ch,AH=4Dh +--------V-1045------------------------------- +INT 10 - VIDEO - Hercules GRAFIX - "DISP" - SELECT PAGE TO DISPLAY + AH = 45h + AL = page number (0,1) +Return: nothing +Desc: specify which of the two pages of video memory is visible on screen +SeeAlso: AH=05h,AH=42h,AH=43h +--------V-1046------------------------------- +INT 10 - VIDEO - Hercules GRAFIX - "PLOT" - DRAW ONE PIXEL + AH = 46h + DI = x (0-719) + BP = y (0-347) +Return: nothing +Notes: function 44h determines operation and function 43h which page to use + if the indicated coordinate is invalid, this function does nothing +SeeAlso: AH=0Ch,AH=47h,AH=49h,AH=4Ch,AH=4Dh +--------V-1047------------------------------- +INT 10 - VIDEO - Hercules GRAFIX - "GETPT" - FIND PIXEL VALUE + AH = 47h + DI = x (0-719) + BP = y (0-347) +Return: AL = 00h pixel clear + AL = 01h pixel set +Note: function 43h specifies which page is used +SeeAlso: AH=0Dh,AH=46h +--------V-1048------------------------------- +INT 10 - VIDEO - Hercules GRAFIX - "MOVE" - MOVE TO POINT + AH = 48h + DI = x (0-719) + BP = y (0-347) +Return: nothing +Desc: specify the location from which to start the next graphics output +SeeAlso: AH=49h +--------V-1049------------------------------- +INT 10 - VIDEO - Hercules GRAFIX - "DLINE" - DRAW TO POINT + AH = 49h + DI = x (0-719) + BP = y (0-347) +Return: nothing +Note: function 48h or 49h specify first point, 44h operation and 43h page to + use +SeeAlso: AH=43h,AH=44h,AH=48h,AH=4Ch,AH=4Dh +--------V-104A------------------------------- +INT 10 - VIDEO - Hercules GRAFIX - "BLKFIL" - BLOCK FILL + AH = 4Ah + DI = x coordinate of lower left corner + BP = y coordinate of lower left corner + BX = height in pixels + CX = width in pixels +Return: nothing +Desc: draw a solid rectangle of the specified size at the given location +SeeAlso: AH=4Eh +--------V-104B------------------------------- +INT 10 - VIDEO - Hercules GRAFIX - "TEXT" - DISPLAY CHARACTER + AH = 4Bh + AL = character to display + DI = x (0-719) + BP = y (0-347) +Return: nothing +Notes: unlike the other BIOS character functions character position is + specified in pixels rather than rows and columns + the character is writting using the drawing function last specified by + AH=44h +SeeAlso: AH=09h,AH=0Ah,AH=44h +--------P-104B------------------------------- +INT 10 - FRIEZE - API + AH = 4Bh + CL = function + 00h (v6.x-) print window + AL = mode + 00h character + 01h normal + 02h sideways + 01h load window + ES:BX -> ASCIZ filename from which to read + 02h save window + ES:BX -> ASCIZ filename to which to write + 03h set print width + AL = width in 1/4 inches + 04h set print height + AL = height in 1/4 inches + 05h reserved + 06h set left margin + AL = printout margin in 1/4 inches + 07h set window size + ES:BX -> four-WORD structure with Xmin, Ymin, Xmax, Ymax + 08h reserved + 09h set patterns + ES:BX -> 16-BYTE vector of screen->printer color correspondnces + 0Ah get patterns + ES:BX -> 16-BYTE buffer for color correspondences + 0Bh set mode + AL = mode + 0Ch (v7.41) ??? + AL = ??? + 00h ??? (calls original INT 05) + else ??? + 0Dh (v7.41) ??? + AL = ??? + 00h ??? (calls original INT 05) + else ??? + 0Eh (v7.41) ??? + ??? + 0Fh get window + ES:BX -> four-WORD buffer for Xmin, Ymin, Xmax, Ymax + 10h set print options + ES:BX -> printer options in same format as FRIEZE cmdline + 11h initialize + ES:BX -> three-WORD array from CARDS.DAT for HRes, VRes, code + 12h (v7.41) ??? + ??? + 13h (v7.41) ??? + ??? + 14h get version + Return: AH = major version (00h if FRIEZE version before 7) + AL = minor version + 15h set parameters + ES:BX -> parameter table (see #00068) + 16h get parameters + ES:BX -> buffer for parameter table (see #00068) + 17h get printer resolution + ES:BX -> 12-WORD table for six horizontal/vertical resol pairs + 18h (v8.0 only) reserved + 50h (v7.41) get ??? + Return: AX = ??? + 51h (v7.41) get ??? + Return: ES = ??? (seen 2348h) + AX = ??? (seen 8432h) +Return: AX = status (see #00067) +SeeAlso: AH=0Fh/SI=F123h + +(Table 00067) +Values for FRIEZE function status: + 00h successful + 01h user aborted printout with ESC + 02h reserved + 03h file read error + 04h file write error or printer error + 05h file not found + 06h invalid header (not an image or wrong screen mode) or can't create file + 07h file close error + 08h disk error + 09h (v7.0+) printer error + 0Ah invalid function + 0Bh (v7.0+) can't create file + 0Ch (v7.0+) wrong video mode + +Format of FRIEZE parameter table: +Offset Size Description (Table 00068) + 00h WORD top margin (1/100 inch) + 02h WORD left margin (1/100 inch) + 04h WORD horizontal size (1/100 inch) + 06h WORD vertical size (1/100 inch) + 08h WORD quality/draft mode + 00h draft mode + 01h quality mode + 02h use horizontal/vertical resolution for output resolution + 0Ah WORD printer horizontal resolution (dots per inch) + 0Ch WORD printer vertical resolution (dots per inch) + 0Eh WORD reserved (FFFFh) +Note: any field which should remain unchanged may be filled with FFFFh +--------V-104C------------------------------- +INT 10 - VIDEO - Hercules GRAFIX - "ARC" - DRAW ARC + AH = 4Ch + AL = quadrant (1 = upper right, 2 = upper left, etc) + DI = x coordinate of center + BP = y coordinate of center + BX = radius +Return: nothing +SeeAlso: AH=49h,AH=4Dh +--------V-104D------------------------------- +INT 10 - VIDEO - Hercules GRAFIX - "CIRC" - DRAW CIRCLE + AH = 4Dh + DI = x of center + BP = y of center + BX = radius +Return: nothing +SeeAlso: AH=49h,AH=4Ch +--------V-104E------------------------------- +INT 10 - VIDEO - Hercules GRAFIX - "FILL" - FILL AREA + AH = 4Eh + DI = x coordinate of an interior point + BP = y coordinate of an interior point +Return: nothing +Desc: fill a convex polygonal area bounded by a contiguous line of the + opposite color with the border color +Note: the first fill makes the figure solid, the second erases it +SeeAlso: AH=4Ah +--------V-104E00----------------------------- +INT 10 - VESA XGA BIOS Extensions - GET XGA ENVIRONMENT INFORMATION + AX = 4E00h + ES:DI -> 256-byte buffer for XGA information (see #00069) +Return: AL = 4Eh if function supported + AH = status + 00h successful + else error code +Desc: determine whether VESA XGA extensions are present and the capabilities + supported by the display adapter +SeeAlso: AX=4E01h,AX=4E02h,AX=4F00h +Index: installation check;VESA XGA + +Format of XGA information buffer: +Offset Size Description (Table 00069) + 00h 4 BYTEs signature ("VESA") + 04h WORD VESA version number + 06h DWORD pointer to ASCIZ OEM string + 0Ah DWORD environment flags (see #00070) + 0Eh WORD number of XGA adapters installed (other VESA XGA functions + require a handle indicating which adapter to use) + 10h 240 BYTEs reserved + +Bitfields for XGA environment flags: +Bit(s) Description (Table 00070) + 0-1 system bus (00 = MCA, 01 = ISA, 10 = EISA) + 2 bus mastering available + 3-31 reserved +--------V-104E01---------------------------- +INT 10 - VESA XGA BIOS Extensions - RETURN XGA SUBSYSTEM INFORMATION + AX = 4E01h + DX = XGA handle (0 to number of XGAs-1) + ES:DI -> 256-byte buffer for subsystem information (see #00071) +Return: AL = 4Eh if function supported + AH = status + 00h function successful + else error code +SeeAlso: AX=4E00h,AX=4E02h + +Format of XGA subsystem information: +Offset Size Description (Table 00071) + 00h DWORD pointer to null-terminated board OEM string + 04h DWORD capabilities (see #00072) + 08h DWORD pointer to 8KB XGA ROM (or NULL) + 0Ch DWORD pointer to the XGA memory mapped registers + 10h WORD base address of XGA I/O registers (21x0h) + 12h DWORD pointer to start of physical video memory + (A000h:0000h or B000h:0000h) + 16h DWORD physical address of 4MB aperture (or NULL if none) + 1Ah DWORD physical address of 1MB aperture (or NULL if none) + 1Eh DWORD physical address of 64KB aperture (or NULL if not enabled) + 22h DWORD physical address of OEM aperture (or NULL if none) + 26h WORD size of OEM aperture in 64KByte units + 28h DWORD pointer to list of video modes + The list is a series of WORDs terminated by FFFFh + 2Ch WORD number of 64KB blocks on the board + 2Eh DWORD XGA manufacturer ID + byte 0 POS data index 1 + byte 1 is index 2 + byte 2 is 21xAh index 75h + 32h 206 BYTEs reserved + +Bitfields for XGA capabilities: +Bit(s) Description (Table 00072) + 0-1 board bus architecture: 0=MCA, 1=ISA, 3=EISA + 2-3 reserved + 4-6 DMA Channel assigned for acquiring bus mastership (only for ISA bus) + 7 DMA Channel Status (ISA only). enabled if set + 8-31 reserved +--------V-104E02----------------------------------- +INT 10 - VESA XGA BIOS Extensions - RETURN XGA MODE INFORMATION + AX = 4E02h + CX = Video mode + DX = XGA handle + ES:DI -> 256 byte buffer for mode information (see #00073) +Return: AL = 4Eh if function supported + AH = status + 00h function successful + else error code +SeeAlso: AX=4E00h,AX=4E01h + +Format of XGA mode information: +Offset Size Description (Table 00073) + 00h WORD attributes of the mode (see #00074) + 02h WORD bytes per logical scanline + 04h WORD horizontal resolution in pixels + 06h WORD vertical resolution in scanlines + 08h BYTE character Width in pixels + 09h BYTE character Height in pixels + 0Ah BYTE number of planes + 0Bh BYTE bits per pixels + 0Ch BYTE memory model (see #00075) + 0Dh BYTE number of Image Pages + 0Eh BYTE number of Red bits + 0Fh BYTE bit position of Red bit field + 10h BYTE number of Green bits + 11h BYTE bit position of Green bit field + 12h BYTE number of Blue bits + 13h BYTE bit position of Blue bit field + 14h BYTE number of Reserved bits + 15h BYTE bit position of Reserved bit field + 16h 235 BYTEs reserved + +Bitfields for XGA mode attributes: +Bit(s) Description (Table 00074) + 0 set if mode is supported + 1 reserved + 2 output is supported by the BIOS + 3 reserved + 4 if set this is a graphics mode (VGA registers inactive, XGA active), + if clear this is a text mode (VGA registers active, XGA inactive) + +(Table 00075) +Values for XGA video memory model: + 00h Text Mode + 01h CGA graphics + 02h Hercules graphics + 03h 4-planar graphics + 04h Packed Pixel + 05h Non-chain 4, 256 color + 06h Direct Color + 07h YUV-24 +--------V-104E03----------------------------------- +INT 10 - VESA XGA BIOS Extensions - SET XGA VIDEO MODE + AX = 4E03h + BX = video mode + CX = other command flags + bit 0 If clear the feature connector is set to the default state + DX = XGA handle + ES:DI -> 256 byte buffer +Return: AL = 4Eh if function supported + AH = status + 00h function successful + else error code +SeeAlso: AH=00h,AX=4E04h,AX=4F02h +--------V-104E04----------------------------------- +INT 10 - VESA XGA BIOS Extensions - RETURN CURRENT VIDEO MODE + AX = 4E04h + DX = XGA handle +Return: AL = 4Eh if function supported + AH = status + 00h function successful + BX??? = current mode + else error code +SeeAlso: AH=0Fh,AX=4E03h,AX=4F03h +--------V-104E05----------------------------------- +INT 10 - VESA XGA BIOS Extensions - SET FEATURE CONNECTOR STATE + AX = 4E05h + BX = Feature Connector State (see #00076) + DX = XGA handle +Return: AL = 4Eh if function supported + AH = status + 00h function successful + else error code +SeeAlso: AX=4E00h,AX=4E06h + +Bitfields for XGA Feature Connector State: +Bit(s) Description (Table 00076) + 0 Feature Connector is enabled + 1 Feature Connector is in Output Mode rather than Input Mode + 2-15 reserved (0) +--------V-104E06----------------------------------- +INT 10 - VESA XGA BIOS Extensions - RETURN FEATURE CONNECTOR STATE + AX = 4E06h + DX = XGA handle +Return: AL = 4Eh if function supported + AH = status + 00h function successful + else error code + BX = Feature Connector State (see #00076) +SeeAlso: AX=4E00h,AX=4E05h +--------V-104F00----------------------------- +INT 10 - VESA SuperVGA BIOS (VBE) - GET SuperVGA INFORMATION + AX = 4F00h + ES:DI -> buffer for SuperVGA information (see #00077) +Return: AL = 4Fh if function supported + AH = status + 00h successful + ES:DI buffer filled + 01h failed + ---VBE v2.0--- + 02h function not supported by current hardware configuration + 03h function invalid in current video mode +Desc: determine whether VESA BIOS extensions are present and the capabilities + supported by the display adapter +SeeAlso: AX=4E00h,AX=4F01h,AX=7F00h"SOLLEX",AX=A00Ch +Index: installation check;VESA SuperVGA + +Format of SuperVGA information: +Offset Size Description (Table 00077) + 00h 4 BYTEs (ret) signature ("VESA") + (call) VESA 2.0 request signature ("VBE2"), required to receive + version 2.0 info + 04h WORD VESA version number (one-digit minor version -- 0102h = v1.2) + 06h DWORD pointer to OEM name + "761295520" for ATI + 0Ah DWORD capabilities flags (see #00078) + 0Eh DWORD pointer to list of supported VESA and OEM video modes + (list of words terminated with FFFFh) + 12h WORD total amount of video memory in 64K blocks +---VBE v1.x --- + 14h 236 BYTEs reserved +---VBE v2.0 --- + 14h WORD OEM software version (BCD, high byte = major, low byte = minor) + 16h DWORD pointer to vendor name + 1Ah DWORD pointer to product name + 1Eh DWORD pointer to product revision string + 22h WORD (if capabilities bit 3 set) VBE/AF version (BCD) + 0100h for v1.0P + 24h DWORD (if capabilities bit 3 set) pointer to list of supported + accelerated video modes (list of words terminated with FFFFh) + 28h 216 BYTEs reserved for VBE implementation +100h 256 BYTEs OEM scratchpad (for OEM strings, etc.) +Notes: the list of supported video modes is stored in the reserved portion of + the SuperVGA information record by some implementations, and it may + thus be necessary to either copy the mode list or use a different + buffer for all subsequent VESA calls + not all of the video modes in the list of mode numbers may be + supported, e.g. if they require more memory than currently installed + or are not supported by the attached monitor. Check any mode you + intend to use through AX=4F01h first. + the 1.1 VESA document specifies 242 reserved bytes at the end, so the + buffer should be 262 bytes to ensure that it is not overrun; for + v2.0, the buffer should be 512 bytes + the S3 specific video modes will most likely follow the FFFFh + terminator at the end of the standard modes. A search must then + be made to find them, FFFFh will also terminate this second list + in some cases, only a "stub" VBE may be present, supporting only + AX=4F00h; this case may be assumed if the list of supported video + modes is empty (consisting of a single word of FFFFh) + +Bitfields for VESA capabilities: +Bit(s) Description (Table 00078) + 0 DAC can be switched into 8-bit mode + 1 non-VGA controller + 2 programmed DAC with blank bit (i.e. only during blanking interval) + 3 (VBE v3.0) controller supports hardware stereoscopic signalling + 3 controller supports VBE/AF v1.0P extensions + 4 (VBE v3.0) if bit 3 set: + =0 stereo signalling via external VESA stereo connector + =1 stereo signalling via VESA EVC connector + 4 (VBE/AF v1.0P) must call EnableDirectAccess to access framebuffer + 5 (VBE/AF v1.0P) controller supports hardware mouse cursor + 6 (VBE/AF v1.0P) controller supports hardware clipping + 7 (VBE/AF v1.0P) controller supports transparent BitBLT + 8-31 reserved (0) +SeeAlso: #00077,AX=4F09h +--------V-104F01----------------------------- +INT 10 - VESA SuperVGA BIOS - GET SuperVGA MODE INFORMATION + AX = 4F01h + CX = SuperVGA video mode (see #04082 for bitfields) + ES:DI -> 256-byte buffer for mode information (see #00079) +Return: AL = 4Fh if function supported + AH = status + 00h successful + ES:DI buffer filled + 01h failed +Desc: determine the attributes of the specified video mode +SeeAlso: AX=4F00h,AX=4F02h + +Bitfields for VESA/VBE video mode number: +Bit(s) Description (Table 04082) + 15 preserve display memory on mode change + 14 (VBE v2.0+) use linear (flat) frame buffer + 13 (VBE/AF 1.0P) VBE/AF initializes accelerator hardware + 12 reserved for VBE/AF + 11 (VBE v3.0) user user-specified CRTC refresh rate values + 10-9 reserved for future expansion + 8-0 video mode number (0xxh are non-VESA modes, 1xxh are VESA-defined) + +Format of VESA SuperVGA mode information: +Offset Size Description (Table 00079) + 00h WORD mode attributes (see #00080) + 02h BYTE window attributes, window A (see #00081) + 03h BYTE window attributes, window B (see #00081) + 04h WORD window granularity in KB + 06h WORD window size in KB + 08h WORD start segment of window A (0000h if not supported) + 0Ah WORD start segment of window B (0000h if not supported) + 0Ch DWORD -> FAR window positioning function (equivalent to AX=4F05h) + 10h WORD bytes per scan line +---remainder is optional for VESA modes in v1.0/1.1, needed for OEM modes--- + 12h WORD width in pixels (graphics) or characters (text) + 14h WORD height in pixels (graphics) or characters (text) + 16h BYTE width of character cell in pixels + 17h BYTE height of character cell in pixels + 18h BYTE number of memory planes + 19h BYTE number of bits per pixel + 1Ah BYTE number of banks + 1Bh BYTE memory model type (see #00082) + 1Ch BYTE size of bank in KB + 1Dh BYTE number of image pages (less one) that will fit in video RAM + 1Eh BYTE reserved (00h for VBE 1.0-2.0, 01h for VBE 3.0) +---VBE v1.2+ --- + 1Fh BYTE red mask size + 20h BYTE red field position + 21h BYTE green mask size + 22h BYTE green field size + 23h BYTE blue mask size + 24h BYTE blue field size + 25h BYTE reserved mask size + 26h BYTE reserved mask position + 27h BYTE direct color mode info + bit 0: color ramp is programmable + bit 1: bytes in reserved field may be used by application +---VBE v2.0+ --- + 28h DWORD physical address of linear video buffer + 2Ch DWORD pointer to start of offscreen memory + 30h WORD KB of offscreen memory +---VBE v3.0 --- + 32h WORD bytes per scan line in linear modes + 34h BYTE number of images (less one) for banked video modes + 35h BYTE number of images (less one) for linear video modes + 36h BYTE linear modes: size of direct color red mask (in bits) + 37h BYTE linear modes: bit position of red mask LSB (e.g. shift count) + 38h BYTE linear modes: size of direct color green mask (in bits) + 39h BYTE linear modes: bit position of green mask LSB (e.g. shift count) + 3Ah BYTE linear modes: size of direct color blue mask (in bits) + 3Bh BYTE linear modes: bit position of blue mask LSB (e.g. shift count) + 3Ch BYTE linear modes: size of direct color reserved mask (in bits) + 3Dh BYTE linear modes: bit position of reserved mask LSB + 3Eh DWORD maximum pixel clock for graphics video mode, in Hz + 42h 190 BYTEs reserved (0) +Note: while VBE 1.1 and higher will zero out all unused bytes of the buffer, + v1.0 did not, so applications that want to be backward compatible + should clear the buffer before calling + +Bitfields for VESA SuperVGA mode attributes: +Bit(s) Description (Table 00080) + 0 mode supported by present hardware configuration + 1 optional information available (must be =1 for VBE v1.2+) + 2 BIOS output supported + 3 set if color, clear if monochrome + 4 set if graphics mode, clear if text mode +---VBE v2.0+ --- + 5 mode is not VGA-compatible + 6 bank-switched mode not supported + 7 linear framebuffer mode supported + 8 double-scan mode available (e.g. 320x200 and 320x240) +---VBE v3.0 --- + 9 interlaced mode available + 10 hardware supports triple buffering + 11 hardware supports stereoscopic display + 12 dual display start address support + 13-15 reserved +---VBE/AF v1.0P--- + 9 application must call EnableDirectAccess before calling bank-switching + functions +SeeAlso: #00079 + +Bitfields for VESA SuperVGA window attributes: +Bit(s) Description (Table 00081) + 0 exists + 1 readable + 2 writable + 3-7 reserved +SeeAlso: #00079 + +(Table 00082) +Values for VESA SuperVGA memory model type: + 00h text + 01h CGA graphics + 02h HGC graphics + 03h 16-color (EGA) graphics + 04h packed pixel graphics + 05h "sequ 256" (non-chain 4) graphics + 06h direct color (HiColor, 24-bit color) + 07h YUV (luminance-chrominance, also called YIQ) + 08h-0Fh reserved for VESA + 10h-FFh OEM memory models +SeeAlso: #00079 +--------V-104F02----------------------------- +INT 10 - VESA SuperVGA BIOS - SET SuperVGA VIDEO MODE + AX = 4F02h + BX = new video mode (see #04082,#00083,#00084) + ES:DI -> (VBE 3.0+) CRTC information block, bit mode bit 11 set + (see #04083) +Return: AL = 4Fh if function supported + AH = status + 00h successful + 01h failed +Notes: bit 13 may only be set if the video mode is present in the list of + accelerated video modes returned by AX=4F00h + if the DAC supports both 8 bits per primary color and 6 bits, it will + be reset to 6 bits after a mode set; use AX=4F08h to restore 8 bits +SeeAlso: AX=4E03h,AX=4F00h,AX=4F01h,AX=4F03h,AX=4F08h + +(Table 00083) +Values for VESA video mode: + 00h-FFh OEM video modes (see #00010 at AH=00h) + 100h 640x400x256 + 101h 640x480x256 + 102h 800x600x16 + 103h 800x600x256 + 104h 1024x768x16 + 105h 1024x768x256 + 106h 1280x1024x16 + 107h 1280x1024x256 + 108h 80x60 text + 109h 132x25 text + 10Ah 132x43 text + 10Bh 132x50 text + 10Ch 132x60 text +---VBE v1.2+ --- + 10Dh 320x200x32K + 10Eh 320x200x64K + 10Fh 320x200x16M + 110h 640x480x32K + 111h 640x480x64K + 112h 640x480x16M + 113h 800x600x32K + 114h 800x600x64K + 115h 800x600x16M + 116h 1024x768x32K + 117h 1024x768x64K + 118h 1024x768x16M + 119h 1280x1024x32K (1:5:5:5) + 11Ah 1280x1024x64K (5:6:5) + 11Bh 1280x1024x16M +---VBE 2.0+ --- + 120h 1600x1200x256 + 121h 1600x1200x32K + 122h 1600x1200x64K +81FFh special full-memory access mode +Notes: the special mode 81FFh preserves the contents of the video memory and + gives access to all of the memory; VESA recommends that the special + mode be a packed-pixel mode. For VBE 2.0+, it is required that the + VBE implement the mode, but not place it in the list of available + modes (mode information for this mode can be queried directly, + however). + as of VBE 2.0, VESA will no longer define video mode numbers +SeeAlso: #00010,#00011,#00084,#00191 +Index: video modes;VESA + +(Table 00084) +Values for S3 OEM video mode: + 201h 640x480x256 + 202h 800x600x16 + 203h 800x600x256 + 204h 1024x768x16 + 205h 1024x768x256 + 206h 1280x960x16 + 207h 1152x864x256 (Diamond Stealth 64) + 208h 1280x1024x16 + 209h 1152x864x32K + 20Ah 1152x864x64K (Diamond Stealth 64) + 20Bh 1152x864x4G + 211h 640x480x64K (Diamond Stealth 24) + 211h 640x400x4G (Diamond Stealth64 Video / Stealth64 Graphics) + 212h 640x480x16M (Diamond Stealth 24) + 301h 640x480x32K +Note: these modes are only available on video cards using S3's VESA driver +SeeAlso: #00083,#00191,#00732 at INT 1A/AX=B102h +Index: video modes;S3 + +Format of VESA VBE CRTC Information Block: +Offset Size Description (Table 04083) + 00h WORD total number of pixels horizontally + 02h WORD horizontal sync start (in pixels) + 04h WORD horizontal sync end (in pixels) + 06h WORD total number of scan lines + 08h WORD vertical sync start (in scan lines) + 0Ah WORD vertical sync end (in scan lines) + 0Ch BYTE flags (see #04084) + 0Dh DWORD pixel clock, in Hz + 11h WORD refresh rate, in 0.01 Hz units + this field MUST be set to pixel_clock / (HTotal * VTotal), + even though it may not actually be used by the VBE + implementation + 13h 40 BYTEs reserved + +Bitfields for VESA VBE CRTC Information Block flags: +Bit(s) Description (Table 04084) + 0 enable double scanning + 1 enable interlacing + 2 horizontal sync polarity (0 positive, 1 negative) + 3 vertical sync polarity (0 positive, 1 negative) +SeeAlso: #04083 +--------V-104F03----------------------------- +INT 10 - VESA SuperVGA BIOS - GET CURRENT VIDEO MODE + AX = 4F03h +Return: AL = 4Fh if function supported + AH = status + 00h successful + BX = video mode (see #00083,#00084) + bit 13: VBE/AF v1.0P accelerated video mode + bit 14: linear frame buffer enabled (VBE v2.0+) + bit 15: don't clear video memory + 01h failed +SeeAlso: AH=0Fh,AX=4E04h,AX=4F02h +--------V-104F04----------------------------- +INT 10 - VESA SuperVGA BIOS - SAVE/RESTORE SuperVGA VIDEO STATE + AX = 4F04h + DL = subfunction + 00h get state buffer size + Return: BX = number of 64-byte blocks needed + 01h save video states + ES:BX -> buffer + 02h restore video states + ES:BX -> buffer + CX = states to save/restore (see #00085) +Return: AL = 4Fh if function supported + AH = status + 00h successful + 01h failed +SeeAlso: AH=1Ch,AX=5F90h,AX=5FA0h + +Bitfields for VESA SuperVGA states to save/restore: +Bit(s) Description (Table 00085) + 0 video hardware state + 1 video BIOS data state + 2 video DAC state + 3 SuperVGA register state +SeeAlso: #00048,#00186 +--------V-104F05----------------------------- +INT 10 - VESA SuperVGA BIOS - CPU VIDEO MEMORY CONTROL + AX = 4F05h + BH = subfunction + 00h select video memory window + DX = window address in video memory (in granularity units) + 01h get video memory window + Return: DX = window address in video memory (in gran. units) + BL = window number + 00h window A + 01h window B + ES = selector for memory-mapped registers (VBE 2.0+, when called from + 32-bit protected mode) +Return: AL = 4Fh if function supported + AH = status + 00h successful + 01h failed +Note: when using an accelerated video mode under VBE/AF v1.0P, the + application must call EnableDirectAccess before switching banks if + bit 9 of the video mode attributes flag is set (see #00080) +BUG: Phoenix S3 Trio64V+ v1.02-02 reportedly returns garbage in DX for + subfunction 01h +SeeAlso: AX=4F01h,AX=4F06h,AX=4F07h,AX=7000h/BX=0004h +--------V-104F06----------------------------- +INT 10 - VESA SuperVGA BIOS v1.1+ - GET/SET LOGICAL SCAN LINE LENGTH (PIXELS) + AX = 4F06h + BL = subfunction + 00h set scan line length + CX = desired width in pixels + 01h get scan line length +Return: AL = 4Fh if function supported + AH = status + 00h successful + 01h failed + BX = bytes per scan line + CX = number of pixels per scan line + DX = maximum number of scan lines +Notes: if the desired width is not achievable, the next larger width will be + set + the scan line may be wider than the visible area of the screen + this function is valid in text modes, provided that pixel values are + multiplied by the character cell width/height +SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h/BL=02h,AX=4F06h/BL=03h,AX=4F07h +--------V-104F06BL02------------------------- +INT 10 - VESA SuperVGA BIOS v2.0+ - SET LOGICAL SCAN LINE LENGTH (BYTES) + AX = 4F06h + BL = 02h + CX = desired scanline width in bytes +Return: AL = 4Fh if function supported + AH = status + 00h successful + 01h failed + BX = bytes per scan line + CX = number of pixels per scan line + DX = maximum number of scan lines +Notes: if the desired width is not achievable, the next larger width will be + set + the scan line may be wider than the visible area of the screen + this function is valid in text modes, provided that pixel values are + multiplied by the character cell width/height +SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h,AX=4F06h/BL=03h,AX=4F07h +--------V-104F06BL03------------------------- +INT 10 - VESA SuperVGA BIOS v2.0+ - GET MAXIMUM SCAN LINE LENGTH + AX = 4F06h + BL = 03h +Return: AL = 4Fh if function supported + AH = status + 00h successful + 01h failed + BX = maximum bytes per scan line + CX = maximum number of pixels per scan line +Notes: this function is valid in text modes, provided that pixel values are + multiplied by the character cell width/height +SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h,AX=4F06h/BL=02h,AX=4F07h +--------V-104F07----------------------------- +INT 10 - VESA SuperVGA BIOS v1.1+ - GET/SET DISPLAY START + AX = 4F07h + BL = subfunction + 00h,80h set display start + CX = leftmost displayed pixel in scan line + DX = first displayed scan line + 01h get display start + Return: BH = 00h + CX = leftmost displayed pixel in scan line + DX = first displayed scan line + BH = 00h (reserved) +Return: AL = 4Fh if function supported + AH = status + 00h successful + 01h failed +Notes: this function is valid in text modes, provided that values are + multiplied by the character cell width/height + subfunction 80h waits until vertical retrace before changing the + display start address (VBE v2.0+) +SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h +--------V-104F07----------------------------- +INT 10 - VESA SuperVGA BIOS v3.0+ - SCHEDULED DISPLAY START + AX = 4F07h + BL = subfunction + 02h,82h (VBE v3.0) schedule display start at next vertical retrace + ECX = display start address in bytes + 03h,83h schedule stereoscopic display start + ECX = left image start address (in bytes) + EDX = right image start address (in bytes) + 04h get scheduled display start status + Return: CX = start status + (00h no display flip, else display has flipped) +Return: AL = 4Fh if function supported + AH = status + 00h successful + 01h failed +SeeAlso: AX=4F07h"DISPLAY START",AX=4F07h"STEREOSCOPIC" +--------V-104F07----------------------------- +INT 10 - VESA SuperVGA BIOS v3.0+ - ENABLE/DISABLE STEREOSCOPIC MODE + AX = 4F07h + BL = subfunction + 05h enable stereoscopic mode + 06h disable stereoscopic mode +Return: AL = 4Fh if function supported + AH = status + 00h successful + 01h failed +Note: when stereoscopic mode is enabled, the display start address will + automatically alternate between the left and right images on every + vertical retrace +SeeAlso: AX=4F07h"DISPLAY START",AX=4F07h"SCHEDULED" +--------V-104F08----------------------------- +INT 10 - VESA SuperVGA BIOS v1.2+ - GET/SET DAC PALETTE CONTROL + AX = 4F08h + BL = subfunction + 00h set DAC palette width + BH = desired number of bits per primary color + 01h get DAC palette width +Return: AL = 4Fh if function supported + AH = status + 00h successful + BH = current number of bits per primary (06h = standard VGA) + 01h failed +--------V-104F09----------------------------- +INT 10 - VESA SuperVGA BIOS v2.0+ - GET/SET PALETTE ENTRIES + AX = 4F09h + BL = subfunction + 00h set (primary) palette + 01h get (primary) palette + 02h set secondary palette data + 03h get secondary palette data + 80h set palette during vertical retrace + CX = number of entries to change + DX = starting palette index + ES:DI -> palette buffer, array of DAC entries (see #00086) +Return: AL = 4Fh if function supported + AH = status + 00h successful + 01h failed +SeeAlso: AX=4F0Ah,AX=D000h"S3VBE" + +Format of VESA VBE palette entry: +Offset Size Description (Table 00086) + 00h BYTE red + 01h BYTE green + 02h BYTE blue + 03h BYTE alpha or alignment byte +--------V-104F0ABL00------------------------- +INT 10 - VESA SuperVGA BIOS v2.0+ - GET PROTECTED-MODE INTERFACE + AX = 4F0Ah + BL = 00h +Return: AL = 4Fh if function supported + AH = status + 00h successful + ES:DI -> protected-mode table (see #00087) + CX = length of table in bytes, included protected-mode code + 01h failed +SeeAlso: AX=4F00h,AX=4F05h,AX=4F07h,AX=4F09h + +Format of VESA VBE 2.0 protected-mode table: +Offset Size Description (Table 00087) + 00h WORD offset (within table) of protected-mode code for Function 5 + (Set Window) + 02h WORD offset of protected-mode code for Function 7 (Set Disp Start) + 04h WORD offset of protected-mode code for Function 9 (Set Primary + Palette) + 06h WORD offset (within table) of list of I/O ports and memory locations + for which I/O privilege may be required in protected mode + (0000h if no list) (see #04085) + 08h var code and optional port/memory list + +Format of VESA VBE 2.0+ protected-mode port/memory list: +Offset Size Description (Table 04085) + 00h WORD I/O port number + ... + WORD FFFFh marking end of I/O port list + DWORD memory region base address + WORD memory region limit (one less than length) + WORD FFFFh marking end of memory region list +Note: the memory region is optional; if not present, there will be a word + of FFFFh immediately following the FFFFh marking the end of the I/O + port list +SeeAlso: #00087 +--------V-104F0A----------------------------- +INT 10 O - VESA SuperVGA BIOS v2.0 beta - GET PROTECTED-MODE CODE + AX = 4F0Ah + BX = function to be copied (see #00088) +Return: AL = 4Fh if function supported + AH = status + 00h successful + CX = number of bytes to copy + ES:DI -> code for requested function + 01h failed +SeeAlso: AX=4F09h,AX=D000h"S3VBE" + +(Table 00088) +Values for VESA VBE protected-mode function identifiers: + 0001h set bank (see AX=4F05h) + 0002h set display start (see AX=4F07h) + 0003h set palette (see AX=4F09h) +--------V-104F0BBL00------------------------- +INT 10 - VESA SuperVGA BIOS v3.0 - GET NEAREST PIXEL CLOCK + AX = 4F0Bh + BL = 00h get closest pixel clock + ECX = requested clock frequency in Hz + DX = video mode number +Return: AL = 4Fh if function supported + AH = status + 00h successful + ECX = nearest clock rate + 01h failed +--------V-104F0B----------------------------- +INT 10 - VESA SuperVGA BIOS - GET VBE/AF v1.0P DEVICE CONTEXT BUFFER + AX = 4F0Bh + BL = subfunction + 00h get length of device context buffer + 01h initialize device context buffer + ES:DI -> real-mode address of buffer (see #00089) +Return: AL = 4Fh if function supported + AH = status + 00h successful + CX = number of bytes required for buffer (if BL=00h on entry) + ES:DI buffer initialized (if BL=01h on entry) + 01h failed +Note: this interface description is derived from the draft VBE/AF proposal + (version 1.0P, document revsion 0.12P, dated 13jan95) +SeeAlso: AX=4F00h,AX=4F01h,AX=4F17h + +Format of VBE/AF v1.0P Device Context buffer: +Offset Size Description (Table 00089) + 00h WORD maximum X coordinate in frame buffer (0 = left edge) + Note: application must never pass X coordinate greater than + this value to the SetClipRect function (values are + NOT range-checked!) + 02h WORD maximum Y coordinate in frame buffer (0 = top edge) + Note: application must never pass Y coordinate greater than + this value to the SetClipRect function + 04h DWORD -> "SetForeColor" to set foreground color/mix (see #00091) + 08h DWORD -> "SetBackColor" to set background color/mix (see #00092) + 0Ch DWORD -> "SetClipRect" set hardware clipping rectangle (see #00093) + 10h DWORD -> function "DrawScan" to draw a single scan line + 14h DWORD -> function "DrawScanList" to draw a list of scan lines + 18h DWORD -> function "DrawRect" to draw a solid rectangle + 1Ch DWORD -> function "DrawLine" to draw a solid line + 20h DWORD -> function "DrawPattScan" to draw a patterned scan line + 24h DWORD -> function "BitBlt" to perform screen-to-screen BitBLT + 28h DWORD -> "TransBitBlt" to perform transparent screen-to-screen BitBLT + 2Ch DWORD -> "MonoBitBlt" to monochrome expansion screen-to-screen BitBLT + 30h DWORD -> function "SetCursor" to download hardware cursor image + 34h DWORD -> function "SetCursorPos" to set hardware cursor position + 38h DWORD -> function "SetCursorColor" to set hardware cursor color + 3Ch DWORD -> function "ShowCursor" to show/hide hardware cursor + 40h DWORD -> function "WaitTillIdle" to wait until graphics engine idle + 44h DWORD -> "EnableDirectAccess" to enable direct framebuffer access + 48h DWORD -> "DisableDirectAccess" to disable direct framebuffer access + 4Ch DWORD -> "BankSwitchCB" bank-switching callback function + (set by application, may simply point at 32-bit VBE 2.0 bank + switching entry point) + 50h WORD "VidMemSel" selector for video memory (must be set by app) + 52h WORD "IOPortsOff" offset of I/O ports table in context buffer + 54h WORD "IOMemoryOff" offset of I/O memory table in context buffer + 56h WORD "IOMemSel1" selector for first I/O memory area specified by + I/O memory table (must be set by application) + 58h WORD "IOMemSel2" selector for second I/O memory area + 5Ah WORD "IOMemSel3" selector for third I/O memory area + 5Ch WORD "IOMemSel4" selector for fourth I/O memory area + 5Eh N BYTEs device-specific state buffer + N WORDs I/O port access table (list of ports, last entry is FFFFh) + N DWORDs I/O memory access table (list of physical-address/length pairs, + last entry is FFFFFFFFh) + N BYTEs 32-bit code for VBE/AF v1.0P function +Notes: all function pointers are offsets into the 32-bit code within the + context buffer, and should be updated to point at the actual + functions after the application has copied the buffer from the + real-mode memory used for the interrupt call into its own flat-model + memory space + any functions which are not supported by the hardware have function + pointers which are set to 00000000h initially + +(Table 00090) +Values for VBE/AF v1.0P color mixing mode: + 00h replace + 01h XOR with existing pixel + 02h OR with existing pixel + 03h AND with existing pixel +SeeAlso: #00091,#00090 + +(Table 00091) +Call VBE/AF v1.0P function "SetForeColor" with: + ES:EDI -> device context buffer (see #00089) + EAX = new foreground color (format varies by video mode) + BL = new foreground mixing mode (see #00090) +SeeAlso: #00089,#00092,#00107 + +(Table 00092) +Call VBE/AF v1.0P function "SetbackColor" with: + ES:EDI -> device context buffer (see #00089) + EAX = new background color (format varies by video mode) + BL = new background mixing mode (see #00090) +SeeAlso: #00089,#00091,#00093 + +(Table 00093) +Call VBE/AF v1.0P function "SetClipRect" with: + ES:EDI -> device context buffer (see #00089) + EAX = left clipping coordinate + EBX = top clipping coordinate + ECX = right clipping coordinate + EDX = bottom clipping coordinate +SeeAlso: #00089,#00092,#00094,#00107 + +(Table 00094) +Call VBE/AF v1.0P function "DrawScan" with: + ES:EDI -> device context buffer (see #00089) + EAX = X1 coordinate + EBX = Y coordinate + ECX = X2 coordinate +Desc: draw a solid horizontal line from (X1,Y) to (X2,Y) in the currently- + active foreground color and mix, omitting the pixel at the largest + X coordinate +SeeAlso: #00089,#00093,#00095,#00098,#00107 + +(Table 00095) +Call VBE/AF v1.0P function "DrawScanList" with: + ES:EDI -> device context buffer (see #00089) + EAX = Y coordinate of first line + EBX = length of scan list + DS:ESI -> scanline list X coordinates (2N WORDs) +Desc: draw multiple solid horizontal lines at successive Y coordinates, + using the currently-active foreground color and mix, omitting the + pixel at the largest X coordinate for each line +Note: the scanline list consists of pairs of X coordinates; because the + last pixel is omitted, a scanline will be skipped if X1==X2 +SeeAlso: #00089,#00094,#00096,#00107 + +(Table 00096) +Call VBE/AF v1.0P function "DrawRect" with: + ES:EDI -> device context buffer (see #00089) + EAX = left coordinate + EBX = top coordinate + ECX = right coordinate + EDX = bottom coordinate +Desc: draw a solid rectangle in the currently-active foreground color and + mix, omitting the rightmost X coordinate and bottom-most scan line +Note: results are undefined if EAX>ECX or EBX>EDX; nothing will be drawn if + EAX=ECX or EBX=EDX +SeeAlso: #00089,#00094,#00095,#00097 + +(Table 00097) +Call VBE/AF v1.0P function "DrawLine" with: + ES:EDI -> device context buffer (see #00089) + EAX = ??? (specified this way in the draft documentation!) + EBX = ??? + ECX = ??? + EDX = ??? + ESI = ??? +Desc: draw a solid line in the currently-active foreground color and mix, + given the Bresenham parameters +SeeAlso: #00089,#00094,#00096,#00098 + +(Table 00098) +Call VBE/AF v1.0P function "DrawPattScan" with: + ES:EDI -> device context buffer (see #00089) + EAX = X1 coordinate + EBX = Y coordinate + ECX = X2 coordinate + DL = 8-bit stipple pattern +Desc: draw a patterned horizontal line from (X1,Y) to (X2,Y) in the + currently-active foreground color and mix, omitting the pixel at + the largest X coordinate +Note: for each pixel in the line, if DL bit (X mod 8) is set, the pixel is + drawn, and left untouched if the bit is clear +SeeAlso: #00089,#00096,#00097,#00094,#00099,#00107 + +(Table 00099) +Call VBE/AF v1.0P function "BitBlt" with: + ES:EDI -> device context buffer (see #00089) + DS:ESI -> BitBlt parameter block (see #00100) + BL = mix operation + 00h replace + 01h XOR + 02h OR + 03h AND +SeeAlso: #00089,#00094,#00098,#00101,#00107 + +Format of VBE/AF BitBlt parameter block: +Offset Size Description (Table 00100) + 00h WORD left coordinate of source rectangle + 02h WORD top coordinate of source rectangle + 04h WORD right coordinate of source rectangle + 06h WORD bottom coordinate of source rectangle + 08h WORD left coordinate of destination rectangle + 0Ah WORD top coordinate of destination rectangle + 0Ch BYTE horizontal direction: 00h = decrement X, 01h = increment X + 0Dh BYTE vertical direction: 00h = decrement Y, 01h = increment Y +Notes: the rightmost pixel(s) and bottom-most scan line are not copied + the horizontal/vertical direction flags are used to ensure correct + copies when the source and destination rectangles overlap +SeeAlso: #00099 + +(Table 00101) +Call VBE/AF v1.0P function "TransBitBlt" with: + ES:EDI -> device context buffer (see #00089) + DS:ESI -> BitBlt parameter block (see #00100) + BL = mix operation + 00h replace + 01h XOR + 02h OR + 03h AND + ECX = transparent color +Desc: copy a rectangular area from one location to another, treating pixels + with the specified color as transparent (leaving the destination + unchanged) +SeeAlso: #00089,#00099,#00102,#00107 + +(Table 00102) +Call VBE/AF v1.0P function "MonoBitBlt" with: + ES:EDI -> device context buffer (see #00089) + DS:ESI -> BitBlt parameter block (see #00100) + BL = mix operation + 00h replace + 01h XOR + 02h OR + 03h AND + BH = bit-plane from which to read +Desc: copy a rectangular area from one location to another, expanding a + single bit of each source pixel +SeeAlso: #00089,#00099,#00101 + +(Table 00103) +Call VBE/AF v1.0P function "SetCursor" with: + ES:EDI -> device context buffer (see #00089) + DS -> application's data segment + ESI -> 32x32 cursor data, in Windows 3.1 cursor-file format + (32 DWORDs of XOR mask followed by 32 DWORDs of AND mask) +SeeAlso: #00089,#00094,#00104,#00105 + +(Table 00104) +Call VBE/AF v1.0P function "SetCursorPos" with: + ES:EDI -> device context buffer (see #00089) + EAX = cursor X coordinate + EBX = cursor Y coordinate + CL = cursor's X hotspot + CH = cursor's Y hotspot +SeeAlso: #00089,#00103,#00105 + +(Table 00105) +Call VBE/AF v1.0P function "SetCursorColor" with: + ES:EDI -> device context buffer (see #00089) + AL = 8-bit color index, or color's Red value + AH = color's Green value (16-bpp, 24-bpp, 32-bpp modes) + BL = color's Blue value (16-bpp, 24-bpp, 32-bpp modes) +SeeAlso: #00089,#00103,#00104,#00106 + +(Table 00106) +Call VBE/AF v1.0P function "ShowCursor" with: + ES:EDI -> device context buffer (see #00089) + AL = new visibility (00h hide cursor, 01h show cursor) +SeeAlso: #00089,#00103,#00104,#00105 + +(Table 00107) +Call VBE/AF v1.0P function "WaitTillIdle" with: + ES:EDI -> device context buffer (see #00089) +Desc: pause until the hardware accelerator has completed all pending + operations +SeeAlso: #00089,#00108,#00109 + +(Table 00108) +Call VBE/AF v1.0P function "EnableDirectAccess" with: + ES:EDI -> device context buffer (see #00089) +SeeAlso: #00089,#00109,#00107,AX=4F05h,#00078,#00080 + +(Table 00109) +Call VBE/AF v1.0P function "DisableDirectAccess" with: + ES:EDI -> device context buffer (see #00089) +SeeAlso: #00089,#00108 +--------V-104F0C----------------------------- +INT 10 - VESA SuperVGA BIOS - RESERVED FOR FUTURE SVGA FUNCTIONS + AX = 4F0Ch-4F0Fh +SeeAlso: AX=4F00h +--------V-104F0B----------------------------- +INT 10 - Diamond Viper V330 - ??? + AX = 4F0Bh + ECX = ??? + ??? +Return: AL = 4Fh if function supported + AH = status + 00h successful + ECX = ??? + ??? + 01h failed +Note: in BIOS v1.62, ECX is in multiples of 10000 (decimal) for both input + and output, and this function never fails +--------p-104F10BL00------------------------- +INT 10 - VESA VBE/PM (Power Management) v1.0+ - GET CAPABILITIES + AX = 4F10h + BL = 00h + ES:DI = 0000h:0000h (reserved for future use as pointer to info block) +Return: AL = 4Fh if function supported (installed) + AH = call status + 00h successful + else failed + ---if successful--- + BL = VBE/PM version (bits 7-4: major, bits 3-0: minor) + BH = supported states (see #00110) + ES:DI unchanged +Index: installation check;VESA VBE/Power Management|VESA DPMS +SeeAlso: AX=4F10h/BL=01h,AX=4F10h/BL=02h + +Bitfields for VESA VBE/PM supported power states: +Bit(s) Description (Table 00110) + 0 standby + 1 suspend + 2 off + 3 reduced on +--------p-104F10BL01------------------------- +INT 10 - VESA VBE/PM (Power Management) v1.0+ - SET DISPLAY POWER STATE + AX = 4F10h + BL = 01h + BH = new state (see #00111) +Return: AL = 4Fh if function supported + AH = call status + 00h successful + else failed +SeeAlso: AX=4F10h/BL=00h,AX=4F10h/BL=02h,AX=A00Ch + +(Table 00111) +Values for VESA VBE/PM power state: + 00h On + 01h standby + 02h suspend + 04h Off + 08h reduced On (for flat screens) +--------p-104F10BL02------------------------- +INT 10 - VESA VBE/PM (Power Management) v1.0+ - GET DISPLAY POWER STATE + AX = 4F10h + BL = 02h +Return: AL = 4Fh if function supported + AH = call status + 00h successful + BH = current power state (see #00111) + else failed +SeeAlso: AX=4F10h/BL=00h,AX=4F10h/BL=01h,AX=A00Dh +--------V-104F11----------------------------- +INT 10 - VESA VBE/FP (Flat Panel Interface) - API + AX = 4F11h + BL = function + 00h installation check / get capabilities + other registers vary by function +Return: varies by function +--------V-104F12----------------------------- +INT 10 - VESA VBE/CI (Cursor Interface) - API + AX = 4F12h + BL = function + other registers vary by function +Return: varies by function +SeeAlso: AX=4F4Dh +--------s-104F13BX0000----------------------- +INT 10 - VESA VBE/AI (Audio Interface) - INSTALLATION CHECK + AX = 4F13h + BX = 0000h +Return: AL = 4Fh if function supported + AH = status + 00h successful + BX = version (0010h for 1.00 -- note nonstandard value!) + 01h failed +SeeAlso: AX=4F13h/BX=0001h,AX=4F13h/BX=0005h +--------s-104F13BX0001----------------------- +INT 10 - VESA VBE/AI (Audio Interface) - LOCATE DEVICE + AX = 4F13h + BX = 0001h + CX = 0000h ??? + DX = type of device + 0001h Wave device + 0002h MIDI device + 0003h Volume device +Return: AL = 4Fh if function supported + AH = status + 00h successful + CX = handle [returned 1 for DX=1 and 3, and 2 for DX=2] + 01h failed +SeeAlso: AX=4F13h/BX=0000h,AX=4F13h/BX=0002h +--------s-104F13BX0002----------------------- +INT 10 - VESA VBE/AI (Audio Interface) - QUERY DEVICE + AX = 4F13h + BX = 0002h + CX = handle + DX = query + 0001h return length of GeneralDeviceClass + 0002h return copy of GeneralDeviceClass (see #00112) + 0003h return length of Volume Info Structure + 0004h return copy of Volume Info Structure (see #00122) + 0005h return length of Volume Services Structure + 0006h return copy of Volume Services Structure (see #00124) + 0007h-000Fh reserved + 0010h-FFFFh device-specific + SI:DI -> buffer (functions 0002h,0004h,0006h) +Return: AL = 4Fh if function supported + AH = status + 00h successful + SI:DI = length (functions 1,3,5) + SI:DI buffer filled (functions 2,4,6) + 01h failed +Note: functions 0003h to 0006h are only supported for the Volume device + +Format of GeneralDeviceClass structure: +Offset Size Description (Table 00112) + 00h 4 BYTEs name of the structure ("GENI") + 04h DWORD structure length + 08h WORD type of device (1=Wave, 2=MIDI) + 0Ah WORD version of VESA driver support (0100h for 1.00) + 10h var for CX=handle for Wave device: + Wave Info structure (see #00113) + some bytes ??? + for CX=handle for MIDI device: + MIDI Info Structure (see #00118) + first 8 bytes of MIDI Service Structure ??? +SeeAlso: #00122,#00124 + +Format of WAVE Info Structure: +Offset Size Description (Table 00113) + 00h 4 BYTEs name of the structure ("WAVI") + 04h DWORD structure length [0000007Eh] + 08h DWORD driver software version [00000003h] + 0Ch 32 BYTEs vendor name, etc. (ASCIZ string) + 2Ch 32 BYTEs vendor product name + 4Ch 32 BYTEs vendor chip/hardware description + 6Ch BYTE installed board number + 6Dh 3 BYTEs unused data + 70h DWORD feature bits (see #00114) + 74h WORD user determined preference field + 76h WORD memory required for driver use [0200h] + 78h WORD number of timer tick callbacks per second [0000h] + 7Ah WORD channels: 1 = mono, 2 = stereo + stereo is assumed to be interleaved data + 7Ch WORD bitfield of max sample sizes (see #00115) +SeeAlso: #00118 + +Bitfields for Wave feature bits: +Bit(s) Description (Table 00114) + 0 8000hz Mono Playback + 1 8000hz Mono Record + 2 8000hz Stereo Record + 3 8000hz Stereo Playback + 4 8000hz Full Duplex Play/Record + 5 11025hz Mono Playback + 6 11025hz Mono Record + 7 11025hz Stereo Record + 8 11025hz Stereo Playback + 9 11025hz Full Duplex Play/Record + 10 22050hz Mono Playback + 11 22050hz Mono Record + 12 22050hz Stereo Record + 13 22050hz Stereo Playback + 14 22050hz Full Duplex Play/Record + 15 44100hz Mono Playback + 16 44100hz Mono Record + 17 44100hz Stereo Record + 18 44100hz Stereo Playback + 19 44100hz Full Duplex Play/Record + 20-26 reserved (0) + 27 driver must pre-handle the data + 28 Variable Sample mono playback + 29 Variable Sample stereo playback + 30 Variable Sample mono record + 31 Variable Sample stereo record + +(Table 00115) +Values for Sample data size: + 01h 8bit play + 02h 16bit play + 10h 8bit record + 20h 16bit record + +Format of WAVE Audio Services structure: +Offset Size Description (Table 00116) + 00h 4 BYTEs name of the structure + 04h DWORD structure length + 08h 16 BYTEs for future expansion +---entry points (details???)--- + 18h DWORD DeviceCheck + 11h compression (see also #00117) + 12h driver state + 13h get current pos + 14h sample rate + 15h set preference + 16h get DMA,IRQ + 17h get IO address + 18h get mem address + 19h get mem free + 1Ah full duplex + 1Bh get block size + 1Ch get PCM format + 1Dh enable PCM format + 80h-.. vendors can add DevChks above 0x80 + 1Ch DWORD PCMInfo + 20h DWORD PlayBlock + 24h DWORD PlayCont + 28h DWORD RecordBlock + 2Ch DWORD RecordCont + 30h DWORD PauseIO + 34h DWORD ResumeIO + 38h DWORD StopIO + 3Ch DWORD WavePrepare + 40h DWORD WaveRegister + 44h DWORD GetLastError + 01h unsupported feature/function + 02h bad sample rate + 03h bad block length + 04h bad block address + 05h app. missed an IRQ + 06h don't understand the PCM size/format + 80h-.. vendors specific errors + 48h DWORD TimerTick + 4Ch DWORD ApplPSyncCB: CallBack: play filled in by the app + 50h DWORD ApplRSyncCB: CallBack: rec filled in by the app +SeeAlso: #00120,#00124 + +(Table 00117) +Values for type of compression: + 01h IMA play + 02h ALAW play + 03h ULAW play + 11h IMA record + 12h ALAW record + 13h ULAW record + +Format of MIDI Info Structure: +Offset Size Description (Table 00118) + 00h 4 BYTEs name of the structure ("MIDI") + 04h DWORD structure length + 08h DWORD driver software version [00000003h] + 0Ch 32 BYTEs vendor name, etc. (ASCIZ string) + 2Ch 32 BYTEs vendor product name + 4Ch 32 BYTEs vendor chip/hardware description + 6Ch BYTE installed board number + 6Dh 3 BYTEs unused data + 70h 14 BYTEs the patch library file name [OPL2.BNK 00..] + 7Eh DWORD feature bits (see #00119) + 80h WORD user determined preference field + 82h WORD memory required for driver use + 84h WORD # of timer tick callbacks per second + 86h WORD max # of tones (voices, partials) +SeeAlso: #00112,#00120,#00122 + +Bitfields for MIDI feature bits: +Bit(s) Description (Table 00119) + 0-3 reserved for GM extensions + 4 Transmitter/Receiver only + 5 Patches preloaded + 6 MIDI receive has time stamp + 8 MIDI interrupt driven input supported + 9 MIDI polled input supported + 10 MIDI remote patches supported + +Format of MIDI Service structure: +Offset Size Description (Table 00120) + 00h 4 BYTEs name of the structure ("MIDS") + 04h DWORD structure length + 08h 16 WORDs patches loaded table bit field + 28h 16 BYTEs for future expansion +---entry points (details???)--- + 38h DWORD device check + 11h return available tones + 12h return TRUE/FALSE if patch is understood + 13h set preference + 14h allow/disallow voice stealing + 15h get FIFO sizes + 16h get DMA,IRQ + 17h get IO address + 18h get mem address + 19h get mem free + 80h-.. vendors can add DevChks above 0x80 + 3Ch DWORD global reset + 40h DWORD MIDI msg + 44h DWORD poll MIDI + 48h DWORD preload patch + 4Ch DWORD unload patch + 50h DWORD timer tick + 54h DWORD get last error + 01h unsupported feature/function + 02h unknown patch type (see #00121) + 03h all tones are used + 04h messages are out of sync + 05h an incoming patch was incomplete + 06h an incoming patch couldn't be stored + 07h had to drop an incoming byte + 08h driver is failing a patch download + 80h-.. vendors specific errors + 58h DWORD Patch Block free callback + 5Ch DWORD MIDI byte avail. callback +SeeAlso: #00116,#00124 + +(Table 00121) +Values for MIDI Registered Patch Types: + 10h OPL2 + 11h OPL3 + +Format of Volume Info Structure: +Offset Size Description (Table 00122) + 00h 4 BYTEs name of the structure ("VOLI") + 04h DWORD structure length (00000092h) + 08h DWORD driver software version [00000001h] + 0Ch 32 BYTEs vendor name, etc. (ASCIZ string) + 2Ch 32 BYTEs vendor product name + 4Ch 32 BYTEs vendor chip/hardware description + 6Ch BYTE installed board number (0 for 1st/only board) + 6Dh 3 BYTEs unused data (0) + 70h 24 BYTEs text name of the mixer channel + 88h DWORD features bits (see #00123) + 8Ch WORD minimum volume setting + 8Eh WORD maximum volume setting + 90h WORD attenuation/gain crossover +SeeAlso: #00112,#00124 + +Bitfields for Volume feature bits: +Bit(s) Description (Table 00123) + 0 Stereo Volume control available + 2 Low Pass Filter is available + 3 High Pass Filter is available + 4 Parametric Tone Control is available + 5 selectable output paths + 8 Azimuth Field positioning supported + 9 Phi Field positioning supported + 10-30 unused??? + 31 Master Volume device + +Format of Volume Services Structure: +Offset Size Description (Table 00124) + 00h 4 BYTEs name of the structure ("VOLS") + 04h DWORD structure length (00000038h) + 08h 16 BYTEs 16 bytes for future expansion (0) +---entry points (details???)--- + 18h DWORD device check + 0011h filter range + 0012h filter setting + 0013h filter current + 0014h tone range + 0015h tone setting + 0016h tone current + 0017h path + 0018h get IO address + 0080h-.. vendors can add DevChks above 0x80 + 1Ch DWORD set vol to an absolute setting + 01h User master volume setting + 02h application master volume setting + 20h DWORD set 3D volume + 24h DWORD tone control + 28h DWORD filter control + 2Ch DWORD output path + 30h DWORD reset channel + 34h DWORD get last error + 01h unsupported feature/function + 02h out of range parameter value + 80h+ vendor-specific errors +SeeAlso: #00116,#00120 +--------s-104F13BX0003----------------------- +INT 10 - VESA VBE/AI (Audio Interface) - OPEN DEVICE + AX = 4F13h + BX = 0003h + CX = handle + DX = API set (16/32-bit) + SI = segment ??? +Return: AL = 4Fh if function supported + AH = status + 00h successful + SI:CX -> memory ??? + 01h failed +SeeAlso: AX=4F13h/BX=0000h,AX=4F13h/BX=0002h,AX=4F13h/BX=0004h +--------s-104F13BX0004----------------------- +INT 10 - VESA VBE/AI (Audio Interface) - CLOSE DEVICE + AX = 4F13h + BX = 0004h + CX = handle +Return: AL = 4Fh if function supported + AH = status + 00h successful + 01h failed +SeeAlso: AX=4F13h/BX=0000h,AX=4F13h/BX=0003h,AX=4F13h/BX=0005h +--------s-104F13BX0005----------------------- +INT 10 - VESA VBE/AI (Audio Interface) - UNINSTALL DRIVER + AX = 4F13h + BX = 0005h +Return: AL = 4Fh if function supported + AH = status + 00h successful + 01h failed +SeeAlso: AX=4F13h/BX=0000h,AX=4F13h/BX=0006h +--------s-104F13BX0006----------------------- +INT 10 - VESA VBE/AI (Audio Interface) - DRIVER CHAIN/UNCHAIN + AX = 4F13h + BX = 0006h +Return: AL = 4Fh if function supported + AH = status + 00h successful + 01h failed +SeeAlso: AX=4F13h/BX=0000h,AX=4F13h/BX=0005h +----------104F14----------------------------- +INT 10 - VESA OEM Extensions - API + AX = 4F14h + BL = function + 00h installation check / get capabilities + other registers vary by function +Return: varies by function +Note: this function is provided for OEMs to implement system-specific + functionality in a VESA-compatible manner +----------104F14----------------------------- +INT 10 - VESA OEM Extensions - Matrox Millenium (BIOS v2.1) + AX = 4F14h + BL = function + 00h installation check / get capabilities + ES:DI -> 256-byte buffer for Matrox-specific information + (see #00125) + Return: ES:DI buffer filled + 01h read/write MGA indexed data register + BH = direction (00h = write, else read) + CL = register number (80h for most-recently used register) + CH = new value, if writing + Return: CH = current value, if reading + 02h read/write register in MGA control space + BH = direction and size + bit 4: read register instead of writing + bits 1-0: data size (00 = BYTE, 01 = WORD, 10 = DWORD) + SI = register address + CL/CX/ECX = new value if writing + Return: CL/CX/ECX = current value if reading + 03h read PINS byte + SI = offset of byte within PINS data (see #00126) + Return: CL = value of specified PINS byte + 04h ??? (related to PLL programming) + DX = ??? + Return: CL,EDX destroyed + 05h read BIOS byte + SI = offset of byte relative to start of BIOS image + Return: CL = specified byte + else + Return: AX = FFFFh +Return: AL = 4Fh if function supported + AH = status + 00h successful + 01h failed +Note: most of this info is from http:\\grafi.ii.pw.edu.pl\gbm\matrox +SeeAlso: MEM C000h:7FFCh"Matrox" + +Format of Matrox-specific VESA extensions information: +Offset Size Description (Table 00125) + 00h 7 BYTEs signature "VBE/MGA" + 07h 10 BYTEs ??? (01h 01h 00h 00h 00h 00h 00h 00h 00h 07h) + 11h WORD BIOS version (high byte = major, low byte = one-digit minor) + 13h DWORD -> manufacturer name (ASCIZ "Matrox") + 17h DWORD -> ASCIZ card name + 1Bh DWORD -> ??? ASCIZ string (empty string on card examined) + 1Fh DWORD -> ASCIZ vendor name + 23h DWORD -> ASCIZ BIOS file base name + 27h DWORD -> PINS + 2Bh WORD video memory size in 64K units + 2Dh DWORD linear address of linear frame buffer + 31h DWORD linear address of MGA control aperture + 35h WORD PCI bus/device for card??? + 37h 201 BYTEs unused??? (cleared to 00h) + +Format of Matrox PINS data (version 3.0): +Offset Size Description (Table 00126) + 00h 2 BYTEs signature ".A" (2Eh 41h) + 02h BYTE structure length (40h for v3.0) + 03h BYTE ??? + 04h WORD PINS version (high byte = major, low byte = minor) + 06h WORD date last programmed + 08h WORD number of times programmed + 0Ah WORD flags + 0Ch 8 BYTEs ASCII serial number, three letters + five digits + 14h 8 BYTEs ??? + 1Ch 4 BYTEs ASCII card version + 20h DWORD PCB revision + 24h BYTE maximum RAMDAC frequency in MHz (less 100) + 25h BYTE maximum RAMDAC frequency??? + 26h BYTE maximum RAMDAc frequency??? + 27h BYTE ??? + 28h BYTE ??? timing data? + 29h BYTE ??? + 2Ah BYTE ??? + 2Bh BYTE ??? + 2Ch BYTE ??? + 2Dh BYTE ??? + 2Eh BYTE ??? + 2Fh BYTE ??? + 30h 4 BYTEs ??? + 34h BYTE ??? + 35h BYTE ??? + 36h BYTE ??? + 37h BYTE memory size in 64K units + 38h BYTE ??? + 39h BYTE ??? + 3Ah BYTE ??? + 3Bh BYTE ??? + 3Ch BYTE ??? + 3Dh BYTE ??? + 3Eh BYTE ??? + 3Fh BYTE checksum (to make sum of all bytes MOD 256 == 00h) +--------V-104F15BL00------------------------- +INT 10 - VESA VBE/DC (Display Data Channel) - INSTALLATION CHECK / CAPABILITIES + AX = 4F15h + BL = 00h +Return: AL = 4Fh if function supported + AH = status + 00h successful + BX = ??? + 01h failed + ??? +SeeAlso: AX=4F15h/BL=01h,AX=4F15h/BL=02h +--------V-104F15BL01------------------------- +INT 10 - VESA VBE/DC (Display Data Channel) - READ EDID + AX = 4F15h + BL = 01h + CX = 0000h + DX = 0000h + ES:DI -> 128-byte buffer for EDID record (see #00127) +Return: AL = 4Fh if function supported + AH = status + 00h successful + ES:DI buffer filled + 01h failed (e.g. non-DDC monitor) +SeeAlso: AX=4F15h/BL=00h,AX=4F15h/BL=02h,I2C A0h"DDC" + +Format of VESA EDID record: +Offset Size Description (Table 00127) + 00h 8 BYTEs padding (all FFh, or 00h FFh..FFh 00h) + 08h WORD big-endian manufacturer ID (see #00136) + bits 14-10: first letter (01h='A', 02h='B', etc.) + bits 9-5: second letter + bits 4-0: third letter + 0Ah WORD EDID ID code -- identifies monitor model + 0Ch DWORD serial number or FFFFFFFFh + for "MAG", subtract 7000000 to get actual serial number + for "OQI", subtract 456150000 + for "PHL", subtract ??? + for "VSC", subtract 640000000 + 10h BYTE week number of manufacture + 11h BYTE manufacture year - 1990 + 12h BYTE EDID version + 13h BYTE EDID revision + 14h BYTE video input type (see #00129) + 15h BYTE maximum horizontal size in cm + 16h BYTE maximum vertical size in cm + 17h BYTE gamma factor (gamma = 1.0 + factor/100, so max = 3.55) + 18h BYTE DPMS flags (see #00128) + 19h BYTE chroma information: green X'/Y' and red X'/Y' + 1Ah BYTE chroma information: white X'/Y' and blue X'/Y' + 1Bh BYTE chroma information: red Y + 1Ch BYTE chroma information: red X + 1Dh BYTE chroma information: green Y + 1Eh BYTE chroma information: green X + 1Fh BYTE chroma information: blue Y + 20h BYTE chroma information: blue X + 21h BYTE chroma information: white Y + 22h BYTE chroma information: white X + 23h BYTE established timings 1 (see #00130) + 24h BYTE established timings 2 (see #00131) + 25h BYTE manufacturer's reserved timing or 00h for none + bit 7: 1152x870 @ 75 Hz (Mac II, Apple) + 26h 8 WORDs standard timing identification + resolution (low byte) and vertical frequency (high byte) for + each of eight modes (see #00132) + X resolution = (lowbyte + 31) * 8 + 36h 18 BYTEs detailed timing description #1 (see #00133) + (v1.1) alternately, text identification (see #00135) + 48h 18 BYTEs detailed timing description #2 + (v1.1) alternately, text identification (see #00135) + 5Ah 18 BYTEs detailed timing description #3 + (v1.1) alternately, text identification (see #00135) + 6Ch 18 BYTEs detailed timing description #4 + (v1.1) alternately, text identification (see #00135) + 7Eh BYTE unused??? + 7Fh BYTE checksum + (radix-complement: 256-low byte of 16-bit sum of 00h-7Eh) + +Bitfields for DPMS EDID flags: +Bit(s) Description (Table 00128) + 2-0 unused??? + 3 display type + =0 non-RGB multicolor + =1 RGB color + 4 unused??? + 5 Active Off supported + 6 Suspend supported + 7 Standby supported +SeeAlso: #00127 + +Bitfields for DPMS input signal type: +Bit(s) Description (Table 00129) + 0 separate sync + 1 composite sync + 2 sync on green + 4-3 unused??? + 6-5 voltage level + 00 0.700V/0.300V (1.00 Vp-p) + 01 0.714V/0.286V + 10 0.100V/0.400V + 11 reserved + 7 =1 digital signal, =0 analog +SeeAlso: #00127 + +Bitfields for DPMS established timings 1: +Bit(s) Description (Table 00130) + 0 720x400 @ 70 Hz (VGA 640x400, IBM) + 1 720x400 @ 88 Hz (XGA2) + 2 640x480 @ 60 Hz (VGA) + 3 640x480 @ 67 Hz (Mac II, Apple) + 4 640x480 @ 72 Hz (VESA) + 5 640x480 @ 75 Hz (VESA) + 6 800x600 @ 56 Hz (VESA) + 7 800x600 @ 60 Hz (VESA) +SeeAlso: #00127,#00131 + +Bitfields for DPMS established timings 2: +Bit(s) Description (Table 00131) + 0 800x600 @ 72 Hz (VESA) + 1 800x600 @ 75 Hz (VESA) + 2 832x624 @ 75 Hz (Mac II) + 3 1024x768 @ 87 Hz interlaced (8514A) + 4 1024x768 @ 60 Hz (VESA) + 5 1024x768 @ 70 Hz (VESA) + 6 1024x768 @ 75 Hz (VESA) + 7 1280x1024 @ 75 Hz (VESA) +SeeAlso: #00127,#00130 + +Bitfields for DPMS standard timing information: +Bit(s) Description (Table 00132) + 5-0 vertical refresh frequency - 60 (Hz) + 7-6 aspect ratio (Y resolution = X resolution * aspect ratio) + 00 ??? + 01 0.75 + 10 0.8 + 11 0.5625 +Note: if both bytes of the timing are 00h or 01h, then the Standard Timing + is "None" +SeeAlso: #00127 + +Format of Detailed Timing Description: +Offset Size Description (Table 00133) + 00h BYTE horizontal frequency in kHz (if 00h, may be text)(see #00135) + 01h BYTE vertical frequency in Hz + 02h BYTE horizontal active time (pixels) and X resolution + 03h BYTE horizontal blanking time (pixels) + 04h BYTE horizontal active time 2 / horizontal blanking time 2 + 05h BYTE vertical active time (lines) and Y resolution + 06h BYTE vertical blanking time (lines) + 07h BYTE vertical active time 2 / vertical blanking time 2 + 08h BYTE horizontal sync offset (pixels) + 09h BYTE horizontal sync pulsewidth (pixels) + 0Ah BYTE vertical sync offset / vertical sync pulsewidth + 0Bh BYTE vertical/horizontal sync offset 2 / vert/hor. sync pulsewidth 2 + 0Ch BYTE horizontal image size (mm) + 0Dh BYTE vertical image size (mm) + 0Eh BYTE horizontal image size 2 / vertical image size 2 + 0Fh BYTE horizontal border (pixels) + 10h BYTE vertical border (lines) + 11h BYTE type of display (see #00134) +SeeAlso: #00127,#00135 + +Bitfields for EDID detailed display type: +Bit(s) Description (Table 00134) + 7 interlaced + 6-5 stereo mode + 00 normal display (no stereo) + 01 stereo, right stereo sync high + 10 stereo, left stereo sync high + 11 undefined + 4-3 sync type + 00 sync analog composite + 01 sync bipolar analog composite + 10 sync digital composite + 11 sync digital separate +---sync digital separate--- + 2 vertical sync polarity (0 = negative, 1 = positive) + 1 horizontal sync polarity (0 = negative, 1 = positive) +---other sync types--- + 2 serrate + 1 sync location (0 = on green, 1 = on RGB) +------ + 0 not used??? +SeeAlso: #00133 + +Format of EDID Text Identification Strings: +Offset Size Description (Table 00135) + 00h 3 BYTEs 00h 00h 00h (to distinguish from detailed timing description) + 03h BYTE text identifier + FFh serial number + FEh vendor name + FDh vertical/horizontal frequency range + FCh model name +---frequency range--- + 04h BYTE 00h ??? + 05h BYTE minimum vertical refresh frequency in Hz + 06h BYTE maximum vertical refresh + 07h BYTE minimum horizontal frequency in kHz + 08h BYTE maximum horizontal frequency + 09h BYTE FFh ??? +---other--- + 04h 14 BYTEs text, may be terminated with either a NUL (00h) or LF (0Ah) +SeeAlso: #00132 + +(Table 00136) +Values for manufacturer ID: + "ACT" Targa + "ADI" ADI Corporation http://www.adi.com.tw + "AOC" AOC International (USA) Ltd. (see #00137) + "API" Acer America Corp. (see #00138) + "APP" Apple Computer, Inc. (see #00139) + "ART" ArtMedia + "AST" AST Research (see #00140) + "CPL" Compal Electronics, Inc. / ALFA (see #00141) + "CPQ" COMPAQ Computer Corp. (see #00142) + "CTX" CTX - Chuntex Electronic Co. (see #00143) + "DEC" Digital Equipment Corporation (see #00144) + "DEL" Dell Computer Corp. (see #00145) + "DPC" Delta Electronics, Inc. (see #00146) + "DWE" Daewoo Telecom Ltd (see #00147) + "ECS" ELITEGROUP Computer Systems (see #00148) + "EIZ" EIZO (see #00149) + "FCM" Funai Electric Company of Taiwan + "GSM" LG Electronics Inc. (GoldStar Technology, Inc.) (see #00158) + "GWY" Gateway 2000 + "HEI" Hyundai Electronics Industries Co., Ltd. (see #00150) + "HIT" Hitachi (see #00151) + "HSL" Hansol Electronics (see #00152) + "HTC" Hitachi Ltd. / Nissei Sangyo America Ltd. (see #00153) + "HWP" Hewlett Packard (see #00154) + "IBM" IBM PC Company (see #00155) + "ICL" Fujitsu ICL (see #00156) + "IVM" Idek Iiyama North America, Inc. (see #00157) + "KFC" KFC Computek + "LKM" ADLAS / AZALEA + "LNK" LINK Technologies, Inc. + "LTN" Lite-On + "MAG" MAG InnoVision (see #00159) + "MAX" Maxdata Computer GmbH + "MEI" Panasonic Comm. & Systems Co. (see #00168) + "MEL" Mitsubishi Electronics (see #00160) + "MIR" miro Computer Products AG (see #00161) + "MTC" MITAC + "NAN" NANAO (see #00162) + "NEC" NEC Technologies, Inc. (see #00163) + "NOK" Nokia (see #00164) + "OQI" OPTIQUEST (see #00165) + "PBN" Packard Bell + "PGS" Princeton Graphic Systems (see #00166) + "PHL" Philips Consumer Electronics Co. (see #00167) + "REL" Relisys + "SAM" Samsung (see #00169) + "SDI" Samtron (see #00170) + "SMI" Smile + "SNI" Siemens Nixdorf + "SNY" Sony Corporation + "SPT" Sceptre + "SRC" Shamrock Technology + "STP" Sceptre + "TAT" Tatung Co. of America, Inc. (see #00171) + "TRL" Royal Information Company (see #00172) + "TSB" Toshiba, Inc. + "UNM" Unisys Corporation + "VSC" ViewSonic Corporation (see #00173) + "WTC" Wen Technology + "ZCM" Zenith Data Systems + "___" Targa +SeeAlso: #00127 + +(Table 00137) +Values for AOC monitor EDID: + A566h AOC SPECTRUM 5Nlr + A782h AOC SPECTRUM 7Nlr + D350h AOC SPECTRUM 4V, 4VA, 4Vlr, 4VlrA + D566h AOC SPECTRUM 5Vlr, 5VlrA + E570h AOC SPECTRUM 5Glr + E750h AOC SPECTRUM 7DlrA +SeeAlso: #00136,#00138 + +(Table 00138) +Values for Acer monitor EDID: + 0037h AcerView 55 + 424Ch AcerView 76ie + 440Bh AcerView 11D + 4421h AcerView 33D + 4522h AcerView 7134e + 4536h AcerView 7154e + 4538h AcerView 7156e + 454Ch AcerView 7176ie + 454Eh AcerView 7178ie + 4938h AcerView 7156i + 494Ch AcerView 76i + 494Eh AcerView 78i + 4962h AcerView 98i + 4C21h AcerView 33DL + 4C22h AcerView 34TL + 4C37h AcerView 55L + 4C38h AcerView 56L + 4E4Ch AcerView 76N + 5321h AcerView 7133s + 5322h AcerView 7134s + 5336h AcerView 7154s + 5338h AcerView 7156s, 7156is + 534Ch AcerView 7176is + 5422h AcerView 34T +SeeAlso: #00136,#00137,#00140 + +(Table 00139) +Values for Apple Computer monitor EDID: + 0352h AppleVision 850 +SeeAlso: #00136 + +(Table 00140) +Values for AST monitor EDID: + 8001h ASTVision 4V + 8002h ASTVision 4I + 8003h ASTVision 4N + 8004h ASTVision 4L + 8005h ASTVision 5L + 8006h ASTVision 7L + 8007h ASTVision 7H + 8008h ASTVision 20H + 8009h AST Sabre + 800Ah ASTVision 5V +SeeAlso: #00136,#00127,#00138,#00141 + +(Table 00141) +Values for ALFA monitor EDID: + 096Bh ALFA TH-450 +SeeAlso: #00136,#00140,#00142 + +(Table 00142) +Values for Compaq monitor EDID: + 0011h COMPAQ 1024 + 0012h COMPAQ 1024 + 0013h COMPAQ 1024 + 0014h COMPAQ 1024 + 0015h COMPAQ 1024 + 0016h COMPAQ 1024 + 0017h COMPAQ PRB + 0018h COMPAQ PRB + 0019h COMPAQ PRB + 001Ah COMPAQ PRB + 0020h COMPAQ PRB + 0021h COMPAQ PRB + 0022h COMPAQ 151FS + 0023h COMPAQ 151FS + 0024h COMPAQ 151FS + 0025h COMPAQ 151FS + 0026h COMPAQ 151FS + 0027h COMPAQ 151FS + 0028h COMPAQ 151FS + 0029h COMPAQ PRB + 002Ah COMPAQ PRB + 002Bh COMPAQ PRB + 002Ch COMPAQ PRB + 002Dh COMPAQ 171FS + 002Eh COMPAQ 171FS + 002Fh COMPAQ 171FS + 0030h COMPAQ 171FS + 0031h COMPAQ 171FS + 0032h COMPAQ 171FS + 0033h COMPAQ 171FS + 0040h COMPAQ QVision 200 + 0041h COMPAQ QVision 200 + 0042h COMPAQ QVision 200 + 0043h COMPAQ QVision 200 + 0044h COMPAQ QVision 200 + 0045h COMPAQ QVision 200 + 0046h COMPAQ QVision 200 + 0047h COMPAQ QVision 200 + 0048h COMPAQ QVision 200 + 0049h COMPAQ QVision 200 + 0100h COMPAQ 1024 + 0146h COMPAQ 1024 + 0147h COMPAQ 1024 + 0346h COMPAQ 151FS + 0347h COMPAQ 151FS + 0348h COMPAQ 151FS + 0349h COMPAQ 151FS + 034Ah COMPAQ 151FS + 034Bh COMPAQ 151FS + 0546h COMPAQ 171FS + 0547h COMPAQ 171FS + 0548h COMPAQ 171FS + 0549h COMPAQ 171FS + 0746h COMPAQ PRB + 0747h COMPAQ PRB + 0846h COMPAQ PRA + 0847h COMPAQ PRA + 0848h COMPAQ PRA + 0849h COMPAQ PRA + 084Ah COMPAQ PRA + 084Bh COMPAQ PRA + 084Ch COMPAQ PRA + 084Dh COMPAQ PRA + 0946h COMPAQ PRB + 0947h COMPAQ PRB + 0948h COMPAQ PRB + 0949h COMPAQ PRB + 0A46h COMPAQ PRA + 0A47h COMPAQ PRA + 0A48h COMPAQ PRA + 0A49h COMPAQ PRA + 0A4Ah COMPAQ PRA + 0A4Bh COMPAQ PRA + 0A4Ch COMPAQ PRA + 0A4Dh COMPAQ PRA + 0D46h COMPAQ 140 + 0D47h COMPAQ 140 + 0D48h COMPAQ 140 + 0D49h COMPAQ 140 + 0D4Ah COMPAQ 140 + 0D4Bh COMPAQ 140 + 0D4Ch COMPAQ 140 + 0D4Dh COMPAQ 140 + 0F46h COMPAQ 150 + 0F47h COMPAQ 150 + 0F48h COMPAQ 150 + 0F49h COMPAQ 150 + 0F4Ah COMPAQ 150 + 0F4Bh COMPAQ 150 + 0F4Ch COMPAQ 150 + 0F4Dh COMPAQ 150 +SeeAlso: #00136,#00141,#00143 + +(Table 00143) +Values for "CTX" monitor EDID: + 1451h CTX 1451 + 1551h CTX 1551 + 1562h CTX 1562 + 1565h CTX 1565 + 1569h CTX 1569S 15-inch + 1765h CTX 1765 + 1785h CTX 1785 XE + 2085h CTX 2085 + 2185h CTX 2185 +SeeAlso: #00136,#00142,#00144 + +(Table 00144) +Values for Digital Equipment Corporation monitor EDID: + 06FAh Digital 21" Color (FR-PCXAV-WZ) + 073Ah Digital 17" Color (FR-PCXAV-YZ) + BA08h Digital 15" Color Monitor (FR-PCXBV-E*) + DA08h Digital 17" Color Monitor (FR-PCXBV-F*) +SeeAlso: #00136,#00143,#00145 + +(Table 00145) +Values for Dell monitor EDID: + 139Ah Dell Ultrascan 14XE + 139Bh Dell Ultrascan 14XE + 139Ch Dell Ultrascan 14XE + 139Dh Dell Ultrascan 14XE + 2210h Dell Ultrascan V17X + 2211h Dell Ultrascan V17X + 2212h Dell Ultrascan V17X + 2213h Dell Ultrascan V17X + 2214h Dell Ultrascan 21TE + 2215h Dell Ultrascan 21TE + 2216h Dell Ultrascan 21TE + 2217h Dell Ultrascan 21TE + 3024h Dell VS17X + 3025h Dell VS17X + 3026h Dell VS17X + 3027h Dell VS17X + 4273h Dell VS15X +SeeAlso: #00136,#00144,#00146 + +(Table 00146) +Values for Delta Electronics monitor EDID: + 0456h Delta DA-456 + 1565h Delta DA-1565 + 1765h Delta DA-1765 +SeeAlso: #00136,#00145,#00147 + +(Table 00147) +Values for Daewoo monitor EDID: + 1423h Daewoo CMC-1423B1 + 1427h Daewoo CMC-1427X1 + 1502h Daewoo CMC-1502B1 + 1505h Daewoo CMC-1505X + 1507h Daewoo CMC-1507X1 + 1703h Daewoo CMC-1703B + 5133h Daewoo CMC-1511B + 7044h Daewoo CMC-1704C +SeeAlso: #00136,#00146,#00148 + +(Table 00148) +Values for ELITEGROUP Computer Systems monitor EDID: + 0001h ECS VERTOS 1401 + 0002h ECS VERTOS 1501 + 0003h ECS VERTOS 1502 + 0004h ECS VERTOS 1503 + 0005h ECS VERTOS 1700 + 0006h ECS VERTOS 1701 + 0007h ECS VERTOS 1700 + 0008h ECS VERTOS 2101 + 0009h ECS VERTOS 2102 +SeeAlso: #00136,#00147,#00149 + +(Table 00149) +Values for EIZO monitor EDID: + 0200h EIZO FlexScan F351 + 0201h EIZO FlexScan F553 + 0202h EIZO FlexScan F563 + 0203h EIZO FlexScan F764 + 0204h EIZO FlexScan F784 + 0206h EIZO FlexScan 6600 + 0300h EIZO FlexScan 6500 + 0302h EIZO 9060S + 0303h EIZO 9065S + 0305h EIZO FlexScan T563 + 0306h EIZO 9070S + 0307h EIZO 9080i + 0308h EIZO 9400i + 0309h EIZO 9500 + 030Ah EIZO FlexScan F340iW + 030Ch EIZO FlexScan F552 + 030Dh EIZO FlexScan F560iW + 030Fh EIZO FlexScan F760iW + 0310h EIZO FlexScan F780iW + 0311h EIZO FlexScan T560i + 0312h EIZO FlexScan T660i + 0313h EIZO FlexScan T562 + 0314h EIZO FlexScan T662 + 038Ch EIZO FlexScan F550iW +SeeAlso: #00136,#00148,#00150 + +(Table 00150) +Values for Hyundai monitor EDID: + 0B42h Hyundai Deluxscan 21 + 12F0h Hyundai Deluxscan 14S + 16D8h Hyundai Deluxscan 15B + 16E8h Hyundai Deluxscan 15G + 16EEh Hyundai Delucscan 15G+ + 1E02h Hyundai Deluxscan 17 Pro + 1EB8h Hyundai Deluxscan 17B + 1EBEh Hyundai Deluxscan 17B+ + 5864h Hyundai DeluxScan 15 Pro + B81Eh Hyundai DeluxScan 17 +SeeAlso: #00136,#00149,#00151 + +(Table 00151) +Values for Hitachi monitor EDID: + 1717h Hitachi Accuvue GX17L + 1727h Hitachi HM1764 + 1827h Hitachi HM1782 + 2147h Hitachi HM4721 + 2149h Hitachi HM4921 + 4020h Hitachi HM4020 + 4021h Hitachi HM4021 + 4711h Hitachi Accuvue UX4721 + 4810h Hitachi Accuvue GX20 + 4811h Hitachi Accuvue GX21 + 4820h Hitachi HM4820 + 4821h Hitachi HM4821 + 4830h Hitachi Accuvue GX20H + 4911h Hitachi Accuvue UX4921 + 6421h Hitachi HM6421 + 6811h Hitachi Accuvue UX6821 + 6821h Hitachi HM6821 +SeeAlso: #00136,#00150,#00152 + +(Table 00152) +Values for Hansol Electronics monitor EDID: + 0579 Hansol Electronics Mazellan14px + 057A Hansol Electronics Mazellan400A + 05DD Hansol Electronics Mazellan15ax + A605 Hansol Electronics Mazellan17px +SeeAlso: #00136,#00151,#00153 + +(Table 00153) +Values for Hitachi, Ltd. monitor EDID: + AB6Fh CM-1711M + ABC2h CM-2112M + ABC7h CM-2111M + ABCCh CM-2110M + ABE0h Hitachi, Ltd CM802 + ABE2h Hitachi, Ltd CM801 + ABE3h Hitachi, Ltd CM800 + ABEAh Hitachi, Ltd CM803 + ABF4h Hitachi, Ltd CM701 + AFC8h Hitachi, Ltd CM500 + AFD2h Hitachi, Ltd CM600 + AFD7h Hitachi, Ltd CM611 +SeeAlso: #00136,#00152,#00154 + +(Table 00154) +Values for Hewlett-Packard monitor EDID: + 0AF0h HP D2800A Ultra VGA 1600 21" + 0AF6h HP D2806A Ergo Ultra VGA 15" + 0AF8h HP D2808 1024 Low Emission + 0AFFh HP D2815A 1024 Low Emission 14" + 0F11h HP D3857A Multi Media 15" + 0F12h HP D3858A Multi Media 14" +SeeAlso: #00136,#00151,#00155 + +(Table 00155) +Values for IBM monitor EDID: + 198Eh IBM G41 + 198Fh IBM G50 + 1990h IBM G70 + 1991h IBM G200 + 1999h IBM P50 + 199Ah IBM P70 + 199Bh IBM P200 + 1BB7h IBM 7095 + 1BB9h IBM 7097 + 2112h IBM 2112 + 2113h IBM 2113 + 2114h IBM 2114 + 2115h IBM 2115 + 2117h IBM 2117 + 2215h IBM 2215 + 2238h IBM 2238 + 2248h IBM 2248 + 2264h IBM 2264 + 2535h IBM 9525-0X1 + 26ACh IBM Aptiva 9900 + 27ADh IBM Aptiva 9901 + 6312h IBM 6312 + 6314h IBM 6314 + 6315h IBM 6315 + 6317h IBM 6317 + 6319h IBM 6319 + 6321h IBM 6321 + 6322h IBM 6322 + 6324h IBM 6324 + 6325h IBM 6325 + 6327h IBM 6327 + 8504h IBM 8504 + 8511h IBM 8511 + 8512h IBM 8512 + 8513h IBM 8513 + 8514h IBM 8514 + 8515h IBM 8515 + 8517h IBM 8517 + 8518h IBM 8518 + 9504h IBM 9504 + 9515h IBM 9515 + 9517h IBM 9517 + 9518h IBM 9518 + 9521h IBM 9521 + 9524h IBM 9524 + 9525h IBM 9525 + 9527h IBM 9527 +SeeAlso: #00136,#00154,#00156 + +(Table 00156) +Values for Fujitsu ICL monitor EDID: + 0100h Fujitsu ICL ErgoPro 211v + 0200h Fujitsu ICL ErgoPro 171p + 0400h Fujitsu ICL ErgoPro 171v + 0700h Fujitsu ICL ErgoPro 151p + 0800h Fujitsu ICL ErgoPro 151p AutoBrite + 0A00h Fujitsu ICL ErgoPro 151v + 0B00h Fujitsu ICL ErgoPro 141v + 0D00h Fujitsu ICL ErgoPro 141p + 0F00h Fujitsu ICL ErgoPro 152v + 1400h Fujitsu ICL ErgoPro 142v + 1600h Fujitsu ICL ErgoPro e153 + 1900h Fujitsu ICL ErgoPro x173 + 1A00h Fujitsu ICL ErgoPro x173a + 1C00h Fujitsu ICL ErgoPro x152 + 1D00h Fujitsu ICL ErgoPro e173 + 2200h FUJITSU ErgoPro e154 + 2400h FUJITSU ErgoPro x174 +SeeAlso: #00136,#00155,#00157 + +(Table 00157) +Values for Idek Iiyama North America monitor EDID: + 1700h Iiyama Vision Master MF-8617 +SeeAlso: #00136,#00156,#00158 + +(Table 00158) +Values for LG Electronics monitor EDID: + 36B4h LG StudioWorks 44m + 36B9h LG StudioWorks 44i + 3AA0h LG 1505s + 3AA2h LG StudioWorks 56m + 3AAFh LG StudioWorks 56T 15-inch + 3AB0h LG StudioWorks 5D + 3AB6h LG StudioWorks 5D + 426Ch LG StudioWorks 78i + 426Dh LG StudioWorks 78T + 426Eh LG StudioWorks 76i + 4273h LG StudioWorks 76m + 4274h LG StudioWorks 78m + 4277h LG StudioWorks 74m + 4278h LG StudioWorks 74i + 427Eh LG StudioWorks 7D + 427Fh LG StudioWorks 78D + 4280h LG StudioWorks 78DT + 4281h LG StudioWorks 7DT + 4284h LG StudioWorks 76T + 42CFh LG 1725s + 4E21h LG StudioWorks 20i +SeeAlso: #00136,#00157,#00159 + +(Table 00159) +Values for MAG monitor EDID: + 5620h DX1595 + 5624h DX15T + 5626h DX1795 +SeeAlso: #00136,#00158,#00160 + +(Table 00160) +Values for Mitsubishi monitor EDID: + 0040h Mitsubishi Diamond Pro 21TX (THN-9105) + 2040h Mitsubishi Diamond Scan 20H (FR-8905) + 2040h Mitsubishi Diamond Pro 20X (FR-8905B) + 6140h Mitsubishi Diamond Scan 17HX (FFF8705) + 8040h Mitsubishi Diamond Pro 15H (SD-57xxC) + 4040h Mitsubishi Diamond Pro 17TX (TFG-8705) + 408Fh Mitsubishi Diamond Scan 15VX (SD58xx) + 40C0h Mitsubishi Diamond Pro 87TXM (TFM8705) +SeeAlso: #00136,#00159,#00161 + +(Table 00161) +Values for Miro monitor EDID: + 0721h PROOFSCREEN miroC21107 + 6815h miroD1568 + 6817h PROOFSCREEN miroC1768 + 6917h miroD1769 + 8217h PROOFSCREEN miroC1782 + 8520h PROOFSCREEN miroC2085 E + 8521h PROOFSCREEN miroC2185 + 9321h PROOFSCREEN miroC2193 +SeeAlso: #00136,#00160,#00162 + +(Table 00162) +Values for Nanao monitor EDID: + 0000h NANAO USA FlexScan T2-20 + 0400h NANAO USA F2-15 + 0401h NANAO USA F2-17 + 0402h NANAO USA F2-17EX + 0403h NANAO USA F2-21 + 0404h NANAO USA FX2-21 + 0405h NANAO USA FlexScan T2-17TS + 0406h NANAO FlexScan 6600 + 0502h NANAO 9060S + 0503h NANAO 9065S + 0506h NANAO 9070U + 0507h NANAO 9080i + 0508h NANAO 9400i + 0509h NANAO 9500 + 050Ah NANAO FlexScan F340iW + 050Bh NANAO FlexScan F550i + 050Ch NANAO FlexScan F550iW + 050Dh NANAO FlexScan F560iW + 050Eh NANAO FlexScan F750i + 050Fh NANAO FlexScan F760iW + 0510h NANAO FlexScan F780iW + 0511h NANAO FlexScan T560i + 0512h NANAO FlexScan T660i + 0513h NANAO USA FlexScan T2-17 + 0514h NANAO USA FlexScan T2-20 + 0580h NANAO USA FlexScan 6300 + 0800h NANAO FlexScan 33F + 0802h NANAO FlexScan 88F + 0805h NANAO FlexScan 54T + 0882h NANAO FlexScan 52F + 0900h NANAO FlexScan 6500 + 0902h NANAO 9060S + 0906h NANAO 9070U + 0907h NANAO 9080i + 090Ah NANAO FlexScan F347 + 090Bh NANAO FlexScan F550i + 090Ch NANAO FlexScan F557 + 090Fh NANAO FlexScan 77F + 0910h NANAO FlexScan F780iJ + 0911h NANAO FlexScan T560iJ + 0912h NANAO FlexScan T660iJ + 0913h NANAO FlexScan 56T + 0914h NANAO FlexScan 68T + 098Ah NANAO FlexScan F347II + 098Ch NANAO FlexScan 55F + 098Fh NANAO FlexScan 76F + 0991h NANAO FlexScan T567 + 0993h NANAO FlexScan 53T +SeeAlso: #00136,#00161,#00163 + +(Table 00163) +Values for NEC monitor EDID: + 37FAh NEC MultiSync XV14 + 37FBh NEC MultiSync XV14 + 3A66h NEC MultiSync C400 + 3C00h NEC MultiSync XE15 + 3C0Ah NEC MultiSync XP15 + 3C14h NEC MultiSync XV15 + 3C1Eh NEC MultiSync XE15 + 3D5Eh NEC MultiSync XV15+ + 3D68h NEC MultiSync M500 + 3E4Eh NEC MultiSync C500 + 43A8h NEC MultiSync XE17 + 43B2h NEC MultiSync XE17 + 43BCh NEC MultiSync XV17 + 4416h NEC MultiSync XP17 + 533Eh NEC MultiSync XE21 + 53B6h NEC MultiSync XP21 +SeeAlso: #00136,#00162,#00164 + +(Table 00164) +Values for Nokia monitor EDID: + 008Dh NOKIA 449M + 0098h NOKIA 449X + 00A3h NOKIA 447KC + 00A9h NOKIA 447XI + 00ABh NOKIA 447KA + 00ADh NOKIA 447M + 00B7h NOKIA 447W + 00B8h NOKIA 447X + 00BBh NOKIA 447XAV + 00BCh NOKIA 447K + 00D2h NOKIA 445R +SeeAlso: #00136,#00163,#00165 + +(Table 00165) +Values for OptiQuest monitor EDID: + 3138h OPTIQUEST VA656 + 3141h OPTIQUEST 14ES + 3232h OPTIQUEST 1562A-2 + 3233h OPTIQUEST 1769DC + 3234h OPTIQUEST 1000S-2 + 3332h OPTIQUEST V655 + 3333h OPTIQUEST V775 + 3432h OPTIQUEST V650 + 3832h OPTIQUEST V665 + 4637h OPTIQUEST 1769DC +SeeAlso: #00136,#00164,#00166 + +(Table 00166) +Values for Princeton Graphics monitor EDID: + 003Bh Princeton EO15 + 003Dh Princeton EO17 +SeeAlso: #00136,#00165,#00167 + +(Table 00167) +Values for Philips monitor EDID: + 0200h Philips CM0200 (15C) + 0500h Philips CM0500 (20C) + 0700h Philips CM0700 (20T) + 0800h Philips CM0800 (15B) + 1200h Philips CM1200 (15A) + 1800h Philips CM1800 (15A) + 2000h Philips CM0200 (14B) + 2600h Philips 17TCM26 + 2800h Philips 17BCM28 + 3800h Philips 17ACM38 + 5600h Philips CM5600 (20B) + 700Bh Philips CM0700 (21B) + 8000h Philips CM0800 (14A) +SeeAlso: #00136,#00166,#00168 + +(Table 00168) +Values for Panasonic monitor EDID: + 1604h Panasonic TX-D2151W-ES + 1610h Panasonic TX-D2151NM +SeeAlso: #00136,#00167,#00169 + +(Table 00169) +Values for Samsung monitor EDID: + 0000h Samsung SyncMaster 3Ne + 0100h Samsung SyncMaster 4S + 1530h Samsung 15GLsi + 4610h Samsung SyncMaster 21GLs + 4690h Samsung SyncMaster 20GLsi + 4D50h Samsung SyncMaster 15GLe + 4D51h Samsung SyncMaster 15GLi + 4D52h Samsung SyncMaster 15M + 4D70h Samsung SyncMaster 17GLi + 4D71h Samsung SyncMaster 17GLsi + 4D72h Samsung SyncMaster 6Ne + 4D73h Samsung 17GLi + 4D74h Samsung 17GLsi + 5450h Samsung SyncMaster 15Me + 6D20h Samsung SyncMaster 15GLe +SeeAlso: #00136,#00168,#00170 + +(Table 00170) +Values for Samtron monitor EDID: + 1428h Samtron 428PT/PTL + 1528h Samtron SC-528TXL + 1529h Samtron SC-528UXL + 1530h Samtron SC-528MXLJ + 4690h Samtron SC-208DXL+ + 4D70h Samtron SC-728FXL + 4D71h Samtron SC-726GXL + 5451h Samtron SC-528MDL +SeeAlso: #00136,#00169,#00171 + +(Table 00171) +Values for Tatung monitor EDID: + 1F65h Intelliscan TM651x series 15" + 1F67h Intelliscan TM671x series 17" + 2F44h Intelliscan TM442x series 14" + 2F45h Intelliscan TM452x series 15" + 434Dh Tatung CM-17MC + 4855h Tatung CM-14UH +SeeAlso: #00136,#00170,#00172 + +(Table 00172) +Values for Royal Information Company monitor EDID: + 061Ch TRL/RIC DL-1564 + 0622h TRL/RIC DH-1570 +SeeAlso: #00136,#00171,#00173 + +(Table 00173) +Values for ViewSonic monitor EDID: + 0C00h ViewSonic 17GS + 0C0Fh ViewSonic 17PS + 0C1Fh ViewSonic 17GA + 1600h ViewSonic 21PS-2 + 2601h ViewSonic 15GS + 2600h ViewSonic 15GS-2 + 3141h ViewSonic 14ES + 3142h ViewSonic 14ES + 3143h ViewSonic 14ES + 3145h ViewSonic 15GS-3 + 3252h ViewSonic 21PS-2 + 3253h ViewSonic 21PS-2 + 334Bh ViewSonic 17GS-2 + 334Ch ViewSonic 17GS-2 + 3351h ViewSonic PT810 + 344Bh ViewSonic 17PS-2 + 344Ch ViewSonic 17PS-2 + 3451h ViewSonic PT810-2 + 354Dh ViewSonic GT800 + 354Eh ViewSonic GT800 + 3550h ViewSonic GT800 + 3644h ViewSonic 15GA + 3646h ViewSonic 15GA + 3648h ViewSonic 15GA + 364Ah ViewSonic PT770 + 364Bh ViewSonic PT770 + 364Ch ViewSonic PT770 + 3744h ViewSonic 15G-2 + 3746h ViewSonic 15G-2 + 3748h ViewSonic 15G-2 + 374Bh ViewSonic 17GA + 374Ch ViewSonic 17GA + 3844h ViewSonic 15ES-2 + 3846h ViewSonic 15ES-2 + 3848h ViewSonic 15ES-2 + 384Ah ViewSonic 17EA + 384Bh ViewSonic 17EA + 384Ch ViewSonic 17EA + 3944h ViewSonic 15GS-2 + 3946h ViewSonic 15GS-2 + 3948h ViewSonic 15GS-2 + 394Ah ViewSonic 17GS-2 + 394Bh ViewSonic 17GS-2 + 394Ch ViewSonic 17GS-2 + 424Ah ViewSonic GT770 + 424Bh ViewSonic GT770 + 424Ch ViewSonic GT770 + 434Ah ViewSonic 17PS-2 + 434Bh ViewSonic 17PS-2 + 434Ch ViewSonic 17PS-2 + 4439h ViewSonic 15GS-2 + 444Ah ViewSonic 17GA-2 + 4637h ViewSonic 1769DC + 4745h ViewSonic G653 (VCDTS21444-2E) +SeeAlso: #00136,#00172 +--------V-104F15BL02------------------------- +INT 10 - VESA VBE/DC (Display Data Channel) - READ VDIF + AX = 4F15h + BL = 02h + ??? +Return: AL = 4Fh if function supported + AH = status + 00h successful + ??? + 01h failed +SeeAlso: AX=4F15h/BL=00h,AX=4F15h/BL=01h +--------V-104F16----------------------------- +INT 10 - VESA VBE/GC (Graphics System Configuration) - API + AX = 4F16h + BL = function + 00h installation check / get capabilities + other registers vary by function +Return: varies by function +--------V-104F17----------------------------- +INT 10 - VESA VBE/AF (Accelerator Functions) - API + AX = 4F17h + BL = function + 00h installation check / get capabilities + other registers vary by function +Return: AL = 4Fh if function supported + AH = status + 00h successful + 01h failed + 02h hardware does not support function + 03h function not available in current video mode + else reserved for future error codes + other vary by function +Notes: the accelerator function code should be given a 32-bit protected + mode stack which has at least 1024 bytes available for use by the + VBE/AF code + when called, the I/O permission bitmap must allow access to any + ports which VBE/AF may require for operation +SeeAlso: AX=4F0Bh +--------V-104F4D----------------------------- +INT 10 - VESA - VIDEO CURSOR INTERFACE REQUEST + AX = 4F4Dh + BX = number of bytes available for VCI use + DS:0000h -> buffer for VCI + ES:DI -> VCI driver callback function +Return: AL = 4Fh if supported + AH = status + 00h successful + BX = number of bytes used by VCI + ES:DI -> VCI request handler + 01h failed +Desc: allow the VESA BIOS Extensions to cooperate with a pointing-device + (typically mouse) driver +SeeAlso: AX=4F12h +--------V-104F70----------------------------- +INT 10 - Avance Logic - GET ADAPTER INFORMATION + AX = 4F70h +Return: AX = 004Fh if successful + BL = board information (see #00174) + BH = board type??? + 00h on ALG2101 + FFh otherwise +SeeAlso: AX=4F00h + +Bitfields for Avance Logic board information: +Bit(s) Description (Table 00174) + 0-1 video RAM size + 00 256K + 01 512K + 10 1M + 11 2M + 2 ??? + 3 slot size??? + =0 8-bit slot + =1 16-bit slot + 4 unused + 5 set on ALG2228/AL2301 + 6-7 unused +--------V-104FDD----------------------------- +INT 10 - ATI M64VBE.COM - GET RESIDENT SEGMENT + AX = 4FDDh +Return: AX = CS of resident code +Program: M64VBE is a VESA VBE 2.0 driver TSR for ATI's Mach64 video chip +SeeAlso: AX=4FFFh/BX=364Dh"M64VBE",INT 60"M64VBE" +--------V-104FFF----------------------------- +INT 10 - VESA SuperVGA BIOS - Everex - TURN VESA ON/OFF + AX = 4FFFh + DL = new state (00h off, 01h on) +Return: AX = 0000h if successful +--------V-104FFF----------------------------- +INT 10 - Diamond Stealth 24 - SET/RESET DUAL DISPLAY MODE + AX = 4FFFh + BX = dual display mode + 00h reset + 01h set dual display, 32KB VGA test + 02h set dual display, 64KB VGA test +Return: AX = 4F00h if successful + BX = number of scanlines off screen for test mode +--------V-104FFFBX364D----------------------- +INT 10 - ATI M64VBE.COM - UNINSTALL + AX = 4FFFh + BX = 364Dh ('6M') + CX = 5634h ('V4') +Return: AX,DX,DS,ES destroyed +Program: M64VBE is a VESA VBE 2.0 driver TSR for ATI's Mach64 video chip +SeeAlso: AX=4FDDh"M64VBE",INT 60"M64VBE" +--------U-1050------------------------------- +INT 10 - SCROLOCK.COM - INSTALLATION CHECK + AH = 50h +Return: BX = 1954h if installed + AL = 00h if inactive, nonzero if active +Program: SCROLOCK is a utility supplied with System Enhancement Associates' + ARC archiver +SeeAlso: AH=51h +--------J-105000----------------------------- +INT 10 - VIDEO - AX PC - SET SCREEN COUNTRY CODE + AX = 5000h + BX = country code + 0001h USA (English), 0051h Japan +Return: AL = status + 00h successful + 01h bad country code + 02h other error +Note: This function is called with BX=0051h by Japanese versions of + MS-DOS/PC DOS/DR DOS IO.SYS/IBMBIO.COM at initialization time. +SeeAlso: AX=5001h,INT 16/AX=5000h +--------J-105001----------------------------- +INT 10 - VIDEO - AX PC - GET SCREEN COUNTRY CODE + AX = 5001h +Return: AL = status + 00h successful + BX = country code + 02h error +SeeAlso: AH=00h,AX=5000h,INT 16/AX=5001h,INT 21/AH=38h +--------V-105049----------------------------- +INT 10 - VIDEO - SCREENR v1.55+ - API + AX = 5049h ('PI') + BX = function + 0000h installation check + 0001h lock mode + 0002h unlock mode + 0003h lock palette + 0004h unlock palette +Return: AX = 0000h if installed + BX = TSR version (BH=major,BL=minor) + CL = mode locking status + 00h mode not locked + 01h mode locked: INT 10/AH=00h disabled + CH = palette locking status + 00h palette not locked + 01h palette locked, the following functions are disabled: + AX=1000h, AX=1001h, AX=1002h, AX=1010h, AX=1012h +Program: SCREENR is a TSR supplied with Patrick Ibbetson's SCREEN display + utility. +Index: installation check;SCREENR +--------U-1051------------------------------- +INT 10 - SCROLOCK.COM - ENABLE/DISABLE + AH = 51h + AL = state + 00h disable + nonzero enable +Return: nothing +Program: SCROLOCK is a utility supplied with System Enhancement Associates' + ARC file archiver +SeeAlso: AH=50h"SCROLOCK" +--------J-105100----------------------------- +INT 10 - VIDEO - AX PC - REGISTER EXTERNAL CHARACTER + AX = 5100h + BH = character width in bits (10h) + BL = character height (10h) + DX = character code (DH = F0h-F3h, DL=40h-7Eh,80h-FCh) + ES:BP -> character bitmap +Return: AL = status (00h successful, 01h failed) +SeeAlso: AX=5101h,INT 1F"SYSTEM DATA" +--------J-105101----------------------------- +INT 10 - VIDEO - AX PC - READ CHARACTER + AX = 5101h + BH = character width in bits + BL = character height + DX = character code (DH = 00h if 8-bit character) + ES:BP -> buffer for character bitmap +Return: AL = status (00h successful, 01h failed) +SeeAlso: AH=09h,AX=5100h +--------J-105200----------------------------- +INT 10 - VIDEO - AX PC - SET VIRTUAL TEXT RAM BUFFER + AX = 5200h + BX = segment of buffer +Return: nothing +SeeAlso: AX=5201h +--------J-105201----------------------------- +INT 10 - VIDEO - AX PC - GET VIRTUAL TEXT RAM BUFFER + AX = 5201h +Return: BX = segment of buffer or 0000h if failed +SeeAlso: AX=8300h,AH=FEh +----------1053------------------------------- +INT 10 - Show Partner F/X v3.6 - START PRESENTATION + AH = 53h + DS:DX -> ASCIZ name of presentation file (no path, extension forced to + .PR2) +Return: ??? +SeeAlso: AH=55h +----------1055------------------------------- +INT 10 - Show Partner F/X v3.6 - UNINSTALL + AH = 55h +Return: FXSHOW.EXE removed from memory +SeeAlso: AH=53h +--------V-105555----------------------------- +INT 10 - VIDEO - ATI EGA/VGA Wonder Super Switch - INSTALLATION CHECK + AX = 5555h +Return: AX = AAAAh if installed + BX:CX -> ??? routine in SMS.COM resident portion + -> data area (see #00175) in VCONFIG +Program: Super Switch (SMS.COM) is a video mode switch program supplied with + ATI EGA Wonder. It also maps video mode 08h to 27h or 23h. +SeeAlso: INT 10/AH=00h,INT 14/AX=AA01h,INT 2F/AX=6400h +Index: screen saver;ATI Wonder SMS.COM + +Format of ATI Super Switch data area: +Offset Size Description (Table 00175) + 00h DWORD original INT 09 vector + 04h DWORD original INT 10 vector + 08h DWORD original INT 1C vector + 0Ch WORD screen saver state, 0=off, 1=on + 0Eh WORD blanking interval in clock ticks +----------105555BXAAAA----------------------- +INT 10 - LIR - SET CONFIGURATION + AX = 5555h + BX = AAAAh + CL = new configuration flags (see #04118) + CH > 0 new video adapter configuration (see #04121) + = 0 do not update video adapter configuration + DL = new keyboard layout flags (see #04119) + DH = new alphabet flags (see #04120) +Return: AX = A55Ah if installed +Program: LIR is a DOS/Windows 3.xx codepage support package develoved by + LABAS u.a.b. It supports several screen and printer codepages as + well as various keyboard layouts used in Lithuania. + Download at: ftp://ftp.labas.com/pub/drivers/language/lir422.zip +SeeAlso: AX=5555h/BX=BBBBh,INT 17/AX=5555h/BX=AAAAh + +Bitfields for LIR configuration flags: +Bit(s) Description (Table 04118) + 7 program is active + 6 ??? + 5-3 code page + 2 Lithuanian??? + 1 Russian??? + 0 enable beeps +SeeAlso: #04119 + +Bitfields for LIR keyboard layout flags: +Bit(s) Description (Table 04119) + 7-5 keyboard layout + 100 QWERTY + 010 Lithuanian AZERTY + 001 Lithuanian ergonomic FZVPUJ + 4-3 reserved (0) + 2 Lithuanian keyboard??? + 1 Russian keyboard??? + 0 ??? +SeeAlso: #04118,#04120 + +Bitfields for LIR Alphabet flags: +Bit(s) Description (Table 04120) + 7-3 reserved (0) + 2 Lithuanian alphabetic symbol table??? + 1 Russian alphabetic symbol table??? + 0 reserved (0) +SeeAlso: #04118,#04119,#04121 + +Bitfields for LIR video adapter configuration: +Bit(s) Description (Table 04121) + 7 Hercules Graphics Card (HGC) + 6-5 reserved (0) + 4 VGA + 3 MCGA + 2 EGA + 1 CGA + 0 reserved (0) +Note: multiple bits may be set if more than one video adapter is installed +SeeAlso: #04118 +----------105555BXBBBB----------------------- +INT 10 - LIR - GET CONFIGURATION + AX = 5555h + BX = BBBBh +Return: AX = magic signature A55Ah + BX = version number (BH = major version, BL = minor version), + e.g. BX = 0410h for LIR v4.10, or BX = 0422h for LIR v4.22) + CL = configuration flags (see #04118) + CH = video adapter configuration (see #04121) + DL = keyboard layout flags(see #04119) + DH = alphabet flags (see #04120) +SeeAlso: AX=5555h/BX=AAAAh,INT 17/AX=5555h/BX=BBBBh +--------V-105F00----------------------------- +INT 10 - Chips & Technologies Extended BIOS - RETURN CHIP INFORMATION + AX = 5F00h +Return: AL = 5Fh function supported + BL = chip type (see #00176) + BH = video memory size (see #00177) + CX = miscellaneous information (see #00178) +SeeAlso: AX=5F01h + +Bitfields for Chips&Technologies chip type: +Bit(s) Description (Table 00176) + 7-4 chip type + 0000: 82c451 + 0001: 82c452 / 82c452A + 0010: 82c455 + 0011: 82c453 + 0100: 82c450 + 0101: 82c456 + 0110: 82c457 + 0111: F65520 + 1000: F65530 / F65525 + 1001: F66510 + 1010: ??? + 1011: F64300 "Wingine DGX" + 1100: F65535/F65545 ??? + 1101: F65540 + 1110: ??? + 1111: ??? + 3-0 revision number +SeeAlso: #00177 + +(Table 00177) +Values for Chips&Technologies video memory size: + 00h 256KB + 01h 512KB + 02h 1MB + 03h 2MB +SeeAlso: #00176 + +Bitfields for Chips&Technologies miscellaneous information: +Bit(s) Description (Table 00178) + 0 DAC size (0=6-bit, 1=8-bit) + 1 system type (0=PC/AT, 1=PS/2) + 2 extended text modes supported by BIOS + 3 reserved + 4 extended graphics modes supported by BIOS + 5 reserved + 6 BIOS supports graphics cursor + 7 BIOS supports anti-aliased font + 8 BIOS supports pre-programmed emulation + 9 BIOS supports auto emulation + 10 BIOS supports variable mode set at cold boot + 11 BIOS supports variable mode set on warm boot + 12 BIOS supports emulation mode set at cold boot + 13 BIOS supports emulation mode set on warm boot + 14-15 reserved +--------V-105F00----------------------------- +INT 10 - VIDEO - Realtek RTVGA - RETURN CHIP VERSION + AX = 5F00h +Return: AH = 00h, if successful + AL = chip version (the same value that VTEST.EXE reads) + 00h RTG3103??? + 01h RTG31030/RTG3105 + 02h RTG3106??? + 3Fh non-Realtek chip +BUG: in v3.C10, AX=5F00h on return due to improper stack restoration code +SeeAlso: AX=5F01h"RTVGA" +--------V-105F01----------------------------- +INT 10 - Chips & Technologies Extended BIOS - SET PREPROGRAMMED EMULATION + AX = 5F01h + BL = emulation type (see #00179) +Return: AL = 5Fh if function supported + AH = status + 00h unsuccessful + 01h successful +SeeAlso: AX=5F00h,AX=5F02h,AH=FFh"Oak" + +(Table 00179) +Values for Chips&Technologies emulation type: + 00h,01h reserved + 02h CGA + 03h MDA + 04h Hercules + 05h EGA + 06h VGA (disable emulation) +--------V-105F01----------------------------- +INT 10 - VIDEO - Realtek RTVGA - WRITE RTVGA BIOS STRING TO DESTINATION + AX = 5F01h + ES:DI -> zero-filled buffer for BIOS ID string +Return: AH = 00h if successful + ES:DI -> ASCII signature "REALTEK VGA BIOS Version 3C.10" +BUG: in v3.C10, AX=5F01h on return due to improper stack restoration code +SeeAlso: AX=5F00h"RTVGA",AX=5F02h"RTVGA" +--------V-105F02----------------------------- +INT 10 - Chips & Technologies Extended BIOS - AUTO EMULATION CONTROL + AX = 5F02h + BL = new state of autmatic emulation (00h enabled, 01h disabled) +Return: AL = 5Fh if function supported + AH = status + 00h unsuccessful + 01h successful +SeeAlso: AX=5F01h,AX=5F03h +--------V-105F02----------------------------- +INT 10 - Chips & Technologies '64300' BIOS - SET CLOCK + AX = 5F02h + BH = what to set + 02h dot clock + BL = speed in MHz (12-99) + 03h memory clock + BL = speed in MHz (12-99) + FFh default dot and memory clocks +Return: AL = 5Fh if function supported + AH = status + 00h unsuccessful + 01h successful +SeeAlso: AX=5F00h"Chips",AX=5F03h"64300",AX=5F02h"65530" +--------V-105F02----------------------------- +INT 10 - Chips & Technologies '65530' BIOS - SET CLOCK + AX = 5F02h + BH = what to set + 02h dot clock + BL = new clock speed (see #00180) + 03h memory clock + BL = new clock speed (see #00180) + 04h set power-down register + BL = new value for power-down register (bits 3-0 only) + 06h (404 clock chip) set control register + BL = new vlaue for control register (bits 5-0 only) + 06h (404A/B/B-ES clock chips) set control register PWRDN1 + BL = new value for control register + 07h (404A/B/B-ES clock chips) set control register PWRDN1 + BL = new value for control register + FFh default dot and memory clocks +Return: AL = 5Fh if function supported + AH = status + 00h unsuccessful + 01h successful +SeeAlso: AX=5F01h,AX=5F02h"64300",AX=5FA0h,#00184 + +(Table 00180) +Values for C&T '65530' BIOS clock speed: + 00h 12 MHz + 01h 14 MHz + 02h 16 MHz + 03h 18 MHz + 04h 20 MHz + 05h 25 MHz + 06h 28 MHz + 07h 32 MHz + 08h 36 MHz + 09h 40 MHz + 0Ah 45 MHz + 0Bh 50 MHz + 0Ch 56 MHz + 0Dh 60 MHz + 0Eh 65 MHz + 0Fh 66 MHz + 15h 34 MHz +--------V-105F02----------------------------- +INT 10 - VIDEO - Realtek RTVGA - RETURN RTVGA ON-BOARD MEMORY SIZE + AX = 5F02h +Return: AH = 00h, if successful + AL = on-board memory size + (00h = 256K, 01h = 512K, 02h = 768K, 03h = 1024K) +BUG: in v3.C10, AX=5F02h on return due to improper stack restoration code +SeeAlso: AX=5F01h"RTVGA",AX=5F03h"RTVGA" +--------V-105F03----------------------------- +INT 10 - VIDEO - Realtek RTVGA - SET ??? + AX = 5F03h + BL = 0-3 (???) +Return: AH = 00h if successful +BUG: in v3.C10, AX=5F03h on return due to improper stack restoration code +SeeAlso: AX=5F02h"RTVGA" +--------V-105F03BL00------------------------- +INT 10 - Chips & Technologies Extended BIOS - SET POWER-ON DISPLAY MODE + AX = 5F03h + BL = 00h + CL = display mode + CH = mode (see #00181) +Return: AL = 5Fh if function supported + AH = status + 00h unsuccessful + 01h successful +SeeAlso: AX=5F02h,AX=5F03h/BL=01h"Chips",AX=5F90h + +Bitfields for Chips&Technologies display mode: +Bit(s) Description (Table 00181) + 1-0 scanlines (00 = 200, 01 = 350, 10 = 400) + 7 persistence (0 reset on next boot, 1 until changed) +--------V-105F03BH00------------------------- +INT 10 - Chips & Technologies '64300' BIOS - GET CLOCK SPEED + AX = 5F03h + BH = 00h (get default memory clock) +Return: AL = 5Fh if function supported + AH = status + 00h unsuccessful + 01h successful + BL = clock speed in MHz +SeeAlso: AX=5F02h"64300",AX=5F04h"64300" +--------V-105F03BL01------------------------- +INT 10 - Chips & Technologies Extended BIOS - SET POWER-ON EMULATION MODE + AX = 5F03h + BL = 01h + CL = emulation mode (see #00181) + CH = permanence + bit 7 persistence (0 reset on next boot, 1 until changed) +Return: AL = 5Fh if function supported + AH = status + 00h unsuccessful + 01h successful +SeeAlso: AX=5F02h,AX=5F03h/BL=00h"Chips",AX=5F90h +--------V-105F04----------------------------- +INT 10 - Chips & Technologies '64300' BIOS - GET REFRESH RATE + AX = 5F04h + BL = video mode number +Return: AL = 5Fh if function supported + AH = status + 00h unsuccessful + 01h successful + BH = available refresh rates (see #00182) + BL = currently-set refresh rate (see #00182) +SeeAlso: AX=5F03h"64300",AX=5F05h"64300" + +Bitfields for C&T 64300 refresh rates: +Bit(s) Description (Table 00182) + 5 75 Hz + 4 72 Hz + 3 70 Hz + 2 60 Hz + 1 56 Hz + 0 interlaced +--------V-105F05----------------------------- +INT 10 - Chips & Technologies '64300' BIOS - SET REFRESH RATE + AX = 5F05h + BL = video mode number + BH = refresh rate to set (see #00182) + bit 7: =0 program new clock and CRT parametes + =1 keep current parameters +Return: AL = 5Fh if function supported + AH = status + 00h unsuccessful + 01h successful +SeeAlso: AX=5F04h"64300" +--------V-105F06----------------------------- +INT 10 - Chips & Technologies '64300' BIOS - GET XRAM INFORMATION + AX = 5F06h +Return: AL = 5Fh if function supported + AH = status + 00h unsuccessful + 01h successful + BL = XRAM presence (00h no XRAM, 01h present) +SeeAlso: AX=5F05h,AX=5F08h +--------V-105F08----------------------------- +INT 10 - Chips & Technologies '64300' BIOS - SET LINEAR MEMORY START ADDRESS + AX = 5F08h + BX = desired start address in megabytes +Return: AL = 5Fh if function supported + AH = status + 00h unsuccessful + 01h successful +SeeAlso: AX=5F06h +--------V-105F10----------------------------- +INT 10 - Chips & Technologies '64300'/'65530' BIOS - GET LINEAR MEMORY INFO + AX = 5F10h +Return: AL = 5Fh if function supported + AH = status + 00h unsuccessful + 01h successful + BX:CX = linear memory base address + DX = virtual screen width offset (bytes) + SI;DI = linear memory size +SeeAlso: AX=5F08h,AX=5FA0h +--------V-105F50----------------------------- +INT 10 - Chips & Technologies Extended BIOS - GET LAPTOP DISPLAY STATUS + AX = 5F50h +Return: DL = display status (see #00183) +Note: this call can be used on Toshiba laptops since ~1995 instead of + INT 42/AX=7503h which is no longer supported with the F655xx chips +SeeAlso: INT 42/AX=7503h + +Bitfields for display status: +Bit(s) Description (Table 00183) + 7-4 always 0 ??? + 3 1: both displays active (bit 1 also set) + 2 1: normal (monochrome display only), 0: inverse or color + 1 1: internal display active, 0: external only + 0 always set ??? +--------V-105F50----------------------------- +INT 10 - Chips & Technologies '65530' BIOS - GET 655xx INFORMATION + AX = 5F50h +Return: AL = 5Fh if function supported + AH = status + 00h unsuccessful + 01h successful + BX = width of flat panel in pixels + CX = height of flat panel in pixels + DX = F65520/525/530 status (see #00184) +SeeAlso: AX=5F51h,INT 15/AX=5F31h + +Bitfields for C&T F65520/525/530 status: +Bit(s) Description (Table 00184) + 15-0 reserved + 6-5 type of clock chip + 00 = 404 + 01 = 404A + 10 = 404B ES + 11 = 404B + 4 accelerator enabled + 3 both displays active + 2 video polarity (1 = inverted) + 1 output device + 0 CRT + 1 flat panel (LCD) + 0 reserved +--------V-105F51----------------------------- +INT 10 - Chips & Technologies Extended BIOS - SWITCH DISPLAY DEVICE + AX = 5F51h + BL = new active display + 00h CRT + 01h flat panel (LCD) + 02h both simultaneously + BH = 01h to allow reprogramming the DAC +Return: AL = 5Fh if function supported + AH = status + 00h unsuccessful + 01h successful +SeeAlso: AX=5F50h,AX=5F53h +--------V-105F53----------------------------- +INT 10 - Chips & Technologies Extended BIOS - EN/DISABLE ACCELERATOR SUPPORT + AX = 5F53h + BL = new support state + 00h disable buffer/accelerator + 01h enable buffer/acelerator +Return: AL = 5Fh if function supported + AH = status + 00h unsuccessful + 01h successful +SeeAlso: AX=5F50h,AX=5F51h,AX=5F54h +--------V-105F54----------------------------- +INT 10 - Chips & Technologies Extended BIOS - TURN FLAT PANEL ON/OFF + AX = 5F54h + BL = new state + 00h on + 01h off +Return: AL = 5Fh if function supported + AH = status + 00h unsuccessful + 01h successful +SeeAlso: AX=5F50h,AX=5F51h,AX=5F53h,AX=5F5Ah +--------V-105F5A----------------------------- +INT 10 - Chips & Technologies Extended BIOS - SET FLAT-PANEL VIDEO POLARITY + AX = 5F5Ah + BL = new video polarity + 00h normal + 01h inverted +Return: AL = 5Fh if function supported + AH = status + 00h unsuccessful + 01h successful +SeeAlso: AX=5F50h,AX=5F54h +--------V-105F5C----------------------------- +INT 10 - Chips & Technologies Extended BIOS - SET VERTICAL COMPENSATION + AX = 5F5Ch + BL = type of vertical compensation to use + 00h no compensation + 01h automatic centering + 02h set centering register + DX = centering value (bits 9-0 only) + 03h non-automatic centering + 04h set vertical line insertion register + DL = vertical line insertion (bits 3-0 only) + 05h set alternate maximum scanline register + DL = alternate maximum scanline (bits 4-0 only) + 06h enable text stretching, type 0 + 07h enable text stretching, type 1 + 08h enable text stretching, type 2 + 09h enable text stretching, type 3 + 0Ah disable text stretching + 0Bh set vertical line replication register + DL = vertical line replication (bits 3-0 only) + 0Ch enable graphics stretching, type 0 + 0Dh enable graphics stretching, type 1 + 0Eh disable vertical graphics stretching + 0Fh disable all horizontal and vertical compensation + 10h enable optimal compensation + 11h disable optimal compensation +Return: AL = 5Fh if function supported + AH = status + 00h unsuccessful + 01h successful +SeeAlso: AX=5F50h,AX=5F5Eh,AX=5F5Fh +--------V-105F5E----------------------------- +INT 10 - Chips & Technologies Extended BIOS - EN/DISABLE TALL FONT LOADING + AX = 5F5Eh + BL = new state of tall-font loading + 00h enable loading of 8x19/30/32 fonts + 01h disable loading of 8x19/30/32 fonts +Return: AL = 5Fh if function supported + AH = status + 00h unsuccessful + 01h successful +Note: when tall fonts are enabled, the fonts are stretched by duplicating + scan lines as appropriate to convert an 8x16 font to the proper + height (scan lines 1/9/12 [8x19] or 2-15 [8x30] or all [8x32]) +SeeAlso: AX=5F5Ch,AX=5F5Fh +--------V-105F5F----------------------------- +INT 10 - Chips & Technologies Extended BIOS - HORIZONTAL COMPENSATION + AX = 5F5Fh + BL = horizontal compensation type + 00h none + 01h automatic centering + 02h set centering register + DL = centering value + 03h non-automatic centering + 04h enable text compression (force 8xN fonts) + 05h disable text compression (allow 9xN fonts) + 06h enable auto doubling + 07h disable auto doubling + 0Fh disable all horizontal and vertical compensation +Return: AL = 5Fh if function supported + AH = status + 00h unsuccessful + 01h successful +SeeAlso: AX=5F50h,AX=5FA0h +--------V-105F90----------------------------- +INT 10 - Chips & Technologies Extended BIOS - GET SUPERVGA STATE BUFFER SIZE + AX = 5F90h + CX = state mask (see #00185) +Return: AL = 5Fh if function supported + BX = number of 64-byte blocks required +SeeAlso: AH=1Ch,AX=5F03h,AX=5F91h,AX=5F92h,AX=5FA0h + +Bitfields for Chips&Technologies state mask: +Bit(s) Description (Table 00185) + 0 video hardware + 1 BIOS data state + 2 DAC state + 15 type (0 all state info, 1 SuperVGA state only) +--------V-105F91----------------------------- +INT 10 - Chips & Technologies Extended BIOS - SAVE SUPERVGA STATE + AX = 5F91h + CX = state mask (see #00185) + ES:BX -> save buffer +Return: AL = 5Fh if function supported + buffer at ES:BX filled +SeeAlso: AH=1Ch,AX=5F03h,AX=5F90h,AX=5F92h,AX=5FA1h +--------V-105F92----------------------------- +INT 10 - Chips & Technologies Extended BIOS - RESTORE SUPERVGA STATE + AX = 5F92h + CX = state mask (see #00185) + ES:BX -> previously-filled save buffer +Return: AL = 5Fh if function supported +SeeAlso: AH=1Ch,AX=5F03h,AX=5F90h,AX=5F92h,AX=5FA2h +--------V-105FA0----------------------------- +INT 10 - Chips & Technologies Wingine DGX - GET EXTENDED BIOS SAVE BUFFER SIZE + AX = 5FA0h + CX = state(s) to be saved (see #00186) +Return: AL = 5Fh if function supported + AH = status + 00h unsuccessful + 01h successful + BX = number of 64-byte blocks required for state +SeeAlso: AH=1Ch,AX=5FA1h,AX=5FA2h,AX=5F90h,AX=4F04h + +Bitfields for C&T BIOS save/restore state type: +Bit(s) Description (Table 00186) + 0 video hardware + 1 BIOS data + 2 DAC and color registers + 14 (65530 BIOS with AL=A1h only) clear emulation state + 15 extended registers +SeeAlso: #00048,#00085 +--------V-105FA1----------------------------- +INT 10 - Chips & Technologies Wingine DGX - SAVE VIDEO STATE + AX = 5FA1h + CX = state(s) to be saved (see #00186) + ES:BX -> buffer for state information +Return: AL = 5Fh if function supported + AH = status + 00h unsuccessful + 01h successful + ES:BX buffer filled +SeeAlso: AH=1Ch,AX=5FA0h,AX=5FA2h,AX=5F91h +--------V-105FA2----------------------------- +INT 10 - Chips & Technologies Wingine DGX - RESTORE VIDEO STATE + AX = 5FA2h + CX = state(s) to be restored (see #00186) + ES:BX -> buffer containing previously-saved state information +Return: AL = 5Fh if function supported + AH = status + 00h unsuccessful + 01h successful +SeeAlso: AH=1Ch,AX=5FA0h,AX=5FA1h,AX=5F92h +--------V-1060------------------------------------ +INT 10 - HUNTER 16 - SET GRAPHICS FONT + AH = 60h + AL = new font + bit 7 output characters in reverse video + bits 0-6 font number (see #00200 at AH=77h) +Return: BH = cell width + BL = cell height +Desc: select the font to use for output in mode 6; this can be used to mix + fonts on the screen +Note: the Husky Hunter 16 is an 8088-based ruggedized laptop. Other family + members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk. +SeeAlso: AH=04h"HUNTER",AH=73h"HUNTER",AH=77h"HUNTER" +--------V-1061------------------------------------ +INT 10 - HUNTER 16 - MOVE CURSOR TO GRAPHICS CO-ORDINATES + AH = 61h + CX = column + DX = row +Return: nothing +Note: this function is only valid in graphics modes +SeeAlso: AH=62h +--------V-1062------------------------------------ +INT 10 - HUNTER 16 - GET CURSOR POSITION IN GRAPHICS CO-ORDINATES + AH = 62h +Return: CX = column + DX = row +Note: this function is only valid in graphics modes +SeeAlso: AH=61h +--------V-1063------------------------------------ +INT 10 - HUNTER 16 - SET CONTRAST + AH = 63h + AL = contrast (0..127) +Return: nothing +Desc: set the LCD screen contrast to improve visibility +SeeAlso: AH=64h,AH=75h +--------V-1064------------------------------------ +INT 10 - HUNTER 16 - SET BACKLIGHT LEVEL + AH = 64h + AL = level (0..15) +Return: nothing +Desc: set the LCD backlight level to improve visibility in bad lighting +SeeAlso: AH=63h,AH=65h,AH=74h,AH=78h"HUNTER",INT 15/AH=74h +--------V-106500---------------------------------- +INT 10 - HUNTER 16 - GET BACKLIGHT TIMEOUT + AX = 6500h +Return: BX = timeout in seconds (0-300) +Desc: returns the time after which the backlight will turn off +SeeAlso: AH=63h,AH=64h,AX=6501h,INT 15/AH=74h +--------V-106501---------------------------------- +INT 10 - HUNTER 16 - SET BACKLIGHT TIMEOUT + AX = 6501h + BX = timeout in seconds (0-300) +Return: nothing +Desc: set the idle time after which the backlight will turn off +SeeAlso: AH=64h,AX=6500h +--------V-1066------------------------------------ +INT 10 - HUNTER 16 - SPLIT DISPLAY + AH = 66h + AL = control bits (see #00187) + BH = top row of lower section of LCD (0..7) + BL = top row of lower section of the virtual screen (0..24) +Return: nothing +Desc: split the LCD screen horizontally into two parts; each part may be + individually scrollable or fixed. +Note: the Hunter 16 has a 240x64 LCD display which serves as a window into + a 640x200 virtual screen + +Bitfields for HUNTER 16 control bits: +Bit(s) Description (Table 00187) + 0-1 01: no split, 10: allow split + 2 allow scrolling the upper part + 3 allow scrolling the lower part +--------V-106A00BX0000----------------------- +INT 10 - Direct Graphics Interface Standard (DGIS) - INQUIRE AVAILABLE DEVICES + AX = 6A00h + BX = 0000h + CX = 0000h + DX = buffer length (may be 0) + ES:DI -> buffer +Return: BX = number of bytes stored in buffer + CX = bytes required for all descriptions (0 if no DGIS) +Note: buffer contains descriptions and addresses of DGIS-compatible + display(s) and printer(s) +SeeAlso: AX=6A02h +--------V-106A01CX0000----------------------- +INT 10 - Direct Graphics Interface Standard (DGIS) - REDIRECT CHARACTER OUTPUT + AX = 6A01h + CX = 0000h + ES:DI = address of device to send INT 10 output to +Return: CX = 0000h output could not be redirected + else INT 10h output now routed to requested display +SeeAlso: AX=6A02h +--------V-106A02----------------------------- +INT 10 - DGIS - INQUIRE INT 10 OUTPUT DEVICE + AX = 6A02h + ES:DI = 0000h:0000h +Return: ES:DI = 0000h:0000h if current display is non-DGIS + else address of the current DGIS INT 10 display +SeeAlso: AX=6A00h,AX=6A01h +--------V-106D74----------------------------- +INT 10 - MTRFONTS - INSTALLATION CHECK + AX = 6D74h ('mt') + DS:0104h = signature "MtRfOnTs" +Return: AX = 4D54h ('MT') if installed + ES = PSP segment of resident code +Program: MTRFONTS is a shareware TSR (part of the MTR package) by Mechon Mamre + which provides Hebrew screen fonts +SeeAlso: INT 16/AX=6D74h"MTRTSR" +--------V-106E00----------------------------- +INT 10 - Paradise VGA internal - GET ??? + AX = 6E00h +Return: BX = 5744h ('WD') if supported + DH:AH:AL = last three ASCII digits of ROM serial number + CL = ??? + CH = ??? +SeeAlso: AX=6E04h,AX=6E05h +--------V-106E04----------------------------- +INT 10 - Paradise VGA internal - GET SCREEN SIZE AND ??? + AX = 6E04h +Return: BX = screen width (columns) + CX = screen height (lines) + AH = ??? (05h or FFh) + AL = ??? (04h or video mode) +SeeAlso: AX=6E00h,AX=6E05h +--------V-106E05----------------------------- +INT 10 - Paradise VGA internal - SET MODE + AX = 6E05h + BL = mode +Return: nothing +Note: like AH=00h, AL=BL. +SeeAlso: AH=00h,AX=6E00h,AX=6E04h,AX=6F05h +--------V-106F00----------------------------- +INT 10 - HP Vectra EX-BIOS - INSTALLATION CHECK + AX = 6F00h + BX <> 4850h (usually set to 0000h for simplicity) +Return: BX = 4850h ('HP') indicates HP Extended BIOS video functions present + AX destroyed +SeeAlso: AX=6F00h"Video7",AX=6F01h,AX=6F02h,AX=6F03h,AX=6F04h,AX=6F05h +SeeAlso: INT 14/AX=6F00h,INT 16/AX=6F00h,INT 17/AX=6F00h,INT 33/AX=6F00h +--------V-106F00BX0000----------------------- +INT 10 - VIDEO - Video7 VGA,VEGA VGA - INSTALLATION CHECK + AX = 6F00h + BX = 0000h +Return: BX = 5637h ('V7') indicates Video7 VGA/VEGA VGA extensions are present +SeeAlso: AX=6F01h,AX=6F02h,AX=6F03h,AX=6F04h,AX=6F05h +--------V-106F01----------------------------- +INT 10 - VIDEO - Video7 VGA,VEGA VGA,HP EX-BIOS - GET MONITOR INFO + AX = 6F01h +Return: AL = monitor type code (HP,VEGA VGA only) (see #00188) + AH = status register information (see #00189) + CL = current value of Extended Control register (HP Ext BIOS, and only + if AL=41h) (see #00190) +Notes: bits 0-3 are the same as the EGA/VGA status register bits 0-3 + supported by original HP Vectra AT and by ES/QS/RS series Vectras + +(Table 00188) +Values for monitor type code (HP Extended BIOS): + 00h non-HP card with ROM and possibly its own INT 10h driver + 41h MultiMode video display adapter + 42h-44h reserved + 45h industry standard monochrome display adapter + 46h industry standard color display adapter + 51h reserved + +Bitfields for status register information: +Bit(s) Description (Table 00189) + 0 display enable + 0 = display enabled + 1 = vertical or horizontal retrace in progress + 1 light pen flip flop set + 2 light pen switch activated + 3 vertical sync + 4 monitor resolution + 0 = high resolution (>200 lines) + 1 = low resolution (<=200 lines) + 5 display type (0 = color, 1 = monochrome) + 6,7 diagnostic bits +Note: bits 0-3 are the same as the EGA/VGA status register bits 0-3 +--------V-106F02----------------------------- +INT 10 - HP Vectra EX-BIOS - SET MONITOR INFO + AX = 6F02h + BL = new value for extended control register (see #00190) +Return: AX,BL destroyed +Notes: this function is only valid when an HP MultiMode Video Display Adapter + is installed + the Extended Control register is at I/O address 3DDh +SeeAlso: AX=6F01h,AX=6F03h + +Bitfields for HP Vectra extended control register: +Bit(s) Description (Table 00190) + 0 screen resolution (0 = 200 lines, 1 = 400 lines) + 1 underline enable (if set, 'blue' of fg color = underline) + 2 font (0 = Standard-8, 1 = HP-Roman-8) + 3 memory disabled for CPU access + 4 allow access to full 32K memory instead of wrapping at 16K + 5 select second 16K page instead of first + 6,7 unused +--------V-106F03----------------------------- +INT 10 - HP Vectra EX-BIOS - MODIFY MONITOR INFO + AX = 6F03h + BH = exclude mask (set bits are not modified) + BL = new values for bits indicated by BH (see #00190) +Return: AX destroyed +Notes: this function is only valid when an HP MultiMode Video Display Adapter + is installed + supported by original HP Vectra AT and by ES/QS/RS series Vectras +SeeAlso: AX=6F01h,AX=6F02h +--------V-106F04----------------------------- +INT 10 - VIDEO - Video7 VGA,VEGA VGA,HP Vectra - GET MODE AND SCREEN RESOLUTION + AX = 6F04h +Return: AL = current video mode (see #00191) + BX = horizontal columns (text) or pixels (graphics) + CX = vertical columns (text) or pixels (graphics) +SeeAlso: AX=6F05h +--------V-106F05----------------------------- +INT 10 - VIDEO - Video7 VGA,VEGA EXTENDED EGA/VGA,HP Vectra - SET VIDEO MODE + AX = 6F05h + BL = mode (see #00191) +Return: AX,BL destroyed +Notes: also supported by the HP Vectra Extended BIOS on the original + HP Vectra AT and by ES/QS/RS series Vectras + on the HP Vectra, this function rather than AH=00h must be used to + return to an IBM-standard mode after setting an HP-specified mode + from 08h to 0Fh. +SeeAlso: AH=00h,AX=0070h,AX=007Eh,AX=6F04h + +(Table 00191) +Values for Video7/VEGA video mode: + text/ text pixel pixel colors disply scrn system + grph resol box resolution pages addr + 00h-13h = standard IBM modes (see #00010 at AH=00h) + 08h = T 80x27 . . mono . . HP MultiMode Video + 09h = T 80x27 . . . . . HP MultiMode Video + 0Ah = T 40x27 . . mono . . HP MultiMode Video + 0Bh = T 40x27 . . . . . HP MultiMode Video + 0Ch = reserved HP MultiMode Video + 0Dh = G . . 640x400 . . . HP MultiMode Video + 0Eh = G . . 320x400 . . . HP MultiMode Video + 0Fh = G . . 320x400 . . . HP MultiMode Video + 40h = T 80x43 8x8 . . . . Video7/VEGA VGA + 41h = T 132x25 8x14 . . . . Video7/VEGA VGA + 42h = T 132x43 8x8 . . . . Video7/VEGA VGA + 43h = T 80x60 8x8 . . . . Video7/VEGA VGA + 44h = T 100x60 8x8 . . . . Video7/VEGA VGA + 45h = T 132x28 8x8 . . . . Video7/VEGA VGA + 60h = G . . 752x410 16 . . Video7 VGA, VEGA VGA + 61h = G . . 720x540 16 . . Video7 VGA, VEGA VGA + = G . . 720x540 16 . . Northgate, Headland 1024i + 62h = G . . 800x600 16 . . Video7 VGA, VEGA Ext EGA + = G . . 800x600 16 . . Headland 1024i + 63h = G . . 1024x768 2 . . Video7 VGA + 64h = G . . 1024x768 4 . . Video7 VGA + 65h = G . . 1024x768 16 . . Video7 VGA, VEGA Ext EGA + = G . . 1024x768 16 . . Headland 1024i + 66h = G . . 640x400 256 . . Video7 VGA, VEGA Ext VGA + = G . . 640x400 256 . . Northgate, Headland 1024i + 67h = G . . 640x480 256 . . Video7 VGA, VEGA Ext VGA + = G . . 640x480 256 . . Headland 1024i + 68h = G . . 720x540 256 . . Video7 VGA, VEGA Ext VGA + = G . . 720x540 256 . . Headland 1024i + 69h = G . . 800x600 256 . . Video7 VGA, VEGA Ext VGA + = G . . 800x600 256 . . Headland 1024i + 70h = G . . 752x410 16gray . . Video7 VGA, VEGA VGA + 71h = G . . 720x540 16gray . . Video7 VGA, VEGA VGA + 72h = G . . 800x600 16gray . . Video7 VGA + 73h = G . . 1024x768 2gray . . Video7 VGA + 74h = G . . 1024x768 4gray . . Video7 VGA + 75h = G . . 1024x768 16gray . . Video7 VGA + 76h = G . . 640x400 256gray . . Video7 VGA + 77h = G . . 640x480 256gray . . Video7 VGA + 78h = G . . 720x540 256gray . . Video7 VGA + 79h = G . . 800x600 256gray . . (future) +SeeAlso: AH=00h,#00010,AX=0070h,#00011,AX=007Eh,AX=6F04h,#00083 +Index: video modes;Video 7|video modes;VEGA|video modes;Headland +--------V-106F06----------------------------- +INT 10 - VIDEO - Video7 VGA,VEGA VGA - SELECT AUTOSWITCH MODE + AX = 6F06h + BL = Autoswitch mode select + 00h select EGA/VGA-only modes + 01h select Autoswitched VGA/EGA/CGA/MGA modes + 02h select 'bootup' CGA/MGA modes + BH = enable/disable (00h enable, 01h = disable selection) +Return: nothing +--------V-106F07----------------------------- +INT 10 - VIDEO - Video7 VGA,VEGA VGA - GET VIDEO MEMORY CONFIGURATION + AX = 6F07h +Return: AL = 6Fh + AH = memory configuration + bits 0-6 = number of 256K blocks of video memory + bit 7 = DRAM/VRAM (0: DRAM, 1: VRAM) + BH = chip revision (SR8F) (S/C Chip in VEGA VGA) + BL = chip revision (SR8E) (G/A Chip in VEGA VGA) + CX = 0000h +SeeAlso: AH=12h/BL=10h +--------V-1070------------------------------- +INT 10 - VIDEO - TANDY 2000 only - GET ADDRESS OF VIDEO RAM + AH = 70h +Return: AX:BX -> WORD containing green plane's offset + AX:CX -> WORD containing green plane's segment + AX:DX -> WORD containing segment of red (offset 0) and blue (offset + 4000) planes +SeeAlso: AH=71h +--------V-1070------------------------------------ +INT 10 - HUNTER 16 - DRAW ELLIPSE/CIRCLE + AH = 70h + DS:BX -> control block (see #00192) +Return: nothing +Desc: Draws a circle or ellipse. Only valid in graphics modes. +Note: the Husky Hunter 16 is an 8088-based ruggedized laptop. Other family + members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk. +SeeAlso: AH=71h"HUNTER" + +Format of HUNTER 16 control block: +Offset Size Description (Table 00192) + 00h WORD center X co-ordinate + 02h BYTE center Y co-ordinate + 03h WORD radius in pixels + 05h BYTE color (00h white, 01h black, FFh invert) + 06h BYTE aspect ratio x:x (1-127) + 07h BYTE aspect ratio y:y (1-127) +--------V-107000BX0000----------------------- +INT 10 - Everex Extended Video BIOS - RETURN EMULATION STATUS + AX = 7000h + BX = 0000h +Return: AL = 70h if Trident-based Everex card + CL = monitor type (see #00193) + CH = feature bits (see #00194) + DX = video board info + bits 4-15: board ID model (see #00195) + bits 0-3: board ID revision + DI = BCD BIOS version number +SeeAlso: AX=5F01h,AH=FFh"Oak" + +(Table 00193) +Values for Everex monitor type: + 00h mono + 01h CGA + 02h EGA + 03h digital multifrequency + 04h IBM PS/2 + 05h IBM 8514 + 06h SuperVGA + 07h analog multifrequency + 08h super multifrequency + +Bitfields for Everex feature bits: +Bit(s) Description (Table 00194) + 7-6 memory size + 00 = 256K + 01 = 512K + 10 = 1024K + 11 = 2048K + 5 special oscillator present + 4 VGA protect enabled + 0 6845 emulation + +(Table 00195) +Values for board model for Trident-based Everex cards: + 0236h Ultragraphics II + 0620h Vision VGA + 0673h EVGA + 0678h Viewpoint +--------V-107000BX0004----------------------- +INT 10 - Everex Extended Video BIOS - GET PAGING FUNCTION POINTER FOR CURR MODE + AX = 7000h + BX = 0004h +Return: ES:DI -> FAR paging function (call with DL = page to set) +Note: the word preceding ES:DI is the length of the function in bytes, and + the last byte of the function is a FAR return instruction. +SeeAlso: AX=4F05h,AX=7000h/BX=0000h,AX=7000h/BX=0005h +--------V-107000BX0005----------------------- +INT 10 - Everex Extended Video BIOS - GET SUPPORTED MODE INFO + AX = 7000h + BX = 0005h + CL = maximum number of modes to get info for + CH = mode type to get info for (see #00196) + DL = monitor type to get info for + ES:DI -> buffer for mode info (see #00197) +Return: CL = total number of modes fitting criteria + CH = size of each info record +SeeAlso: AX=7000h/BX=0000h,AX=7000h/BX=0004h + +(Table 00196) +Values for Everex mode type: + 00h all modes + 01h monochrome text modes + 02h color text modes + 03h four-color CGA graphics modes + 04h two-color CGA graphics modes + 05h 16-color graphics modes + 06h 256-color graphics modes + +Format of Everex mode information record: +Offset Size Description (Table 00197) + 00h BYTE mode number (bit 7 set if extended mode) + 01h BYTE mode type (see #00196) + 02h BYTE info bits (see #00198) + 03h BYTE font height + 04h BYTE text columns on screen + 05h BYTE text rows on screen + 06h WORD number of scan lines + 08h BYTE color information + bits 7-4 reserved + 3-0 bits per pixel + +Bitfields for Everex info bits: +Bit(s) Description (Table 00198) + 7,6 reserved + 5 monochrome mode + 4 interlaced display + 3 requires special oscillator + 2,1 memory required (00 = 256K, 01 = 512K, 10 = 1024K, 11 = 2048K) + 0 reserved +--------V-1071------------------------------- +INT 10 - VIDEO - TANDY 2000 only - GET ADDRESS OF INCRAM + AH = 71h +Return: AX:BX -> WORD containing segment address of INCRAM + AX:CX -> WORD containing offset of INCRAM +SeeAlso: AH=70h"TANDY" +--------V-1071------------------------------------ +INT 10 - HUNTER 16 - DRAW LINE/BOX + AH = 71h + DS:BX -> control block (see #00199) +Return: nothing +Desc: Draws a line or box. Only valid in graphics modes. +SeeAlso: AH=70h"HUNTER" + +Format of HUNTER 16 control block: +Offset Size Description (Table 00199) + 00h WORD left edge X co-ordinate + 02h BYTE lower edge Y co-ordinate + 03h WORD right edge X co-ordinate + 05h BYTE upper edge Y co-ordinate + 06h BYTE color (00h white, 01h black, FFh invert) + 07h BYTE type (00h line, 01h box) + 08h BYTE if non-zero (and type is BOX) fill with color +--------V-1072------------------------------- +INT 10 - VIDEO - TANDY 2000 only - SCROLL RIGHT PART OR ALL OF SCREEN + AH = 72h + AL = number of columns to shift scroll area, 00h to clear entire area + BH = new attributes for blanked columns at left + CH,CL = row, column of upper left corner of scroll area + DH,DL = row, column of lower right corner of scroll area +Return: nothing +SeeAlso: AH=06h,AH=07h,AH=73h"TANDY",INT 15/AH=12h/BH=05h +--------V-1072------------------------------------ +INT 10 - HUNTER 16 - SELECT TEXT-MODE INVERSE VIDEO MECHANISM + AH = 72h + AL = mechanism to use + 00h do not use inverse video + 01h emulate MDA. Display attribute 07h is normal video and 70h is + inverse video. + 02h use inverse video if background is non-black. + 03h use inverse video for high intensity text. + 04h use inverse video for text with background intensity greater + than foreground intensity. + 05h use inverse video for text with background color other than + black or high intensity foreground. +Return: nothing +SeeAlso: AH=70h"HUNTER",AH=71h"HUNTER" +--------V-1073------------------------------- +INT 10 - VIDEO - TANDY 2000 only - SCROLL LEFT PART OR ALL OF SCREEN + AH = 73h + AL = number of columns to shift scroll area, 00h to clear entire area + BH = new attributes for blanked columns at right + CH,CL = row, column of upper left corner of scroll area + DH,DL = row, column of lower right corner of scroll area +Return: nothing +SeeAlso: AH=06h,AH=07h,AH=72h"TANDY",INT 15/AH=12h/BH=05h +--------V-1073------------------------------------ +INT 10 - HUNTER 16 - SELECT TEXT FONT + AH = 73h + AL = new font + 00h 7x7 in a 8x8 cell + 01h 5x7 in a 6x8 cell + 06h 3x5 in a 4x6 cell +Return: BH = cell width + BL = cell height +SeeAlso: AH=60h"HUNTER",AH=77h"HUNTER" +--------V-1074------------------------------------ +INT 10 - HUNTER 16 - SET LCD WINDOWS POSITION + AH = 74h + DH = row (0..24) + DL = column (0..79) +Return: nothing +Desc: set the position in the virtual screen being displayed in the LCD + screen. If Split Screen (INT 10/AH=66h) is used, this call sets the + position for the window which has the cursor. +SeeAlso: AH=66h"HUNTER",AH=75h,AH=76h +--------V-1075------------------------------------ +INT 10 - HUNTER 16 - SET ZOOM + AH = 75h + AL = new Zoom state (00h off, nonzero on) +Return: nothing +SeeAlso: AH=74h,AH=76h +--------V-1076------------------------------------ +INT 10 - HUNTER 16 - LOOKING KEYS + AH = 76h + AL = action + 00h home the window + 01h move up one line + 02h move down one line + 03h move left one character + 04h move right one character + 05h flip window to other side of virtual screen +Return: nothing +Desc: moves the displayed screen around the virtual screen +SeeAlso: AH=74h,AH=75h +--------V-1077------------------------------------ +INT 10 - HUNTER 16 - GET GRAPHICS FONT + AH = 77h +Return: AL = font number (see #00200) +SeeAlso: AH=60h"HUNTER",AH=73h"HUNTER" + +(Table 00200) +Values for HUNTER 16 graphics font number: + 00h 7x7 in a 8x8 cell + 01h 5x7 in a 6x8 cell + 02h 7x9 in a 8x10 cell + 03h 14x9 in a 16x10 cell + 04h 7x18 in a 8x20 cell + 05h 14x18 in a 16x20 cell + 06h 3x5 in a 4x6 cell +Note: size is X * Y +--------V-1078------------------------------------ +INT 10 - HUNTER 16 - TURN BACKLIGHT ON/OFF + AH = 78h + AL = new state of backlight (00h on, 01h off) +Return: nothing +SeeAlso: AH=64h,INT 15/AH=74h +--------V-107F------------------------------- +INT 10 - Paradise SVGA - WD90C24 INSTALLATION CHECK + AH = 7Fh +Return: AX = 1234h if WD90C24 chip installed +--------V-107F00----------------------------- +INT 10 - SOLLEX SuperVGA - GET EXTENSIONS INFO + AX = 7F00h +Return: AL <> 7Fh if not supported + AL = 7Fh if supported + AH = status + 00h successful + ES:DI -> info structure (see #00201) + 01h failed +Program: the SOLLEX (Smos videO controLLer EXtensions) SuperVGA functions are + an extension to the VESA SuperVGA BIOS Extensions (see AX=4F00h) by + Seiko Epson Corporation intended to provided a standardized interface + to SuperVGA functionality not addressed by the VESA standard +SeeAlso: AX=4F00h + +Format of SOLLEX SuperVGA info structure: +Offset Size Description (Table 00201) + 00h DWORD pointer to VESA function dispatch table + 04h DWORD pointer to SOLLEX function dispatch table + 08h DWORD pointer to VESA SuperVGA info (see #00077 at AX=4F00h) + 0Ch DWORD pointer to mode info structure table, consisting of + alternating ResInfo (see #00202) and VESA mode information + (see #00079 at AX=4F01h) blocks, terminated with an FFFFh word + 10h DWORD pointer to font info structure table (see #00203) + 14h WORD high resolution crystal frequency in Hz (0000h = not present) + 16h DWORD pointer to ASCIZ ID string + 1Ah DWORD pointer to timeout reset table + array of bytes, each a multiple of the minimum time increment + 1Eh WORD minimum time increment in timer ticks + 20h BYTE inverse options supported + bit 0: inverse supported + bits 1-7: reserved + 21h BYTE normal color value + 22h BYTE inverse color value + 23h WORD port to be accessed for normal/inverse settings + 25h WORD type of interface chip (currently undefined) + 27h WORD program operational mode + bits 1-0: 00 no preference + 01 terse (minimum detail in program messages) + 10 verbose + 11 use menus if supported, verbose mode otherwise + bits 7-2: reserved + 29h WORD SOLLEX specification version + 2Bh WORD version of VESA/SOLLEX implementation + 2Dh DWORD offset to relocatable portion of SOLLEX extensions (for CONFIG) + 2Eh DWORD offset to unused section of the extensions ROM + 31h 16 BYTEs reserved +Note: all DWORD pointers initially require segment fixups; if the segment + is 0000h, it should be changed to the returned ES, otherwise it + may be assumed to be correct + +Format of SOLLEX SuperVGA ResInfo: +Offset Size Description (Table 00202) + 00h WORD 16-bit mode number + 02h WORD adapter type (00h VGA, 01h EGA, 02h CGA, 03h MDA) + 04h WORD display info (see #00206) + 06h DWORD pointer to video parameter table + 0Ah BYTE replacement entry in master Video Parameter + 0Bh BYTE mode requested for mode set by BIOS + 0Ch DWORD pointer to LoadReg table + 10h BYTE index into table of clock values (see #00204) +SeeAlso: #00201 + +Format of SOLLEX SuperVGA font info table [array] entry: +Offset Size Description (Table 00203) + 00h BYTE required font height + 01h BYTE parameter to load text mode font + 02h BYTE parameter to load graphics mode font +SeeAlso: #00201 + +(Table 00204) +Values for SOLLEX SuperVGA clock value index: + 00h 25 MHz + 01h 28 MHz + 02h PCLK + 03h 31.5 MHz (VESA 640x480) + 04h reserved + 05h 16 MHz (EGA) + 06h PCLK + 07h 24 MHz (EGA) + 08h 25 MHz + 09h 28 MHz + 0Ah 36 MHz + 0Bh 45 MHz (for 1024x768) + 0Ch 80 MHz + 0Dh 40 MHz + 0Eh 65 MHz + 0Fh 1 MHz (for powerdown) +SeeAlso: #00201 +--------V-107F00BX4000----------------------- +INT 10 - Diamond Stealth 24 - GET S3 INFORMATION BLOCK + AX = 7F00h + BX = 4000h +Return: AX = 007Fh if supported + DX:BX -> DAC set mode routine +SeeAlso: AX=7F00h/BX=4001h,AX=7F00h/BX=4002h,#00732 at INT 1A/AX=B102h +--------V-107F00BX4001----------------------- +INT 10 - Diamond Stealth 24 - GET LINEAR ADDRESS + AX = 7F00h + BX = 4001h +Return: AX = 007Fh if supported + CX = current linear address base (high word) +SeeAlso: AX=7F00h/BX=4000h,AX=7F00h/BX=4002h +--------V-107F00BX4002----------------------- +INT 10 - Diamond Stealth 24 - SET LINEAR ADDRESS + AX = 7F00h + BX = 4002h + CX = new linear address base (high word) +Return: AX = 007Fh if supported +SeeAlso: AX=7F00h/BX=4000h,AX=7F00h/BX=4001h +--------V-107F01BL00------------------------- +INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - SET ADAPTER + AX = 7F01h + BL = 00h + CX = adapter request (see #00205) +Return: AL <> 7Fh if not supported + AL = 7Fh if supported + AH = status + 00h successful + 01h failed +Note: initializes video hardware to a particular standard +SeeAlso: AX=7F00h"SOLLEX",AX=7F01h/BL=01h,AX=7F01h/BL=02h + +Bitfields for SOLLEX SuperVGA adapter request: +Bit(s) Description (Table 00205) + 1-0 adapter type (00 VGA, 01 EGA, 10 CGA, 11 MDA) + 2 reserved + 4-3 change displays (00 none, 01 analog 10 digital 11 panel) + 6-5 desired monitor sense (01 color, 10 mono, 11=8514) + 7 lock override + 8 alternate adapter mode + 15-9 reserved +--------V-107F01BL01------------------------- +INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - GET ADAPTER + AX = 7F01h + BL = 01h +Return: AL <> 7Fh if not supported + AL = 7Fh if supported + AH = status + 00h successful + 01h failed + BX = adapter type (see #00205) + DX = display type (see #00206) +SeeAlso: AX=7F00h"SOLLEX",AX=7F01h/BL=00h,AX=7F01h/BL=02h + +Bitfields for SOLLEX SuperVGA display type: +Bit(s) Description (Table 00206) + 15-9 reserved + 8 alternate display active + 7 Enhanced Color Display monitor active + 6 multi-frequency digital monitor active + 5 PS/2-type monitor active + 4 plasma/electroluminescent panel active + 3 LCD panel active + 2 multi-frequency analog monitor active + 1-0 monitor sense (00 none, 01 color, 10 mono, 11=8514) +--------V-107F01BL02------------------------- +INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - DETERMINE ADAPTER SUPPORT + AX = 7F01h + BL = 02h + CX = adapter request (see #00205) +Return: AL <> 7Fh if not supported + AL = 7Fh if supported + AH = status + 00h requested setting can successfully be made + 01h requested setting not available in this configuration +SeeAlso: AX=7F00h"SOLLEX",AX=7F01h/BL=00h +--------V-107F02BL00------------------------- +INT 10 - SOLLEX SuperVGA - DISPLAY OUTPUT CONTROL - SET DISPLAY OUTPUT + AX = 7F02h + BL = 00h + CX = display output setting (see #00207) +Return: AL <> 7Fh if not supported + AL = 7Fh if supported + AH = status + 00h successful + 01h failed +SeeAlso: AX=7F00h"SOLLEX",AX=7F02h/BL=00h + +Bitfields for SOLLEX SuperVGA display output setting: +Bit(s) Description (Table 00207) + 0 CRTC control in 2,1 valid + 1 enable digital output + 2 enable analog output + 3 panel control in 5,4 valid + 4 enable LCD output + 5 enable plasma/EL output + 6 inverse control in 7 valid + 7 0=normal, 1=inverse + 15-8 reserved +--------V-107F02BL01------------------------- +INT 10 - SOLLEX SuperVGA - DISPLAY OUTPUT CONTROL - GET DISPLAY OUTPUT + AX = 7F02h + BL = 01h +Return: AL <> 7Fh if not supported + AL = 7Fh if supported + AH = status + 00h successful + BX = display output setting (see #00207) + CX = displays attached (see #00208) + 01h failed +SeeAlso: AX=7F00h"SOLLEX",AX=7F02h/BL=00h + +Bitfields for SOLLEX SuperVGA displays attached: +Bit(s) Description (Table 00208) + 0 PS/2 display on analog output + 1 multi-frequency monitor on analog output + 2 LCD panel attached + 3 plasma/electroluminescent panel attached + 4 multi-frequency monitor on digital output + 5 Enhanced Color Display attached to digital outpt + 6 alternate display + 15-7 reserved +--------V-107F03BL00------------------------- +INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - GET SUPPORT INFO + AX = 7F03h + BL = 00h + CX = support type + 0000h VGA, 0001h EGA, 0002h CGA, 0003h MDA, 0004h extensions, + 0005h-0012h reserved for SOLLEX, 0013h Hercules, + 0014h-001Fh reserved for SOLLEX, 0020h-00FFh reserved for OEM +Return: AL <> 7Fh if not supported + AL = 7Fh if supported + AH = status + 00h successful + CX = size of video support code + DX = segment of physical video support (0000h if no ROM) + ES = segment of active video support + ES:DI -> information block (DI = 0000h if none available) + 01h failed +SeeAlso: AX=7F03h/BL=01h +--------V-107F03BL01------------------------- +INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - INITIALIZE VIDEO SUPPORT + AX = 7F03h + BL = 01h + CX = support request + ES = segment of support code +Return: AL <> 7Fh if not supported + AL = 7Fh if supported + AH = status + 00h successful + 01h failed +Note: initializes the indicated video support by calling ES:0003h; this + function may be used to switch the active video support back to + ROM after AX=7F03h/BL=02h +SeeAlso: AX=7F03h/BL=00h +--------V-107F03BL02------------------------- +INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - GO RAM RESIDENT + AX = 7F03h + BL = 02h + CX = support request + ES = destination segment +Return: AL <> 7Fh if not supported + AL = 7Fh if supported + AH = status + 00h successful + 01h failed +SeeAlso: AX=7F00h"SOLLEX",AX=7F03h/BL=01h +--------V-107F04BL00------------------------- +INT 10 - SOLLEX SuperVGA - POWER CONTROL - SET POWER STATE + AX = 7F04h + BL = 00h + CX = new power state +Return: AL <> 7Fh if not supported + AL = 7Fh if supported + AH = status + 00h successful + 01h failed +Note: higher values progressively reduce the operations available on the + video adapter while yielding increasing power savings +SeeAlso: AX=7F00h"SOLLEX",AX=7F04h/BL=01h +--------V-107F04BL01------------------------- +INT 10 - SOLLEX SuperVGA - POWER CONTROL - GET POWER STATE + AX = 7F04h + BL = 01h +Return: AL <> 7Fh if not supported + AL = 7Fh if supported + AH = status + 00h successful + CX = current power state + DX = maximum state + 01h failed +SeeAlso: AX=7F00h"SOLLEX",AX=7F04h/BL=00h +--------V-107F04BL02------------------------- +INT 10 - SOLLEX SuperVGA - POWER CONTROL - SET TIMEOUT RESET + AX = 7F04h + BL = 02h + CX = timeout reset +Return: AL <> 7Fh if not supported + AL = 7Fh if supported + AH = status + 00h successful + 01h failed +SeeAlso: AX=7F00h"SOLLEX",AX=7F04h/BL=03h +--------V-107F04BL03------------------------- +INT 10 - SOLLEX SuperVGA - POWER CONTROL - GET TIMEOUT RESET + AX = 7F04h + BL = 03h +Return: AL <> 7Fh if not supported + AL = 7Fh if supported + AH = status + 00h successful + BX = time increment + CX = current timeout reset + DX = maximum timeout reset + ES:DI -> timeout reset table (array of bytes) + 01h failed +Note: the timeout period is computed as (BYTE ES:[DI+CX]) * BX timer ticks +SeeAlso: AX=7F00h"SOLLEX",AX=7F04h/BL=02h +--------V-107F05----------------------------- +INT 10 - SOLLEX SuperVGA - LOAD REGISTER + AX = 7F05h + ES:DI -> register value table (see #00209) +Return: AL <> 7Fh if not supported + AL = 7Fh if supported + AH = status + 00h successful + 01h failed +SeeAlso: AH=F1h,AH=F3h,AH=F5h + +Format of SOLLEX SuperVGA register value table: +Offset Size Description (Table 00209) + 00h WORD base I/O register (FFFFh = end of list) + 02h 2N BYTEs pairs of values to be written to the base I/O register as an + index value and the following register as a data byte + 2N+2 WORD FFFFh (end of data list) + ... (repeats until FFFFh base address) +--------V-107F06----------------------------- +INT 10 - SOLLEX SuperVGA - MULTIPLE FONT CONTROL + AX = 7F06h + BL = subfunction + 00h set multiple font state + CX = new state (00h off, 01h on) + 01h get multiple font state + Return: BL = current state (00h off, 01h on) +Return: AL <> 7Fh if not supported + AL = 7Fh if supported + AH = status + 00h successful + 01h failed +SeeAlso: AX=1100h,AX=1103h +--------V-107F07----------------------------- +INT 10 - SOLLEX SuperVGA - FILL VIDEO RAM + AX = 7F07h + BL = how much to fill + 00h regen size + 01h all video memory + CX = pattern to write (normally 0720h for text modes and 0000h for gr) +Return: AL <> 7Fh if not supported + AL = 7Fh if supported + AH = status + 00h successful + 01h failed +SeeAlso: AH=06h +--------A-1080------------------------------- +INT 10 - CU Writer v1.4 - GET OPTION + AH = 80h + AL = desired option +Return: ??? +Program: CU Writer is a public-domain Thai-English word processor from + Chulalongkorn University, Bangkok +SeeAlso: AH=81h"CU Writer" +--------Q-1080--DX4456----------------------- +INT 10 U - VIDEO - DESQview 2.0x only - internal - SET ??? HANDLER + AH = 80h + DX = 4456h ('DV') + ES:DI -> FAR subroutine to be called on ??? +Return: DS = segment of DESQview data structure for video buffer +Note: this function is probably meant for internal use only, due to the magic + value required in DX + the subroutine seems to be called when the DESQview menu is accessed; + on entry, AL = 03h or 04h +--------A-1081------------------------------- +INT 10 - CU Writer v1.4 - SET OPTION + AH = 81h + ??? +Return: ??? +SeeAlso: AH=80h"CU Writer" +--------Q-1081--DX4456----------------------- +INT 10 U - VIDEO - DESQview 2.0x only - internal - GET ??? + AH = 81h + DX = 4456h ('DV') +Return: ES = segment of DESQview data structure for video buffer + BYTE ES:[0] = current window number in DV 2.0x +Note: this function is probably meant for internal use only, due to the magic + value required in DX +SeeAlso: AH=82h"DESQview" +--------Q-1082--DX4456----------------------- +INT 10 U - VIDEO - DESQview 2.0x only - internal - GET CURRENT WINDOW INFO + AH = 82h + DX = 4456h ('DV') +Return: DS = segment in DESQview for data structure + in DV 2.00, + BYTE DS:[0] = window number + WORD DS:[1] = segment of other data structure + WORD DS:[3] = segment of window's object handle + ES = segment of DESQview data structure for video buffer + AL = current window number + AH = ??? + BL = direct screen writes + 00h program does not do direct writes + 01h program does direct writes, so shadow buffer not usable + BH = ??? + CL = current video mode + CH = ??? +Note: this function is probably meant for internal use only, due to the magic + value required in DX +SeeAlso: AH=81h"DESQview" +--------J-108200----------------------------- +INT 10 - VIDEO - AX PC - GET/SET SCROLL MODE + AX = 8200h + BL = new scroll mode or FFh to get current mode + 00h dynamic, 01h software +Return: AL = scroll mode (current mode if BL=FFh, previous mode otherwise) +SeeAlso: AH=06h,AH=07h +--------J-108300----------------------------- +INT 10 - VIDEO - AX PC - GET VIDEO RAM ADDRESS + AX = 8300h +Return: AX = offset of video RAM + ES:BX -> virtual text RAM buffer +SeeAlso: AX=5201h +----------1086------------------------------- +INT 10 - ??? + AH = 86h +Note: called by Diamond Stealth64 Video STLTH64.VXD +SeeAlso: INT 2F/AX=4021h +--------N-108B------------------------------- +INT 10 - Alloy MW386 - FORCE WORKSTATION SCREEN UPDATE + AH = 8Bh +Return: nothing +SeeAlso: AH=92h,AH=93h +--------N-1090------------------------------- +INT 10 - Alloy MW386 - GET PHYSICAL WORKSTATION DISPLAY MODE + AH = 90h +Return: AL = current video mode (see #00010 at AH=00h) +SeeAlso: AH=91h +--------N-1091------------------------------- +INT 10 - Alloy MW386 - GET PHYSICAL WORKSTATION ADAPTER TYPE + AH = 91h +Return: AL = video adapter type (see #00210) +Note: types less than 80h do not imply that the current user is on the host +SeeAlso: AH=90h + +(Table 00210) +Values for Alloy MW386 video adapter type: + 00h monochrome + 01h Hercules monochrome graphics + 02h CGA + 03h EGA + 04h VGA + 80h monochrome text terminal + 81h Hercules graphics terminal + 82h color graphics terminal +--------N-1092------------------------------- +INT 10 - Alloy MW386 - INHIBIT WORKSTATION SCREEN UPDATES + AH = 92h +Return: nothing +Note: the terminal will be updated even when screen updates are inhibited if + TTY output is used +SeeAlso: AH=8Bh +--------N-1093------------------------------- +INT 10 - Alloy MW386 - REDRAW SCREEN + AH = 93h +Return: nothing +SeeAlso: AH=8Bh,AH=FFh +--------V-109508----------------------------- +INT 10 - VHRBIOS.SYS - ??? + AX = 9508h +Return: ??? +Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius" + black&white A4/portrait monitor +SeeAlso: AH=96h"VHRBIOS.SYS",AH=F0h"VHRBIOS.SYS" +--------V-1096------------------------------- +INT 10 - VHRBIOS.SYS - GET OTHER DISPLAY INFO + AH = 96h +Return: AL = display type (see AH=1Ah) + AH = ??? (possibly related to Micro Channel support) +Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius" + black&white A4/portrait monitor +Desc: returns info on any non-Genius video adapter in the system +SeeAlso: AX=9508h"VHRBIOS.SYS",AH=F0h"VHRBIOS.SYS" +--------A-10A0------------------------------- +INT 10 - CU Writer v1.4 - SET PIXEL WRITE MODE + AH = A0h + ??? +Return: ??? +Program: CU Writer is a public-domain Thai-English word processor from + Chulalongkorn University, Bangkok +SeeAlso: AH=80h"CU Writer",AH=B0h +--------p-10A000----------------------------- +INT 10 - ATI BIOS Extensions - ??? + AX = A000h + CL = ??? (bits 2-0 may not be 000) + CH = ??? (81h or ???) + DX = segment of ??? (if CH=81h) + ??? +Return: AX = ??? +Program: the ATI BIOS extensions are supported by ATI graphics cards containing + the Mach64 or newer graphics chips (Rage Pro, Rage 128, etc.) +SeeAlso: AX=4F10h/BL=00h,AX=A001h +----------10A001----------------------------- +INT 10 - ATI Mach64 BIOS - ??? + AX = A001h + CL = ??? flags + ??? +Return: AH = status + 00h successful + 01h failed + ??? +SeeAlso: AX=A000h,AX=A002h +----------10A002----------------------------- +INT 10 - ATI Mach64 BIOS - ??? + AX = A002h + CL = ??? (bits 2-0 may not be 000) + CH = ??? (81h or ???) + DX = segment of ??? (if CH=81h) + ??? +Return: AH = status + 00h successful + 01h failed + ??? +Note: executes AX=A000h, then AX=A001h if A000h was successful +SeeAlso: AX=A000h,AX=A001h +----------10A003----------------------------- +INT 10 - ATI Mach64 BIOS - ??? + AX = A003h + BX = ??? + ??? +Return: AH = status (00h successful) + ??? +SeeAlso: AX=A000h,AX=A002h +--------V-10A004----------------------------- +INT 10 - PhoenixVIEW/LC - VIDEO DISPLAY TYPE + AX = A004h + ??? +Return: ??? +Desc: configure display parameters +SeeAlso: AX=A01Bh"PhoenixVIEW/LC" +----------10A004----------------------------- +INT 10 - ATI Mach64 BIOS - ??? + AX = A004h + BX = video mode??? (0000-00FFh) + DX = ??? (sent to some port [66ECh???] one bit at a time, high to low) + ??? +Return: AH = status + 00h successful + 01h failed + ??? +SeeAlso: AX=A000h,AX=A002h +----------10A005----------------------------- +INT 10 - ATI Mach64 BIOS - ??? + AX = A005h + CL = ??? flags (bits 0,2, others?) + ??? +Return: AH = status + 00h successful + 01h failed + ??? +SeeAlso: AX=A000h,AX=A002h +----------10A006----------------------------- +INT 10 - ATI Mach64 BIOS - ??? + AX = A006h + ??? +Return: AH = status + 00h successful + 01h failed + ??? +SeeAlso: AX=A000h,AX=A002h +----------10A007----------------------------- +INT 10 - ATI Mach64 BIOS - GET ??? + AX = A007h +Return: AH = 00h (successful) + AL = ??? (00h) + BX = ??? (15A0h in examined BIOS) + DX = segment of BIOS +SeeAlso: AX=A000h,AX=A002h +----------10A008----------------------------- +INT 10 - ATI Mach64 BIOS - GET ??? SIZE + AX = A008h + CL = ??? flags + ??? +Return: AH = 00h (successful) + BX = size of ??? (0046h if CL bit 0 clear on entry) +SeeAlso: AX=A000h,AX=A009h +----------10A009----------------------------- +INT 10 - ATI Mach64 BIOS - GET ??? + AX = A009h + DX:BX -> buffer for ??? + CL = ??? flags + ??? +Return: AH = status + 00h successful + DX:BX buffer filled + 01h failed + ??? +SeeAlso: AX=A000h,AX=A008h +----------10A00A----------------------------- +INT 10 - ATI Mach64 BIOS - GET ??? + AX = A00Ah +Return: AH = 00h (successful) + AL = ??? (01h) + BX = ??? (5938h) + CX = ??? (595Eh) + DX = segment of BIOS +SeeAlso: AX=A000h,AX=A002h +----------10A00B----------------------------- +INT 10 - ATI Mach64 BIOS - ??? + AX = A00Bh + BX = ??? + CL = ??? flags + ??? +Return: AH = status + 00h successful + 01h failed + ??? +SeeAlso: AX=A000h,AX=A002h +--------p-10A00C----------------------------- +INT 10 - ATI Mach64 BIOS - SET SLEEP MODE + AX = A00Ch + CL = new state + 00h normal operation + 01h standby + 02h suspend + 03h off +Return: AH = status + 00h successful + 01h failed +Note: CL bit 2 affects values written to video card's ports +SeeAlso: AX=A000h,AX=A00Dh,AX=4F00h,AX=4F10h/BL=01h +----------10A00D----------------------------- +INT 10 - ATI Mach64 BIOS - GET SLEEP MODE + AX = A00Dh +Return: AH = 00h (successful) + CL = current power mode + 00h normal operation + 01h standby + 02h suspend + 03h off +SeeAlso: AX=A00Ch,AX=4F10h/BL=02h +SeeAlso: AX=A00Ch,AX=A00Dh"Rage128"AX=4F10h/BL=02h +--------V-10A00D----------------------------- +INT 10 - ATI Rage128 BIOS - GET ??? + AX = A00Dh + BL = subfunction + 00h ??? + 01h ??? + 02h ??? + 03h ??? + DX:DI -> buffer for results + ??? +Return: AH = status + 00h successful + 01h failed + ??? +SeeAlso: AX=A000h,AX=A00Dh"Mach64",AX=A015h +----------10A00E----------------------------- +INT 10 - ATI Mach64 BIOS - SET ??? + AX = A00Eh + CL = ??? (00h-03h) +Return: AH = status + 00h successful + 01h failed +Notes: CL zero/nonzero are treated differently + NOP in All-in-Wonder 128 BIOS +SeeAlso: AX=A000h,AX=A00Fh +----------10A00F----------------------------- +INT 10 - ATI Mach64 BIOS - GET ??? + AX = A00Fh +Return: AH = 00h (successful) + CL = ??? (00h-03h, read from PORT 42ECh) +Note: NOP in All-in-Wonder 128 BIOS +SeeAlso: AX=A000h,AX=A00Eh +----------10A010----------------------------- +INT 10 - ATI Mach64 BIOS - ??? + AX = A010h + CL = ??? (80h/other) + ??? +Return: AH = status + 00h successful + 01h failed + ??? +Note: NOP in All-in-Wonder 128 BIOS +SeeAlso: AX=A000h,AX=A002h +----------10A011----------------------------- +INT 10 - ATI Mach64 BIOS - GET ??? + AX = A011h +Return: AH = 00h (successful) + BL = ??? (1Fh) + BH = ??? (0Fh) + CL = ??? (00h) + CH = ??? (0Fh) + DX = ??? (00FFh) +Note: NOP in All-in-Wonder 128 BIOS +SeeAlso: AX=A000h,AX=A010h +--------V-10A012----------------------------- +INT 10 - ATI Mach64 BIOS - GET ??? + AX = A012h +Return: AH = 00h (successful) + AL = ??? (00h) + BX = ??? (0000h) + CX = ??? (0000h) + DX = ??? (02ECh) +Note: NOP in All-in-Wonder 128 BIOS +SeeAlso: AX=A000h,AX=A002h +--------V-10A013----------------------------- +INT 10 - ATI Mach64 BIOS - ??? + AX = A013h + ??? +Return: AH = status + 00h successful + 01h failed + ??? +Note: not implemented in examined Mach64 BIOS, always returns AH=01h; NOP in + examined All-in-Wonder 128 BIOS +SeeAlso: AX=A000h,AX=A002h +--------V-10A014----------------------------- +INT 10 - ATI Rage128 BIOS - ??? + AX = A014h + CH = ??? (bits 0,1,4) + ??? +Return: AH = status + 00h successful + 01h failed + ??? +SeeAlso: AX=A000h,AX=A015h +--------V-10A015----------------------------- +INT 10 - ATI Rage128 BIOS - GET/SET ??? + AX = A015h + CH = subfunction + 00h get ??? + 01h set ??? + CL = ??? (only bits 0,1 used on All-in-Wonder 128) + other NOP +Return: AH = status + 00h successful + 01h failed + ??? +SeeAlso: AX=A014h,AX=A017h +--------V-10A016----------------------------- +INT 10 - ATI Rage128 BIOS - NOP + AX = A016h +Return: nothing +SeeAlso: AX=A000h,AX=A017h +--------V-10A017----------------------------- +INT 10 - ATI Rage128 BIOS - ??? + AX = A017h + ??? +Return: AH = status + 00h successful + 01h failed + ??? +SeeAlso: AX=A014h,AX=A015h +--------V-10A01B----------------------------- +INT 10 - PhoenixVIEW/LC - CRT MONITOR DETECTION + AX = A01Bh + ??? +Return: ??? +Desc: determine whether an external display is currently attached +SeeAlso: AX=A004h"PhoenixVIEW/LC" +--------U-10AA------------------------------- +INT 10 OU - Player's Tool 3.0 - UNINSTALL + AH = AAh +Return: ??? +Note: this call has been removed in PT 3.996b +Program: Player's Tool is a game cheater by Dmitry Yakunin & Andy Robinson +SeeAlso: AH=ABh,INT 2F/AH=AAh +--------U-10AB------------------------------- +INT 10 OU - Player's Tool 3.0 - INSTALLATION CHECK + AH = ABh +Return: BH = FFh + ??? +Note: this call has been removed in PT 3.996b +SeeAlso: AH=AAh,INT 2F/AH=ABh +--------A-10B0------------------------------- +INT 10 - CU Writer v1.4 - PUT PIXEL + AH = B0h + ??? +Return: ??? +SeeAlso: AH=A0h"CU Writer",AH=B1h,AH=B2h,AH=B3h,AH=B4h,AH=B5h,AH=D0h +--------A-10B1------------------------------- +INT 10 - CU Writer v1.4 - MOVE TO + AH = B1h + ??? +Return: ??? +SeeAlso: AH=B0h,AH=B2h,AH=C0h"CU Writer" +--------A-10B2------------------------------- +INT 10 - CU Writer v1.4 - DRAW LINE TO + AH = B2h + ??? +Return: ??? +SeeAlso: AH=B0h,AH=B1h,AH=B3h,AH=B4h,AH=B5h +--------A-10B3------------------------------- +INT 10 - CU Writer v1.4 - FLOOD FILL + AH = B3h + ??? +Return: ??? +SeeAlso: AH=B2h,AH=B5h +--------A-10B4------------------------------- +INT 10 - CU Writer v1.4 - DRAW RECTANGLE + AH = B4h + ??? +Return: ??? +SeeAlso: AH=B0h,AH=B2h,AH=B3h,AH=B5h +--------A-10B5------------------------------- +INT 10 - CU Writer v1.4 - DRAW FILLED RECTANGLE + AH = B5h + ??? +Return: ??? +SeeAlso: AH=B0h,AH=B2h,AH=B3h,AH=B4h +--------V-10BB------------------------------- +INT 10 U - Doorway - SET BIOS/DIRECT REDIRECTION + AH = BBh + AL = new redirection mode + 00h BIOS (hook and redirect INT 10h,etc.) + 01h DIRECT (scan video memory for changes) +Return: ??? +SeeAlso: INT 16/AH=67h"Doorway" +--------V-10BD44----------------------------- +INT 10 U - Compaq QVision - ??? + AX = BD44h + ??? +Return: ??? +Note: called by Compaq's MTX132.COM, which places the QVision in 132-column + mode +--------!---Section-------------------------- diff --git a/floppy/doc/INTERRUP.B b/floppy/doc/INTERRUP.B new file mode 100644 index 0000000..a2a3f5a --- /dev/null +++ b/floppy/doc/INTERRUP.B @@ -0,0 +1,9839 @@ +Interrupt List, part 2 of 18 +Copyright (c) 1989-1999,2000 Ralf Brown +--------V-10BF--CX0000----------------------- +INT 10 - Athena Digital HGCIBM.COM - INSTALLATION CHECK + AH = BFh + CX = 0000h (???) +Return: CX = 0202h + DL = ??? (internal data, possibly version number) +--------b-10BF00----------------------------- +INT 10 - VIDEO - Compaq Extensions - SELECT EXTERNAL MONITOR + AX = BF00h +Return: nothing +Desc: specify that the external monitor become the active monitor +Note: all registers preserved and the internal monitor is blanked +SeeAlso: AX=BF01h,AX=BF12h,AH=12h/BL=35h +--------b-10BF01----------------------------- +INT 10 - VIDEO - Compaq Extensions - SELECT INTERNAL MONITOR + AX = BF01h +Return: nothing +Desc: specify that the internal monitor become the active monitor +Note: all registers preserved and the external monitor is blanked +SeeAlso: AX=BF00h,AX=BF12h,AH=12h/BL=35h +--------b-10BF02----------------------------- +INT 10 - VIDEO - Compaq Extensions - SET MASTER MODE OF CURRENT CONTROLLER + AX = BF02h + BH = master mode + 04h CGA + 05h EGA + 07h MDA +Return: nothing +SeeAlso: AX=BF03h +--------b-10BF03BX0000----------------------- +INT 10 - VIDEO - Compaq Extensions - GET ENVIRONMENT + AX = BF03h + BX = 0000h +Return: BH = active monitor + (00h = external, 01h = internal, 03h both, 04h neither) + BL = master mode (see #00211) + CH = ASIC type and version + 00h (reserved, very early Compaq VGCs) + 31h if QVision VGA + CL = switchable VDU modes supported (see #00212) + DH = internal monitor type (see #00213) + DL = external monitor type (see #00213) +SeeAlso: AX=1A00h,AX=BF00h,AX=BF01h,AX=BF02h,AX=BF11h + +(Table 00211) +Values for Compaq video master mode: + 00h switchable VDU not present + 04h CGA + 05h EGA + 07h MDA + 08h switchable LCD controller present + 09h plasma VGA + 0Ah TFT (active-matrix) VGA + +Bitfields for Compaq switchable VDU modes support: +Bit(s) Description (Table 00212) + 0 CGA supported + 1,2 reserved (1) + 3 MDA supported + 4 BitBLT engine available + 5 132-column support availble + 6 640x480x256 mode available + 7 8-bit DAC mode available + +(Table 00213) +Values for Compaq monitor type: + 00h none + 01h dual-mode monitor + 02h 5153 RGB monitor (RGBI 16-color) + 03h Compaq Color monitor + 04h 640x400 flat panel (Plasma CGA) + 05h VGC monochrome + 06h VGC color + 07h 8-level mono LCD VGA (internal) + 1024x768 mono VGA (external) + 08h 16-level mono plasma VGA (internal) + 1024x768 color VGA (external) + 09h 4-level mono LCD CGA + 0Ah 16-level mono LCD VGA + 0Bh active-matrix color VGA + 0Ch active-matrix mono VGA + 0Dh STN color VGA +--------b-10BF04----------------------------- +INT 10 - VIDEO - Compaq Extensions - SET MODE SWITCH DELAY + AX = BF04h + BH = new state of delay (00h enabled, 01h disabled) +Return: nothing +Note: the 1993/04/08 sytem ROM appears to use BL instead of BH; a future + version of the list will provide more definite information +SeeAlso: AX=BF05h +--------b-10BF05----------------------------- +INT 10 - VIDEO - Compaq Extensions - ENABLE/DISABLE DISPLAY + AX = BF05h + BH = new state of video + 00h off + 01h on +Return: nothing +Note: the 1993/04/08 sytem ROM appears to use BL instead of BH; a future + version of the list will provide more definite information +SeeAlso: AH=12h/BL=36h,AX=BF04h +--------b-10BF06----------------------------- +INT 10 - VIDEO - Compaq SLT/286 - READ GRAY SCALE TABLE + AX = BF06h + CL = address to be read from gray scale table +Return: AL = bit 3-0 - Value read from gray scale table + CL = address to be read from gray scale table +SeeAlso: AH=12h/BL=33h,AX=BF07h +--------b-10BF07----------------------------- +INT 10 - VIDEO - Compaq SLT/286 - WRITE GRAY SCALE TABLE + AX = BF07h + CH = value to write to gray scale table + CL = address to be written to gray scale table +Return: nothing +SeeAlso: AX=BF06h,AX=BF08h +--------b-10BF08----------------------------- +INT 10 - VIDEO - Compaq SLT/286 - WRITE COLOR MIX REGISTERS + AX = BF08h + CH = bits 7-4 green weight + bits 3-0 blue weight + CL = bits 7-4 unused + bits 3-0 red weight +Return: nothing +SeeAlso: AH=12h/BL=33h,AX=BF07h +--------b-10BF09----------------------------- +INT 10 - VIDEO - Compaq Extensions - TURN ON REVERSE VIDEO + AX = BF09h +Return: CF clear +Notes: sets bit 6 of port 03CEh index 81h; in some cases also sets index 84h + to 6Fh and index 83h to 04h + supported by at least the QVision board and the LTE Lite ROM BIOS +SeeAlso: AX=BF0Ah,AX=BF0Bh +--------b-10BF0A----------------------------- +INT 10 - VIDEO - Compaq Extensions - TURN OFF REVERSE VIDEO + AX = BF0Ah +Return: CF clear +Notes: clears bit 6 of port 03CEh index 81h; in some cases also sets index 84h + to 80h and index 83h to FBh + supported by at least the QVision board and the LTE Lite ROM BIOS +SeeAlso: AX=BF09h,AX=BF0Bh +--------b-10BF0B----------------------------- +INT 10 - VIDEO - Compaq Extensions - CHECK WHETHER VIDEO REVERSED + AX = BF0Bh +Return: CF clear + AX = state (0000h normal video, 0001h reverse video) +Note: supported by at least the QVision board and the LTE Lite ROM BIOS +SeeAlso: AX=BF09h,AX=BF0Ah +--------b-10BF0C----------------------------- +INT 10 - VIDEO - Compaq Extensions - SET DAC 6-BIT MODE + AX = BF0Ch +Return: CF clear +Desc: specify that video DAC registers use only six bits of color info +Note: supported by at least the QVision board and the SystemPro XL ROM BIOS +SeeAlso: AX=BF0Dh,AX=BF0Eh +--------b-10BF0D----------------------------- +INT 10 - VIDEO - Compaq Extensions - SET DAC 8-BIT MODE + AX = BF0Dh +Return: CF clear +Desc: specify that video DAC registers use all eight bits of color info +Note: supported by at least the QVision board and the SystemPro XL ROM BIOS +SeeAlso: AX=BF0Ch,AX=BF0Eh +--------b-10BF0E----------------------------- +INT 10 - VIDEO - Compaq Extensions - CHECK DAC 6-BIT/8-BIT mode + AX = BF0Eh +Return: CF clear + AL = DAC mode + 00h in 6-bit mode + 01h in 8-bit mode +Note: supported by at least the QVision board and the SystemPro XL ROM BIOS +SeeAlso: AX=BF0Ch,AX=BF0Dh +--------b-10BF0F----------------------------- +INT 10 - VIDEO - Compaq Extensions - SET HIGH ADRESS MAP REGISTER + AX = BF0Fh + BX = high address map location in megabytes, or + 0000h to disable high address map, or + FFFFh to let ROM configure high address map +Return: CF clear + AX = previous value of high address map register +Notes: supported by at least the QVision board and the SystemPro XL and LTE + Lite ROM BIOSes +SeeAlso: AX=BF10h +--------b-10BF10----------------------------- +INT 10 - VIDEO - Compaq Extensions - GET HIGH ADDRESS MAP REGISTER + AX = BF10h +Return: CF clear + AX = current value of high address map register +Notes: supported by at least the QVision board and the SystemPro XL and LTE + Lite ROM BIOSes + the Compaq QVision documentation (October 1993) says the value is + returned in BX, but this appears to be one of many typos +SeeAlso: AX=BF0Fh +--------b-10BF11----------------------------- +INT 10 - VIDEO - Compaq Extensions - GET EXTENDED ENVIRONMENT + AX = BF11h +Return: AL = BFh if supported + CF clear + ES:DI -> ASCII signature "COMPAQ" + ES:SI -> advanced functionality table (see #00214) +Note: supported by at least the QVision board and the LTE Lite and ProSignia + ROM BIOSes +SeeAlso: AX=1A00h,AX=BF03h + +Bitfields for Compaq advanced video functionality: +Bit(s) Description (Table 00214) + 31 future graphics extensions (reserved, set to 0) + 30-16 reserved + 15-12 available video memory in 256K blocks, less one (0000 = 256K, etc.) + 11-8 reserved + 7 QVision modes supported + 6 Advanced VGA modes supported + 5 Accelerated VGA modes supported + 4 standard VGA modes supported + 3-2 reserved + 1 132-column modes supported + 0 reserved +--------b-10BF12----------------------------- +INT 10 - VIDEO - Compaq Extensions - NEW ACTIVE MONITOR + AX = BF12h + BH reserved + BL = function mask (see #00215) +Return: CF clear +Notes: this function is a NOP if the VGA subsystem is inactive or the current + Display Combination Code is 10h or higher + supported by at least the QVision board and the LTE Lite and ProSignia + ROM BIOSes +SeeAlso: AX=BF01h,AX=BF02h,#00733 + +Bitfields for function mask: +Bit(s) Description (Table 00215) + 7 command mode + if set, bits 1 and 0 make the monitor active when set + if clear, bits 1 and 0 toggle the monitor's state when set + 6-2 reserved + 1 internal monitor + 0 external monitor +--------b-10BF13----------------------------- +INT 10 - VIDEO - Compaq QVision - GAMMA CORRECTION + AX = BF13h + BL = subfunction + 00h load gamma correction table for true-color mode + DS = BIOS data segment + 01h set palette RAM bypass + BH = 00h +Return: nothing +Note: these functions must be called after a video mode set, and are in + effect only for the current video mode +SeeAlso: #00733 +--------V-10BFA0BXADAD----------------------- +INT 10 - VIDEO - Compaq ADAPT.COM - INSTALLATION CHECK + AX = BFA0h + BX = ADADh +Return: AX = BDBDh if newer ADAPT.COM installed + BX = BCD version (BH = major, BL = minor) + CL = ??? + CH = ??? + DL = ??? + AX = ADADh if older version of ADAPT.COM installed +Program: ADAPT is Compaq's Advanced Display Attribute Programming Tool, an + optionally-resident utility for setting display colors and cursor + size; when resident, it also includes a screen blanker +SeeAlso: AX=BFA1h,AX=BFA2h,AX=DFA5h +Index: screen saver;ADAPT +--------V-10BFA1----------------------------- +INT 10 - VIDEO - Compaq ADAPT.COM - GET ??? + AX = BFA1h +Return: AX = BDBEh if supported + CH = current value of ??? + DL = current value of ??? +SeeAlso: AX=BFA0h,AX=BFA2h +--------V-10BFA2----------------------------- +INT 10 - VIDEO - Compaq ADAPT.COM - SET ??? + AX = BFA2h + CH = new value for ??? + DL = new value for ??? +Return: AX = BDBEh if supported +SeeAlso: AX=BFA0h,AX=BFA1h +--------A-10C0------------------------------- +INT 10 - CU Writer v1.4 - GO TO TEXT ROW AND COLUMN + AH = C0h + ??? +Return: ??? +SeeAlso: AH=B1h,AH=C1h,AH=C2h,AH=C3h,AH=C4h +--------V-10C000----------------------------- +INT 10 - S3 SpeedUp v3.00+ - INSTALLATION CHECK + AX = C000h +Return: AX = FFFFh if installed + DX = version number (binary, DH=major, DL=minor) + BX = resident code segment +Program: S3SPDUP is a freeware TSR by Dietmar Meschede to improve the speed + of chained video modes (both VESA and VGA Mode 13) on S3-chipset + video cards +SeeAlso: AX=C001h,AX=C002h,AX=C003h,AX=D000h"S3VBE" +--------V-10C001----------------------------- +INT 10 - S3 SpeedUp v3.00+ - GET ACTIVE OPTIONS + AX = C001h +Return: AX = FFFFh if function supported + BX = currently active options (see #00216) +SeeAlso: AX=C000h,AX=C002h,AX=C003h + +Bitfields for S3SpeedUp options: +Bit(s) Description (Table 00216) + 0 speed up banked VESA modes + 1 speed up 320x200 VGA mode 13 +SeeAlso: #00222 +--------V-10C002----------------------------- +INT 10 - S3 SpeedUp v3.00+ - SET ACTIVE OPTIONS + AX = C002h + BX = new value for active options (see #00216) +Return: AX = FFFFh if function supported +SeeAlso: AX=C000h,AX=C001h,AX=C003h,AX=D003h"S3VBE" +--------V-10C003----------------------------- +INT 10 - S3 SpeedUp v3.10+ - GET FLAGS + AX = C003h +Return: AX = FFFFh if function supported + BX = flags + bit 0: SpeedUp is active + bit 1: Windows run after SpeedUp +SeeAlso: AX=C000h,AX=C001h,AX=C002h,AX=D005h"S3VBE" +--------V-10C004----------------------------- +INT 10 - S3 SpeedUp v3.10+ - RESERVED FUNCTIONS + AX = C004h-C0FFh +Return: AX = 5555h +SeeAlso: AX=C000h +--------A-10C1------------------------------- +INT 10 - CU Writer v1.4 - OUTPUT TEXT + AH = C1h + ??? +Return: ??? +SeeAlso: AH=C0h,AH=C2h,AH=C3h,AH=C4h +--------A-10C2------------------------------- +INT 10 - CU Writer v1.4 - REVERSE TEXT + AH = C2h + ??? +Return: ??? +SeeAlso: AH=C0h,AH=C1h,AH=C3h,AH=C4h +--------A-10C3------------------------------- +INT 10 - CU Writer v1.4 - TEXT BAR + AH = C3h + ??? +Return: ??? +SeeAlso: AH=C0h,AH=C1h,AH=C4h +--------A-10C4------------------------------- +INT 10 - CU Writer v1.4 - TEXT MENU + AH = C4h + ??? +Return: ??? +SeeAlso: AH=C0h,AH=C1h,AH=C3h,AH=D0h +--------V-10CB00----------------------------- +INT 10 - UNCHAIN - SAVE CURRENT VGA REGISTERS + AX = CB00h +Note: combined with AX=CB06h, this function permits the use of video mode + 13h together with the VGA's unchained mode +SeeAlso: AX=CB06h,AX=CBFFh +--------V-10CB01----------------------------- +INT 10 - UNCHAIN - UPDATE PAGE 1 OFFSET + AX = CB01h + BX = offset of page 1 +Return: nothing +Desc: inform UNCHAIN of the location of video page 1 in video memory; the + default is 0000h +SeeAlso: AX=CB02h,AX=CB03h,AX=CB04h,AX=CBFFh +--------V-10CB02----------------------------- +INT 10 - UNCHAIN - UPDATE PAGE 2 OFFSET + AX = CB02h + BX = offset of page 2 +Return: nothing +Desc: inform UNCHAIN of the location of video page 2 in video memory; the + default is 3E80h (16000, for 320x200) +SeeAlso: AX=CB00h,AX=CB01h,AX=CB03h,AX=CB04h +--------V-10CB03----------------------------- +INT 10 - UNCHAIN - UPDATE PAGE 3 OFFSET + AX = CB03h + BX = offset of page 3 +Return: nothing +Desc: inform UNCHAIN of the location of video page 3 in video memory; the + default is 7D00h (32000, for 320x200) +SeeAlso: AX=CB01h,AX=CB02h,AX=CB04h +--------V-10CB04----------------------------- +INT 10 - UNCHAIN - UPDATE PAGE 4 OFFSET + AX = CB04h + BX = offset of page 4 +Return: nothing +Desc: inform UNCHAIN of the location of video page 4 in video memory; the + default is BB80h (48000, for 320x200) +SeeAlso: AX=CB01h,AX=CB02h,AX=CB03h,AX=CB05h +--------V-10CB05----------------------------- +INT 10 - UNCHAIN - SAVE PALETTE + AX = CB05h +Return: nothing +SeeAlso: AX=CB00h,AX=CB06h +--------V-10CB06----------------------------- +INT 10 - UNCHAIN - RESTORE VGA REGISTERS + AX = CB06h +Return: nothing +SeeAlso: AX=CB00h,AX=CB05h,AX=CBFFh +--------V-10CBFF----------------------------- +INT 10 - UNCHAIN - INSTALLATION CHECK + AX = CBFFh +Return: AX = CCBBh if installed +Program: UNCHAIN is a TSR by Colin Buckley which permits use of Borland + development tools with Mode X video in the absence of a second + monitor +SeeAlso: AX=CB00h,AX=CB01h,AX=CB06h +--------V-10CC00----------------------------- +INT 10 - VIDEO - UltraVision - GET STATUS (INSTALLATION CHECK) + AX = CC00h + SI = magic value 0000h (if checking version) +Return: CX = product signature + ABCDh UltraVision + 5546h ('UF') UltraFont + AL = Ultravision extensions + 00h enabled + FFh disabled + AH = card designator + BX:00F0h -> palette values (for compatibility with NEWFONT) + DX = support for high resolution modes + 00h not active + 01h active + SI = UltraVision version number (v1.2+), high byte=major,low byte=minor + unchanged for versions <1.2 +Note: UltraFont is a simplified version of UltraVision for Toshiba; + only the signature in CX and the status in AL will be returned +SeeAlso: AX=CC01h,AX=CC02h +--------V-10CC01----------------------------- +INT 10 - VIDEO - UltraVision - DISABLE EXTENSIONS + AX = CC01h +Return: nothing +Notes: subsequent BIOS calls will be passed through to previous handler + should be followed immediately by mode set to restore normal EGA/VGA + state +SeeAlso: AX=CC02h +--------V-10CC02----------------------------- +INT 10 - VIDEO - UltraVision - ENABLE EXTENSIONS + AX = CC02h +Return: nothing +Note: should be followed immediately by mode set to restore previous + UltraVision state +SeeAlso: AX=CC01h +--------U-10CCAB----------------------------- +INT 10 - HiFont - INSTALLATION CHECK + AX = CCABh +Return: AX = ABCCh +Program: HiFont is a 8x19 font driver for standard VGA by Solar Designer +--------V-10CD00----------------------------- +INT 10 - VIDEO - UltraVision - LOAD ULTRAVISION PALETTE (color EGA,VGA) + AX = CD00h + CL = palette table number (01h-07h for v1.x, 01h-0Fh for v2+) + DS:DX -> 16-byte palette register list (colors for registers 00h-0Fh) +Return: nothing +Notes: if palette locking is in effect for the current mode, the new colors + will be displayed immediately; otherwise, the system reverts to the + default palette + palette table 0 is reserved for the default palette and cannot be set + UltraVision always sets the border color to black +SeeAlso: AX=CD01h,AX=CD02h +--------V-10CD01----------------------------- +INT 10 - VIDEO - UltraVision - SET PALETTE LOCKING STATUS (color EGA,VGA) + AX = CD01h + CL = palette locking value + 00h none + 01h text modes only (02h,03h) + FFh all modes (all standard color text and graphics modes) +Return: nothing +Notes: intended for video modes with 16 or fewer colors +SeeAlso: AX=1000h,AX=1002h,AX=CD00h,AX=CD03h +--------V-10CD02----------------------------- +INT 10 - VIDEO - UltraVision - GET ULTRAVISION PALETTE (EGA,VGA) + AX = CD02h +Return: CL = palette table number + DS:DX -> 17-byte palette register list (see #00217) + DS:SI -> current font names table (see #00218,#00219) +Note: only the font names are valid on monochrome EGA systems +SeeAlso: AX=1009h,AX=CD00h + +Format of UltraVision palette register list: +Offset Size Description (Table 00217) + 00h 16 BYTEs colors for palette registers 00h through 0Fh + 10h BYTE border color + +Format of UltraVision v2+ current font names table: +Offset Size standard EGA HiRes EGA VGA (Table 00218) + 00h 8 BYTEs N/A F19 font F20 font + 08h 8 BYTEs F14 font F14 font F14 font + 10h 8 BYTEs N/A F11 font F10 font + 18h 8 BYTEs F8 font F8 font F8 font + +Format of UltraVision v1.x current font names table: +Offset Size HiRes EGA (Table 00219) + 00h 8 BYTEs F19/F14 font + 08h 8 BYTEs F11/F8 font +--------V-10CD03----------------------------- +INT 10 - VIDEO - UltraVision - GET PALETTE LOCKING STATUS (color EGA,VGA) + AX = CD03h +Return: CL = palette locking value + 00h none + 01h text modes only + FFh all modes +SeeAlso: AX=CD01h +--------V-10CD04----------------------------- +INT 10 - VIDEO - UltraVision - GET UltraVision TEXT MODE (EGA,VGA) + AX = CD04h +Return: AL = mode number (see #00220) +SeeAlso: AH=0Fh,AX=CC00h,AH=CDh + +(Table 00220) +Values for UltraVision video mode number: + 11h 80x25 + 12h 80x43, 80x50 + 13h 80x34, 80x36 + 14h 80x60, 80x63 + 19h 94x25 + 1Ah 94x43, 94x50 + 1Bh 94x36 + 1Ch 94x63 + 21h 108x25 + 22h 108x43, 108x50 + 23h 107x34, 108x36 + 24h 108x60, 108x63 + 31h 120x25 + 32h 120x43, 120x50 + 33h 132x25 + 34h 132x44, 132x50 + 39h 120x36 + 3Ah 120x63 + 3Bh 132x36 + 3Ch 132x60 +Index: video modes;UltraVision +--------V-10CD05----------------------------- +INT 10 - VIDEO - UltraVision - SET CURSOR TYPE (EGA,VGA) + AX = CD05h + CL = type + 00h line cursor + FFh box cursor +Return: nothing +Note: sets default cursor type for text-based programs +SeeAlso: AH=01h,AX=CD06h +--------V-10CD06----------------------------- +INT 10 - VIDEO - UltraVision - GET CURSOR TYPE (EGA,VGA) + AX = CD06h +Return: CL = type + 00h line cursor + FFh box cursor +SeeAlso: AH=03h,AX=CD05h +--------V-10CD07----------------------------- +INT 10 - VIDEO - UltraVision v1.2+ - SET UNDERLINE STATUS (EGA,VGA) + AX = CD07h + CL = hardware underline status (see #00221) + BL = foreground color for normal text (FFh = current) + BH = foreground color for bright text (FFh = current) +Return: CL = hardware underline status + BL = current foreground color for normal text + BH = current foreground color for bright text +Notes: when underline or strikeout is enabled in color text modes, the + specified colors will be assigned temporarily to colors 01h and 09h, + allowing affected text to match non-underlined text. The color + remapping uses values from the current onscreen palette regardless + of the palette locking status (see AX=CD01h) + specify the standard colors (BL=01h,BH=09h) to enable underline or + strikeout without color remapping +SeeAlso: AX=CD08h + +(Table 00221) +Values for hardware underline status: + 00h off (color systems only) + 01h underline below characters + 02h strike through characters +--------V-10CD08----------------------------- +INT 10 - VIDEO - UltraVision v1.2+ - GET UNDERLINE STATUS (EGA,VGA) + AX = CD08h +Return: CL = hardware underline status (see #00221) + BL = foreground color for normal text + BH = foreground color for bright text +Note: only CL is valid on monochrome EGA systems +SeeAlso: AX=CD07h +--------V-10CD0F----------------------------- +INT 10 - VIDEO - UltraVision - GET POINTER TO ??? (EGA,VGA) + AX = CD0Fh +Return: DS:DI -> pointer to ??? +Note: This gets called by DR DOS "Panther" SECURITY. SECURITY also issues a + number of calls to the other UltraVision functions in the AH=CCh and + AH=CDh range, and carefully checks signatures. +SeeAlso: AX=1100h,AX=1103h +--------V-10CD10----------------------------- +INT 10 - VIDEO - UltraVision - LOAD USER FONT (EGA,VGA) + AX = CD10h + BH = bytes per character (08h,0Ah,0Bh,0Eh,13h,14h) + CX = ABCDh load 9xN alternate font (v2+) + else number of characters to load + DX = character offset into font table + DS:SI -> 8-byte ASCII font name + ES:BP -> font definitions +Return: AX = FFFFh if invalid font parameters +Notes: loads the designated characters into UltraVision's resident font area + should be followed by a video mode set to reload character generator +SeeAlso: AX=1100h,AX=1103h +--------V-10CD------------------------------- +INT 10 - VIDEO - UltraVision - SET ULTRAVISION TEXT MODE (EGA,VGA) + AH = CDh + AL = text mode number (see #00220) +Return: AX = CDCDh if invalid mode +SeeAlso: AX=CD04h +--------A-10D0------------------------------- +INT 10 - CU Writer v1.4 - LOAD PICTURE + AH = D0h + ??? +Return: ??? +SeeAlso: AH=B0h"CU Writer",AH=C4h +--------V-10D0------------------------------- +INT 10 U - VIDEO - HP 100LX/200LX - SET ZOOM MODE + AH = D0h + AL = zoom mode + 02h 80x25 mono + 03h 80x25 color + 80h 64x18 mono + 81h 64x18 color + 82h 40x25 mono + 83h 40x25 color + 84h 40x16 mono + 85h 40x16 color +Return: nothing +Note: zoom mode can only be changed within zoom modes of the same color + scheme; if needed, set to mono/color with AH=00h,AL=02h/03h; with + mono video modes AL=07h or AL=21h only 80x25 and 40x16 will work + the current zoom mode is stored in the BIOS data area at 0040h:009Fh +SeeAlso: AH=D1h,AH=D4h +--------V-10D000----------------------------- +INT 10 - S3VBE/Core2.0 v3.00+ - INSTALLATION CHECK + AX = D000h +Return: AX = FFFFh if installed + BX = resident code segment + DX = version (binary, DH = major, DL = minor) +Program: S3VBE/Core2.0 is a freeware TSR by Dietmar Meschede to provide + VESA 2.0 services on S3-based video cards with VESA 1.2 BIOS +SeeAlso: AX=D001h"S3VBE",AX=D002h"S3VBE",AX=D003h"S3VBE",AX=D005h"S3VBE" +--------V-10D001----------------------------- +INT 10 - S3VBE/Core2.0 v3.00+ - GET ACTIVE OPTIONS + AX = D001h +Return: AX = FFFFh if supported + BX = currently active options (see #00222) +SeeAlso: AX=D000h"S3VBE",AX=D002h"S3VBE" + +Bitfields for S3VBE options: +Bit(s) Description (Table 00222) + 0 VESA VBE v2.0 extensions enabled + 1 linear frame buffer enabled + 2 low-resolution video mode support enabled + 8 never clear video memory during VBE mode set (v3.10+) +---debug options--- + 12 report VBE version 1.2 (v3.10+) + 13 always fail AX=4F0Ah (v3.10+) + 14 don't copy video mode list (v3.12+) +SeeAlso: #00216 +--------V-10D002----------------------------- +INT 10 - S3VBE/Core2.0 v3.00+ - SET ACTIVE OPTIONS + AX = D002h + BX = new active options (see #00222) +Return: AX = FFFFh if supported +SeeAlso: AX=D000h"S3VBE",AX=D001h"S3VBE" +--------V-10D003----------------------------- +INT 10 U - S3VBE/Core2.0 v3.10+ - GET VBE/Core CAPABILITIES + AX = D003h +Return: AX = FFFFh if supported + BX = capabilities + bit 0: SpeedUp = activate/deactivate linear addressing at + A0000h for VBE functions 04h/05h +SeeAlso: AX=D000h"S3VBE",AX=D001h"S3VBE",AX=D004h"S3VBE",AX=D005h"S3VBE" +--------V-10D004----------------------------- +INT 10 U - S3VBE/Core2.0 v3.10+ - ACTIVATE SPEED-UP + AX = D004h +Return: AX = FFFFh if supported + BX = status + 0000h SpeedUp activated + 0001h SpeedUp not possible (wrong memory organization for mode) + 0002h SpeedUp not possible (linear frame buffer active) +Note: called by S3 SpeedUp (see AX=C000h) +SeeAlso: AX=C000h"SpeedUp",AX=D000h"S3VBE",AX=D003h"S3VBE",AX=D005h"S3VBE" +--------V-10D005----------------------------- +INT 10 U - S3VBE/Core2.0 v3.10+ - DEACTIVATE SPEED-UP + AX = D005h +Return: AX = FFFFh if supported + BX = status + 0000h SpeedUp deactivated + 0001h SpeedUp not possible (wrong memory organization for mode) + 0002h SpeedUp not possible (linear frame buffer active) +Notes: called by S3 SpeedUp (see AX=C000h) + functions 06h-FFh (e.g. AX=D006h-D0FFh) are considered reserved by + v3.10+ and return AX=5555h +SeeAlso: AX=C000h"SpeedUp",AX=D000h"S3VBE",AX=D003h"S3VBE",AX=D004h"S3VBE" +--------V-10D1------------------------------- +INT 10 U - VIDEO - HP 100LX/200LX - INTERNAL - ??? + AH = D1h + AL = 01h +Return: ??? +Note: called by AH=D0h +SeeAlso: AH=D0h,AH=D4h +--------V-10D4------------------------------- +INT 10 U - VIDEO - HP 100LX/200LX - INTERNAL - ??? + AH = D4h + AL = 29h +Return: ??? +Note: called by AH=D0h +SeeAlso: AH=D0h,AH=D1h +--------V-10D5------------------------------- +INT 10 - Netroom SCRNCLK - ??? + AH = D5h + ??? +Return: ??? +Program: SCRNCLK is a "cloaked" screen accelerator included with Netroom +--------t-10DAAD----------------------------- +INT 10 - TSRUNIT v1.10 - INSTALLATION CHECK + AX = DAADh + BX = check signature (different for each TSR) + CX = 0000h +Return: CX = return signature (nonzero) if installed + ES = program segment prefix +Program: TSRUNIT is a Turbo Pascal unit for creating TSRs by Nir Sofer +--------V-10DFA5----------------------------- +INT 10 U - VIDEO - Compaq ADAPT.COM - GET ??? DATA AREA + AX = DFA5h +Return: AX = BDBFh if supported + ES:DI -> ??? data area + BX = ES +SeeAlso: AX=BFA0h +--------V-10EE------------------------------- +INT 10 - VIDEO - IBM "Private" Function + AH = EEh +SeeAlso: INT 13/AH=FFh"IBM" +--------V-10EF------------------------------- +INT 10 - VIDEO - MSHERC.COM - GET VIDEO ADAPTER TYPE AND MODE + AH = EFh +Return: DL = video adapter type + 00h original Hercules + 01h Hercules Plus (port 03BAh reads x001xxxxx) + 02h Hercules InColor (port 03BAh reads x101xxxxx) + FFh not a Hercules-compatible card (port 03BAh bit 7 not pulsing) + DH = memory mode byte + 00h "half" mode + 01h "full" mode + FFh not a Hercules-compatible card +Program: MSHERC.COM/QBHERC.COM is a support program for the Microsoft Quick + languages which makes their graphics libraries compatible with a + Hercules card by adding video modes 08h and 88h, and supporting + text in the new graphics modes. +Notes: while in mode 08h or 88h, INT 10 supports the Hercules card much like + a CGA. + MSHERC performs an installation check by setting DL=FFh and testing + whether it has been changed on return, which causes it to reinstall + itself when no HGC is present (or HGC emulation has temporarily been + disabled); a better installation check would be to use DX=80FFh and + check whether DX has been changed + reportedly returns DH=00h on some not-entirely-Hercules-compatible + cards +Index: installation check;MSHERC +--------V-10F0------------------------------- +INT 10 - EGA Register Interface Library - READ ONE REGISTER + AH = F0h + BL = register number + BH = 00h + DX = group index (see #00223) +Return: BL = data +Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2 + compatibility box, and others; it is used for software virtualization + of write-only registers on an EGA video adapter, so that multiple + programs may peacefully coexist without clobbering each other's + display settings +SeeAlso: AH=F1h"EGA",AH=F2h"EGA",AH=FAh"EGA",INT 2F/AX=BC00h + +(Table 00223) +Values for group index: + Pointer/data chips + 00h CRT Controller (25 reg) 3B4h mono modes, 3D4h color modes + 08h Sequencer (5 registers) 3C4h + 10h Graphics Controller (9 registers) 3CEh + 18h Attribute Controller (20 registers) 3C0h + Single registers + 20h Miscellaneous Output register 3C2h + 28h Feature Control register (3BAh mono modes, 3DAh color modes) + 30h Graphics 1 Position register 3CCh + 38h Graphics 2 Position register 3CAh +--------V-10F0------------------------------- +INT 10 - VHRBIOS.SYS - INSTALLATION CHECK + AH = F0h +Return: BX = 4F4Bh ('OK') +Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius" + black&white A4/portrait monitor +SeeAlso: AH=F1h"VHRBIOS.SYS",AH=F2h"VHRBIOS.SYS",AH=F4h"VHRBIOS.SYS" +SeeAlso: AH=96h"VHRBIOS.SYS" +--------V-10F1------------------------------- +INT 10 - EGA Register Interface Library - WRITE ONE REGISTER + AH = F1h + DX = group index (see #00223) + if single register: + BL = value to write + otherwise + BL = register number + BH = value to write +Return: BL = data +Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2 + compatibility box, and others +SeeAlso: AX=7F05h,AH=F0h"EGA",AH=F3h"EGA",AH=FAh"EGA" +--------V-10F1------------------------------- +INT 10 - VHRBIOS.SYS - SET REVERSE VIDEO + AH = F1h + AL = new video state + (bit 5 set for black text on white, clear for white on black) +Return: ??? +Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius" + black&white A4/portrait monitor +SeeAlso: AH=F0h"VHRBIOS.SYS",AH=F3h"VHRBIOS.SYS" +--------V-10F2------------------------------- +INT 10 - EGA Register Interface Library - READ REGISTER RANGE + AH = F2h + CH = starting register number + CL = number of registers (>1) + DX = group index (00h,08h,10h,18h) (see #00223) + ES:BX -> buffer, CL bytes +Return: nothing +Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2 + compatibility box, and others +SeeAlso: AH=F0h"EGA",AH=F3h"EGA",AH=FAh"EGA" +--------V-10F2------------------------------- +INT 10 - VHRBIOS.SYS - ??? + AH = F2h +Return: ??? +Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius" + black&white A4/portrait monitor +SeeAlso: AH=F0h"VHRBIOS.SYS",AH=F4h"VHRBIOS.SYS" +--------V-10F3------------------------------- +INT 10 - EGA Register Interface Library - WRITE REGISTER RANGE + AH = F3h + CH = starting register + CL = number of registers (>1) + DX = group index (00h,08h,10h,18h) (see #00223) + ES:BX -> buffer, CL bytes +Return: nothing +Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2 + compatibility box, and others +SeeAlso: AX=7F05h,AH=F1h"EGA",AH=F2h"EGA",AH=F4h"EGA" +--------V-10F3------------------------------- +INT 10 - VHRBIOS.SYS - SWITCH BETWEEN DUAL MONITORS??? + AH = F3h +Return: ??? +Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius" + black&white A4/portrait monitor +SeeAlso: AH=F0h"VHRBIOS.SYS",AH=F4h"VHRBIOS.SYS",AH=F6h"VHRBIOS.SYS" +--------V-10F4------------------------------- +INT 10 - EGA Register Interface Library - READ REGISTER SET + AH = F4h + CX = number of registers to read (>1) + ES:BX -> table of register records (see #00224) +Return: register values in table filled in +Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2 + compatibility box, and others +SeeAlso: AH=F0h"EGA",AH=F2h"EGA",AH=F5h"EGA" + +Format of EGA RIL entries in table of register records: +Offset Size Description (Table 00224) + 00h WORD group index + Pointer/data chips + 00h CRTC (3B4h mono modes, 3D4h color modes) + 08h Sequencer 3C4h + 10h Graphics Controller 3CEh + 18h Attribute Controller 3C0h + Single registers + 20h Miscellaneous Output register 3C2h + 28h Feature Control register (3BAh mono modes, 3DAh color) + 30h Graphics 1 Position register 3CCh + 38h Graphics 2 Position register 3CAh + 02h BYTE register number (0 for single registers) + 03h BYTE register value +--------V-10F4------------------------------- +INT 10 - VHRBIOS.SYS - GET VERSION + AH = F4h +Return: AX = driver version (AH = major, AL = minor) +Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius" + black&white A4/portrait monitor +SeeAlso: AH=F0h"VHRBIOS.SYS",AH=F5h"VHRBIOS.SYS" +--------V-10F5------------------------------- +INT 10 - EGA Register Interface Library - WRITE REGISTER SET + AH = F5h + CX = number of registers to write (>1) + ES:BX -> table of records (see #00224) +Return: nothing +Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2 + compatibility box, and others +SeeAlso: AX=7F05h,AH=F1h"EGA",AH=F3h"EGA",AH=F4h"EGA" +--------V-10F5------------------------------- +INT 10 - VHRBIOS.SYS - GET VENDOR ID + AH = F5h +Return: AXBX = vendor ID (4D44h:5349h = 'MDSI' for Micro Display Systems Inc.) +Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius" + black&white A4/portrait monitor +SeeAlso: AH=F0h"VHRBIOS.SYS",AH=F4h"VHRBIOS.SYS",AH=F6h"VHRBIOS.SYS" +--------V-10F6------------------------------- +INT 10 - EGA Register Interface Library - REVERT TO DEFAULT REGISTERS + AH = F6h +Return: nothing +Note: provided by the Microsoft Mouse driver, OS/2 compatibility box, and + others +SeeAlso: AH=F5h"EGA",AH=F7h"EGA" +--------V-10F6------------------------------- +INT 10 - VHRBIOS.SYS - GET INFO + AH = F6h + AL = what to get + 00h device driver state + Return: AX = device driver state + 01h video mode info + Return: AL = video mode + DH = screen height in rows + DL = screen width in columns +Program: VHRBIOS.SYS is a driver for the Micro Display Systems "TheGenius" + black&white A4/portrait monitor +SeeAlso: AH=F0h"VHRBIOS.SYS",AH=F4h"VHRBIOS.SYS",AH=96h"VHRBIOS.SYS +--------V-10F7------------------------------- +INT 10 - EGA Register Interface Library - DEFINE DEFAULT REGISTER TABLE + AH = F7h + DX = port number + Pointer/data chips + 00h CRTC (3B4h mono modes, 3D4h color modes) + 08h Sequencer 3C4h + 10h Graphics Controller 3CEh + 18h Attribute Controller 3C0h + Single registers + 20h Miscellaneous Output register 3C2h + 28h Feature Control register (3BAh mono modes, 3DAh color modes) + 30h Graphics 1 Position register 3CCh + 38h Graphics 2 Position register 3CAh + ES:BX -> table of one-byte entries, one byte to be written to each + register +Return: nothing +Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2 + compatibility box, and others +SeeAlso: AH=F0h"EGA",AH=F6h"EGA" +--------V-10FA--BX0000----------------------- +INT 10 - EGA Register Interface Library - INTERROGATE DRIVER + AH = FAh + BX = 0000h +Return: BX = 0000h if RIL driver not present + ES:BX -> EGA Register Interface version number, if present: + byte 0 = major release number + byte 1 = minor release number +Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2 + compatibility box, and others +SeeAlso: AH=F0h"EGA",AH=F6h"EGA",INT 2F/AX=BC00h +--------K-10FA------------------------------- +INT 10 - FASTBUFF.COM - INSTALLATION CHECK + AH = FAh +Return: AX = 00FAh if installed + ES = segment of resident code +Program: FASTBUFF.COM is a keyboard speedup/screen blanking utility by David + Steiner +Index: screen saver;FASTBUFF +--------V-10FE------------------------------- +INT 10 - TopView - GET SHADOW BUFFER + AH = FEh + ES:DI -> assumed video buffer + B800h:0000h color text/CGA graphics, B000h:0000h mono text, + or A000h:0000h EGA/VGA graphics (RSIS environments only) +Return: ES:DI -> actual video buffer for calling process +Desc: Determine the address of the virtual screen to which the program + should write instead of the actual video memory; this permits + programs to be multitasked without interfering with each other's + output, and allows memory managers to move the video memory to + permit larger programs to be loaded. +Notes: if no multitasker or RSIS-compliant environment is installed, ES:DI is + returned unchanged; RSIS is the Relocated Screen Interface + Specification + for display pages other than 0, use AH=05h and AH=0Fh to determine + whether a particular page exists + TopView requires a call to AH=FFh to notify it that the screen has + changed; DESQview will check for changes itself until the first call + to AH=FFh +SeeAlso: AH=05h,AX=5201h,AH=FFh,INT 15/AX=1024h,INT 21/AH=2Bh"DESQview" +SeeAlso: INT 21/AH=ECh"DoubleDOS" +--------V-10FF------------------------------- +INT 10 - TopView - UPDATE SCREEN FROM SHADOW BUFFER + AH = FFh + CX = number of consecutive changed characters + ES:DI -> first changed character in shadow buffer +Return: nothing +Notes: avoid CX=0000h + DESQview will discontinue the automatic screen updating initiated by + AH=FEh after this call + not supported (ignored) by DESQview/X 1.0x +SeeAlso: AH=93h,AH=FEh +--------E-10FF------------------------------- +INT 10 - DJ GO32.EXE 80386+ DOS extender - VIDEO EXTENSIONS + AH = FFh + AL = video mode (see #00225) +Program: GO32.EXE is a DOS extender included as part of the 80386 port of the + GNU C/C++ compiler by DJ Delorie and distributed as DJGPP +SeeAlso: AH=00h,INT 21/AH=FFh"GO32" + +(Table 00225) +Values for GO32 video mode number: + 00h 80x25 text + 01h default text + 02h CXxDX text + 03h biggest text + 04h 320x200 graphics + 05h default graphics + 06h CXxDX graphics + 07h biggest non-interlaced graphics + 08h biggest graphics +Index: video modes;GO32 +--------V-10FF------------------------------- +INT 10 - VIDEO - Oak VGA BIOS v1.02+ - SET EMULATION + AH = FFh + AL = emulation + 43h ('C') CGA emulation + 45h ('E') EGA emulation + 4Dh ('M') Hercules emulation + 56h ('V') VGA emulation + ES:DI -> signature string "Calamity" +Return: VGA switched to suggested mode +SeeAlso: AH=00h,AX=007Fh/BH=00h,AX=007Fh/BH=02h,AX=5F01h +--------R-10FF00----------------------------- +INT 10 - CARBON COPY PLUS v5.0 - CHECK IF CC CONNECTED TO CCHELP + AX = FF00h +Return: BL = state + 00h not connected + 01h connected +SeeAlso: AX=FF01h,AX=FF02h +--------R-10FF01----------------------------- +INT 10 - CARBON COPY PLUS v5.0 - DISCONNECT AND RESET LINE + AX = FF01h +Return: nothing +SeeAlso: AX=FF00h,AX=FF02h +--------R-10FF02----------------------------- +INT 10 - CARBON COPY PLUS v5.0 - GET LAST PHONE NUMBER DIALED + AX = FF02h +Return: ES:DI -> ASCIZ phone number +SeeAlso: AX=FF00h,AX=FF01h +--------C-11--------------------------------- +INT 11 - CPU-generated (80486+) - ALIGNMENT CHECK +Desc: automatically generated by the CPU when the AC flag is set, the current + privilege level is 3, and a misaligned memory access (WORD not on an + even address or DWORD not on a multiple of 4) is made +Note: not all V86 monitors allow the AC flag to be set, such as Turbo + Debugger 386 +SeeAlso: INT 12"CPU" +--------B-11--------------------------------- +INT 11 - BIOS - GET EQUIPMENT LIST +Return: (E)AX = BIOS equipment list word (see #00226,#03215 at INT 4B"Tandy") +Note: since older BIOSes do not know of the existence of EAX, the high word + of EAX should be cleared before this call if any of the high bits + will be tested +SeeAlso: INT 4B"Tandy 2000",MEM 0040h:0010h + +Bitfields for BIOS equipment list: +Bit(s) Description (Table 00226) + 0 floppy disk(s) installed (number specified by bits 7-6) + 1 80x87 coprocessor installed + 3-2 number of 16K banks of RAM on motherboard (PC only) + number of 64K banks of RAM on motherboard (XT only) + 2 pointing device installed (PS) + 3 unused (PS) + 5-4 initial video mode + 00 EGA, VGA, or PGA + 01 40x25 color + 10 80x25 color + 11 80x25 monochrome + 7-6 number of floppies installed less 1 (if bit 0 set) + 8 DMA support installed (PCjr, Tandy 1400LT) + DMA support *not* installed (Tandy 1000's) + 11-9 number of serial ports installed + 12 game port installed + 13 serial printer attached (PCjr) + internal modem installed (PC/Convertible) + 15-14 number of parallel ports installed +---Compaq, Dell, and many other 386/486 machines-- + 23 page tables set so that Weitek coprocessor addressable in real mode + 24 Weitek math coprocessor present +---Compaq Systempro--- + 25 internal DMA parallel port available + 26 IRQ for internal DMA parallel port (if bit 25 set) + 0 = IRQ5 + 1 = IRQ7 + 28-27 parallel port DMA channel + 00 DMA channel 0 + 01 DMA channel 0 ??? + 10 reserved + 11 DMA channel 3 +Notes: Some implementations of Remote (Initial) Program Loader (RPL/RIPL) + don't set bit 0 to indicate a "virtual" floppy drive, although the + RPL requires access to its memory image through a faked drive A:. + This may have caused problems with releases of DOS 3.3x and earlier, + which assumed A: and B: to be invalid drives then and would discard + any attempts to access these drives. Implementations of RPL should + set bit 0 to indicate a "virtual" floppy. + The IBM PC DOS 3.3x-2000 IBMBIO.COM contains two occurences of code + sequences like: + INT 11h + JMP SHORT skip + DB 52h,50h,53h; "RPS" + skip: OR AX,1 + TEST AX,1 + While at the first glance this seems to be a bug since it just + wastes memory and the condition is always true, this could well be + a signature for an applyable patch to stop it from forcing AX bit 0 + to be always on. MS-DOS IO.SYS does not contain these signatures, + however. +BUGs: Some old BIOSes didn't properly report the count of floppy drives + installed to the system. In newer systems INT 13h/AH=15h can be + used to retrieve the number of floppy drives installed. + Award BIOS v4.50G and v4.51PG erroneously set bit 0 even if there are + no floppy drives installed; use two calls to INT 13/AH=15h to + determine whether any floppies are actually installed +SeeAlso: INT 12"BIOS",#03215 at INT 4B"Tandy 2000" +--------d-11----SI6A6A----------------------- +INT 11 - Columbia Data Products Standard Device Level Protocol (SDLP) 1.6 + SI = 6A6Ah + AH = command (see #00227) + AL = SCSI Addressing (see #00228) +Return: CF clear if successful + DI = 6A6Ah if AH=01h on entry (maybe for all functions???) + AH = ??? for command 01h + CF set on error + AL = error code +SeeAlso: INT 21/AX=4402h"ASPI" + +(Table 00227) +Values for SDLP command: + 00h SDLP initialization + 01h SDLP System Identify + 02h simple read sectors + 03h simple write sectors + 04h simple verify sectors/seek to sector + 05h get device size/type + 06h ready unit + 07h format unit + 08h diagnostics + 09h rewind + 0Ah erase + 0Bh write filemarks + 0Ch space + 0Dh prevent/allow media removal + 0Eh load/unload media + 0Fh reserved - returns good status + 10h set block size + 11h write setmark + 12h set error level + 13h get address of Request Sense Buffer + 14h get SDLP error via Request Sense + F0h Vendor Unique Function (WD7000-FASST2 only) + FDh reset current SCSI HAC + FEh get/set current SCSI HAC + FFh execute SCSI command + +Bitfields for SDLP SCSI addressing: +Bit(s) Description (Table 00228) + 7-6 Host Adapter + 5-3 SCSI Target ID + 2-0 SCSI Target LUN (logical unit number) +--------V-110225BX6900----------------------- +INT 11 - Blank-It Screen Blanker - INSTALLATION CHECK + AX = 0225h + BX = 6900h +Return: BL = 23h + ES:DI -> ASCIZ "BLNKIT" +Program: Blank-It is a resident screen blanker by Rhode Island Soft Systems, + Inc. +SeeAlso: AX=0225h/BX=6902h,AX=0225h/BX=6908h,AX=0225h/BX=6909h,INT 14/AX=AA01h +Index: screen saver;Blank-It +--------V-110225BX6901----------------------- +INT 11 - Blank-It Screen Blanker - SET TIMEOUT FOR SCREEN BLANKING + AX = 0225h + BX = 6901h + CX = timeout in timer ticks (18.2/second) or 0000h to disable timeout + largest value is 59 minutes (FBACh or 64428) +Return: CF clear if successful + DI = 6A6Ah (possibly also 6A6Ah for all following functions) + AH = ??? + CF set on error + AL = error code +SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6904h +Index: screen saver;Blank-It +--------V-110225BX6902----------------------- +INT 11 - Blank-It Screen Blanker - ENABLE THE SOFTWARE + AX = 0225h + BX = 6902h +Return: CF clear if successful + CF set on error + AL = error code +SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6903h +Index: screen saver;Blank-It +--------V-110225BX6903----------------------- +INT 11 - Blank-It Screen Blanker - DISABLE THE SOFTWARE + AX = 0225h + BX = 6903h +Return: CF clear if successful + CF set on error + AL = error code +SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6902h +Index: screen saver;Blank-It +--------V-110225BX6904----------------------- +INT 11 - Blank-It Screen Blanker - GET BLANKING TIMEOUT + AX = 0225h + BX = 6904h +Return: CF clear if successful + BX = timeout (see AX=0225h/BX=6901h) + CF set on error + AL = error code +SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6901h +Index: screen saver;Blank-It +--------V-110225BX6905----------------------- +INT 11 - Blank-It Screen Blanker - ENABLE WINDOWS COMPATIBILITY MODE + AX = 0225h + BX = 6905h +Return: CF clear if successful + CF set on error + AL = error code +SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6906h +Index: screen saver;Blank-It +--------V-110225BX6906----------------------- +INT 11 - Blank-It Screen Blanker - DISABLE WINDOWS COMPATIBILITY MODE + AX = 0225h + BX = 6906h +Return: CF clear if successful + CF set on error + AL = error code +Program: Blank-It is a resident screen blanker by Rhode Island Soft Systems, + Inc. +SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6905h +Index: screen saver;Blank-It +--------V-110225BX6907----------------------- +INT 11 - Blank-It Screen Blanker - UNBLANK THE SCREEN + AX = 0225h + BX = 6907h +Return: CF clear if successful + CF set on error + AL = error code +SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6908h +Index: screen saver;Blank-It +--------V-110225BX6908----------------------- +INT 11 - Blank-It Screen Blanker - BLANK THE SCREEN + AX = 0225h + BX = 6908h +Return: CF clear if successful + CF set on error + AL = error code +SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6907h +Index: screen saver;Blank-It +--------V-110225BX6909----------------------- +INT 11 - Blank-It Screen Blanker - SET HOTKEY FOR MANUAL BLANKING + AX = 0225h + BX = 6909h + CL = key scan code (see #00229) +Return: CF clear if successful + CF set on error + AL = error code +Program: Blank-It is a resident screen blanker by Rhode Island Soft Systems, + Inc. +SeeAlso: AX=0225h/BX=6900h +Index: screen saver;Blank-It|hotkeys;Blank-It + +(Table 00229) +Values for Blank-It hotkey scan code: + 00h No hot key + 1Dh Left CTRL + 2Ah Left Shift + 36h Right Shift + 57h F11 + 58h F12 +SeeAlso: #00006 +--------G-1105D7----------------------------- +INT 11 CU - Borland C++ IDE - INSTALLED CALLOUT + AX = 05D7h + BX = product ID (0088h) +Note: called by the BC++ IDE when an application calls + INT 12/AX=05D7h/BX=05D7h +SeeAlso: INT 12/AX=05D7h/BX=05D7h +Index: installation check;Borland C++ IDE +--------F-1177------------------------------- +INT 11 - RainbowFAX v1.3 - SFENGINE API - OPERATIONAL CONTROL + AH = 77h + AL = subfunction + 01h request SFENGINE start + Return: AX = 0001h + 02h check if SFENGINE started + Return: AX = 0000h or 0001h + 03h request SFENGINE stop + Return: AX = 0001h + 04h check if SFENGINE stopped + Return: AX = 0000h or 0001h + 05h installation check + Return: AX = 0001h + 06h uninstall??? + BX:DX -> return address for successful uninstall??? + Return: (at caller's address) + AX = 0000h + else + Return: AX = FFFFh (invalid subfunction) +Return: ES:DX -> ASCIZ signature string "SFAX ENGINE V1.0" + followed by internal data area??? +SeeAlso: AH=78h,AH=79h,AH=7Ah,AH=7Ch +Index: installation check;RainbowFAX|installation check;SFENGINE +Index: uninstall;RainbowFAX|uninstall;SFENGINE +--------F-1178------------------------------- +INT 11 - RainbowFAX v1.3 - SFENGINE API - ??? + AH = 78h + AL = subfunction + 01h set ??? + BX = new state for ??? + 0000h ??? + else ??? + Return: AX = 0001h + 02h set ??? + BX = ??? + CX = ??? + Return: AX = 0001h + 03h set ??? + BX = new state for ??? + 0000h ??? + else ??? + Return: AX = 0001h + else + Return: AX = FFFFh (invalid subfunction) +SeeAlso: AH=77h,AH=79h,AH=7Ah,AH=7Ch +--------F-1179------------------------------- +INT 11 - RainbowFAX v1.3 - SFENGINE API - ??? + AH = 79h + AL = subfunction + 01h set ??? flag + Return: AX = previous state (0000h already set, 0001h clear) + 02h clear ??? flag (refer to subfunc 01h) + Return: AX = 0001h + 03h set ??? flag (different from subfn 02h or 04h) + Return: AX = 0001h + 04h clear ??? flag (different from subfn 02h or 03h) + Return: AX = 0001h + else + Return: AX = FFFFh (invalid subfunction) +SeeAlso: AH=77h,AH=78h,AH=7Ah,AH=7Ch +--------F-117A------------------------------- +INT 11 - RainbowFAX v1.3 - SFENGINE API - ??? + AH = 7Ah + AL = subfunction + 01h set ??? flag + Return: AX = previous state (0000h already set, 0001h clear) + 02h clear ??? flag + Return: AX = 0001h + 03h set ??? flag (different from subfn 02h) + Return: AX = 0001h + else + Return: AX = FFFFh (invalid subfunction) +SeeAlso: AH=77h,AH=78h,AH=79h,AH=7Ch +--------F-117C01----------------------------- +INT 11 - RainbowFAX v1.3 - SFENGINE API - SET ??? FLAG + AX = 7C01h +Return: AX = 0001h +SeeAlso: AH=77h,AH=78h,AH=79h,AH=7Ah,AX=7C02h,AX=7C03h +--------F-117C02----------------------------- +INT 11 - RainbowFAX v1.3 - SFENGINE API - CLEAR ??? FLAG + AX = 7C02h +Return: AX = 0001h +SeeAlso: AH=77h,AH=78h,AH=79h,AH=7Ah,AX=7C01h,AX=7C03h +--------F-117C03----------------------------- +INT 11 - RainbowFAX v1.3 - SFENGINE API - UNSUPPORTED FUNCTIONS + AX = 7C03h-7CFFh +Return: AX = FFFFh +SeeAlso: AH=77h,AX=7C01h,AX=7C02h +--------S-11BC--DX1954----------------------- +INT 11 - BNU FOSSIL - INSTALLATION CHECK + AH = BCh + DX = 1954h +Return: AX = 1954h + ES:DX -> entry point of driver (instead of INT 14) +SeeAlso: INT 14/AH=04h"FOSSIL" +--------d-11FF--SI6A6A----------------------- +INT 11 - WD7000 SDLP interface - EXECUTE GENERIC SCSI COMMAND + AH = FFh + SI = 6A6Ah + AL = SCSI Addressing (see #00230) + CX = bytes of data to be transmitted (max FFF0h) + DH = 00h + DL = length of SCSI Command Descriptor Block + DS:DI -> SCSI Command Descriptor Block + ES:BX -> data buffer +Return: CF set on error + AL = error code + CF clear if successful +Note: because of busmaster operations with WD7000FASST avoid accessing + video memory directly; check 386 memory manager for VDS support. + The WD7000XTAT works with programmed IO and does not have this + limitation. +SeeAlso: INT 21/AX=4402h"ASPI",INT 2F/AX=7F01h + +Bitfields for SDLP SCSI addressing: +Bit(s) Description (Table 00230) + 2-0 SCSI Target LUN (logical unit number) + 5-3 SCSI Target ID + 7 write flag, set for write operations, clear otherwise +--------T-11FFFECXFFFE----------------------- +INT 11 - BACK&FORTH (before v1.62) API + AX = FFFEh + CX = FFFEh + BX = function + 00h installation check + Return: AX = installation state + 0001h BNFHIGH and BNFLOW both loaded + 0003h only BNFHIGH loaded + else neither loaded + 01h ??? + Return: DX:AX -> ??? + 02h ??? + 03h ??? + 04h ??? + 05h ??? switches current PSP segment and stack if BNFLOW has not + yet announced itself installed + 06h ??? + Return: AX = ??? +SeeAlso: INT 12/AX=FFFEh +Index: installation check;BACK&FORTH +--------B-12--------------------------------- +INT 12 - BIOS - GET MEMORY SIZE +Return: AX = kilobytes of contiguous memory starting at absolute address 00000h +Note: this call returns the contents of the word at 0040h:0013h; in PC and + XT, this value is set from the switches on the motherboard +SeeAlso: INT 11"BIOS",INT 2F/AX=4A06h,INT 4C"Tandy 2000",MEM 0040h:0013h +--------C-12--------------------------------- +INT 12 - CPU-generated (Pentium +) - MACHINE CHECK EXCEPTION +Notes: Intel documents this interrupt as CPU model-dependent + for current Pentium processors, the reason for the machine check + exception may be read from model-specific registers 00h and 01h + (described, for example, in Christian Ludloff's 4P package) + for Pentium Pro/II processors, the reason may be read from the + MCG_STATUS MSR (see MSR 0000017Ah) + this exception is enabled by bit 6 of CR4 +SeeAlso: INT 11"CPU",MSR 00000000h,MSR 00000001h,MSR 0000017Ah +--------K-12----CX1806----------------------- +INT 12 - KEYBUI v2.0+ - INSTALLATION CHECK + CX = 1806h +Return: AX = kilobytes of contiguous memory starting at absolute address 00000h + CX = 1960h if installed +Program: KEYBUI is a resident keyboard driver by Johan Zwiekhorst which allows + accented characters and box drawing on standard QWERTY keyboards; it + also provides break-to-DOS and screen blanking capabilities +SeeAlso: INT 14/AX=AA01h +Index: screen saver;KEYBUI +--------d-12----CX1807----------------------- +INT 12 - PARKER v2.0+ - INSTALLATION CHECK + CX = 1807h +Return: AX = kilobytes of contiguous memory starting at absolute address 00000h + CX = 1961h if installed +Program: PARKER is an optionally-resident hard disk parking program by Johan + Zwiekhorst +--------G-1205D7BX05D7----------------------- +INT 12 U - Borland C++ IDE - INSTALLATION CHECK + AX = 05D7h (1495d) + BX = 05D7h +Note: the BC++ IDE will call INT 11/AX=05D7h/BX=0088h if it is loaded +SeeAlso: INT 11/AX=05D7h +--------v-124350BX4920----------------------- +INT 12 C - CPI-standard virus - "FRIEND" CHECK + AX = 4350h + BX = 4920h + CX = AB46h + DX = 554Eh +Return: if friendly (not to be infected) + CX:DX -> ASCIZ identity code (changes yearly) +SeeAlso: INT 13/AX=EC00h"VIRUS",INT 13/AX=5001h,INT 21/AX=0B56h +--------T-12FFFECXFFFE----------------------- +INT 12 - Back&Forth v1.62+ - API + AX = FFFEh + CX = FFFEh + BX = function + 00h installation check + Return: AX = 0001h installed + else not loaded + 01h (reserved) + 02h build program ID list (shareware Back&Forth) + ES:DI -> buffer of at least 100 bytes, to be filled with words + Return: AX = number of programs defined + ES:DI buffer filled with AX words + 02h get memory statistics (Back&Forth Professional) + Return: AX = available swap memory, KBytes + BX = maximum task size, KBytes + DX = fixed overhead per task, excluding video/macro + storage + 03h switch to specified task (task need not be open yet) + DX = two-letter program ID + Return: AX = status + 0000h if task undefined + 0001h task switch will occur when safe + 04h (reserved) + 05h (reserved) + 06h get version (documented only for Back&Forth Professional) + Return: AX = version * 100 (v1.71 = 00ABh) + 07h spawn program (Back&Forth Professional only???) + ES:DI -> BF_SPAWN record (see #00232) + Return: AX = status + 0000h if no task handles free + 0001h spawn will occur when safe + 08h get open tasks (documented only for Back&Forth Professional) + ES:DI -> task info buffer (see #00231,#00233) + Return: AX = number of open tasks (max 20) + Note: the supplied buffer must be large enough to hold 21 + task entries + 09h (reserved) + ---Back&Forth Professional--- + 0Ah get active clipboard filename + Return: DX:AX -> ASCIZ clipboard filename + 0Bh get active task number + AX = active task number (00h-13h) + BX = number of tasks allocated + DX = maximum number of tasks + 0Ch (reserved) + 0Dh (reserved) + 0Eh (reserved) + 0Fh stuff string into keyboard buffer + ES:DI -> ASCIZ string to be stuffed + Return: nothing + 10h check if in graphics mode + Return: AX = state + 0000h color text mode + 0004h mono text mode + FFFFh graphics mode + 11h get Back&Forth Professional user number + Return: AX = user number (0000h-00FFh) + 12h switch task by task number + DX = task number + Return: AX = status + 0000h attempted to switch to active task + 0001h task switch will occur when safe + FFFFh invalid task number + 13h delete (kill) task + DX = task number + Return: AX = status + 0000h attempted to delete the active task + 0001h successfully deleted + FFFFh invalid task number + Note: the active task number will change if the deleted task + was lower in the task list than the active task + 14h get next available task handle + Return: AX = next available task handle + FFFFh if task table is full +Program: Back & Forth is a task switcher by Progressive Solutions, Inc. +SeeAlso: INT 11/AX=FFFEh +Index: installation check;BACK&FORTH + +Format of Back&Forth task info buffer: +Offset Size Description (Table 00231) + 00h 21 BYTEs ASCIZ task name + 15h BYTE hotkey shift state (as for INT 16/AH=02h) + 16h WORD hotkey scan code (see also #00006) + 18h WORD program ID +Index: hotkeys;Back&Forth +SeeAlso: #00232,#00233 + +Format of Back&Forth Professional BF_SPAWN record: +Offset Size Description (Table 00232) + 00h 21 BYTEs task description + 15h BYTE flag: disable hotkeys + 16h WORD environment size in bytes + 18h BYTE hotkey shift flags + 19h WORD hotkey scancode + 1Bh WORD maximum number of EMS pages + 1Dh WORD required memory in KBytes + 1Fh 3 BYTEs DESQview-style two-letter program ID + 22h 13 BYTEs base name of program to be run (no path or extension) + 2Fh 66 BYTEs directory from which to start program + 71h 66 BYTEs initial current directory for program +SeeAlso: #00231,#00233 + +Format of Back&Forth Professional BF_TASK record: +Offset Size Description (Table 00233) + 00h DWORD Unix-style task start time (seconds since 1970/1/1) + 04h 21 BYTEs task description + 19h DWORD elapsed time in task (seconds) + 1Dh WORD task ID + 1Fh BYTE task hotkey keyboard flags + 20h WORD task hotkey scan code (see also #00006) + 22h DWORD time task was suspended/exited + 26h WORD task handle +SeeAlso: #00231,#00232 +--------B-1300------------------------------- +INT 13 - DISK - RESET DISK SYSTEM + AH = 00h + DL = drive (if bit 7 is set both hard disks and floppy disks reset) +Return: AH = status (see #00234) + CF clear if successful (returned AH=00h) + CF set on error +Note: forces controller to recalibrate drive heads (seek to track 0) + for PS/2 35SX, 35LS, 40SX and L40SX, as well as many other systems, + both the master drive and the slave drive respond to the Reset + function that is issued to either drive +SeeAlso: AH=0Dh,AH=11h,INT 21/AH=0Dh,INT 4D/AH=00h"TI Professional" +SeeAlso: INT 56"Tandy 2000",MEM 0040h:003Eh +--------B-1301------------------------------- +INT 13 - DISK - GET STATUS OF LAST OPERATION + AH = 01h + DL = drive (bit 7 set for hard disk) +Return: CF clear if successful (returned status 00h) + CF set on error + AH = status of previous operation (see #00234) +Note: some BIOSes return the status in AL; the PS/2 Model 30/286 returns the + status in both AH and AL +SeeAlso: AH=00h,INT 4D/AH=01h,MEM 0040h:0041h,MEM 0040h:0074h + +(Table 00234) +Values for disk operation status: + 00h successful completion + 01h invalid function in AH or invalid parameter + 02h address mark not found + 03h disk write-protected + 04h sector not found/read error + 05h reset failed (hard disk) + 05h data did not verify correctly (TI Professional PC) + 06h disk changed (floppy) + 07h drive parameter activity failed (hard disk) + 08h DMA overrun + 09h data boundary error (attempted DMA across 64K boundary or >80h sectors) + 0Ah bad sector detected (hard disk) + 0Bh bad track detected (hard disk) + 0Ch unsupported track or invalid media + 0Dh invalid number of sectors on format (PS/2 hard disk) + 0Eh control data address mark detected (hard disk) + 0Fh DMA arbitration level out of range (hard disk) + 10h uncorrectable CRC or ECC error on read + 11h data ECC corrected (hard disk) + 20h controller failure + 31h no media in drive (IBM/MS INT 13 extensions) + 32h incorrect drive type stored in CMOS (Compaq) + 40h seek failed + 80h timeout (not ready) + AAh drive not ready (hard disk) + B0h volume not locked in drive (INT 13 extensions) + B1h volume locked in drive (INT 13 extensions) + B2h volume not removable (INT 13 extensions) + B3h volume in use (INT 13 extensions) + B4h lock count exceeded (INT 13 extensions) + B5h valid eject request failed (INT 13 extensions) + B6h volume present but read protected (INT 13 extensions) + BBh undefined error (hard disk) + CCh write fault (hard disk) + E0h status register error (hard disk) + FFh sense operation failed (hard disk) +SeeAlso: #M0022 +--------B-1302------------------------------- +INT 13 - DISK - READ SECTOR(S) INTO MEMORY + AH = 02h + AL = number of sectors to read (must be nonzero) + CH = low eight bits of cylinder number + CL = sector number 1-63 (bits 0-5) + high two bits of cylinder (bits 6-7, hard disk only) + DH = head number + DL = drive number (bit 7 set for hard disk) + ES:BX -> data buffer +Return: CF set on error + if AH = 11h (corrected ECC error), AL = burst length + CF clear if successful + AH = status (see #00234) + AL = number of sectors transferred (only valid if CF set for some + BIOSes) +Notes: errors on a floppy may be due to the motor failing to spin up quickly + enough; the read should be retried at least three times, resetting + the disk with AH=00h between attempts + most BIOSes support "multitrack" reads, where the value in AL + exceeds the number of sectors remaining on the track, in which + case any additional sectors are read beginning at sector 1 on + the following head in the same cylinder; the MSDOS CONFIG.SYS command + MULTITRACK (or the Novell DOS DEBLOCK=) can be used to force DOS to + split disk accesses which would wrap across a track boundary into two + separate calls + the IBM AT BIOS and many other BIOSes use only the low four bits of + DH (head number) since the WD-1003 controller which is the standard + AT controller (and the controller that IDE emulates) only supports + 16 heads + AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more + than 1024 cylinders by placing bits 10 and 11 of the cylinder number + into bits 6 and 7 of DH + under Windows95, a volume must be locked (see INT 21/AX=440Dh/CX=084Bh) + in order to perform direct accesses such as INT 13h reads and writes + all versions of MS-DOS (including MS-DOS 7 [Windows 95]) have a bug + which prevents booting on hard disks with 256 heads (FFh), so many + modern BIOSes provide mappings with at most 255 (FEh) heads + some cache drivers flush their buffers when detecting that DOS is + bypassed by directly issuing INT 13h from applications. A dummy + read can be used as one of several methods to force cache + flushing for unknown caches (e.g. before rebooting). +BUGS: When reading from floppies, some AMI BIOSes (around 1990-1991) trash + the byte following the data buffer, if it is not arranged to an even + memory boundary. A workaround is to either make the buffer word + aligned (which may also help to speed up things), or to add a dummy + byte after the buffer. + MS-DOS may leave interrupts disabled on return from this function. + Apparently some BIOSes or intercepting resident software have bugs + that may destroy DX on return or not properly set the Carry flag. + At least some Microsoft software frames calls to this function with + PUSH DX, STC, INT 13h, STI, POP DX. + on the original IBM AT BIOS (1984/01/10) this function does not disable + interrupts for harddisks (DL >= 80h). On these machines the MS-DOS/ + PC DOS IO.SYS/IBMBIO.COM installs a special filter to bypass the + buggy code in the ROM (see CALL F000h:211Eh) +SeeAlso: AH=03h,AH=0Ah,AH=06h"V10DISK.SYS",AH=21h"PS/1",AH=42h"IBM" +SeeAlso: INT 21/AX=440Dh/CX=084Bh,INT 4D/AH=02h +--------B-1303------------------------------- +INT 13 - DISK - WRITE DISK SECTOR(S) + AH = 03h + AL = number of sectors to write (must be nonzero) + CH = low eight bits of cylinder number + CL = sector number 1-63 (bits 0-5) + high two bits of cylinder (bits 6-7, hard disk only) + DH = head number + DL = drive number (bit 7 set for hard disk) + ES:BX -> data buffer +Return: CF set on error + CF clear if successful + AH = status (see #00234) + AL = number of sectors transferred + (only valid if CF set for some BIOSes) +Notes: errors on a floppy may be due to the motor failing to spin up quickly + enough; the write should be retried at least three times, resetting + the disk with AH=00h between attempts + most BIOSes support "multitrack" writes, where the value in AL + exceeds the number of sectors remaining on the track, in which + case any additional sectors are written beginning at sector 1 on + the following head in the same cylinder; the CONFIG.SYS command + MULTITRACK can be used to force DOS to split disk accesses which + would wrap across a track boundary into two separate calls + the IBM AT BIOS and many other BIOSes use only the low four bits of + DH (head number) since the WD-1003 controller which is the standard + AT controller (and the controller that IDE emulates) only supports + 16 heads + AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more + than 1024 cylinders by placing bits 10 and 11 of the cylinder number + into bits 6 and 7 of DH + under Windows95, an application must issue a physical volume lock on + the drive via INT 21/AX=440Dh before it can successfully write to + the disk with this function +SeeAlso: AH=02h,AH=0Bh,AH=07h"V10DISK.SYS",AH=22h"PS/1",AH=43h"IBM" +SeeAlso: INT 21/AX=440Dh"DOS 3.2+",INT 4D/AH=03h +--------B-1304------------------------------- +INT 13 - DISK - VERIFY DISK SECTOR(S) + AH = 04h + AL = number of sectors to verify (must be nonzero) + CH = low eight bits of cylinder number + CL = sector number 1-63 (bits 0-5) + high two bits of cylinder (bits 6-7, hard disk only) + DH = head number + DL = drive number (bit 7 set for hard disk) + ES:BX -> data buffer (PC,XT,AT with BIOS prior to 1985/11/15) +Return: CF set on error + CF clear if successful + AH = status (see #00234) + AL = number of sectors verified +Notes: errors on a floppy may be due to the motor failing to spin up quickly + enough (timeout error 80h); the write should be retried at least + three times, resetting the disk with AH=00h between attempts + on floppys, the operation should also be retried on media change + (06h) detection. + this function does not compare the disk with memory, it merely + checks whether the sector's stored CRC matches the data's actual CRC + the IBM AT BIOS and many other BIOSes use only the low four bits of + DH (head number) since the WD-1003 controller which is the standard + AT controller (and the controller that IDE emulates) only supports + 16 heads + AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more + than 1024 cylinders by placing bits 10 and 11 of the cylinder number + into bits 6 and 7 of DH +BUG: some Epson ROM BIOSes sometimes have problems properly handling this + function. The workaround is to reset the disk (INT 13/AH=00h) before + the call. +SeeAlso: AH=02h,AH=44h,INT 4D/AH=04h,INT 4D/AH=06h +--------B-1305------------------------------- +INT 13 - FLOPPY - FORMAT TRACK + AH = 05h + AL = number of sectors to format + CH = track number + DH = head number + DL = drive number + ES:BX -> address field buffer (see #00235) +Return: CF set on error + CF clear if successful + AH = status (see #00234) +Notes: on AT or higher, call AH=17h first + the number of sectors per track is read from the diskette parameter + table pointed at by INT 1E +BUG: some old Compaq BIOSes have a bug when attempting to call this function + from Windows Standard Mode with EMM386 loaded. A possible workaround + is to call this function from Real Mode e.g. through DPMI function + "Call Real Mode function with FAR return" (see INT 31/AX=0301h). +SeeAlso: AH=05h"FIXED",AH=17h,AH=18h,INT 1E + +Format of floppy format address field buffer entry (one per sector in track): +Offset Size Description (Table 00235) + 00h BYTE track number + 01h BYTE head number (0-based) + 02h BYTE sector number + 03h BYTE sector size (00h=128 bytes, 01h=256 bytes, 02h=512, 03h=1024) +--------B-1305------------------------------- +INT 13 - FIXED DISK - FORMAT TRACK + AH = 05h + AL = interleave value (XT-type controllers only) + ES:BX -> 512-byte format buffer + the first 2*(sectors/track) bytes contain F,N for each sector + F = sector type + 00h for good sector + 20h to unassign from alternate location + 40h to assign to alternate location + 80h for bad sector + N = sector number + CH = cylinder number (bits 8,9 in high bits of CL) + CL = high bits of cylinder number (bits 7,6) + DH = head + DL = drive +Return: CF set on error + CF clear if successful + AH = status code (see #00234) +Notes: AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more + than 1024 cylinders by placing bits 10 and 11 of the cylinder number + into bits 6 and 7 of DH + for XT-type controllers on an AT or higher, AH=0Fh should be called + first + the IBM AT BIOS and many other BIOSes use only the low four bits of + DH (head number) since the WD-1003 controller which is the standard + AT controller (and the controller that IDE emulates) only supports + 16 heads + not all controller support sector types 20h and 40h + under Windows95, an application must issue a physical volume lock on + the drive via INT 21/AX=440Dh before it can successfully write to + the disk with this function +SeeAlso: AH=05h"FLOPPY",AH=06h"FIXED",AH=07h"FIXED",AH=0Fh,AH=18h,AH=1Ah +--------d-1305------------------------------- +INT 13 - Future Domain SCSI BIOS - SEND SCSI MODE SELECT COMMAND + AH = 05h + DL = hard drive ID + ES:BX -> mode select data (see #00236) +Return: CF set on error + CF clear if successful + AH = status code (see #00234) +Notes: this function can be called before AH=07h"SCSI" or AH=06h"SCSI" to + format a SCSI disk with the desired parameters + the mode select data below is from the SCSI-1 specification + the TMC-950 does not support any Future Domain BIOS calls; instead, + it provides a full CAM implementation (see INT 4F/AX=8100h) +SeeAlso: AH=06h"SCSI",AH=07h"SCSI",INT 4F/AX=8100h + +Format of Future Domain SCSI mode select data: +Offset Size Description (Table 00236) + 00h BYTE number of bytes of remaining data (12 + vendor unique length) + 01h BYTE reserved (0) + 02h BYTE medium type (0 for hard disk) + 03h BYTE reserved (0) + 04h BYTE block descriptor length (8) + 05h BYTE density code (0 for hard disk) + 06h 3 BYTEs (big-endian) number of blocks (000000h for entire disk) + 09h BYTE reserved (0) + 0Ah 3 BYTEs (big-endian) block length (512 standard, or 256) + 0Dh ??? vendor-specific parameter bytes (optional) +--------d-13057FSI324D----------------------- +INT 13 - 2M - FORMAT TRACK + AX = 057Fh + SI = 324Dh ("2M") + CH = track number + DH = head number + DL = drive number + ES:BX -> boot sector of future 2M diskette +Return: CF set on error + CF clear if successful + AH = status (see #00234) +Program: 2M is a TSR developed by Ciriaco Garca de Celis to support + non standard diskettes with 820-902/1476-1558K (5.25 DD/HD) + and 984-1066/1804-1886K/3608-3772K (3.5 DD/HD/ED) +InstallCheck: must search for a "CiriSOFT:2M:1.3" or "CiriSOFT:2MX:3.0" or + similar (recomended ":2M:", ":2MX:", or ":2MB:" substrings) in the + CiriSOFT TSR interface +Notes: it is not necessary to call AH=17h or AH=18h first (will be ignored) + the diskette format must always begin on cylinder 0 head 0 + the boot sector can be obtained from an already-formatted 2M diskette + (by calling AH=02h with head number 00h in 2M v1.x and with head + number 80h for 2M v2+) + since 2M v2.0, the BOOT sector is emulated using the first physical + sector of FAT2; the second-sixth physical sectors of FAT2 in HD or ED + diskettes store the SuperBOOT code. To skip the FAT2 emulation (using + FAT1) of 2M, in order to read the SuperBOOT code, head number must be + 80h-81h instead 0-1 (bit 7 active) in standard read/write functions. + This lets diskcopy programs format 2M target diskettes copying + SuperBOOT code. If the target diskette is already 2MF formatted + (containing boot code) this trick it is not necessary. + when using STV technology (offset 65 of boot sector equal to 1) it is + necessary to write the full track before formatting (except track 0 + side 0) to complete the format and skip future CRC errors on read; in + track 0 side 1 the head used must be 81h instead 1. Diskcopy programs + may do a format-write-verify sequential phases to improve performance +SeeAlso: AH=05h"FLOPPY",AH=18h/CX=5055h,INT 2F"CiriSOFT" +--------B-1306------------------------------- +INT 13 - FIXED DISK - FORMAT TRACK AND SET BAD SECTOR FLAGS (XT,PORT) + AH = 06h + AL = interleave value + CH = cylinder number (bits 8,9 in high bits of CL) + CL = sector number + DH = head + DL = drive +Return: AH = status code (see #00234) +Note: AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more + than 1024 cylinders by placing bits 10 and 11 of the cylinder number + into bits 6 and 7 of DH +SeeAlso: AH=05h"FIXED",AH=07h"FIXED" +--------d-1306------------------------------- +INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE WITH BAD SECTOR MAPPING + AH = 06h + AL = interleave + (0 = default, 1 = consecutive sectors, 2 - 255 = vendor unique) + DL = hard drive ID + DH = defect list info (see #00237) + ES:BX -> defect table A, B or C (see #00238,#00239,#00240) +Return: CF set on error + CF clear if successful + AH = status code (see #00234) +Notes: block addresses must be in ascending order (for table B, cylinder is + most significant, byte from index least significant; for table C, + cylinder is most significant, sector number least significant) + table B defect bytes from index of FFFFFFFFh indicates that the entire + track shall be reassigned + table C defect sector number of FFFFFFFFh indicates that the entire + track shall be reassigned + the TMC-950 does not support any Future Domain BIOS calls; instead, + it provides a full CAM implementation (see INT 4F/AX=8100h) +SeeAlso: AH=05h"SCSI",AH=06h"FIXED",AH=07h"SCSI" + +Bitfields for Future Domain SCSI defect list info: +Bit(s) Description (Table 00237) + 7-5 drive LUN + 4 defect list is available + 3 defect list is complete (erase drive's defect list) + 2-0 defect table format + (000=use defect table A, 100=use defect table B, + 101=use defect table C) + +Format of Future Domain SCSI defect table A: +Offset Size Description (Table 00238) + 00h WORD number of bytes remaining in table + 02h BYTE reserved (0) + 03h BYTE reserved (0) + 04h WORD (big-endian) defect list length (4*number of defects) + 06h 4 DWORDs (big-endian) defect block addresses + +Format of Future Domain SCSI defect table B: +Offset Size Description (Table 00239) + 00h WORD number of bytes remaining in table + 02h BYTE reserved (0) + 03h BYTE reserved (0) + 04h WORD (big-endian) defect list length (8*number of defects) + 06h 8N BYTEs defect list [array] (see #00241) + +Format of Future Domain SCSI defect table C: +Offset Size Description (Table 00240) + 00h WORD number of bytes remaining in table + 02h BYTE reserved (0) + 03h BYTE reserved (0) + 04h WORD (big-endian) defect list length (8*number of defects) + 06h 8N BYTEs defect list [array] (see #00241) + +Format of Future Domain SCSI defect list entry: +Offset Size Description (Table 00241) + 00h 3 BYTEs (big-endian) cylinder number of defect + 03h BYTE head number of defect + 04h DWORD (big-endian) defect bytes from index +--------d-1306------------------------------- +INT 13 - Adaptec AHA-154xA/Bustek BT-542 BIOS - IDENTIFY SCSI DEVICES + AH = 06h +Return: AH = status code (see #00234) + CF clear if successful + AL = first drive supported + (80h nonconcurrent operation, 81h concurrent operation) + CF set on error +Desc: determine the number of the first supported SCSI drive +Note: the return value is 80h when two SCSI drives are supported, 81h if + only one SCSI drive is installed +SeeAlso: AH=08h"PC",#00732 at INT 1A/AX=B102h +--------d-1306------------------------------- +INT 13 - V10DISK.SYS - READ DELETED SECTORS + AH = 06h + AL = number of sectors + CH = cylinder number (bits 8,9 in high bits of CL) + CL = sector number + DH = head + DL = drive + ES:BX -> buffer +Return: AH = status code (see #00234) +Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies +SeeAlso: AH=02h,AH=07h"V10DISK.SYS" +--------B-1307------------------------------- +INT 13 - FIXED DISK - FORMAT DRIVE STARTING AT GIVEN TRACK (XT,PORT) + AH = 07h + AL = interleave value (XT only) + ES:BX = 512-byte format buffer (see AH=05h) + CH = cylinder number (bits 8,9 in high bits of CL) + CL = sector number + DH = head + DL = drive +Return: AH = status code (see #00234) +Note: AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more + than 1024 cylinders by placing bits 10 and 11 of the cylinder number + into bits 6 and 7 of DH +SeeAlso: AH=05h"FIXED",AH=06h"FIXED",AH=1Ah +--------d-1307------------------------------- +INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE + AH = 07h + AL = interleave (0 = default, 1 = consecutive sectors, + 2 - 255 = vendor unique) + DL = hard drive ID +Return: CF set on error + CF clear if successful + AH = status code (see #00234) +SeeAlso: AH=05h"SCSI",AH=06h"SCSI",AH=07h"FIXED" +--------d-1307------------------------------- +INT 13 - V10DISK.SYS - WRITE DELETED SECTORS + AH = 07h + AL = number of sectors + CH = cylinder number (bits 8,9 in high bits of CL) + CL = sector number + DH = head + DL = drive + ES:BX -> buffer +Return: AH = status code (see #00234) +Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies +SeeAlso: AH=03h,AH=06h"V10DISK.SYS" +--------B-1308------------------------------- +INT 13 - DISK - GET DRIVE PARAMETERS (PC,XT286,CONV,PS,ESDI,SCSI) + AH = 08h + DL = drive (bit 7 set for hard disk) + ES:DI = 0000h:0000h to guard against BIOS bugs +Return: CF set on error + AH = status (07h) (see #00234) + CF clear if successful + AH = 00h + AL = 00h on at least some BIOSes + BL = drive type (AT/PS2 floppies only) (see #00242) + CH = low eight bits of maximum cylinder number + CL = maximum sector number (bits 5-0) + high two bits of maximum cylinder number (bits 7-6) + DH = maximum head number + DL = number of drives + ES:DI -> drive parameter table (floppies only) +Notes: may return successful even though specified drive is greater than the + number of attached drives of that type (floppy/hard); check DL to + ensure validity + for systems predating the IBM AT, this call is only valid for hard + disks, as it is implemented by the hard disk BIOS rather than the + ROM BIOS + the IBM ROM-BIOS returns the total number of hard disks attached + to the system regardless of whether DL >= 80h on entry. + Toshiba laptops with HardRAM return DL=02h when called with DL=80h, + but fail on DL=81h. The BIOS data at 40h:75h correctly reports 01h. + may indicate only two drives present even if more are attached; to + ensure a correct count, one can use AH=15h to scan through possible + drives + Reportedly some Compaq BIOSes with more than one hard disk controller + return only the number of drives DL attached to the corresponding + controller as specified by the DL value on entry. However, on + Compaq machines with "COMPAQ" signature at F000h:FFEAh, + MS-DOS/PC DOS IO.SYS/IBMBIO.COM call INT 15/AX=E400h and + INT 15/AX=E480h to enable Compaq "mode 2" before retrieving the count + of hard disks installed in the system (DL) from this function. + the maximum cylinder number reported in CX is usually two less than + the total cylinder count reported in the fixed disk parameter table + (see INT 41h,INT 46h) because early hard disks used the last cylinder + for testing purposes; however, on some Zenith machines, the maximum + cylinder number reportedly is three less than the count in the fixed + disk parameter table. + for BIOSes which reserve the last cylinder for testing purposes, the + cylinder count is automatically decremented + on PS/1s with IBM ROM DOS 4, nonexistent drives return CF clear, + BX=CX=0000h, and ES:DI = 0000h:0000h + machines with lost CMOS memory may return invalid data for floppy + drives. In this situation CF is cleared, but AX,BX,CX,DX,DH,DI, + and ES contain only 0. At least under some circumstances, MS-DOS/ + PC DOS IO.SYS/IBMBIO.COM just assumes a 360 KB floppy if it sees + CH to be zero for a floppy. + the PC-Tools PCFORMAT program requires that AL=00h before it will + proceed with the formatting + if this function fails, an alternative way to retrieve the number + of floppy drives installed in the system is to call INT 11h. + In fact, the MS-DOS/PC-DOS IO.SYS/IBMBIO.COM attempts to get the + number of floppy drives installed from INT 13/AH=08h, when INT 11h + AX bit 0 indicates there are no floppy drives installed. In addition + to testing the CF flag, it only trusts the result when the number of + sectors (CL preset to zero) is non-zero after the call. +BUGS: several different Compaq BIOSes incorrectly report high-numbered + drives (such as 90h, B0h, D0h, and F0h) as present, giving them the + same geometry as drive 80h; as a workaround, scan through disk + numbers, stopping as soon as the number of valid drives encountered + equals the value in 0040h:0075h + a bug in Leading Edge 8088 BIOS 3.10 causes the DI,SI,BP,DS, and ES + registers to be destroyed + some Toshiba BIOSes (at least before 1995, maybe some laptops??? + with 1.44 MB floppies) have a bug where they do not set the ES:DI + vector even for floppy drives. Hence these registers should be + preset with zero before the call and checked to be non-zero on + return before using them. Also it seems these BIOSes can return + wrong info in BL and CX, as S/DOS 1.0 can be configured to preset + these registers as for an 1.44 MB floppy. + the PS/2 Model 30 fails to reset the bus after INT 13/AH=08h and + INT 13/AH=15h. A workaround is to monitor for these functions + and perform a transparent INT 13/AH=01h status read afterwards. + This will reset the bus. The MS-DOS 6.0 IO.SYS takes care of + this by installing a special INT 13h interceptor for this purpose. + AD-DOS may leave interrupts disabled on return from this function. + Some Microsoft software explicitly sets STI after return. +SeeAlso: AH=06h"Adaptec",AH=13h"SyQuest",AH=48h,AH=15h,INT 1E +SeeAlso: INT 41"HARD DISK 0" + +(Table 00242) +Values for diskette drive type: + 01h 360K + 02h 1.2M + 03h 720K + 04h 1.44M + 05h ??? (reportedly an obscure drive type shipped on some IBM machines) + 2.88M on some machines (at least AMI 486 BIOS) + 06h 2.88M + 10h ATAPI Removable Media Device +--------d-1308------------------------------- +INT 13 - V10DISK.SYS - SET FORMAT + AH = 08h + AL = number of sectors + CH = cylinder number (bits 8,9 in high bits of CL) + CL = sector number + DH = head + DL = drive +Return: AH = status code (see #00234) +Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies +Note: details not available +SeeAlso: AH=03h,AH=06h"V10DISK.SYS" +--------y-130800DLF0------------------------- +INT 13 - SecureDrive - INSTALLATION CHECK + AX = 08000h + DL = F0h +Return: AX = EDCBh for version 1.0-1.2 + AX = EDCCh for version 1.3 + CX = code segment + DX = data address within code segment +Program: SecureDrive by Mike Ingle allows you to create + an encrypted partition on your harddisk. +--------B-1309------------------------------- +INT 13 - HARD DISK - INITIALIZE CONTROLLER WITH DRIVE PARAMETERS (AT,PS) + AH = 09h + DL = drive (80h for first, 81h for second) +Return: CF clear if successful + CF set on error + AH = status (see #00234) +Notes: on the PC and XT, this function uses the parameter table pointed at by + INT 41 + on the AT and later, this function uses the parameter table pointed at + by INT 41 if DL=80h, and the parameter table pointed at by INT 46 if + DL=81h +SeeAlso: INT 41"HARD DISK 0",INT 46"HARD DISK 1" +--------B-130A------------------------------- +INT 13 - HARD DISK - READ LONG SECTOR(S) (AT and later) + AH = 0Ah + AL = number of sectors (01h may be only value supported) + CH = low eight bits of cylinder number + CL = sector number (bits 5-0) + high two bits of cylinder number (bits 7-6) + DH = head number + DL = drive number (80h = first, 81h = second) + ES:BX -> data buffer +Return: CF clear if successful + CF set on error + AH = status (see #00234) + AL = number of sectors transferred +Notes: this function reads in four to seven bytes of error-correcting code + along with each sector's worth of information + data errors are not automatically corrected, and the read is aborted + after the first sector with an ECC error + used for diagnostics only on PS/2 systems; IBM officially classifies + this function as optional +BUG: on the original IBM AT BIOS (1984/01/10) this function does not disable + interrupts for harddisks (DL >= 80h). On these machines the MS-DOS/ + PC DOS IO.SYS/IBMBIO.COM installs a special filter to bypass the + buggy code in the ROM (see CALL F000h:211Eh) +SeeAlso: AH=02h,AH=0Bh,MEM 0040h:0074h +--------B-130B------------------------------- +INT 13 - HARD DISK - WRITE LONG SECTOR(S) (AT and later) + AH = 0Bh + AL = number of sectors (01h may be only value supported) + CH = low eight bits of cylinder number + CL = sector number (bits 5-0) + high two bits of cylinder number (bits 7-6) + DH = head number + DL = drive number (80h = first, 81h = second) + ES:BX -> data buffer +Return: CF clear if successful + CF set on error + AH = status (see #00234) + AL = number of sectors transferred +Notes: each sector's worth of data must be followed by four to seven bytes of + error-correction information + used for diagnostics only on PS/2 systems; IBM officially classifies + this function as optional +SeeAlso: AH=03h,AH=0Ah,MEM 0040h:0074h +--------B-130C------------------------------- +INT 13 - HARD DISK - SEEK TO CYLINDER + AH = 0Ch + CH = low eight bits of cylinder number + CL = sector number (bits 5-0) + high two bits of cylinder number (bits 7-6) + DH = head number + DL = drive number (80h = first, 81h = second hard disk) +Return: CF set on error + CF clear if successful + AH = status (see #00234) +SeeAlso: AH=00h,AH=02h,AH=0Ah,AH=47h +--------B-130D------------------------------- +INT 13 - HARD DISK - RESET HARD DISKS + AH = 0Dh + DL = drive number (80h = first, 81h = second hard disk) +Return: CF set on error + CF clear if successful + AH = status (see #00234) +Notes: reinitializes the hard disk controller, resets the specified drive's + parameters, and recalibrates the drive's heads (seek to track 0) + for PS/2 35SX, 35LS, 40SX and L40SX, as well as many other systems, + both the master drive and the slave drive respond to the Reset + function that is issued to either drive + not for PS/2 ESDI drives +SeeAlso: AH=00h,INT 21/AH=0Dh +--------B-130E------------------------------- +INT 13 - HARD DISK - READ SECTOR BUFFER (XT only) + AH = 0Eh + DL = drive number (80h = first, 81h = second hard disk) + ES:BX -> buffer +Return: CF set on error + CF clear if successful + AH = status code (see #00234) +Notes: transfers controller's sector buffer. No data is read from the drive + used for diagnostics only on PS/2 systems +SeeAlso: AH=0Ah +--------B-130F------------------------------- +INT 13 - HARD DISK - WRITE SECTOR BUFFER (XT only) + AH = 0Fh + DL = drive number (80h = first, 81h = second hard disk) + ES:BX -> buffer +Return: CF set on error + CF clear if successful + AH = status code (see #00234) +Notes: does not write data to the drive + should be called before formatting to initialize an XT-type + controller's sector buffer + used for diagnostics only on PS/2 systems +SeeAlso: AH=0Bh +--------B-1310------------------------------- +INT 13 - HARD DISK - CHECK IF DRIVE READY + AH = 10h + DL = drive number (80h = first, 81h = second hard disk) +Return: CF set on error + CF clear if successful + AH = status (see #00234 at AH=01h) +SeeAlso: AH=11h +--------B-1311------------------------------- +INT 13 - HARD DISK - RECALIBRATE DRIVE + AH = 11h + DL = drive number (80h = first, 81h = second hard disk) +Return: CF set on error + CF clear if successful + AH = status (see #00234 at AH=01h) +Note: causes hard disk controller to seek the specified drive to cylinder 0 +SeeAlso: AH=00h,AH=0Ch,AH=10h,AH=19h"FIXED DISK",MEM 0040h:003Eh +--------B-1312------------------------------- +INT 13 - HARD DISK - CONTROLLER RAM DIAGNOSTIC (XT,PS) + AH = 12h + DL = drive number (80h = first, 81h = second hard disk) +Return: CF set on error + CF clear if successful + AH = status code (see #00234 at AH=01h) + AL = 00h +SeeAlso: AH=13h,AH=14h +--------d-1312------------------------------- +INT 13 - Future Domain SCSI CONTROLLER - STOP SCSI DISK + AH = 12h + DL = hard drive ID +Return: CF set on error + CF clear if successful + AH = status code (see #00234 at AH=01h) +Notes: available at least on the TMC-870 8-bit SCSI controller BIOS v6.0A + if the given drive is a SCSI device, the SCSI Stop Unit command is sent + and either "Disk prepared for shipping" or "Disk Stop command failed" + is displayed + the TMC-950 does not support any Future Domain BIOS calls; instead, + it provides a full CAM implementation (see INT 4F/AX=8100h) +--------d-1312------------------------------- +INT 13 - SyQuest - START/STOP SCSI DISK + AH = 12h + AL = subfunction + 00h start disk + 01h stop disk + CX = wait flag + 00h wait for ready + 01h don't wait for ready + DL = hard drive ID (bit 7 for hard disks must be set) +Return: CF set on error + CF clear if successful + AH = status + 00h successful + 01h invalid function request + 80h timeout +SeeAlso: AH=12h"Future Domain",AH=13h"SyQuest" +--------B-1313------------------------------- +INT 13 - HARD DISK - DRIVE DIAGNOSTIC (XT,PS) + AH = 13h + DL = drive number (80h = first, 81h = second hard disk) +Return: CF set on error + CF clear if successful + AH = status code (see #00234 at AH=01h) + AL = 00h +SeeAlso: AH=12h"HARD DISK",AH=14h"HARD DISK" +--------d-1313------------------------------- +INT 13 - SyQuest - READ DRIVE PARAMATERS (for DOS 5+) + AH = 13h + DL = drive ID (bit 7 set for hard disks) +Return: CF set on error + AH = status (07h) (see #00234 at AH=01h) + CF clear if successful + AH = 00h + BL = drive type (AT/PS2 floppies only) (see #00242) + CH = low eight bits of maximum cylinder number + CL = maximum sector number (bits 5-0) + high two bits of maximum cylinder number (bits 7-6) + DH = maximum head number + DL = number of drives + ES:DI -> drive parameter table (floppies only) +Notes: the return values are identical to the standard INT 13/AH=08h, but the + number of drives is not limited to 2, so + scanning all possible drive numbers with the Read DASD Type call + (AH=15h) should generally be preferred to determine the number of + drives attached to the system. +SeeAlso: AH=08h"PC",AH=12h"SyQuest",AH=15h,AH=59h"SyQuest" +--------B-1314------------------------------- +INT 13 - HARD DISK - CONTROLLER INTERNAL DIAGNOSTIC + AH = 14h +Return: CF set on error + CF clear if successful + AH = status code (see #00234 at AH=01h) + AL = 00h +SeeAlso: AH=12h,AH=13h +--------B-1315------------------------------- +INT 13 - DISK - GET DISK TYPE (XT 1986/1/10 or later,XT286,AT,PS) + AH = 15h + DL = drive number (bit 7 set for hard disk) + (AL = FFh, CX = FFFFh, see Note) +Return: CF clear if successful + AH = type code + 00h no such drive + (SpeedStor) AL = 03h hard disk + CX:DX = number of 512-byte sectors + 01h floppy without change-line support + 02h floppy (or other removable drive) with change-line support + 03h hard disk + CX:DX = number of 512-byte sectors + CF set on error + AH = status (see #00234 at AH=01h) +Note: SyQuest can report type 01h or 02h for 'hard disks', since its media + is removable +BUGS: many versions of the Award 486 BIOS do not return the sector count + because the BIOS exit code restores CX and DX to their original + values after the function had already set them to correct values + Some releases of PC Tools REBUILD preset CX=FFFFh and only trust the + results if CH <= 2 on return (which would cut off drives > 16 Gb). + several different Compaq BIOSes incorrectly report high-numbered + drives (such as 90h, B0h, D0h, and F0h) as present, giving them the + same geometry as drive 80h; as a workaround, scan through disk + numbers, stopping as soon as the number of valid drives encountered + equals the value in 0040h:0075h + the PS/2 Model 30 fails to reset the bus after INT 13/AH=08h and + INT 13/AH=15h. A workaround is to monitor for these functions + and perform a transparent INT 13/AH=01h status read afterwards. + This will reset the bus. The MS-DOS 6.0 IO.SYS takes care of + this by installing a special INT 13h interceptor for this purpose. + Some releases of SpeedStor have a bug where it reports AX=0003h instead + of correctly reporting AH=03h for hard disks. A possible workaround + when testing for hard disks is to check for AH=03h and AX=0003h. + In this case this function should be invoked with a bogus fixed + value in AL, e.g. AL=FFh. +SeeAlso: AH=08h,AH=16h,AH=17h,AH=19h"SCSI",MEM 0040h:0075h +--------B-1316------------------------------- +INT 13 - FLOPPY DISK - DETECT DISK CHANGE (XT 1986/1/10 or later,XT286,AT,PS) + AH = 16h + DL = drive number (00h-7Fh) + SI = 0000h (to avoid crash on AT&T 6300) +Return: CF clear if change line inactive + AH = 00h (disk not changed) + CF set if change line active + AH = status + 01h invalid command (SyQuest) + 06h change line active or not supported + 80h drive not ready or not present +Notes: call AH=15h first to determine whether the drive supports a change + line + this call also clears the media-change status, so that a disk change + is only reported once +BUGS: some versions of Award 386 Modular BIOS and AMI BIOS fail to clear + the media-change status + AT&T 6300 WGS systems crash if SI <> 0 on entry. + some pre 1986/08/04 Compaq ROM BIOS have a serious bug where this + function may re-configure a hard disk depending on what is located + at ES:[BX] and data indexed to by it. MS-DOS/PC DOS IO.SYS/IBMBIO.COM + install a special filter when they detect Compaq ROM BIOSes with + earlier dates. + some Compaq 286 systems have a bug in all INT 13h functions >= 16h, + which causes the byte at DS:0074h to be destroyed when called for + hard disks (DL >= 80h). MS-DOS/PC DOS IO.SYS/IBMBIO.COM performs a + test on this bug using this sub-function, and if found installs a + special filter which points DS into ROM, so that it cannot cause + any harm. + some drives (or controllers???) forget the change line status + if another drive is accessed afterwards. The DOS BIOS takes care + of this by not relying on the reported change line status when + the change line is not active and a different drive is accessed, + instead it reports "don't know" to the DOS kernel. +SeeAlso: AH=15h,AH=49h +--------B-1317------------------------------- +INT 13 - FLOPPY DISK - SET DISK TYPE FOR FORMAT (AT,PS) + AH = 17h + AL = format type + 01h = 320/360K disk in 360K drive + 02h = 320/360K disk in 1.2M drive + 03h = 1.2M disk in 1.2M drive + 04h = 720K disk in 720K or 1.44M drive + DL = drive number +Return: CF set on error + CF clear if successful + AH = status (see #00234 at AH=01h) +Note: this function does not handle 1.44M drives; use AH=18h instead +SeeAlso: AH=15h,AH=18h +--------d-131700----------------------------- +INT 13 - Future Domain SCSI CONTROLLER - GET INQUIRY INFO FROM SCSI DEVICE + AX = 1700h + CL = length of buffer + DL = hard drive ID + ES:BX -> buffer for info (see #00243) +Return: CF clear if successful + CH = number of bytes returned in buffer??? + CF set on error + AH = status code (see #00234 at AH=01h) +Notes: this function is not available with 8-bit controller ROM versions < 7.0 + information block bytes 5-n are vendor-specific in older SCSI devices + the TMC-950 does not support any Future Domain BIOS calls; instead, + it provides a full CAM implementation (see INT 4F/AX=8100h) +SeeAlso: AH=18h"SCSI",AH=1Bh"SCSI" + +Format of Future Domain SCSI inquiry information block: +Offset Size Description (Table 00243) + 00h BYTE device type + bits 0-4: peripheral device type (see #00244) + bits 5-7: peripheral qualifier (see #00245) + 01h BYTE device type modifier + bits 0-6: device type modifier + bit 7: removable medium + 02h BYTE SCSI version (see #00246) + 03h BYTE data format/capabilities (see #00247) + 04h BYTE additional data length (total remaining bytes) + 05h 2 BYTEs reserved + 07h BYTE device capabilities (see #00248) + 08h 8 BYTEs vendor identification (space-padded ASCII) + 10h 8 BYTEs product identification (space-padded ASCII) + 20h 4 BYTEs product revision level (space-padded ASCII) + 24h 20 BYTEs vendor specific + 38h 40 BYTEs reserved + 60h var vendor specific parameters + +(Table 00244) +Values for Future Domain SCSI peripheral device type: + 00h direct-access device (e.g., magnetic disk) + 01h sequential-access device (e.g., magnetic tape) + 02h printer device + 03h processor device + 04h write-once device (e.g., some optical disks) + 05h CD-ROM device + 06h scanner device + 07h optical memory device (e.g., some optical disks) + 08h medium changer device (e.g., jukeboxes) + 09h communications device + 0Ah (defined by ASC IT8) + 0Bh (defined by ASC IT8) + 0Ch-1Eh reserved + 1Fh unknown or no device type + +(Table 00245) +Values for Future Domain SCSI peripheral qualifier: + 000b device is currently connected to this logical unit and available + 001b target is capable of supporting the specified peripheral, but the + physical device is not currently connected to this logical unit + 010b reserved + 011b target can't support a physical device on this logical unit + 1xxb vendor specific + +Bitfields for Future Domain SCSI version: +Bit(s) Description (Table 00246) + 0-2 ANSI-approved version + 000 device might or might not comply to ANSI standard + 001 device complies to ANSI SCSI-1 + 010 device complies to ANSI SCSI-2 + other reserved + 3-5 ECMA version + 6-7 ISO version + +Bitfields for Future Domain SCSI data format/capabilities: +Bit(s) Description (Table 00247) + 0-2 response data format + 000 information block is as specified in SCSI-1 + 001 information block is as specified in CCS + 010 information block is as specified in SCSI-2 + other reserved + 4-5 reserved + 6 terminate I/O process supported + 7 asynchronous event notification supported + +Bitfields for Future Domain SCSI device capabilities: +Bit(s) Description (Table 00248) + 0 device responds to RESET with a hard RESET + 1 tagged command queuing supported + 2 reserved + 3 linked commands supported + 4 synchronous data transfer supported + 5 16-transfers supported + 6 32-transfers supported + 7 relative addressing supported +--------B-1318------------------------------- +INT 13 - DISK - SET MEDIA TYPE FOR FORMAT (AT model 3x9,XT2,XT286,PS) + AH = 18h + DL = drive number + CH = lower 8 bits of highest cylinder number (number of cylinders - 1) + CL = sectors per track (bits 0-5) + top 2 bits of highest cylinder number (bits 6,7) +Return: AH = status + 00h requested combination supported + 01h function not available + 0Ch not supported or drive type unknown + 80h there is no disk in the drive + ES:DI -> 11-byte parameter table (see #01264 at INT 1E) +Note: this function does not set the INT 1E vector to point at the returned + parameter table; it is the caller's responsibility to do so +SeeAlso: AH=05h,AH=07h,AH=17h,INT 1E +--------d-1318------------------------------- +INT 13 - Future Domain SCSI BIOS - GET SCSI CONTROLLER INFORMATION + AH = 18h + DL = hard drive ID +Return: CF set on error + AH = status code (see #00234 at AH=01h) + CF clear if successful + AX = 4321h (magic number) + CX = controller family code (see #00249) + ---if family code=0200h + DH = number of exclusively ROM-controlled SCSI devices + DL = canonical SCSI device number for specified drive + ---if family code <> 0200h + BH = number of exclusively ROM-controlled SCSI devices + BL = canonical SCSI device number for specified drive +Notes: also sets an internal flag (non-resettable) which prevents some + controller messages from being displayed, allows writes to + removable devices (use caution!), and enables the INT 13 interface + for more than one drive (i.e. DL >= 81h) in at least some ROM + versions + the TMC-950 does not support any Future Domain BIOS calls; instead, + it provides a full CAM implementation (see INT 4F/AX=8100h) +SeeAlso: AH=05h"SCSI",AX=1700h"SCSI",AH=1Bh"SCSI",INT 4F/AX=8100h + +(Table 00249) +Values for Future Domain SCSI controller family code: + 0200h TMC-1680/? (ROM 3.0) + 0203h TMC-1650/1660/1670/1680 (ROM 2.0) + 040Ah TMC-820/830/840/850/860/870/875/880/885 (ROM <= 6.0A) + 050Dh TMC-840/841/880/881 (ROM 5.2D) + 0700h TMC-830/850/860/875/885 (ROM 7.0) +--------d-1318--CX5055----------------------- +INT 13 - PU_1700.COM - INSTALLATION CHECK + AH = 18h + CX = 5055h ('PU') + DL = 00h +Return: AX = 7570h ('up') if PU_1700 is installed +Program: PU_1700 is a BIOS enhancer from PU Service Systems which permits + formatting diskettes at higher capacity (1.78M instead of 1.44M) +SeeAlso: AX=057Fh/SI=324Dh"2M" +--------d-1318--CXD2C9----------------------- +INT 13 - XDF.COM - API + AH = 18h + CX = D2C9h ("R"+80h, "I"+80h = Roger Ivey) + DX = 0000h + BX = function + 0000h installation check + Return: AH = 0Ch + CX = 7269h ("ri" = Roger Ivey) + ES = segment of driver + CF set + 2F64h ("/d") disable the driver + Return: AH = 0Ch + ES:BX = pointer to activation flag (it is set to 0: + set it to 1 to enable the driver again) + CX = 7269h + CF set + 2F75h ("/u") unload the driver (restore interrupts & free memory) + Return: AH = 0Ch + DL = 55h ("U") if successful + = 00h if fails + CX = 7269h + ES = segment of driver + CF set + AL, BX, DH, and DI destroyed +Program: XDF is a TSR provided with PC-DOS 7.0 to support XDF 1.84M disks, + developed by Roger D. Ivey +Note: After disabling or enabling the driver, a disk change must be performed + or simulated to reset the driver. +--------B-1319------------------------------- +INT 13 - FIXED DISK - PARK HEADS ON ESDI DRIVE (XT286,PS) + AH = 19h + DL = drive +Return: CF set on error + CF clear if successful + AH = status (see #00234 at AH=01h) +SeeAlso: AH=11h +--------d-1319------------------------------- +INT 13 - Future Domain SCSI CONTROLLER - REINITIALIZE DRIVE + AH = 19h + DL = hard drive ID +Return: CF set on error + AH = status code (see #00234 at AH=01h) + CF clear if successful + AH = disk type (03h = fixed disk) + CX:DX = number of 512-byte sectors +Notes: sends SCSI Read Capacity command to get number of logical blocks and + adjusts the result for 512-byte sectors + displays either "Error in Read Capacity Command" or "nnn Bytes per + sector" (nnn=256 or 512, the only sizes supported in the translation + code) + should probably be called when a removable device has its media changed + returns the same values as AH=15h + the TMC-950 does not support any Future Domain BIOS calls; instead, + it provides a full CAM implementation (see INT 4F/AX=8100h) +SeeAlso: AH=15h,AH=1Ah,INT 4F/AX=8100h +--------d-131A------------------------------- +INT 13 - ESDI FIXED DISK - FORMAT UNIT (PS) + AH = 1Ah + AL = defect table entry count + CL = format modifiers (see #00250) + DL = drive (80h,81h) + ES:BX -> defect table (see #00251), ignored if AL=00h +Return: CF set on error + CF clear if successful + AH = status (see #00234 at AH=01h) +Note: if periodic interrupt selected, INT 15/AH=0Fh is called after each + cylinder is formatted +SeeAlso: AH=07h,INT 15/AH=0Fh + +Bitfields for ESDI format modifiers: +Bit(s) Description (Table 00250) + 4 generate periodic interrupt + 3 perform surface analysis + 2 update secondary defect map + 1 ignore secondary defect map + 0 ignore primary defect map + +Format of defect table entry [array]: +Offset Size Description (Table 00251) + 00h 3 BYTEs relative sector address (little-endian) + 03h BYTE flags and defect count + bit 7: last logical sector on track + bit 6: first logical sector on track + bit 5: last logical sector on cylinder + bit 4: logical sectors are pushed onto next track + bits 3-0: number of defects pushed from previous cylinder +--------d-131A------------------------------- +INT 13 - Future Domain SCSI CONTROLLER - GET SCSI PARTIAL MEDIUM CAPACITY + AH = 1Ah + CH = track (bits 8,9 in high bits of CL) + CL = sector (01h to number of sectors/track for drive) + DH = head + DL = hard drive ID +Return: CF set on error + AH = status code (see #00234 at AH=01h) + CX:DX = logical block number of last quickly-accessible block after + given block +Notes: sends SCSI Read Capacity command with the PMI bit set to obtain the + logical block address of the last block after which a substantial + delay in data transfer will be encountered (usually the last block + on the current cylinder). No translation to 512 byte sectors is + performed on the result if data is stored on the disk in other than + 512 byte sectors. + the TMC-950 does not support any Future Domain BIOS calls; instead, + it provides a full CAM implementation (see INT 4F/AX=8100h) +SeeAlso: AH=15h,AH=19h"SCSI" +--------d-131B------------------------------- +INT 13 - ESDI FIXED DISK - GET MANUFACTURING HEADER + AH = 1Bh + AL = number of sectors to read + DL = drive + ES:BX -> buffer for manufacturing header (defect list) +Return: CF set on error + CF clear if successful + AH = status +Note: manufacturing header format (Defect Map Record format) can be found + in IBM 70MB, 115MB Fixed Disk Drives Technical Reference + the first sector read contains the manufacturing header with the number + of defect entries and the beginning of the defect map; the remaining + sectors contain the remainder of the defect map +--------d-131B------------------------------- +INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO SCSI DISK INFO BLOCK + AH = 1Bh + DL = hard drive ID +Return: CF set on error + AH = status code (see #00234 at AH=01h) + CF clear if successful + ES:BX -> SCSI disk information block (see #00252) +Notes: also sets a non-resettable flag which prevents some controller messages + from being displayed + the TMC-950 does not support any Future Domain BIOS calls; instead, + it provides a full CAM implementation (see INT 4F/AX=8100h) +SeeAlso: AH=18h"SCSI",AH=1Ch"SCSI" + +Format of Future Domain SCSI disk information block: +Offset Size Description (Table 00252) + 00h BYTE drive physical information (see #00253) + 01h WORD translated number of cylinders + 03h BYTE translated number of heads + 04h BYTE translated number of sectors per track (17, 34, or 63) + 05h BYTE drive address + bits 0-2: logical unit number + bits 3-5: device number + 06h BYTE 01h at initialization + 07h BYTE sense code byte 00h, or extended sense code byte 0Ch + 08h BYTE 00h + 09h BYTE 00h or extended sense code byte 02h (sense key) + 0Ah BYTE 00h + 0Bh 10 BYTEs copy of Command Descriptor Block (CDB) (see #03236,#03237) + 15h DWORD translated number of sectors on device + +Bitfields for Future Domain SCSI device physical information: +Bit(s) Description (Table 00253) + 0 ??? + 1 device uses parity + 2 256 bytes per sector instead of 512 + 3 don't have capacity yet??? + 4 disk is removable + 5 logical unit number is not present +--------d-131C------------------------------- +INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO FREE CONTROLLER RAM + AH = 1Ch + DL = hard drive ID (any valid SCSI hard disk) +Return: CF set on error + AH = status code (see #00234 at AH=01h) + CF clear if successful + ES:BX -> first byte of free RAM on controller +Notes: the Future Domain TMC-870 contains 1024 bytes of RAM at offsets 1800h + to 1BFFh on-board the controller for storing drive information and + controller status; ES:BX points to the first byte available for other + uses + ES contains the segment at which the controller resides; the + controller's two memory-mapped I/O ports are at offsets 1C00h, 1E00h +SeeAlso: AH=1Bh"SCSI" +--------d-131C------------------------------- +INT 13 U - ESDI FIXED DISK - ??? + AH = 1Ch + AL = subfunction (01h-06h) + DL = drive (80h,81h) + ??? +Return: ??? +Note: these functions perform a controller command 0612h without DMA +SeeAlso: AX=1C08h,PORT 3510h"ESDI" +--------d-131C08----------------------------- +INT 13 U - ESDI FIXED DISK - GET COMMAND COMPLETION STATUS + AX = 1C08h + DL = drive (80h,81h) + ES:BX -> buffer for Command Complete Status Block (see #00254) +Return: CF set on error + CF clear if successful + AH = status (see #00234 at AH=01h) +SeeAlso: AX=1C09h,AX=1C0Ah,PORT 3510h"ESDI" + +Format of ESDI Command Complete Status Block: +Offset Size Description (Table 00254) + 00h BYTE 07h + 01h BYTE size of block in words (07h) + 02h BYTE command error code (see #00255) + 03h BYTE command status code (see #00256) + 04h BYTE device error code, group 1 (see #00257) + 05h BYTE device error flags, group 2 (see #00258) + 06h WORD number of unprocessed sectors due to abnormal termination + 08h DWORD last Relative Sector Address processed by command + 0Ch WORD number of sectors corrected by ECC codes + +(Table 00255) +Values for ESDI command error code: + 00h successful + 01h parameter invalid + 02h unknown function + 03h unsupported command + 04h command cancelled + 05h unknown function + 06h controller diagnostics failed + 07h formatting failed + 08h format error in primary map + 09h format error in secondary map + 0Ah diagnostic failure during formatting + 0Bh warning: secondary map too large during formatting + 0Ch warning: non-zero defect + 0Dh system checksum error during formatting + 0Eh warning: incompatible device + 0Fh warning: push table overflowed + 10h warning: more than 15 sectors pushed to next cylinder + 11h internal hardware error + 12h warning: errors found while verifying sectors + 13h invalid device + FFh device error + +(Table 00256) +Values for ESDI command status code: + 01h successful + 03h successful after ECC + 05h successful after retries + 06h format partially completed + 07h successful after ECC and retries + 08h command completed with warning (see #00255) + 09h abort complete + 0Ah reset complete + 0Bh data transfer ready (no status block) + 0Ch command completed with failure (see #00257,#00258) + 0Dh DMA error + 0Eh command block error (see #00255) + 0Fh bad attention code +SeeAlso: #00257 + +(Table 00257) +Values for ESDI device error code, group 1: + 00h successful + 01h seek fault detected by device + 02h interface fault + 03h sector ID not found + 04h disk not formatted + 05h unrecoverable ECC error + 06h ECC error in sector ID + 07h invalid relative sector address + 08h timeout + 09h sector defective + 0Ah disk changed (removable media) + 0Bh selection error + 0Ch write protected (removable media) + 0Dh write fault + 0Eh read fault + 0Fh no index or sector pulse + 10h device not ready + 11h seek error detected by adapter + 12h bad format + 13h volume overflow + 14h data address mark not found + 15h sector ID not found + 16h missing device configuration data + 17h first/last relative sector flags missing + 18h track empty + 81h timeout while waiting for stop + 82h timeout while waiting for end of data transfer + 84h stopped awaiting data transfer during formatting + 85h timeout while waiting for head switch + 86h timeout while awaiting DMA completion +SeeAlso: #00256,#00258 + +Bitfields for ESDI device error flags, group 2: +Bit(s) Description (Table 00258) + 7-5 unused + 4 ready + 3 selected + 2 write fault + 1 on track 0 + 0 seek/command complete +SeeAlso: #00257 +--------d-131C09----------------------------- +INT 13 U - ESDI FIXED DISK - GET DEVICE STATUS + AX = 1C09h + DL = drive (80h,81h) + ES:BX -> buffer for Device Status Block (see #00259) +Return: CF set on error + CF clear if successful + AH = status (see #00234 at AH=01h) +SeeAlso: AX=1C08h,AX=1C0Ah,PORT 3510h"ESDI" + +Format of ESDI Device Status Block: +Offset Size Description (Table 00259) + 00h BYTE 08h + 01h BYTE number of words in block (09h) + 02h BYTE error flags + 03h BYTE unused + 04h BYTE command error code (see #00255) + 05h BYTE command status code (see #00256) + 06h WORD ESDI standard status + 08h 5 WORDs ESDI vendor-specific status codes +--------d-131C0A----------------------------- +INT 13 U - ESDI FIXED DISK - GET DEVICE CONFIGURATION + AX = 1C0Ah + DL = drive (80h,81h) + ES:BX -> buffer for Drive Configuration Status Block (see #00260) +Return: CF set on error + CF clear if successful + AH = status (see #00234 at AH=01h) +Note: device configuration format can be found in IBM ESDI Fixed Disk Drive + Adapter/A Technical Reference +SeeAlso: AX=1C08h,AX=1C0Bh,AX=1C0Ch + +Format of ESDI Drive Configuration Status Block: +Offset Size Description (Table 00260) + 00h BYTE 09h + 01h BYTE number of words in block (06h) + 02h BYTE flags + 03h BYTE number of spare sectors per cylinder + 04h DWORD total number of usable sectors + 08h WORD total number of cylinders + 0Ah BYTE tracks per cylinder + 0Bh BYTE sectors per track +--------d-131C0B----------------------------- +INT 13 U - ESDI FIXED DISK - GET ADAPTER CONFIGURATION + AX = 1C0Bh + ES:BX -> buffer for Controller Configuration Status Block (see #00261) +Return: CF set on error + CF clear if successful + AH = status (see #00234 at AH=01h) +SeeAlso: AX=1C0Ch + +Format of ESDI Controller Configuration Status Block: +Offset Size Description (Table 00261) + 00h BYTE E9h + 01h BYTE number of words in block (06h) + 02h WORD unused (0000h) + 04h DWORD controller microcode revision level + 08h 2 WORDs unused (0000h) +--------d-131C0C----------------------------- +INT 13 U - ESDI FIXED DISK - GET POS INFORMATION + AX = 1C0Ch + ES:BX -> buffer for POS Information Status Block (see #00262) +Return: CF set on error + CF clear if successful + AH = status (see #00234 at AH=01h) +SeeAlso: AX=1C0Bh + +Format of ESDI POS Information Status Block: +Offset Size Description (Table 00262) + 00h BYTE EAh + 01h BYTE number of words in block (05h) + 02h WORD magic value FFDDh + 04h BYTE POS register 3 + 05h BYTE POS register 2 + 06h BYTE POS register 5 (unused, FFh) + 07h BYTE POS register 4 (unused, FFh) + 08h BYTE POS register 7 (unused, FFh) + 09h BYTE POS register 6 (unused, FFh) +--------d-131C0D----------------------------- +INT 13 U - ESDI FIXED DISK - ??? + AX = 1C0Dh + DL = drive (80h,81h) + ??? +Return: ??? +Note: invokes controller command 0614h without DMA +SeeAlso: AH=1Ch"ESDI",AX=1C0Fh,PORT 3510h"ESDI" +--------d-131C0E----------------------------- +INT 13 U - ESDI FIXED DISK - TRANSLATE RBA TO ABA + AX = 1C0Eh + CH = low 8 bits of cylinder number + CL = sector number, high two bits of cylinder number in bits 6 and 7 + DH = head number + DL = drive number (80h,81h) + ES:BX -> ABA number +Return: CF set on error + CF clear if successful + AH = status (see #00234 at AH=01h) +Note: ABA (absolute block address) format can be found in IBM ESDI Adapter + Technical Reference by using its Device Configuration Status Block +SeeAlso: AX=1C08h,AX=1C0Fh,PORT 3510h"ESDI" +--------d-131C0F----------------------------- +INT 13 U - ESDI FIXED DISK - ??? + AX = 1C0Fh + DL = drive (80h,81h) + ??? +Return: ??? +Note: invokes controller command 0614h without DMA +SeeAlso: AH=1Ch"ESDI",AX=1C0Dh,AX=1C12h,PORT 3510h"ESDI" +--------d-131C12----------------------------- +INT 13 U - ESDI FIXED DISK - ??? + AX = 1C12h + DL = drive (80h,81h) + ??? +Return: ??? +Note: invokes controller command 0612h without DMA +SeeAlso: AH=1Ch"ESDI",AX=1C0Fh,PORT 3510h"ESDI" +--------c-131D------------------------------- +INT 13 - IBMCACHE.SYS - CACHE STATUS + AH = 1Dh + AL = subfunction + 01h get status record + DL = drive??? + Return: ES:BX -> status record (see #00263) + CF set on error + AH = error code + 02h set cache status + ES:BX -> status record (see #00263) + DL = drive??? + Return: CF set on error + +Format of IBMCACHE.SYS status record: +Offset Size Description (Table 00263) + 00h DWORD total number of read requests + 04h DWORD total number of hits + 08h DWORD number of physical disk reads + 0Ch DWORD total number of sectors requested by physical disk reads + 10h 6 BYTEs ??? + 16h DWORD pointer to start of error list (see #00264) + 1Ah DWORD pointer to end of error list + 1Eh WORD ??? + 20h BYTE using extended memory if nonzero + 21h BYTE ??? + 22h 4 BYTEs ASCII version number + 26h WORD cache size in KB + 28h WORD sectors per page + +Format of IBMCACHE.SYS error list: +Offset Size Description (Table 00264) + 00h DWORD relative block address of bad page + 04h BYTE drive + 05h BYTE sector bit-map + 06h WORD next error +--------d-131F------------------------------- +INT 13 - SyQuest - DOOR LATCH/DOOR BUTTON DETECT + AH = 1Fh + AL = subfunction + 00h allow media removal + 01h prevent media removal (lock door) + DL = drive ID (bit 7 set for hard disks) +Return: CF clear if successful + AH = 00h + CF set on error + AH = error code + 00h successful + 01h invalid function request + 80h timeout + DDh media change requested +SeeAlso: AH=12h"SyQuest",AH=13h"SyQuest",AH=59h"SyQuest" +--------d-1320------------------------------- +INT 13 - DISK - ??? (Western Digital "Super BIOS") + AH = 20h + ??? +Return: ??? +Notes: returns some kind of status related to whether the drive contains its + default media type + QEMM v6.00 calls INT 13/AX=2000h/DL=81h in some cases +--------b-1320------------------------------- +INT 13 U - Compaq, ATAPI Removable Media Device - GET CURRENT MEDIA FORMAT + AH = 20h + DL = drive number (00h,01h) +Return: CF clear if successful + AL = media type (see #00265) + AH = 00h + CF set on error + AH = error code + 01h invalid request + 30h drive does not support media sense + 31h no such drive / media not present + 32h non-default media / drive does not support media type +Notes: this function is supported by the 1993/3/8 Compaq ROM BIOS, but only + partially (AL is always 00h when successful) by the 1993/8/3 version + this function is also supported by some recent versions of the Phoenix + 486 BIOS + this function does not seem to be supported by some Toshiba BIOSes + (at least before 1995, maybe some laptops??? with 1.44 MB floppies), + because S/DOS 1.0 contains code to bypass a call to this function, + always assuming the drive would not support media sense. +SeeAlso: AH=15h + +(Table 00265) +Values for Compaq/ATAPI diskette media type: + 03h 720K (1M unformatted) + 04h 1.44M (2M unformatted) + 06h 2.88M (4M unformatted) + 0Ch 360K + 0Dh 1.2M + 0Eh Toshiba 3mode + 0Fh NEC 3mode (1024-byte sectors) + 10h ATAPI Removable Media Device +--------c-1320------------------------------- +INT 13 u - QUICKCACHE II v4.20 - DISMOUNT + AH = 20h + AL = drive (00h = A:, etc. or 7Fh for all removable drives??? + or FFh for all drives) +Return: AX = status (0000h successful) +Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and + Associates, Inc. +Desc: flush any dirty buffers for the specified drive(s) and then discard + those sector buffers +SeeAlso: AH=21h"QUICKCACHE",AH=22h"QUICKCACHE",AH=28h +--------d-1321------------------------------- +INT 13 - HARD DISK - PS/1 and newer PS/2 - READ MULTIPLE DISK SECTORS + AH = 21h + AL = number of sectors to write + CH = low byte of 12-bit cylinder number + CL = starting sector (bits 0-5) and bits 8-9 of cylinder (bits 6-7) + DH = head number (bits 0-5) and bits 10-11 of cylinder (bits 6-7) + DL = drive number (80h,81h) + ES:BX -> buffer for data to be read +Return: CF clear if successful + ES:BX buffer filled + CF set on error + AH = status (see #00234 at AH=01h) +Desc: read from the disk using the Multiple Block mode available on newer + IDE drives and some hard disk controllers, which generates an + interrupt only after the end of transferring a group of sectors + rather than after each sector +Notes: must call AH=24h"PS/1" before using this function + input values in CL and DH are not range-checked + the byte at address 0040h:0074h is set to the status of the operation +SeeAlso: AH=02h,AH=22h"PS/1",AH=23h"PS/1",AH=24h"PS/1" +--------c-1321------------------------------- +INT 13 u - QUICKCACHE II v4.20 - FLUSH CACHE + AH = 21h +Return: AX = status (0000h successful) +Desc: immediately write all dirty sectors back to disk +Note: this is one out of several cache flush calls issued by the PTS-DOS 6.51 + and S/DOS 1.0 kernel before rebooting. It is called with DL=80h and + conflicts with the PS/2 function of the same function number, because + the kernel does not perform Quickcache's installation check first. +SeeAlso: AH=25h"QUICKCACHE",AH=2Eh,AH=2Fh +--------d-1322------------------------------- +INT 13 - HARD DISK - PS/1 and newer PS/2 - WRITE MULTIPLE DISK SECTORS + AH = 22h + AL = number of sectors to write + CH = low byte of 12-bit cylinder number + CL = starting sector (bits 0-5) and bits 8-9 of cylinder (bits 6-7) + DH = head number (bits 0-5) and bits 10-11 of cylinder (bits 6-7) + DL = drive number (80h,81h) + ES:BX -> buffer containing data to be written +Return: CF clear if successful + CF set on error + AH = status (see #00234 at AH=01h) +Desc: write to the disk using the Multiple Block mode available on newer + IDE drives and some hard disk controllers, which generates an + interrupt only after the end of transferring a group of sectors + rather than after each sector +Notes: must call AH=24h"PS/1" before using this function + input values in CL and DH are not range-checked + the byte at address 0040h:0074h is set to the status of the operation +SeeAlso: AH=03h,AH=21h"PS/1",AH=23h"PS/1",AH=24h"PS/1" +--------c-1322------------------------------- +INT 13 u - QUICKCACHE II v4.20 - ENABLE/DISABLE CACHE + AH = 22h + AL = new state (00h disabled, 01h enabled) +Return: AX = status (0000h successful) +Note: enables/disables caching of all drives +SeeAlso: AH=2Ch,AH=2Dh,AH=32h,AH=33h,AH=A3h,AH=A4h +--------d-1323------------------------------- +INT 13 U - HARD DISK - PS/1 and newer PS/2 - SET CONTROLLER FEATURES REGISTER + AH = 23h + AL = feature number (see #00266) + DL = drive number (80h,81h) + ??? +Return: CF clear if successful + CF set on error + AH = status (see #00234 at AH=01h) +SeeAlso: AH=21h"PS/1",AH=22h"PS/1",AH=24h"PS/1",AH=25h"PS/1" + +(Table 00266) +Values for PS/1 hard disk feature number: + 01h select 8-bit data transfers instead of 16-bit + 02h enable write cache + 22h Write Same, user-specified area + 33h disable retries + 44h set number of ECC bytes for read long/write long (see AH=0Ah,AH=0Bh) + 54h set cache segments + 55h disable lookahead + 66h disable reverting to power-on defaults + 77h disable error correctioni + 81h select 16-bit data transfers (default) + 82h disable write cache + 88h enable error correction (default) + 99h enable retries (default) + AAh enable lookahead + BBh set ECC length for read long/write long to four bytes + CCh enable reverting to power-on defaults + DDh Write Same, entire disk +SeeAlso: #P0535 +--------c-1323------------------------------- +INT 13 U - QUICKCACHE II v4.20 - GET ??? ADDRESS + AH = 23h +Return: AX = status (0000h successful) + ES = segment of ??? data +--------d-1324------------------------------- +INT 13 - HARD DISK - PS/1 and newer PS/2 - SET MULTIPLE MODE + AH = 24h + AL = number of sectors per block (2,4,8,16) + DL = drive number (80h,81h) +Return: CF clear if successful + CF set onerror + AH = status (see #00234 at AH=01h) +Desc: specify how many sectors the controller should transfer as a group + between operation-complete interrupts when using the Read Multiple + and Write Multiple functions (AH=21h,AH=22h) +Notes: set the number of sectors to 0 to disable multiple-transfer mode + the maximum value for the block size depends on the fixed disk + drive type. The value is stored in byte 15h of the fixed disk + drive parameter table that is created by POST. + the byte at address 0040h:0074h is set to status of operation. +SeeAlso: AH=21h"PS/1",AH=22h"PS/1",AH=23h"PS/1",AH=25h"PS/1" +--------c-1324------------------------------- +INT 13 u - QUICKCACHE II v4.20 - SET SECTORS + AH = 24h + BX = new number of sector buffers in cache +Return: AX = status + 0000h successful + 0001h failed--size adjusted + 8000h cache cannot be resized while enabled +SeeAlso: AH=36h +--------d-1325------------------------------- +INT 13 - HARD DISK - PS/1 and newer PS/2 - IDENTIFY DRIVE + AH = 25h + DL = drive number (80h,81h) + ES:BX-> 512 byte buffer for reply packet +Return: CF clear if successful + CF set on error + AH = status (see #00234 at AH=01h) + buffer filled with ATA/IDE-style drive information block (see #00267) +Desc: retrieves the 256 words of drive data stored on an IDE hard disk +Notes: the byte at address 0040h:0074h is set to the status of the operation + IBM officially classifies this function as optional +SeeAlso: AH=23h"PS/1" + +Format of drive information block: +Offset Size Description (Table 00267) + 00h WORD general drive configuration (see #00268) + 02h WORD number of cylinders + 04h WORD reserved + 06h WORD number of heads + 08h WORD number of unformatted bytes per track + 0Ah WORD number of unformatted bytes per sector + 0Ch WORD number of sectors per track + 0Eh 6 BYTEs vendor unique + 14h 20 BYTEs serial number in ASCII, 0000h=not specified) + 28h WORD buffer type + 2Ah WORD buffer size in 512 byte increments (0000h=not specified) + 2Ch WORD number of ECC bytes passed on Read/Write Long cmds + 0000h = not specified + 2Eh 8 BYTEs firmware revision in ASCII, 0000h=not specified + 36h 40 BYTEs model number in ASCII, 0000h=not specified + 5Eh WORD bits 15-8 Vendor Unique + bits 7-0 00h = Read/Write Multiple commands not implemented + xxh = Maximum number of sectors that can be + transferred per interrupt on Read and Write + Multiple commands + 60h WORD 0000h = cannot perform doubleword I/O + 0001h = can perform doubleword I/O + 62h WORD capabilities + bit 15-9 0=reserved + bit 8 1=DMA Supported + bit 7-0 Vendor Unique + 64h WORD reserved + 66h WORD bits 15-8 PIO data transfer cycle timing mode + bits 7-0 Vendor Unique + 68h WORD bits 15-8 DMA data transfer cycle timing mode + bits 7-0 Vendor Unique + 6Ah WORD bits 15-1 reserved + bit 0 1=the fields reported in tranlation mode are valid + 0=the fields reported in translation mode may be valid + 6Ch WORD number of current cylinders + 6Eh WORD number of current heads + 70h WORD number of current sectors per track + 72h DWORD current capacity in sectors + 76h WORD reserved + 78h 136 BYTEs not defined by ATA spec 2.6 +100h 64 BYTEs vendor unique +140h 96 BYTEs reserved +Note: the above description is as in the ATA (AT Attachment) Specification. +SeeAlso: #P0516 + +Bitfields for general drive configuration: +Bit(s) Description (Table 00268) + 15 0 reserved for non-magnetic drives + 14 format speed tolerance gap required + 13 track offset option available + 12 data strobe offset option available + 11 rotational speed tolerance is > 0.5% + 10 disk transfer rate > 10 Mbs + 9 disk transfer rate > 5Mbs but <= 10Mbs + 8 disk transfer rate <= 5Mbs + 7 removable cartridge drive + 6 fixed drive + 5 spindle motor control option implemented + 4 head switch time > 15 usec + 3 not MFM encoded + 2 soft sectored + 1 hard sectored + 0 reserved (0) +--------c-1325------------------------------- +INT 13 u - QUICKCACHE II v4.20 - SET FLUSH INTERVAL + AH = 25h + BX = interval +Return: AX = status (0000h successful) +Desc: specify how often the cache should write dirty buffers to disk when + buffered writes are enabled +SeeAlso: AH=21h"QUICKCACHE",AH=2Ch,AH=2Eh +--------c-1326------------------------------- +INT 13 U - QUICKCACHE II v4.20 - UNINSTALL + AH = 26h +Return: AX = status + 0000h successful + 0001h-00FFh interrupt vector which was hooked by another TSR +SeeAlso: AH=27h +--------c-1327--BX0000----------------------- +INT 13 u - QUICKCACHE II v4.20 - INSTALLATION CHECK + AH = 27h + BX = 0000h +Return: AX = 0000h if installed + BX nonzero if installed + BH = major version + BL = binary minor version +Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and + Associates, Inc. +SeeAlso: AH=26h,AH=A0h,INT 16/AX=FFA5h/CX=1111h +--------c-1328------------------------------- +INT 13 U - QUICKCACHE II v4.20 - SET AUTOMATIC DISMOUNT + AH = 28h + AL = new state (00h disabled, 01h enabled) +Return: AX = status (0000h successful) +SeeAlso: AH=20h"QUICKCACHE" +--------c-1329------------------------------- +INT 13 U - QUICKCACHE II v4.20 - NOP + AH = 29h +Return: AX = 0000h +--------c-132A------------------------------- +INT 13 u - QUICKCACHE II v4.20 - SET BUFFER SIZE + AH = 2Ah + AL = buffer size (1-30) +Return: AX = status (0000h successful) +Desc: specify the number of cache sector buffers to dedicate to buffered read + and write operations +SeeAlso: AH=2Ch,AH=2Dh,AH=39h,AH=3Ah +--------c-132B------------------------------- +INT 13 U - QUICKCACHE II v4.20 - DRIVE ACCESS SOUNDS + AH = 2Bh + AL = new state (00h disabled, 01h enabled) +Return: AX = status (0000h successful) +--------c-132C------------------------------- +INT 13 u - QUICKCACHE II v4.20 - SET BUFFERED WRITES + AH = 2Ch + AL = new state (00h disabled, 01h enabled) +Return: AX = status (0000h successful) +Desc: specify whether the cache should delay disk writes +Note: this function enables or disables delayed writes for all drives; use + AH=38h to change a single drive +SeeAlso: AH=25h"QUICKCACHE",AH=2Dh,AH=2Eh,AH=38h +--------c-132D------------------------------- +INT 13 u - QUICKCACHE II v4.20 - SET BUFFERED READ + AH = 2Dh + AL = new state (00h disabled, 01h enabled) +Return: AX = status (0000h successful) +Desc: specify whether the cache should attempt to read ahead of actual + requests +Note: this function enables or disables read-ahead for all drives; use AH=37h + to change a single drive +SeeAlso: AH=2Ch,AH=37h +--------c-132E------------------------------- +INT 13 u - QUICKCACHE II v4.20 - SET FLUSH COUNT + AH = 2Eh + BX = flush count +Return: AX = status (0000h successful) +Desc: specify how many dirty sectors the cache should write after each flush + interval (see AH=25h"QUICKCACHE") when buffered writes are enabled +SeeAlso: AH=21h"QUICKCACHE",AH=25h"QUICKCACHE",AH=2Ch +--------c-132F------------------------------- +INT 13 - QUICKCACHE II v4.20 - FORCE IMMEDIATE INCREMENTAL FLUSH + AH = 2Fh +Return: AX = status (0000h successful) +Desc: immediately flush up to "flushcount" dirty sectors to disk as if the + flush interval had expired +SeeAlso: AH=21h"QUICKCACHE" +--------c-1330------------------------------- +INT 13 u - QUICKCACHE II v4.20 - GET INFO + AH = 30h + AL = what to get + 00h system info (see #00269) + 01h drive info (see #00270) + 02h access frequency (array of 30 words) + 03h drive index + (array of 32 bytes indicating BIOS drive for DOS drive) + DS:DX -> buffer for info +Return: AX = status (0000h successful, 8000h invalid info specifier) +Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and + Associates, Inc. + +Format of QUICKCACHE II system info: +Offset Size Description (Table 00269) + 00h BYTE flag: cache enabled + 01h BYTE flag: buffered writes enabled + 02h BYTE flag: buffered reads enabled + 03h BYTE flag: sounds enabled + 04h BYTE flag: autodismount enabled + 05h BYTE ??? + 06h BYTE flag: ??? + 07h BYTE flag: ??? + 08h BYTE flag: "em_assigned" + 09h BYTE flag: emulated EMS + 0Ah BYTE single sector bonus + 0Bh BYTE "sticky_max" + 0Ch BYTE write sector bonus + 0Dh BYTE bonus threshold + 0Eh WORD flush interval + 10h WORD flush count + 12h WORD reserve pool size + 14h WORD remaining space in reserve pool + 16h WORD required free memory + 18h WORD total cache sectors + 1Ah WORD dirty cache sectors + 1Ch BYTE trace buffer size + 1Dh BYTE reserved (padding) +SeeAlso: #00270 + +Format of QUICKCACHE II drive info [16-element array, one element]: +Offset Size Description (Table 00270) + 00h BYTE DOS drive number + 01h BYTE BIOS drive number + 02h BYTE maximum sector number + 03h BYTE maximum head number + 04h BYTE read buffer size + 05h BYTE write buffer size + 06h BYTE last status + 07h BYTE flag: enabled + 08h BYTE flag: buffered write enabled + 09h BYTE flag: buffered read enabled + 0Ah BYTE flag: in use (drive info is valid) + 0Bh BYTE flag: cylinder flush + 0Ch BYTE reserved (padding) + 0Dh BYTE sectors per track + 0Eh WORD sector size + 10h WORD sectors assigned + 12h WORD dirty sectors + 14h WORD reserved sectors + 16h WORD number of read errors + 18h WORD number of write errors + 1Ah DWORD "rio_count" + 1Eh DWORD number of cache misses + 22h DWORD "wio_count" + 26h DWORD "dio_count" +SeeAlso: #00269 +--------c-1331------------------------------- +INT 13 U - QUICKCACHE II v4.20 - RESERVE MEMORY + AH = 31h + BX = number of paragraphs of conventional memory to reserve for apps +Return: AX = status (0000h successful) +--------c-1332------------------------------- +INT 13 U - QUICKCACHE II v4.20 - ENABLE CACHING FOR SPECIFIC DRIVE + AH = 32h + AL = drive number (00h=A:) +Return: AX = status (0000h successful) +SeeAlso: AH=22h"QUICKCACHE",AH=33h +--------c-1333------------------------------- +INT 13 U - QUICKCACHE II v4.20 - DISABLE CACHING FOR SPECIFIC DRIVE + AH = 33h + AL = drive number (00h=A:) +Return: AX = status (0000h successful) +SeeAlso: AH=22h"QUICKCACHE",AH=32h +--------c-1334------------------------------- +INT 13 U - QUICKCACHE II v4.20 - SECTOR LOCKING + AH = 34h + AL = function + 00h end sector locking/unlocking + 01h lock all accessed sectors into cache + 02h unlock all accessed sectors and discard from cache +Return: AX = status (0000h successful) +SeeAlso: AH=20h"QUICKCACHE",AH=35h +--------c-1335------------------------------- +INT 13 U - QUICKCACHE II v4.20 - SET LOCK POOL SIZE + AH = 35h + BX = number of sectors in lock pool +Return: AX = status (0000h successful) +Desc: specify the number of cache sector buffers which may be dedicated to + data locked into the cache +SeeAlso: AH=34h +--------c-1336------------------------------- +INT 13 U - QUICKCACHE II v4.20 - SET TRACE BUFFER SIZE + AH = 36h + AL = new size of trace buffer +Return: AX = status (0000h successful) +Note: called with AL=05h during an INT 13/AH=24h"QUICKCACHE" call +SeeAlso: AH=24h"QUICKCACHE" +--------c-1337------------------------------- +INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED READS FOR SPECIFIC DRIVE + AH = 37h + AL = new state (00h disabled, else enabled) + DL = drive number (00h = A:) +Return: AX = status (0000h successful) +SeeAlso: AH=2Dh,AH=38h +--------c-1338------------------------------- +INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED WRITES FOR SPECIFIC DRIVE + AH = 38h + AL = new state (00h disabled, else enabled) + DL = drive number (00h = A:) +Return: AX = status (0000h successful) +SeeAlso: AH=2Ch,AH=37h +--------c-1339------------------------------- +INT 13 U - QUICKCACHE II v4.20 - SET READ BUFFER SIZE FOR SPECIFIC DRIVE + AH = 39h + AL = new size of read buffer + DL = drive number (00h = A:) +Return: AX = status (0000h successful) +Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and + Associates, Inc. +SeeAlso: AH=2Ah,AH=3Ah +--------c-133A------------------------------- +INT 13 U - QUICKCACHE II v4.20 - SET WRITE BUFFER SIZE FOR SPECIFIC DRIVE + AH = 3Ah + AL = new size of write buffer + DL = drive number (00h = A:) +Return: AX = status (0000h successful) +SeeAlso: AH=2Ah,AH=39h +--------c-133B------------------------------- +INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ??? + AH = 3Bh + AL = new state of ??? (01h enabled, else disabled) +Return: AX = status (0000h successful) +Note: is affected by the flag reported at offset 05h of the system info + returned by AH=30h, and sets the flag at offset 06h +SeeAlso: AH=3Ch +--------c-133C------------------------------- +INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ??? + AH = 3Ch + AL = new state of ??? (01h enabled, else disabled) +Return: AX = status (0000h successful) +Note: is affected by the flag reported at offset 05h of the system info + returned by AH=30h, and sets the flag at offset 07h +SeeAlso: AH=3Bh +--------c-133D------------------------------- +INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE CYLINDER FLUSH FOR DRIVE + AH = 3Dh + AL = new state (01h enabled, else disabled) + DL = drive number (00h = A:) +Return: AX = status (0000h successful) +--------c-133E------------------------------- +INT 13 U - QUICKCACHE II v4.20 - SET SINGLE-SECTOR BONUS + AH = 3Eh + AL = new value for bonus +Return: AX = status (0000h successful) +Desc: specify the bonus score to give to single-sector transfers in order to + keep those sectors in the cache longer +--------c-133F------------------------------- +INT 13 U - QUICKCACHE II v4.20 - SET BONUS THRESHOLD + AH = 3Fh + AL = new value for bonus threshold +Return: AX = status (0000h successful) +--------c-1340------------------------------- +INT 13 U - QUICKCACHE II v4.20 - SET "sticky_max" + AH = 40h + AL = new value for "sticky_max" +Return: AX = status (0000h successful) +SeeAlso: AH=41h"QUICKCACHE" +--------d-1341--BX55AA----------------------- +INT 13 - IBM/MS INT 13 Extensions - INSTALLATION CHECK + AH = 41h + BX = 55AAh + DL = drive (80h-FFh) +Return: CF set on error (extensions not supported) + AH = 01h (invalid function) + CF clear if successful + BX = AA55h if installed + AH = major version of extensions + 01h = 1.x + 20h = 2.0 / EDD-1.0 + 21h = 2.1 / EDD-1.1 + 30h = EDD-3.0 + AL = internal use + CX = API subset support bitmap (see #00271) + DH = extension version (v2.0+ ??? -- not present in 1.x) +Note: the Phoenix Enhanced Disk Drive Specification v1.0 uses version 2.0 of + the INT 13 Extensions API +SeeAlso: AH=42h"INT 13 Ext",AH=48h"INT 13 Ext" + +Bitfields for IBM/MS INT 13 Extensions API support bitmap: +Bit(s) Description (Table 00271) + 0 extended disk access functions (AH=42h-44h,47h,48h) supported + 1 removable drive controller functions (AH=45h,46h,48h,49h,INT 15/AH=52h) + supported + 2 enhanced disk drive (EDD) functions (AH=48h,AH=4Eh) supported + extended drive parameter table is valid (see #00273,#00278) + 3-15 reserved (0) +--------c-1341------------------------------- +INT 13 U - QUICKCACHE II v4.20 - SAVE/RESTORE ??? + AH = 41h + AL = direction + 01h save to file + else restore from file + ES:DI -> 1024-byte buffer for ??? +Return: AX = status (0000h successful, 8000h failed) +Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and + Associates, Inc. +SeeAlso: AH=40h"QUICKCACHE" +--------d-1342------------------------------- +INT 13 - IBM/MS INT 13 Extensions - EXTENDED READ + AH = 42h + DL = drive number + DS:SI -> disk address packet (see #00272) +Return: CF clear if successful + AH = 00h + CF set on error + AH = error code (see #00234) + disk address packet's block count field set to number of blocks + successfully transferred +SeeAlso: AH=02h,AH=41h"INT 13 Ext",AH=43h"INT 13 Ext" + +Format of disk address packet: +Offset Size Description (Table 00272) + 00h BYTE size of packet (10h or 18h) + 01h BYTE reserved (0) + 02h WORD number of blocks to transfer (max 007Fh for Phoenix EDD) + 04h DWORD -> transfer buffer + 08h QWORD starting absolute block number + (for non-LBA devices, compute as + (Cylinder*NumHeads + SelectedHead) * SectorPerTrack + + SelectedSector - 1 + 10h QWORD (EDD-3.0, optional) 64-bit flat address of transfer buffer; + used if DWORD at 04h is FFFFh:FFFFh +--------N-134257DX1234----------------------- +INT 13 U - Beame&Whiteside BWLPD - INSTALLATION CHECK + AX = 4257h ("BW") + DX = 1234h +Return: BX = 414Ch if installed +Program: BWLPD is the printer daemon from the BW-NFS package +SeeAlso: INT 62/AH=00h"ETHDEV" +--------d-1343------------------------------- +INT 13 - IBM/MS INT 13 Extensions - EXTENDED WRITE + AH = 43h + AL = write flags + ---v1.0,2.0--- + bit 0: verify write + bits 7-1 reserved (0) + ---v2.1+ --- + 00h,01h write without verify + 02h write with verify + DL = drive number + DS:SI -> disk address packet (see #00272) +Return: CF clear if successful + AH = 00h + CF set on error + AH = error code (see #00234) + disk address packet's block count field set to number of blocks + successfully transferred +Note: the BIOS returns CF set/AH=01h (invalid function) if verify is + requested but not supported +SeeAlso: AH=03h,AH=41h"INT 13 Ext",AH=42h"INT 13 Ext",AH=44h +--------d-1344------------------------------- +INT 13 - IBM/MS INT 13 Extensions - VERIFY SECTORS + AH = 44h + DL = drive number + DS:SI -> disk address packet (see #00272) +Return: CF clear if successful + AH = 00h + CF set on error + AH = error code (see #00234) + disk address packet's block count field set to number of blocks + successfully verified +SeeAlso: AH=04h,AH=41h"INT 13 Ext",AH=42h"INT 13 Ext",AH=47h +--------d-1345------------------------------- +INT 13 - IBM/MS INT 13 Extensions - LOCK/UNLOCK DRIVE + AH = 45h + AL = operation + 00h lock media in drive + 01h unlock media + 02h check lock status + DL = drive number +Return: CF clear if successful + AH = 00h + AL = lock state (00h = unlocked) + CF set on error + AH = error code (see #00234) +Notes: this function is required to be supported for any removable drives + numbered 80h or higher + a device may be locked even if no media is present in the drive + up to 255 locks may be placed on a drive, and the media will not + be physically unlocked until all locks have been removed +SeeAlso: AH=41h"INT 13 Ext",AH=46h,AH=49h,INT 15/AH=52h"INT 13 Extensions" +--------d-1346------------------------------- +INT 13 - IBM/MS INT 13 Extensions - EJECT MEDIA + AH = 46h + AL = 00h (reserved) + DL = drive number +Return: CF clear if successful + AH = 00h + CF set on error + AH = error code (see #00234) +SeeAlso: AH=49h,INT 15/AH=52h"INT 13 Extensions" +--------d-1347------------------------------- +INT 13 - IBM/MS INT 13 Extensions - EXTENDED SEEK + AH = 47h + DL = drive number + DS:SI -> disk address packet (see #00272) +Return: CF clear if successful + AH = 00h + CF set on error + AH = error code (see #00234) +Note: this function initiates the seek, and may return before the seek + actually completes +SeeAlso: AH=0Ch,AH=42h"INT 13 Ext" +--------d-1348------------------------------- +INT 13 - IBM/MS INT 13 Extensions - GET DRIVE PARAMETERS + AH = 48h + DL = drive (80h-FFh) + DS:SI -> buffer for drive parameters (see #00273) +Return: CF clear if successful + AH = 00h + DS:SI buffer filled + CF set on error + AH = error code (see #00234) +BUGS: several different Compaq BIOSes incorrectly report high-numbered + drives (such as 90h, B0h, D0h, and F0h) as present, giving them the + same geometry as drive 80h; as a workaround, scan through disk + numbers, stopping as soon as the number of valid drives encountered + equals the value in 0040h:0075h + Dell machines using PhoenixBIOS 4.0 Release 6.0 fail to correctly + handle this function if the flag word at DS:[SI+2] is not 0000h + on entry +SeeAlso: AH=08h,AH=41h,AH=49h,MEM 0040h:0075h + +Format of IBM/MS INT 13 Extensions drive parameters: +Offset Size Description (Table 00273) + 00h WORD (call) size of buffer + (001Ah for v1.x, 001Eh for v2.x, 42h for v3.0) + (ret) size of returned data + 02h WORD information flags (see #00274) + 04h DWORD number of physical cylinders on drive + 08h DWORD number of physical heads on drive + 0Ch DWORD number of physical sectors per track + 10h QWORD total number of sectors on drive + 18h WORD bytes per sector +---v2.0+ --- + 1Ah DWORD -> EDD configuration parameters (see #00278) + FFFFh:FFFFh if not available +---v3.0 --- + 1Eh WORD signature BEDDh to indicate presence of Device Path info + 20h BYTE length of Device Path information, including signature and this + byte (24h for v3.0) + 21h 3 BYTEs reserved (0) + 24h 4 BYTEs ASCIZ name of host bus ("ISA" or "PCI") + 28h 8 BYTEs ASCIZ name of interface type + "ATA" + "ATAPI" + "SCSI" + "USB" + "1394" IEEE 1394 (FireWire) + "FIBRE" Fibre Channel + 30h 8 BYTEs Interface Path (see #00275) + 38h 8 BYTEs Device Path (see #00276) + 40h BYTE reserved (0) + 41h BYTE checksum of bytes 1Eh-40h (two's complement of sum, which makes + the 8-bit sum of bytes 1Eh-41h equal 00h) +Note: if the size is less than 30 on call, the final DWORD will not be + returned by a v2.x implementation; similarly for the Device Path info +SeeAlso: #00277,#03196 + +Bitfields for IBM/MS INT 13 Extensions information flags: +Bit(s) Description (Table 00274) + 0 DMA boundary errors handled transparently + 1 cylinder/head/sectors-per-track information is valid + 2 removable drive + 3 write with verify supported + 4 drive has change-line support (required if drive >= 80h is removable) + 5 drive can be locked (required if drive >= 80h is removable) + 6 CHS information set to maximum supported values, not current media + 15-7 reserved (0) +Note: bits 4-6 are only valid if bit 2 is set +SeeAlso: #00273 + +Format of EDD v3.0 Interface Path: +Offset Size Description (Table 00275) +---ISA--- + 00h WORD 16-bit base address + 02h 6 BYTEs reserved (0) +---PCI--- + 00h BYTE PCI bus number + 01h BYTE PCI device number + 02h BYTE PCI function number + 03h 5 BYTEs reserved (0) +SeeAlso: #00273,#00276 + +Format of EDD v3.0 Device Path: +Offset Size Description (Table 00276) +---ATA--- + 00h BYTE flag: 00h = master, 01h = slave + 01h 7 BYTEs reserved (0) +---ATAPI--- + 00h BYTE flag: 00h = master, 01h = slave + 01h BYTE logical unit number + 02h 6 BYTEs reserved (0) +---SCSI--- + 00h BYTE logical unit number + 01h 7 BYTEs reserved (0) +---USB--- + 00h BYTE to be determined + 01h 7 BYTEs reserved (0) +---IEEE1394--- + 00h QWORD 64-bit FireWire General Unique Identifier (GUID) +---FibreChannel--- + 00h QWORD Word Wide Number (WWN) +SeeAlso: #00273,#00275 + +Format of Phoenix Enhanced Disk Drive Spec translated drive parameter table: +Offset Size Description (Table 00277) + 00h WORD number of cylinders + 02h BYTE number of heads + 03h BYTE A0h (signature indicating translated table) + 04h BYTE number of physical sectors per track + 05h WORD starting write precompensation cylinder number + 07h BYTE reserved + 08h BYTE control byte (see #03198 at INT 41"DISK 0") + 09h WORD number of physical cylinders + 0Bh BYTE number of physical heads + 0Ch WORD cylinder number of landing zone + 0Eh BYTE number of logical sectors per track + 0Fh BYTE checksum +Program: the Phoenix Enhanced Disk Drive Specification is an addition to the + IBM/MS INT 13 extensions +SeeAlso: #00278,#03196 + +Format of Phoenix Enhanced Disk Drive Spec Fixed Disk Parameter Table: +Offset Size Description (Table 00278) + 00h WORD physical I/O port base address + 02h WORD disk-drive control port address + 04h BYTE drive flags (see #00279) + 05h BYTE proprietary information + bits 7-4 reserved (0) + bits 3-0: Phoenix proprietary (used by BIOS) + 06h BYTE IRQ for drive (bits 3-0; bits 7-4 reserved and must be 0) + 07h BYTE sector count for multi-sector transfers + 08h BYTE DMA control + bits 7-4: DMA type (0-2) as per ATA-2 specification + bits 3-0: DMA channel + 09h BYTE programmed I/O control + bits 7-4: reserved (0) + bits 3-0: PIO type (1-4) as per ATA-2 specification + 0Ah WORD drive options (see #00280) + 0Ch 2 BYTEs reserved (0) + 0Eh BYTE extension revision level (high nybble=major, low nybble=minor) + (currently 10h for v1.0 and 11h for v1.1-3.0) + 0Fh BYTE 2's complement checksum of bytes 00h-0Eh + 8-bit sum of all bytes 00h-0Fh should equal 00h +Note: this structure is also called the Device Paramter Table Extension + (DPTE) +SeeAlso: #00277 + +Bitfields for Phoenix Enhanced Disk Drive Spec drive flags: +Bit(s) Description (Table 00279) + 7 reserved (1) + 6 LBA enabled + 5 reserved (1) + 4 drive is slave + 3-0 reserved (0) +SeeAlso: #00278,#00280 + +Bitfields for Phoenix Enhanced Disk Drive Spec drive options: +Bit(s) Description (Table 00280) + 0 fast PIO enabled + 1 fast DMA access enabled + 2 block PIO (multi-sector transfers) enabled + 3 CHS translation enabled + 4 LBA translation enabled + 5 removable media + 6 ATAPI device (CD-ROM) + 7 32-bit transfer mode +---v1.1+ --- + 8 ATAPI device uses DRQ to signal readiness for packet command + (must be 0 if bit 6 is 0) + 10-9 translation type (must be 00 if bit 3 is 0) + 00 Phoenix bit-shifting translation + 01 LBA-assisted translation + 10 reserved + 11 proprietary translation +---v3.0--- + 11 Ultra DMA access enabled + 15-12 reserved (0) +SeeAlso: #00278,#00279 +--------d-1349------------------------------- +INT 13 - IBM/MS INT 13 Extensions - EXTENDED MEDIA CHANGE + AH = 49h + DL = drive number +Return: CF clear if media has not changed + AH = 00h + CF set if media may have changed + AH = 06h (see #00234) +Note: unlike AH=16h, any drive number may be specified +SeeAlso: AH=16h,AH=41h"INT 13 Ext",AH=46h +--------d-134A------------------------------- +INT 13 - Bootable CD-ROM - INITIATE DISK EMULATION + AH = 4Ah + AL = 00h + DS:SI -> specification packet (see #00281) +Return: CF clear if successful + CF set on error (drive will not be in emulation mode) + AX = return codes +SeeAlso: AH=48h,AX=4B00h,AH=4Ch,AH=4Dh + +Format of Bootable CD-ROM Specification Packet: +Offset Size Description (Table 00281) + 00h BYTE size of packet in bytes (13h) + 01h BYTE boot media type (see #00282) + 02h BYTE drive number + 00h floppy image + 80h bootable hard disk + 81h-FFh nonbootable or no emulation + 03h BYTE CD-ROM controller number + 04h DWORD Logical Block Address of disk image to emulate + 08h WORD device specification (see also #00282) + (IDE) bit 0: drive is slave instead of master + (SCSI) bits 7-0: LUN and PUN + bits 15-8: bus number + 0Ah WORD segment of 3K buffer for caching CD-ROM reads + 0Ch WORD load segment for initial boot image + if 0000h, load at segment 07C0h + 0Eh WORD number of 512-byte virtual sectors to load + (only valid for AH=4Ch) + 10h BYTE low byte of cylinder count (for INT 13/AH=08h) + 11h BYTE sector count, high bits of cylinder count (for INT 13/AH=08h) + 12h BYTE head count (for INT 13/AH=08h) +SeeAlso: #00283,AH=08h + +Bitfields for Bootable CD-ROM boot media type: +Bit(s) Description (Table 00282) + 3-0 media type + 0000 no emulation + 0001 1.2M diskette + 0010 1.44M diskette + 0011 2.88M diskette + 0100 hard disk (drive C:) + other reserved + 5-4 reserved (0) + 6 image contains ATAPI driver + 7 image contains SCSI driver(s) +SeeAlso: #00281 +--------d-134B00----------------------------- +INT 13 - Bootable CD-ROM - TERMINATE DISK EMULATION + AX = 4B00h + DL = drive number or 7Fh to terminate all emulations + DS:SI -> empty specification packet (see #00281) +Return: CF clear if successful + CF set on error (drive will still be in emulation mode) + AX = return codes + DS:SI specification packet filled +SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch,AH=4Dh +--------d-134B01----------------------------- +INT 13 - Bootable CD-ROM - GET STATUS + AX = 4B01h + DL = drive number + DS:SI -> empty specification packet (see #00281) +Return: CF clear if successful + CF set on error + AX = return codes + DS:SI specification packet filled +Note: same as AX=4B00h, but does not terminate emulation +SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch,AH=4Dh +--------d-134C------------------------------- +INT 13 - Bootable CD-ROM - INITIATE DISK EMULATION AND BOOT + AH = 4Ch + AL = 00h + DS:SI -> specification packet (see #00281) +Return: never, if successful + CF set (error while attempting to boot) + AX = error codes +SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Dh +--------d-134D00----------------------------- +INT 13 - Bootable CD-ROM - RETURN BOOT CATALOG + AX = 4D00h + DS:SI -> command packet (see #00283) +Return: CF clear if successful + CF set on error + AX = return codes +SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch + +Format of Bootable CD-ROM "get boot catalog" command packet: +Offset Size Description (Table 00283) + 00h BYTE size of packet in bytes (08h) + 01h BYTE number of sectors of boot catalog to read + 02h DWORD -> buffer for boot catalog + 06h WORD first sector in boot catalog to transfer +SeeAlso: #00281 +--------d-134E------------------------------- +INT 13 - IBM/MS INT 13 Extensions v2.1+ - SET HARDWARE CONFIGURATION + AH = 4Eh + AL = function + 00h enable prefetch + 01h disable prefetch + 02h set maximum PIO transfer mode + 03h set PIO mode 0 + 04h set default PIO transfer mode + 05h enable INT 13h DMA maximum mode + 06h disable INT 13h DMA + DL = drive number +Return: CF clear if successful + AH = 00h + AL = status + 00h command was safe (only affected specified drive) + 01h other devices are affected + CF set on error + AH = error code (see #00234) +Note: DMA and PIO modes are mutually exclusive, so selecting DMA disables + PIO (for either the specified device or all devices on that + controller), and selecting PIO disables DMA +SeeAlso: AH=41h"INT 13 Extensions",AX=5001h"Enhanced Disk Drive" +--------d-135001----------------------------- +INT 13 - Enhanced Disk Drive Spec v3.0 - SEND PACKET COMMAND + AX = 5001h + DL = drive number + ES:BX -> command packet (see #00284) +Return: CF clear if successful + AH = 00h + CF set on error + AH = error code +Desc: send data to and from a serial packet-oriented device, such as IEEE1394 + and USB +SeeAlso: AH=41h"INT 13 Extensions",AH=4Eh + +Format of Enhanced Disk Drive Spec v3.0 command packet: +Offset Size Description (Table 00284) + 00h WORD signature B055h + 02h BYTE length of packet in bytes + 03h BYTE reserved (0) + 04h N BYTEs formatted packet data +--------v-135001------------------------ +INT 13 - VIRUS - "Andropinis" - INSTALLATION CHECK + AX = 5001h +Return: AX = 0150h if resident +SeeAlso: AX=FD50h"VIRUS",INT 21/AX=0B56h +--------v-135342CX0001----------------------- +INT 13 - ScanBoot - INSTALLATION CHECK + AX = 5342h ("SB") + CX = 0001h + DX = 0000h +Return: CF clear if ScanBoot installed + AX = 0000h + CX = serial number ("SW" if shareware release) + DX = version + BX,SI,ES destroyed +Program: ScanBoot is a virus-detection TSR by PanSoft +--------d-135501----------------------------- +INT 13 - Seagate ST01/ST02 - Inquiry + AX = 5501h + DH = number of bytes to transfer + DL = drive ID (80h, 81h, ...) + ES:BX -> buffer for results +Return: ES:BX buffer filled with the Inquiry results +Notes: the ST01/ST02 BIOS does not return any success/failure indication, + so all commands must be assumed to have been successful + the ST01/ST02 BIOS always maps its drives after the previous BIOS + drives without changing the BIOS drive count at 0040h:0075h + this command is identical to the SCSI Inquiry command +--------d-135502----------------------------- +INT 13 - Seagate ST01/ST02 - RESERVED + AX = 5502h +--------d-135503----------------------------- +INT 13 - Seagate ST01/ST01 - Set Device Type Qualifier (DTQ) + AX = 5503h + DH = DTQ byte (see #00285) + DL = drive ID (80h, 81h, ...) +Return: nothing + +Bitfields for DTQ byte: +Bit(s) Description (Table 00285) + 7 reserved + 6 SCSI drive attached + 5 reserved + 4 selected drive is ST225N/NP (Paired) + 3 selected drive is ST225N + 2 Host Adapter checks parity on the selected drive + 1 selected drive has been installed + 0 Seagate installation software present +--------d-135504----------------------------- +INT 13 U - Seagate - ??? - RETURN IDENTIFICATION + AX = 5504h + DX = drive (bit 7 set for hard disk) +Return: CF clear if successful + AX = 4321h if ST01/ST02h + AX = 4322h if ??? Seagate controller + CF set on error +SeeAlso: AX=5505h,AX=5514h +--------d-135504----------------------------- +INT 13 - Seagate ST01/ST02 - RETURN IDENTIFICATION + AX = 5504h + DL = drive ID (80h, 81h, ...) +Return: AX = 4321h + BL = selected drive number (00h, 01h) + BH = number of drives attached to Host Adapter (max. 2) +--------d-135505----------------------------- +INT 13 - Seagate - ??? - PARK HEADS + AX = 5505h + DX = drive (bit 7 set for hard disk) +Return: CF clear if successful + CF set on error +SeeAlso: AX=5504h,AX=5515h +--------d-135505----------------------------- +INT 13 - Seagate ST01/ST02 - PARK HEADS + AX = 5505h + DL = drive ID (80h, 81h, ...) + DH = subfunction + 00h park heads (SCSI Stop command) + 01h un-park heads (SCSI Start command) +Return: nothing +--------d-135506----------------------------- +INT 13 - Seagate ST01/ST02 - SCSI Bus Parity + AX = 5506h + DL = drive ID (80h, 81h, ...) + DH = subfunction + 00h disable parity check + 01h enable parity check + 02h return current parity setting +Return: AL = status + 00h parity checking disabled + 01h parity checking enabled +--------d-135507----------------------------- +INT 13 - Seagate ST01/ST02 - RESERVED FUNCTIONS + AX = 5507h to 550Dh +Note: officially listed as "reserved" +--------d-135514----------------------------- +INT 13 U - Seagate - ??? + AX = 5514h + DX = drive (bit 7 set for hard disk) +Return: CF clear if successful + CF set on error + AX = return value (FEBEh,FEBFh,FEDAh,FEDBh) +SeeAlso: AX=5504h,AX=5515h +--------d-135515----------------------------- +INT 13 U - Seagate - PARK HEADS??? + AX = 5515h + DX = drive (bit 7 set for hard disk) +Return: CF clear if successful + CF set on error +Note: appears to be identical to AX=5505h +SeeAlso: AX=5504h,AX=5505h +--------d-1359------------------------------- +INT 13 - SyQuest - Generic SCSI pass through + AH = 59h + CX = HOST_ID, 0-based + DX = 80h + ES:BX pointer to SCSI structure (see #00286) +Return: CF clear + AH = 95h +SeeAlso: AH=12h"SyQuest",AH=13h"SyQuest",AH=1Fh"SyQuest" + +Format of SyQuest SCSI structure: +Offset Size Description (Table 00286) + 00h WORD opcode (see #00287) + 02h BYTE target's SCSI ID + 03h BYTE target's logical unit number + 04h BYTE data direction (00h no data xfer, 01h data in, FFh data out) + 05h BYTE host status + 00h successful + 01h selection time out + 02h data over-run or under-run + 06h BYTE target status at command completion + 00h successful + 02h check status + 08h busy + 07h BYTE command data block length + 08h DWORD request data length + 0Ch DWORD result data length (actual length of data transferred) + 10h DWORD -> CDB (see #03236,#03237,#03238) + 14h DWORD -> data buffer +Note: The handler does not perform a 'Request Sense' command if there was an + error + +(Table 00287) +Values for SCSI opcode: + 00h verify interface + clears carry flag and returns if function is available + 01h returns the ID of the INT 13h Handler in a NULL terminated string of + length less than 40 byte including the terminator. + The string is stored in the buffer pointed by p_buf. + 02h device mapping info. The caller provides a one byte buffer. + The handler stores the Int 13h Device ID (80h or above) in the buffer. + It stores 0 if that target does not exists. + 03h execute SCSI command + 04h device reset + 05h SCSI bus reset +SeeAlso: #00286 +--------d-1370------------------------------- +INT 13 - Priam EDVR.SYS DISK PARTITIONING SOFTWARE??? + AH = 70h + ??? +Return: ??? +Note: Priam's EDISK.EXE (FDISK replacement) and EFMT.EXE (low-level + formatting program) make this call, presumably to EDVR.SYS (the + partitioning driver) +SeeAlso: AH=ADh +----------1375------------------------------- +INT 13 - ??? + AH = 75h + ??? +Return: AH = ??? + ??? +Note: intercepted by PC-Cache (v5.1 only) +----------1376------------------------------- +INT 13 - ??? + AH = 76h + ??? +Return: AH = ??? + ??? +Note: intercepted by PC-Cache (v5.1 only) +--------c-137B00----------------------------- +INT 13 - NOW! v3.05 - GET INFORMATION + AX = 7B00h + CX:DX -> 1F8h-byte buffer for information record (see #00288) +Return: AX = 0000h + BX = segment of main resident code + ES = ??? +Program: NOW! is a disk cache by Vertisoft Systems, Inc. +SeeAlso: AX=7B02h,AH=EFh + +Format of NOW! information record: +Offset Size Description (Table 00288) + 00h 80 BYTEs name of directory from which NOW! was started + 50h 424 BYTEs ??? + 81h ? BYTEs array of bytes for ??? + F7h 250 BYTEs array of 25 entries, one per drive??? + Offset Size Description + 00h 2 BYTEs ??? + 02h WORD ??? + 04h WORD ??? + 06h 4 BYTEs ??? +1F1h 7 BYTEs ??? +--------c-137B01----------------------------- +INT 13 - NOW! v3.05 - ??? + AX = 7B01h +Return: DX = segment of ??? +SeeAlso: AX=7B00h +--------c-137B02----------------------------- +INT 13 - NOW! v3.05 - SET INFORMATION + AX = 7B02h + BX = segment of ??? (10h above a PSP) + CX:DX -> 1F8h-byte information record (see #00288) +Return: ??? +Program: NOW! is a disk cache by Vertisoft Systems, Inc. +Note: NOW! grabs the INT 24h value from the PSP reached via the segment in + BX +SeeAlso: AX=7B00h +--------c-137B03----------------------------- +INT 13 - NOW! v3.05 - ??? + AX = 7B03h + ??? +Return: ??? +SeeAlso: AX=7B00h,AX=7B04h +--------c-137B04----------------------------- +INT 13 - NOW! v3.05 - ??? + AX = 7B04h + ??? +Return: ??? +SeeAlso: AX=7B03h +--------c-137B05----------------------------- +INT 13 - NOW! v3.05 - GET DISK ACCESSES??? + AX = 7B05h +Return: BX:AX = number of physical accesses??? + DX:CX = total disk accesses??? +SeeAlso: AX=7B00h,AX=7B06h +--------c-137B06----------------------------- +INT 13 - NOW! v3.05 - GET ??? + AX = 7B06h + BX = ??? +Return: AX = 0000h + BX = ??? +SeeAlso: AX=7B05h,AX=7B07h +--------c-137B07----------------------------- +INT 13 - NOW! v3.05 - GET ??? + AX = 7B07h +Return: AX = ??? + BX = ??? + CX = ??? + DX = ??? +SeeAlso: AX=7B06h +--------c-137B08----------------------------- +INT 13 - NOW! v3.05 - ??? + AX = 7B08h + CX = ??? (default 00h) +Return: ??? +SeeAlso: AX=7B00h +--------c-1380--CX6572----------------------- +INT 13 - FAST! v4.02+ - API + AH = 80h + CX = 6572h + DX = 1970h + ES:BX -> request packet (see #00290) + AL = function number (see #00289) +Return: AH = status (except function 06h) + 00h if successful + 01h invalid function + 05h not supported by the installed variant + CF clear if successful + CF set on error + AL may be destroyed +Program: FAST! is a disk cache by Future Computing Systems and marketed by + BLOC Publishing Corp. +SeeAlso: AX=8001h,AX=8006h,AX=8007h +Index: hotkeys;FAST! + +(Table 00289) +Values for FAST! function: + 01h get cache information (see AX=8001h) + 04h disable cache + 05h enable cache and reset statistics + 06h installation check (see AX=8006h) + 07h unhook interrupts (see AX=8007h) + 09h flush cache + 0Ah (v4.02+) enable staged writes + 0Bh (v4.02+) disable staged writes + 0Ch (v4.02+) enable beep on flush + 0Dh (v4.02+) disable beep on flush + 0Eh ??? + 0Fh ??? + 10h (v4.12+) enable hotkeys + 11h (v4.12+) disable hotkeys + 12h (v4.13+) set idle delay + 13h (v4.13+) set flush dirty percentage + 14h (v5.00+) enable mouse checks + 15h (v5.00+) disable mouse checks + 16h (v5.00d+) reduce cache size to minimum + 17h (v5.00d+) increase cache size to maximum + +Format of FAST! request packet: +Offset Size Description (Table 00290) + 00h DWORD pointer to 19-byte signature string (see #00291) + 04h DWORD pointer to buffer for data (if needed by function) + +(Table 00291) +Values for FAST! v4.04-v5.03 signature string: + 13h 07h 06h 08h 11h 18h 0Fh 0Eh 02h 18h 13h 08h 0Bh 08h 01h 00h 04h 08h 15h +--------c-138001CX6572----------------------- +INT 13 - FAST! v4.02+ - GET CACHE INFORMATION + AX = 8001h + CX = 6572h + DX = 1970h + ES:BX -> request packet (see #00292) +Return: AH = 00h if successful +SeeAlso: AH=80h,AX=8006h + +Format of FAST! request packet: +Offset Size Description (Table 00292) + 00h DWORD -> 19-byte signature string (see #00291) + 04h DWORD -> buffer for cache information (see #00293) + +Format of FAST! cache information (v5.00-5.03): +Offset Size Description (Table 00293) + 00h WORD binary version number of FAST! (v5.00 = 01F4h) + 02h BYTE revision letter (61h = X.XXa, 62h = X.XXb, etc.) + 03h BYTE FAST! variant + (01h = FASTE, 02h = FASTX BIOS, 04h = FASTC, 20h = FASTX XMS) + 04h DWORD total number of read requests + 08h DWORD number of physical disk reads + 0Ch DWORD grabbed hash buckets + 10h DWORD "st_386mem" + 14h DWORD total number of writes (only counted when staging enabled) + 18h DWORD number of physical disk writes (only when staging enabled) + 1Ch DWORD number of write errors while flushing cache + 20h WORD flags1 (see #00294) + 22h WORD flags + bit 0: ??? + bit 1: staged writes enabled + 24h WORD ??? + 26h WORD maximum cache size in KB + 28h WORD minimum cache size in KB + 2Ah WORD segment of first cache buffer (FASTC) + segment of EMS page frame (FASTE) + XMS handle (FASTX XMS) + 2Ch WORD number of hash buckets containing no entries + 2Eh WORD number of hash buckets containing one entry + 30h WORD number of hash buckets containing two entries + 32h WORD number of hash buckets containing three entries + 34h WORD number of hash buckets containing four entries + 36h WORD number of hash buckets containing five entries + 38h WORD maximum contiguous sectors + 3Ah WORD hash factor + 3Ch WORD number of paragraphs of memory used below 1M + 3Eh WORD entries per hash bucket + 40h WORD idle delay in seconds + 42h 2 BYTEs ??? + 44h WORD staged write threshold percentage + 46h 2 BYTEs ??? + 48h WORD number of dirty sectors + 4Ah WORD number of staged write buffers + 4Ch WORD current cache size in KB + 4Eh WORD beep frequency in Hz + 50h WORD ??? + 52h WORD ??? + +Bitfields for FAST! flags1: +Bit(s) Description (Table 00294) + 0 beep on flush + 3 hotkeys enabled + 4 mouse idle check enabled + 8 caching enabled + 13 ??? +--------c-138006CX6572----------------------- +INT 13 - FAST! v4.02+ - INSTALLATION CHECK + AX = 8006h + CX = 6572h + DX = 1970h + ES:BX -> request packet (see #00295) +Return: AX = 1965h if installed +SeeAlso: AH=80h,AX=8001h,AX=8007h + +Format of FAST! request packet: +Offset Size Description (Table 00295) + 00h DWORD -> 19-byte signature string (see #00291) +--------c-138007CX6572----------------------- +INT 13 - FAST! v4.02+ - UNHOOK INTERRUPTS + AX = 8007h + CX = 6572h + DX = 1970h + ES:BX -> request packet (see #00296) +Return: AX = 1965h if installed +SeeAlso: AH=80h,AX=8006h +Index: uninstall;FAST! + +Format of FAST! request packet: +Offset Size Description (Table 00296) + 00h DWORD -> 19-byte signature string (see #00291) +--------c-1381--SI4358----------------------- +INT 13 - Super PC-Kwik v3.20+ - ??? + AH = 81h + SI = 4358h + ??? +Return: ??? +Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of + Super PC-Kwik, and thus support this call (PC-Cache v5.1 corresponds + to PC-Kwik v3.20 and PC-Cache v5.5 to PC-Kwik v3.27) + returns immediately in PC-Cache v5.x +Index: PC-Cache|Qualitas Qcache +--------c-1382--SI4358----------------------- +INT 13 - Super PC-Kwik v3.20+ - ??? + AH = 82h + SI = 4358h + ??? +Return: AL = ??? +Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of + Super PC-Kwik, and thus support this call +SeeAlso: AH=84h +Index: PC-Cache|Qualitas Qcache +--------c-1383--SI4358----------------------- +INT 13 - Super PC-Kwik v3.20+ - ??? + AH = 83h + SI = 4358h + AL = ??? + ES:BX -> ??? + ??? +Return: ??? +Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of + Super PC-Kwik, and thus support this call +SeeAlso: AH=85h +Index: PC-Cache|Qualitas Qcache +--------c-1384--SI4358----------------------- +INT 13 - Super PC-Kwik v3.20+ - ??? + AH = 84h + SI = 4358h + AL = ??? + ??? +Return: AL = ??? +Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of + Super PC-Kwik, and thus support this call +SeeAlso: AH=82h +Index: PC-Cache|Qualitas Qcache +--------c-1385--SI4358----------------------- +INT 13 - Super PC-Kwik v3.20+ - ??? + AH = 85h + SI = 4358h + AL = ??? + DL = ??? + ??? +Return: ??? +Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of + Super PC-Kwik, and thus support this call (PC-Cache v5.1 corresponds + to PC-Kwik v3.20) +SeeAlso: AH=83h +Index: PC-Cache|Qualitas Qcache +--------c-1386--SI4358----------------------- +INT 13 - Super PC-Kwik v4.00+ - ??? + AH = 86h + SI = 4358h + ??? +Return: ??? +Note: Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and + thus supports this call +Index: Qualitas Qcache +--------c-1387--SI4358----------------------- +INT 13 - Super PC-Kwik v4.00+ - ??? + AH = 87h + SI = 4358h + ??? +Return: AH = status??? (00h) + CX = ??? + DX = ??? (0000h) +Note: Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and + thus supports this call +Index: Qualitas Qcache +--------c-1388--SI4358----------------------- +INT 13 - Super PC-Kwik v4.00+ - ??? + AH = 88h + SI = 4358h + ??? +Return: AH = status??? (00h) + CX = ??? + DX = ??? (0000h) +Note: Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and + thus supports this call +Index: Qualitas Qcache +--------c-1389--SI4358----------------------- +INT 13 - Super PC-Kwik v5.10+ - ??? + AH = 89h + SI = 4358h + ??? +Return: ??? +--------c-138A--SI4358----------------------- +INT 13 - Super PC-Kwik v5.10+ - ??? + AH = 8Ah + SI = 4358h + ??? +Return: ??? +--------c-138EED----------------------------- +INT 13 - HyperDisk v4.01+ - ??? + AX = 8EEDh + ??? +Return: ??? +Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross) +SeeAlso: AX=8EEEh,AX=8EEFh,AH=EEh,INT 2F/AX=DF00h +--------c-138EEE----------------------------- +INT 13 - HyperDisk v4.01+ - ??? + AX = 8EEEh +Return: CF set + AX = CS of HyperDisk resident code + ??? +Note: identical to AX=8EEFh in HYPERDKX v4.21-4.30 +SeeAlso: AX=8EEDh,AX=8EEFh,AH=EEh +--------c-138EEF----------------------------- +INT 13 - HyperDisk v4.01+ - ??? + AX = 8EEFh +Return: CF set + AX = CS of HyperDisk resident code + ??? +Note: identical to AX=8EEEh in HYPERDKX v4.21-4.30 +SeeAlso: AX=8EEDh,AX=8EEEh,AH=EEh +--------c-1392--SI4358----------------------- +INT 13 - Super PC-Kwik v5.10+ - ??? + AH = 92h + SI = 4358h + ??? +Return: AH = status??? (00h) + DL = ??? +SeeAlso: AH=93h +--------c-1393--SI4358----------------------- +INT 13 - Super PC-Kwik v5.10+ - ??? + AH = 93h + SI = 4358h + ??? +Return: AH = status??? (00h) + AL = ??? +SeeAlso: AH=92h +--------c-1394--SI4358----------------------- +INT 13 - Super PC-Kwik v5.10+ - ??? + AH = 94h + SI = 4358h + ??? +Return: ??? +--------c-1395--SI4358----------------------- +INT 13 - Super PC-Kwik v5.10+ - ??? + AH = 95h + SI = 4358h + ??? +Return: AH = status??? (00h) + DX = ??? +--------c-1396--SI4358----------------------- +INT 13 - Super PC-Kwik v5.10+ - ??? + AH = 96h + SI = 4358h + AL = ??? (01h) + BX = ??? (0790h) + DL = ??? +Return: AH = status??? (00h) + DX = ??? +--------c-1397--SI4358----------------------- +INT 13 - Super PC-Kwik v5.10+ - ??? + AH = 97h + SI = 4358h + ??? +Return: ??? +--------c-1398--SI4358----------------------- +INT 13 - Super PC-Kwik v5.10+ - ??? + AH = 98h + SI = 4358h + ??? +Return: ??? +--------c-1399--SI4358----------------------- +INT 13 - Super PC-Kwik v5.10+ - ??? + AH = 99h + SI = 4358h + ??? +Return: ??? +--------c-139A--SI4358----------------------- +INT 13 - Super PC-Kwik v5.10+ - ??? + AH = 9Ah + SI = 4358h + ??? +Return: ??? +--------c-139B--SI4358----------------------- +INT 13 - Super PC-Kwik v5.10+ - ??? + AH = 9Bh + SI = 4358h + ??? +Return: ??? +--------c-139C--SI4358----------------------- +INT 13 - Super PC-Kwik v5.10+ - ??? + AH = 9Ch + SI = 4358h + ??? +Return: ??? +Note: functions 9Ch and 9Dh are the only ones which are fully reentrant; all + other PC-Kwik API calls (INT 13/81h-B0h) return AX=0200h and CF clear + if a previous call is still in progress +--------c-139D--SI4358----------------------- +INT 13 - Super PC-Kwik v5.10+ - ??? + AH = 9Dh + SI = 4358h + ??? +Return: ??? +--------c-13A0--SI4358----------------------- +INT 13 - Super PC-Kwik v3.20+ - GET RESIDENT CODE SEGMENT + AH = A0h + SI = 4358h +Return: AX = segment of resident code +Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of + Super PC-Kwik, and thus support this call (note that PC-Cache v5.5 + corresponds to PC-Kwik v3.27) +SeeAlso: INT 16/AX=FFA5h/CX=1111h +Index: PC-Cache|Qualitas Qcache +--------c-13A1--SI4358----------------------- +INT 13 - Super PC-Kwik v3.20+ - FLUSH CACHE + AH = A1h + SI = 4358h +Return: CF clear + AH = 00h (v5.10) +Notes: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of + Super PC-Kwik, and thus support this call (note that PC-Cache v5.1 + corresponds to PC-Kwik v3.20) + this function is one out of several cache flush calls issued by the + PTS-DOS 6.51 and S/DOS 1.0 kernel before rebooting. +SeeAlso: INT 16/AX=FFA5h/CX=FFFFh +Index: PC-Cache|Qualitas Qcache +--------c-13A2--SI4358----------------------- +INT 13 - Super PC-Kwik v3.20+ - ??? + AH = A2h + SI = 4358h + ??? +Return: ??? +Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of + Super PC-Kwik, and thus support this call (note that PC-Cache v5.1 + corresponds to PC-Kwik v3.20) +Index: PC-Cache|Qualitas Qcache +--------c-13A3--SI4358----------------------- +INT 13 U - Super PC-Kwik v5.10+ - DISABLE CACHE + AH = A3h + SI = 4358h +Return: CF clear +SeeAlso: AH=A4h +--------c-13A4--SI4358----------------------- +INT 13 U - Super PC-Kwik v5.10+ - ENABLE CACHE + AH = A4h + SI = 4358h +Return: CF clear +SeeAlso: AH=A3h +--------c-13A5--SI4358----------------------- +INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM TERMINATION NOTIFICATION + AH = A5h + SI = 4358h +Return: AX = ??? + SI = ??? +Notes: called and used internally by Super PC-Kwik when a program terminates + via INT 21/AH=00h, INT 21/AH=31h, or INT 21/AH=4Ch + this call is not supported by Qualitas Qcache 4.00 +Index: PC-Cache +SeeAlso: AH=A6h,AH=A9h,INT 21/AH=00h,INT 21/AH=31h,INT 21/AH=4Ch +--------c-13A6--SI4358----------------------- +INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM LOAD NOTIFICATION + AH = A6h + SI = 4358h + DS:DX -> ASCIZ program name + ES:BX -> EXEC data block (see #01590 at INT 21/AH=4Bh) +Return: ??? +Note: called and used internally by Super PC-Kwik when a program is loaded + with INT 21/AX=4B00h +SeeAlso: AH=A5h,AH=A9h,INT 21/AH=4Bh +--------c-13A7--SI4358----------------------- +INT 13 CU - Super PC-Kwik 5.1 - ??? + AH = A7h + SI = 4358h +Return: ??? +Note: called and used internally by Super PC-Kwik on some INT 21 calls +SeeAlso: AH=A5h,AH=A6h,AH=A8h +--------v-13A759----------------------------- +INT 13 U - Novell DOS 7 - SDRes v27.03 - ??? + AX = A759h +Return: AX = 59A7h if installed + DX:BX -> ??? data +Program: SDRes is the resident portion of the Search&Destroy antiviral by + Fifth Generation Systems, as bundled with Novell DOS 7 +SeeAlso: INT 21/AH=0Eh/DL=ADh +--------c-13A8--SI4358----------------------- +INT 13 CU - Super PC-Kwik 5.1 - ??? + AH = A8h + SI = 4358h +Return: ??? +Note: called and used internally by Super PC-Kwik on some INT 21 calls +SeeAlso: AH=A5h,AH=A6h,AH=A7h +--------c-13A9--SI4358----------------------- +INT 13 CU - Super PC-Kwik 5.1 - EXITCODE RETRIEVAL NOTIFICATION + AH = A9h + SI = 4358h +Return: ??? +Note: called and used internally by Super PC-Kwik when an application issues + INT 21/AH=4Dh +SeeAlso: AH=A5h,AH=A6h,INT 21/AH=4Dh +--------c-13AA--SI4358----------------------- +INT 13 - Super PC-Kwik v4+ - ??? + AH = AAh + SI = 4358h + ??? +Return: ??? +Note: Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports + this call +--------c-13AB--SI4358----------------------- +INT 13 - Super PC-Kwik v4+ - ??? + AH = ABh + SI = 4358h + ??? +Return: ??? +Note: Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports + this call +--------c-13AC--SI4358----------------------- +INT 13 - Super PC-Kwik v4+ - ??? + AH = ACh + SI = 4358h + ??? +Return: ??? +Note: Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports + this call +--------d-13AD------------------------------- +INT 13 - Priam HARD DISK CONTROLLER??? + AH = ADh + ??? +Return: ??? +Note: this call is made from Priam's EFMT.EXE (low-level formatter), probably + to check the ROM type on the controller for their hard disk kits +SeeAlso: AH=70h +--------c-13AD--SI4358----------------------- +INT 13 - Super PC-Kwik v4+ - ??? + AH = ADh + SI = 4358h + ??? +Return: ??? +Note: Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports + this call +--------c-13AE--SI4358----------------------- +INT 13 - Super PC-Kwik v5.10+ - ??? + AH = AEh + SI = 4358h + ??? +Return: ??? +--------c-13B0--SI4358----------------------- +INT 13 - Super PC-Kwik v3.20+ - ??? + AH = B0h + SI = 4358h + ??? +Return: ??? +Note: PC Tools PC-Cache 5.x is an OEM version of Super PC-Kwik, and thus + supports this call; Qualitas Qcache does not support it +Index: PC-Cache +----------13BF00----------------------------- +INT 13 - Mylex/Adaptec??? - ??? + AX = BF00h + BX = PCI address??? + DI = 0000h ??? + DL = drive number (80h = C:) +Return: ??? +Note: some poorly-commented code using this function notes that there had + been a workaround for some Mylex BIOS bug by setting DL to 8Fh +--------d-13E000----------------------------- +INT 13 - XBIOS - COMMAND + AX = E000h + CX = 0 + DL = drive number (80h,81h,82h,83h) + ES:BX = pointer to XBIOS Command Block (see #00297) +Return: CF clear if successful + CX = 1234h XBIOS Signature + CF set on error +Program: XBIOS is a driver in some versions of Disk Manager that is + loaded from the disk MBR, replacing the ROM BIOS disk support + e.g. adding LBA mode support, and read/write multiple. +SeeAlso: AH=F9h"SWBIOS" + +Format of XBIOS Command Block: +Offset Size Description (Table 00297) + 00h BYTE function + 0Eh Get XBIOS Configuration Information + Return: buffer points to Ontrackr_Ref_Data structure + (see #00298) + 01h BYTE reserved (must be zero before function call) + 02h DWORD buffer pointer - Input or output depending on opcode +SeeAlso: #00298,#00299 + +Format of Ontrackr_Ref_Data structure: +Offset Size Description (Table 00298) + 00h WORD Size of structure (33h) + 02h BYTE VxD Chain mode + 03h 12 BYTEs Drive 1: Ontrackr_VxD_Data structure (see #00299) + 0Fh 12 BYTEs Drive 2: Ontrackr_VxD_Data structure + 1Bh 12 BYTEs Drive 3: Ontrackr_VxD_Data structure + 27h 12 BYTEs Drive 4: Ontrackr_VxD_Data structure (see #00299) +SeeAlso: #00297,#00299 + +Format of Ontrackr_VxD_Data structure: +Offset Size Description (Table 00299) + 00h BYTE INT 13h drive number + 01h DWORD Delta skew value + 05h BYTE Physical heads (Word 3 of Identify Data) + 06h BYTE Physical sectors per track (Word 6 of Identify Data) + 07h BYTE Multiple Block Size (Blocking factor) + 08h BYTE Read/Write Multiple disable flags + 00001000b drive supports r/w multiple + 00000100b do not use read multiple + 00000010b do not use write multiple + 09h WORD Base port address (1F0/170) + 0Bh BYTE Hardware interrupt channel (14/15) +SeeAlso: #00298 +--------v-13EC00----------------------------- +INT 13 - VIRUS - "Tiso" - INSTALLATION CHECK + AX = EC00h +Return: CF clear if installed +SeeAlso: AH=F2h,INT 12/AX=4350h/BX=4920h +--------d-13EE------------------------------- +INT 13 - SWBIOS - SET 1024-CYLINDER FLAG + AH = EEh + DL = drive number (80h, 81h) +Return: CF clear + AH = 00h +Program: SWBIOS is a TSR by Ontrack Computer Systems +Desc: the following INT 13 call will add 1024 to the specified cylinder + number to get the actual cylinder number desired +Notes: the flag is cleared by all INT 13 calls except AH=EEh and AH=EFh + Disk Manager also supports these calls + this function is also supported by HyperDisk v4.01+ and PC-Cache v5.5+, + in order to allow caching of drives using SWBIOS to access more than + 1024 cylinders + for software which supports that call, this function is equivalent to + calling AH=EFh with CX=0400h +SeeAlso: AH=F9h,AH=FEh,INT 16/AX=FFA5h/CX=1111h,INT 2F/AX=DF00h +Index: PC-Cache;huge disks|Disk Manager +--------c-13EF------------------------------- +INT 13 - Ontrack Drive Rocket - SET CYLINDER OFFSET + AH = EFh + CX = cylinder offset for next INT 13 call + DL = drive number (80h, 81h) +Return: CF clear + AH = 00h +Program: Drive Rocket is a drive accelerator by Ontrack Computer Systems for + IDE drives supporting the read multiple and write multiple commands +Desc: the following INT 13 call will add the number given by this call to + the specified cylinder to get the actual cylinder number, then reset + the offset to zero +Note: this function is also supported by the NOW! disk cache, and presumably + newer versions of SWBIOS and Disk Manager + for software which supports this call, AH=EEh is equivalent to calling + this function with CX=0400h + the cylinder offset is reset to 0 by all INT 13 called except AH=EEh + and AH=EFh +SeeAlso: AX=7B00h +--------v-13F2------------------------------- +INT 13 - VIRUS - "Neuroquila" - INSTALLATION CHECK + AH = F2h +Return: CF ??? if installed +SeeAlso: AX=EC00h,INT 12/AX=4350h/BX=4920h,INT 21/AX=0B56h +--------d-13F9------------------------------- +INT 13 - SWBIOS - INSTALLATION CHECK + AH = F9h + DL = drive number (80h,81h) +Return: CF clear + DX = configuration word + bit 15 set if other SWBIOS extensions available + CF set on error +Program: SWBIOS is a TSR by Ontrack Computer Systems + XBIOS is a driver in some versions of Disk Manager that is + loaded from the disk MBR, replacing the ROM BIOS disk support + eg adding LBA mode support, and read/write multiple. +Note: Disk Manager also supports these calls +SeeAlso: AH=EEh,AX=E000h"XBIOS",AH=FFh"EZ-Drive" +Index: Disk Manager +--------v-13FA--DX5945----------------------- +INT 13 - PC Tools v8+ VSAFE, VWATCH - API + AH = FAh + DX = 5945h + AL = function (00h-07h) +Return: varies by function + if not installed: + CF set + AH = 01h +Note: this API is identical to the ones on INT 16/AH=FAh and INT 21/AH=FAh, + so it is listed in its entirety under INT 16/AX=FA00h and following +SeeAlso: INT 16/AX=FA00h +--------v-13FD50------------------------ +INT 13 - VIRUS - "Predator" - INSTALLATION CHECK + AX = FD50h +Return: AX = 50FDh if resident +SeeAlso: AX=5001h"VIRUS",INT 16/AH=DDh"VIRUS" +--------d-13FE------------------------------- +INT 13 - SWBIOS - GET EXTENDED CYLINDER COUNT + AH = FEh + DL = drive number (80h, 81h) +Return: CF clear + DX = number of cylinders beyond 1024 on drive +Program: SWBIOS is a TSR by Ontrack Computer Systems +Notes: standard INT 13/AH=08h will return a cylinder count truncated to 1024 + BIOS without this extension would return count modulo 1024 + Disk Manager also supports these calls +SeeAlso: AH=EEh +----------13FF------------------------------- +INT 13 - EZ-Drive - INSTALLATION CHECK + AH = FFh + DL = drive number (80h) +Return: CF clear + AX = AA55h + ES:BX -> string "AERMH13Vxx", where xx is the version number of + the EZ-Drive driver + CF set on error +Program: EZ-Drive is a driver by Micro House that is loaded from the + hard disk MBR, replacing the ROM BIOS disk support, eg adding + LBA mode support, and read/write multiple. +Note: this function is called by the Windows95 Master Boot Record +SeeAlso: AX=E000h"XBIOS",AH=F9h"SWBIOS" +--------B-13FF------------------------------- +INT 13 - IBM SurePath BIOS - Officially "Private" Function + AH = FFh +--------U-13FFFFBHAA------------------------- +INT 13 - UNIQUE UX Turbo Utility - SET TURBO MODE + AX = FFFFh + BH = AAh + BL = subfunction + 00h installation check + Return: AX = 1234h if installed + 01h turn on Turbo mode + 02h turn off Turbo mode + 03h set Turbo mode according to hardware switch + 04h set disk access to Turbo mode + 05h set disk access to Normal mode +Return: nothing +SeeAlso: INT 15/AH=DFh +Index: installation check;UNIQUE UX Turbo Utility +--------S-14--------------------------------- +INT 14 - SERIAL - Digiboard DigiCHANNEL PC/X* Extender INT 14 (XAPCM232.SYS) +InstallCheck: determine whether the "~DOSXAM~" character device exists +Index: installation check;Digiboard DigiCHANNEL +--------S-1400------------------------------- +INT 14 - SERIAL - INITIALIZE PORT + AH = 00h + AL = port parameters (see #00300) + DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS) +Return: AH = line status (see #00304) + FFh if error on Digiboard XAPCM232.SYS + AL = modem status (see #00305) +Notes: default handler is at F000h:E739h in IBM PC and 100% compatible BIOSes + since the PCjr supports a maximum of 4800 bps, attempting to set 9600 + bps will result in 4800 bps + various network and serial-port drivers support the standard BIOS + functions with interrupt-driven I/O instead of the BIOS's polled I/O + the 1993/04/08 Compaq system ROM uses only the low two bits of DX + the default setting used by DOS (MS-DOS 6, DR-DOS 7.03, PTS-DOS) when + (re-)initializing the serial devices is AL=A3h (2400 bps, no parity, + 1 stop bit, 8 data bits). +SeeAlso: AH=04h"SERIAL",AH=04h"MultiDOS",AH=05h"SERIAL",AH=57h +SeeAlso: AX=8000h"ARTICOM",AH=81h"COMM-DRV",AH=82h"COURIERS",AH=8Ch +SeeAlso: MEM 0040h:0000h,PORT 03F8h"Serial" + +Bitfields for serial port parameters: +Bit(s) Description (Table 00300) + 7-5 data rate (110,150,300,600,1200,2400,4800,9600 bps) + 4-3 parity (00 or 10 = none, 01 = odd, 11 = even) + 2 stop bits (set = 2, clear = 1) + 1-0 data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8) +SeeAlso: #00302,#00307,#00308,#00309 +--------S-1400------------------------------- +INT 14 - FOSSIL (Fido/Opus/Seadog Standard Interface Level) - INITIALIZE + AH = 00h + AL = initializing parameters + 7 - 6 - 5 4 - 3 2 1 - 0 + -BAUD RATE- PARITY STOP WORD + BITS LENGTH + 000 19200 bd 00 none 0: 1 00: 5 + 001 38400 bd 01 odd 1: 2 01: 6 + 010 300 bd 11 even 10: 7 + 011 600 bd 11: 8 + 100 1200 bd + 101 2400 bd + 110 4800 bd + 111 9600 bd (4800 on PCjr) + DX = port number (0-3 or FFh if only performing non-I/O setup) +Return: AH = RS-232 status code bits (see #00301) + AL = modem status bits + bit 3: always 1 + bit 7: DCD - carrier detect +SeeAlso: #00300,AH=05h"FOSSIL",AH=81h"COMM-DRV",AH=82h"COURIERS" + +Bitfields for FOSSIL RS-232 status: +Bit(s) Description (Table 00301) + 0 RDA - input data is available in buffer + 1 OVRN - data has been lost + 5 THRE - room is available in output buffer + 6 TSRE - output buffer empty +--------S-1400------------------------------- +INT 14 - Tandy 2000 - SERIAL - RESET COMM PORT + AH = 00h + AL = RS-232C parameters (see #00302) + DL = port number + DH = protocol + bit 0: use XON/XOFF on received data + bit 1: use XON/XOFF when transmitting +Return: AH = line status (see #00304) + AL = modem status (see #00305) +Note: this interrupt is identical to INT 53 on the Tandy 2000 +SeeAlso: AH=04h"Tandy 2000",INT 53"Tandy 2000" +--------S-1400------------------------------- +INT 14 - MBBIOS - INITIALIZE PORT + AH = 00h + AL = port parameters (see #00302) + DX = port number +Return: AH = line status (see #00304) + AL = modem status (see #00305) +Note: MBBIOS was written by H. Roy Engehausen +SeeAlso: AH=04h"MBBIOS",AH=05h"MBBIOS",AH=09h"MBBIOS" + +Bitfields for MBBIOS port parameters: +Bit(s) Description (Table 00302) + 7-5 data rate + (normally 110,150,300,600,1200,2400,4800,9600 bps; + 9600,14400,19200,28800,38400,57600,115200,330400 bps + if the high-speed option is set) + 4-3 parity (00 or 10 = none, 01 = odd, 11 = even) + 2 stop bits (set = 2, clear = 1) + 1-0 data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8) +SeeAlso: #00300 +--------N-1400--DXFFFF----------------------- +INT 14 - Connection Manager - MODIFY DEFAULT CONNECTION PARAMETERS + AH = 00h + DX = FFFFh + ES:DI -> vector string specifying new parameters +Return: AH = return code (00h,03h) (see #00303) +Program: Connection Manager by Softwarehouse Corp. permits the sharing of + serial ports over an IPX or NetBIOS-based network +Note: if DX is 0-3 on entry, Connection Manager emulates the standard BIOS + function, but redirects the port over the network; if DX is any other + value, the call is chained +SeeAlso: AH=04h/DX=FFFFh,AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh + +(Table 00303) +Values for Connection Manager return code: + 00h successful + 01h no such connection + 02h invalid connection ID + 03h invalid subvector found + 04h communication error (check BH) + 06h insufficient resources, retry later + FFh no data available +--------S-1401------------------------------- +INT 14 - SERIAL - WRITE CHARACTER TO PORT + AH = 01h + AL = character to write + DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS) +Return: AH bit 7 clear if successful + AH bit 7 set on error + AH bits 6-0 = port status (see #00304) +Notes: various network and serial-port drivers support the standard BIOS + functions with interrupt-driven I/O instead of the BIOS's polled I/O + the 1993/04/08 Compaq system ROM uses only the low two bits of DX +SeeAlso: AH=02h,AH=0Bh"FOSSIL",AX=8000h"ARTICOM",AH=89h,MEM 0040h:007Ch +--------N-1401--DXFFFF----------------------- +INT 14 - Connection Manager - SEND CHARACTER + AH = 01h + DX = FFFFh + BH = character to send +Return: AH = return code (00h-02h,06h) (see #00303) +Notes: if DX is 0-3 on entry, Connection Manager emulates the standard BIOS + function, but redirects the port over the network; if DX is any other + value, the call is chained + this function is provided primarily for compatibility; AH=06h/DX=FFFFh + is the preferred function because it provides better performance +SeeAlso: AH=02h/DX=FFFFh,AH=06h/DX=FFFFh,AH=09h/DX=FFFFh +--------S-1402------------------------------- +INT 14 - SERIAL - READ CHARACTER FROM PORT + AH = 02h + AL = 00h (ArtiCom) + DX = port number (00h-03h (04h-43h for Digiboard XAPCM232.SYS)) +Return: AH = line status (see #00304) + AL = received character if AH bit 7 clear +Notes: will timeout if DSR is not asserted, even if function 03h returns + data ready + various network and serial-port drivers support the standard BIOS + functions with interrupt-driven I/O instead of the BIOS's polled I/O + the 1993/04/08 Compaq system ROM uses only the low two bits of DX +SeeAlso: AH=01h,AH=02h"FOSSIL",AH=84h,AH=FCh +--------S-1402------------------------------- +INT 14 - FOSSIL - RECEIVE CHARACTER WITH WAIT + AH = 02h + DX = port number (0-3) +Return: AL = character received + AH = 00h +SeeAlso: AH=01h,AH=02h"SERIAL" +--------N-1402--DXFFFF----------------------- +INT 14 - Connection Manager - RECEIVE CHARACTER + AH = 02h + DX = FFFFh + BH = character to send +Return: AH = return code (00h-02h,04h,FFh) (see #00303) + BH = line status (see #00304) + AL = received character (if any) +Notes: if DX is 0-3 on entry, Connection Manager emulates the standard BIOS + function, but redirects the port over the network; if DX is any other + value, the call is chained + this function is provided primarily for compatibility; AH=07h/DX=FFFFh + is the preferred function because it provides better performance +SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh,AH=06h/DX=FFFFh +--------S-1403------------------------------- +INT 14 - SERIAL - GET PORT STATUS + AH = 03h + AL = 00h (ArtiCom) + DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS) +Return: AH = line status (see #00304) + AL = modem status (see #00305) + AX = 9E00h if disconnected (ArtiCom) +Note: the 1993/04/08 Compaq system ROM uses only the low two bits of DX +SeeAlso: AH=00h,AH=07h"MultiDOS",AX=8000h"ARTICOM",AH=81h"COURIERS",AX=FD02h + +Bitfields for serial line status: +Bit(s) Description (Table 00304) + 7 timeout + 6 transmit shift register empty + 5 transmit holding register empty + 4 break detected + 3 framing error + 2 parity error + 1 overrun error + 0 receive data ready +Note: for COMM-DRV, if bit 7 is set, an error occurred, and may be retrieved + through a separate call (see AX=8000h"COMM-DRV") + +Bitfields for modem status: +Bit(s) Description (Table 00305) + 7 carrier detect + 6 ring indicator + 5 data set ready + 4 clear to send + 3 delta carrier detect + 2 trailing edge of ring indicator + 1 delta data set ready + 0 delta clear to send +--------N-1403--DXFFFF----------------------- +INT 14 - Connection Manager - RETURN COMMUNICATION PORT STATUS + AH = 03h + DX = FFFFh + AL = connection ID +Return: AH = return code (00h-02h) (see #00303) + BH = line status (see #00306) + BL = modem status (see #00305) (only bits 4,5,7; all others zero) +Notes: if DX is 0-3 on entry, Connection Manager emulates the standard BIOS + function, but redirects the port over the network; if DX is any other + value, the call is chained +SeeAlso: AH=00h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Ah/DX=FFFFh + +Bitfields for Connection Manager line status: +Bit(s) Description (Table 00306) + 7 CTS changed + 6 current CTS state + 5 timeout + 4 break + 3 framing error + 2 parity error + 1 overrun + 0 current carrier state (0 active, 1 no carrier) +--------S-1404------------------------------- +INT 14 - SERIAL - EXTENDED INITIALIZE (CONVERTIBLE,PS) + AH = 04h + AL = break status + 00h if break + 01h if no break + BH = parity (see #00307) + BL = number of stop bits + 00h one stop bit + 01h two stop bits (1.5 if 5 bit word length) + CH = word length (see #00308) + CL = bps rate (see #00309) + DX = port number +Return: AX = port status code (see #00304,#00305) +SeeAlso: AH=00h,AH=1Eh,AX=8000h"ARTICOM" + +(Table 00307) +Values for serial port parity: + 00h no parity + 01h odd parity + 02h even parity + 03h stick parity odd + 04h stick parity even +SeeAlso: #00300,#00308,#00309,#00310 + +(Table 00308) +Values for serial port word length: + 00h 5 bits + 01h 6 bits + 02h 7 bits + 03h 8 bits +SeeAlso: #00300,#00307,#00309,#00345 + +(Table 00309) +Values for serial port bps rate: + 00h 110 (19200 if ComShare installed) + 01h 150 (38400 if ComShare installed) + 02h 300 + 03h 600 (14400 if ComShare installed) + 04h 1200 + 05h 2400 + 06h 4800 (28800 if ComShare installed) + 07h 9600 + 08h 19200 +---ComShare--- + 09h 38400 + 0Ah 57600 + 0Bh 115200 +SeeAlso: #00300,#00307,#00309,#00346,#00353,AH=36h,#00364,#00606,#02923 +--------S-1404------------------------------- +INT 14 - Tandy 2000 - SERIAL - FLUSH COMM BUFFER + AH = 04h + DL = port number + DH = protocol + bit 0: use XON/XOFF on received data + bit 1: use XON/XOFF when transmitting +Return: nothing +Desc: clears the serial interface buffer +Note: this interrupt is identical to INT 53 on the Tandy 2000 +SeeAlso: AH=00h"Tandy 2000",INT 53"Tandy 2000" +--------S-1404------------------------------- +INT 14 - FOSSIL - INITIALIZE DRIVER + AH = 04h + DX = port number + optionally BX=4F50h + ES:CX -> byte to be set upon ^C +Return: AX = 1954h (if successful) + BL = maximum function number supported (excluding 7Eh and above) + BH = revision of FOSSIL specification supported + DTR is raised +Note: the word at offset 6 in the interrupt handler contains 1954h, and the + following byte contains the maximum function number supported; this + can serve as an installation check +SeeAlso: AH=05h"FOSSIL",AH=1Ch,INT 11/AH=BCh +Index: installation check;FOSSIL +--------S-1404------------------------------- +INT 14 - MultiDOS Plus IODRV - INITIALIZE PORT + AH = 04h +Return: port initialized; if Hayes-compatible modem, a connection has been + established +Note: the port number is stored at offset BEh in the Task Control Block + (see #00456 at INT 15/AH=13h"MultiDOS") +SeeAlso: AH=00h,AH=05h"MultiDOS",AH=20h"MultiDOS",INT 15/AH=13h"MultiDOS" +--------S-1404------------------------------- +INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE BAUD RATE + AH = 04h + AL = initializing parameters (see #00310) + BX = baud rate + DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) +Return: AH = status + 00h successful + FFh error +SeeAlso: AH=05h"Digiboard" + +Bitfields for Digiboard initializing parameters: +Bit(s) Description (Table 00310) + 7-5 unused + 4-3 parity (00 none, 01 odd, 11 even) + 2 stop bits (0 = one, 1 = two) + 1-0 data bits (00 = five, 01 = six, 10 = seven, 11 = eight) +SeeAlso: #00307,#00308 +--------S-1404------------------------------- +INT 14 - MBBIOS - INSTALLATION CHECK + AH = 04h + DX = port number +Return: AX = AA55h if installed on specified port +SeeAlso: AH=00h"MBBIOS",AH=09h"MBBIOS" +--------N-1404--DXFFFF----------------------- +INT 14 - Connection Manager - OPEN COMMUNICATION + AH = 04h + DX = FFFFh + ES:DI -> Connection Request protocol vector (see #00311) +Return: AH = return code + 00h successful + AL = connection ID + BH = connection type + 00h direct connection or no dialing + 01h Connection Server dialed phone + 01h no response from Connection Server + 03h invalid request +Program: Connection Manager by Softwarehouse Corp. permits the sharing of + serial ports over an IPX or NetBIOS-based network +Desc: initiate a connection to the Connection Server listed in the current + Client parameter set +Notes: if DX is 0-3 on entry, Connection Manager emulates the standard BIOS + function, but redirects the port over the network; if DX is any other + value, the call is chained + all subvectors of the Connection Request vector are optional; if + missing, default values are provided by the default connection + parameter set +SeeAlso: AH=00h/DX=FFFFh,AH=05h/DX=FFFFh,AH=06h/DX=FFFFh,AH=07h/DX=FFFFh +SeeAlso: AH=0Ah/DX=FFFFh,AH=0Ch/DX=FFFFh + +Format of Connection Manager protocol command vector: +Offset Size Description (Table 00311) + 00h WORD (big-endian) total length of command (including this word) + 02h WORD (big-endian) command code + EF01h Connection Request + EF06h Modify Connection Parameters + 04h N BYTEs list of subvectors (see #00313) + allowable subvector types are 01h-04h,17h,18h for command code + EF01h; 03h,04h for command code EF06h (see #00312) + +(Table 00312) +Values for Connection Manager subvector type code: + 01h Connection ID + 02h Destination ID + 03h Asynchronous line parameters + 04h Data transfer parameters + 09h Line speed + 0Ah Serial coding + 0Bh Packet size + 0Ch Timers + 0Dh Special characters + 0Eh Target ID + 0Fh Telephone number + 10h ASCII destination ID + 11h Parity + 12h Bits per character + 13h Number of stop bits + 14h Packet timer + 15h Intercharacter timer + 17h Flags + 18h Parameter ranges + 19h Flow control + +Format of Connection Manager subvector: +Offset Size Description (Table 00313) + 00h BYTE length of subvector + 01h BYTE type code (see #00312) + 02h N-2 BYTEs data, which may include subvectors +SeeAlso: #00314,#00315,#00316,#00317,#00318,#00319,#00320,#00321,#00322,#00323,#00324 +SeeAlso: #00325,#00326,#00328,#00329,#00330,#00331,#00332,#00333,#00311 + +Format of Connection ID subvector: +Offset Size Description (Table 00314) + 00h BYTE 03h (length) + 01h BYTE 01h (subvector "Connection ID") + 02h BYTE connection ID +SeeAlso: #00313 + +Format of Destination ID subvector: +Offset Size Description (Table 00315) + 00h BYTE length + 01h BYTE 02h (subvector "Destination ID") + 02h N BYTEs subvector(s) of type 0Eh, 0Fh, or 10h +SeeAlso: #00313 + +Format of Asynchronous line parameters subvector: +Offset Size Description (Table 00316) + 00h BYTE length + 01h BYTE 03h (subvector "Asynchronous line parameters") + 02h N BYTEs subvector(s) of type 09h, 0Ah, or 19h +SeeAlso: #00313 + +Format of Data transfer parameters subvector: +Offset Size Description (Table 00317) + 00h BYTE length + 01h BYTE 04h (subvector "Data transfer parameters") + 02h N BYTEs subvector(s) of type 0Bh, 0Ch, or 0Dh +SeeAlso: #00313 + +Format of Line speed subvector: +Offset Size Description (Table 00318) + 00h BYTE 04h (length) + 01h BYTE 09h (subvector "Line speed") + 02h WORD bit map, highest set bit selects speed + bit 0: 2400 + bits 1-7: 1800, 1200, 600, 300, 115200, 150, 110 bps + bits 8-15: 57600, 38400, 19200, 14400, 9600, 7200, 4800, 3600 +SeeAlso: #00313 + +Format of Serial coding subvector: +Offset Size Description (Table 00319) + 00h BYTE length + 01h BYTE 0Ah (subvector "Serial coding") + 02h N BYTEs subvector(s) of type 11h, 12h, or 13h +SeeAlso: #00313 + +Format of Packet size subvector: +Offset Size Description (Table 00320) + 00h BYTE 04h (length) + 01h BYTE 0Bh (subvector "Packet size") + 02h WORD (big-endian) packet size, 1 to 1024 +SeeAlso: #00313 + +Format of Timers subvector: +Offset Size Description (Table 00321) + 00h BYTE length + 01h BYTE 0Ch (subvector "Timers") + 02h 8 BYTEs subvector of type 14h or 15h +SeeAlso: #00313 + +Format of Special characters subvector: +Offset Size Description (Table 00322) + 00h BYTE length + 01h BYTE 0Dh (subvector "Special characters") + 02h N BYTEs list of ASCII characters to be used as EOM or EOB +SeeAlso: #00313 + +Format of Target ID: +Offset Size Description (Table 00323) + 00h BYTE length + 01h BYTE 0Eh (subvector "Target ID") + 02h N BYTEs target ID, 1-16 bytes +SeeAlso: #00313 + +Format of Telephone number subvector: +Offset Size Description (Table 00324) + 00h BYTE length + 01h BYTE 0Fh (subvector "Telephone number") + 02h N BYTEs telephone number +SeeAlso: #00313 + +Format of ASCII destination ID subvector: +Offset Size Description (Table 00325) + 00h BYTE length + 01h BYTE 10h (subvector "ASCII destination ID") + 02h N BYTEs destination ID +SeeAlso: #00313 + +Format of Parity subvector: +Offset Size Description (Table 00326) + 00h BYTE 03h (length) + 01h BYTE 11h (subvector "Parity") + 02h BYTE parity type (see #00327) +SeeAlso: #00313 + +Bitfields for Connection Manager parity type: +Bit(s) Description (Table 00327) + 7 odd + 6 even + 5 mark + 4 space + 3 none +SeeAlso: #00326 + +Format of Bits per character subvector: +Offset Size Description (Table 00328) + 00h BYTE 03h (length) + 01h BYTE 12h (subvector "Bits per character") + 02h BYTE bits per character + bit 7: seven + bit 6: eight +SeeAlso: #00313 + +Format of Number of stop bits subvector: +Offset Size Description (Table 00329) + 00h BYTE 03h (length) + 01h BYTE 13h (subvector "Number of stop bits") + 02h BYTE stop bits + bit 7: one + bit 6: 1.5 + bit 5: two +SeeAlso: #00313 + +Format of Packet timer and Intercharacter timer subvectors: +Offset Size Description (Table 00330) + 00h BYTE 04h (length) + 01h BYTE subvector type + 14h Packet timer + 15h Intercharacter timer + 02h WORD (big-endian) unit of value representing 20ms +SeeAlso: #00313 + +Format of Flags subvector: +Offset Size Description (Table 00331) + 00h BYTE 03h (length) + 01h BYTE 17h (subvector "Flags") + 02h BYTE flags + bit 7: queueing requested +SeeAlso: #00313 + +Format of Parameter ranges subvector: +Offset Size Description (Table 00332) + 00h BYTE length + 01h BYTE 18h (subvector "Parameter ranges") + 02h N BYTEs subvector(s) of type 09h, 11h, 12h, or 13h +SeeAlso: #00313 + +Format of Flow control subvector: +Offset Size Description (Table 00333) + 00h BYTE length (02h-04h) + 01h BYTE 19h (subvector "Flow control") + 02h BYTE XOFF character + 03h BYTE XON character +Note: if length is 02h, flow control is disabled; if length is 03h, any + character will be accepted as XON after an XOFF +SeeAlso: #00313 +--------S-140400----------------------------- +INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INSTALLATION CHECK + AX = 0400h +Return: AX = 0FF0h +SeeAlso: AX=0401h,AX=0408h +--------S-140401----------------------------- +INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INITIALIZE MODE + AX = 0401h + CX = mode +Return: nothing +SeeAlso: AX=0400h,AX=0402h +--------S-140402----------------------------- +INT 14 - Microsoft Systems Journal TSRCOMM INT14 - EXTENDED INITIALIZE + AX = 0402h + CL = parameters +Return: nothing +SeeAlso: AX=0400h,AX=0401h +--------S-140403----------------------------- +INT 14 - Microsoft Systems Journal TSRCOMM INT14 - SET TIMEOUT + AX = 0403h + CX = timeout +Return: nothing +SeeAlso: AX=0400h +--------S-140404----------------------------- +INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE RECEIVE BUFFER + AX = 0404h +Return: nothing +SeeAlso: AX=0400h,AX=0405h,AX=0406h +--------S-140405----------------------------- +INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET RECEIVE BUFFER COUNT + AX = 0405h +Return: AX = number of characters in buffer +SeeAlso: AX=0400h,AX=0404h,AX=0407h +--------S-140406----------------------------- +INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE TRANSMIT BUFFER + AX = 0406h +Return: nothing +SeeAlso: AX=0400h,AX=0404h,AX=0407h +--------S-140407----------------------------- +INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET TRANSMIT BUFFER COUNT + AX = 0407h +Return: AX = number of characters in the buffer +SeeAlso: AX=0400h,AX=0405h,AX=0406h +--------S-140408----------------------------- +INT 14 - Microsoft Systems Journal TSRCOMM INT14 - UNINSTALL + AX = 0408h +Return: nothing +SeeAlso: AX=0400h +--------S-1405------------------------------- +INT 14 - SERIAL - EXTENDED COMMUNICATION PORT CONTROL (CONVERTIBLE,PS) + AH = 05h + AL = function + 00h read modem control register + Return: BL = modem control register (see #00334) + AH = status + 01h write modem control register + BL = modem control register (see #00334) + Return: AX = status + DX = port number +Note: also supported by ArtiCom +SeeAlso: AH=00h,AH=1Fh,AX=8000h"ARTICOM",AH=FBh + +Bitfields for modem control register: +Bit(s) Description (Table 00334) + 0 data terminal ready + 1 request to send + 2 OUT1 + 3 OUT2 + 4 LOOP + 5-7 reserved +--------S-1405------------------------------- +INT 14 - FOSSIL - DEINITIALIZE DRIVER + AH = 05h + DX = port number +Return: none + DTR is not affected +SeeAlso: AH=00h,AH=04h"FOSSIL",AH=1Dh,AH=8Dh +--------S-1405------------------------------- +INT 14 - MultiDOS Plus IODRV - READ CHARACTER FROM PORT + AH = 05h + AL = timeout in seconds (00h = never) +Return: AL = status + 00h successful + AH = character read + 01h read error + 02h timed out + other modem status (CTS, DSR) changed +Note: the port number is stored at offset BEh in the Task Control Block +SeeAlso: AH=02h,AH=04h"MultiDOS",AH=06h"MultiDOS",AH=22h"MultiDOS" +SeeAlso: INT 15/AH=13h"MultiDOS" +--------S-1405------------------------------- +INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE PROTOCOL + AH = 05h + AL = protocol (see #00335) + BH = new XOFF character (00h = current) + BL = new XON character (00h = current) + DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) +Return: AH = status + 00h successful + FFh error +SeeAlso: AH=04h"Digiboard" + +Bitfields for Digiboard protocol: +Bit(s) Description (Table 00335) + 7-4 unused + 3 RTS/CTS + 2 DSR + 1,0 XON/XOFF +--------S-1405------------------------------- +INT 14 - MBBIOS - DROP DTR AND RTS + AH = 05h + DX = port number +Return: none +SeeAlso: AH=00h"MBBIOS",AH=06h"MBBIOS",AH=06h"FOSSIL" +--------S-1405------------------------------- +INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHANGE PORT PROTOCOL + AH = 05h + AL = new port protocol (see #00336) + BH = new XOFF character + BL = new XON character + DX = port number +Return: AH = FFh if invalid protocol +SeeAlso: AH=00h,AH=04h"SERIAL",AH=06h"PC-MOS" + +Bitfields for PC-MOS/386 serial port protocol: +Bit(s) Description (Table 00336) + 7 set to enable/disable CD monitoring, clear to set protocol +---bit 7 set--- + 4 CD monitoring enabled + 5 automatic restart enabled +---bit 7 clear--- + 0 receive XON/XOFF + 1 transmit XON/XOFF + 2 DTR/DSR + 3 RTS/CTS +----------1405------------------------------- +INT 14 - PhysTechSoft PTS ROM-DOS - SET PACKET + AH = 05h + CX = packet length + DX = port number + DS:SI -> packet +Return: AH = error code (0 = no error, -1 = error) +Notes: The embedded PC can send messages at any time. The managing PC may + force the embedded PC to receive messages only after causing a reset + on the remote embedded PC. + !!!from Matthias Paul: + Description of the high-level control packets: + After the reset the embedded PC will send a 4-byte packet "LOAD" + to the managing PC to indicate it is now able to receive commands. + The managing PC can send commands using 6-byte sized packets starting + with "COMM" followed by a 2-byte command code: + "01" demand setup information + "02" demand sending of diagnostic information + If diagnostic information is requested, the embedded PC will send back + a header packet starting with 4-byte "DIAG" followed by 2 bytes + indicating the count of diagnostic data packets following. Each + diagnostic data packet is sized 134 bytes, starting with the 4-byte + "DIAG", a 2-byte number packet, followed by 128 bytes of data. + If setup information is requested, the embedded PC will send back + 8 bytes length packets starting with "SETP" and 2 byte of setup + information of the LOADER and BIOS. The contents varies. + If the embedded PC requests the managing PC to send a BIOS it will + send a 4 byte packet "BIOS". + The managing PC will then send back a 6-byte sized BIOS header packet + starting with "BIOS" and a 2-byte indicator of the BIOS image size + in packets. + The embedded PC will answer by sending a 6 byte packet starting with + "BIOS" followed by the running number of the demanded packet. + The managing PC will then send the requested part of the BIOS image + in a 134 byte sized packet, starting with "BIOS", the 2 byte running + number of the packet and 128 bytes of the actual BIOS info. + The embedded PC acknowledges that it received the BIOS with a 6-byte + packet "BIOS", followed by 2-bytes of 0. + If the embedded PCs requests the managing PC to send the operating + system, it will follow the same proceduce as for requesting the + BIOS. The only difference is that instead of "BIOS", the string + "PTOS" will be used in the communication. + Debug information packets have a length of 32 bytes starting with + the 4-byte "DEBU" signature, and followed by the contents of the + PCU registers in the following order: SP, SS, ES, DS, BP, DI, SI, + DX, CX, BX, AX, IP, CS, Flags. Debug information is send after + reaching the corresponding breakpoint. + Description of the low-level packet protocol: + Before sending a packet the sending side sends a byte 52h and for a + certain time (ca. 1 second for the embedded PC) waits for + confirmation (41h) from the receiving side. If no acknowledge is + received this procedure is repeated 4 more times before an error is + returned. + If acknowledge was received the following information is sent: + 2 BYTEs synchronization (50h, 50h) + BYTE data packet size - 1 + 2 BYTEs CRC of the data + var. data + 2 BYTEs synchronization (F0h, F0h) + The receiving side must acknowledge this by sending back two bytes + 59h, 59h. If the sender does not receive the confirmation, it + tries 4 more times before returning an error. +SeeAlso: INT 14h/AH=06h, INT 15h/AX=E908h, INT 15h/E909h +--------N-1405--DXFFFF----------------------- +INT 14 - Connection Manager - CLOSE COMMUNICATION + AH = 05h + DX = FFFFh + AL = connection ID +Return: AH = return code + 00h successful + 01h no such connection + 02h invalid connection ID + AL = correct connection ID +Desc: terminate existing connection to allow another one to be established +Note: if DX is 0-3 on entry, Connection Manager emulates the standard BIOS + function, but redirects the port over the network; if DX is any other + value, the call is chained +SeeAlso: AH=04h/DX=FFFFh,AH=0Dh/DX=FFFFh +--------S-1406------------------------------- +INT 14 - FOSSIL - RAISE/LOWER DTR + AH = 06h + DX = port + AL = DTR state to be set + 00h = lower + 01h = raise +Return: nothing +SeeAlso: AH=05h"MBBIOS",AH=1Ah +--------S-1406------------------------------- +INT 14 - MultiDOS Plus IODRV - WRITE CHARACTER TO PORT + AH = 06h + AL = character +Return: AL = status + 00h successful +Notes: the port number is stored at offset BEh in the Task Control Block + if output queue is full, the calling task is blocked until the + character can be stored +SeeAlso: AH=01h,AH=04h"MultiDOS",AH=05h"MultiDOS",AH=21h"MultiDOS" +SeeAlso: INT 15/AH=13h"MultiDOS" +--------S-1406------------------------------- +INT 14 - MBBIOS - RAISE DTR AND RTS + AH = 06h + DX = port number +Return: none +SeeAlso: AH=05h"MBBIOS",AH=07h"MBBIOS" +--------S-1406------------------------------- +INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DRIVER 'ID' FUNCTION + AH = 06h + DX = port number +Return: AH bit 7 set + AL = number of highest function supported by driver +Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible + operating system by The Software Link, Inc. +SeeAlso: AH=18h"PC-MOS" +--------N-1406------------------------------- +INT 14 - TelAPI - WRITE BLOCK + AH = 06h + CX = number of characters to write + DX = port number + ES:DI -> buffer containing data +Return: AX = number of characters actually sent (negative on error) + CX = ??? +SeeAlso: AH=07h"TelAPI",AH=E0h"TelAPI",AH=E3h"TelAPI" +----------1406------------------------------- +INT 14 - PhysTechSoft PTS ROM-DOS - GET PACKET + AH = 06h + CX = buffer size for packet + DX = port number + DS:SI -> buffer for packet +Return: AH = error code (00h = no error, FFh = error) + CX = packet size +SeeAlso: AH=05h"PTS ROM-DOS",INT 15/AX=E908h,INT 15/AX=E909h +--------N-1406--DXFFFF----------------------- +INT 14 - Connection Manager - SEND CHARACTER BLOCK + AH = 06h + DX = FFFFh + AL = connection ID + CX = number of characters to send + ES:DI -> buffer containing data to be sent +Return: AH = return code (see #00303) +Program: Connection Manager by Softwarehouse Corp. permits the sharing of + serial ports over an IPX or NetBIOS-based network +SeeAlso: AH=04h/DX=FFFFh,AH=07h/DX=FFFFh,AH=09h/DX=FFFFh +--------S-1407------------------------------- +INT 14 - FOSSIL - RETURN TIMER TICK PARAMETERS + AH = 07h +Return: AL = timer tick interrupt number + AH = ticks per second on interrupt number in AL + DX = approximate number of milliseconds per tick +SeeAlso: AH=16h +--------S-1407------------------------------- +INT 14 - MultiDOS Plus IODRV - GET PORT STATUS + AH = 07h +Return: CL = modem status (see #00305) + CH = character at head of input queue (if any) + DX = number of characters in input queue +Note: the port number is stored at offset BEh in the Task Control Block +SeeAlso: AH=03h,AH=05h"MultiDOS",AH=08h"MultiDOS",AH=09h"MultiDOS" +SeeAlso: AH=23h"MultiDOS",INT 15/AH=13h"MultiDOS" +--------S-1407------------------------------- +INT 14 - MBBIOS - SEND BREAK + AH = 07h + DX = port number +Return: none +SeeAlso: AH=06h"MBBIOS",AH=FAh"EBIOS" +--------S-1407------------------------------- +INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SEND RS-232 BREAK + AH = 07h + BX = duration of break in clock ticks + DX = port number +Return: nothing +--------N-1407------------------------------- +INT 14 - TelAPI - READ BLOCK + AH = 07h + CX = length of buffer in bytes + DX = port number + ES:DI -> buffer for data +Return: AX > 0000h number of characters actually read + AX = 0000h host has closed connection + AX < 0000h error code (see #00397) + CX = ??? +Note: translates CRLF into local EOL if the connection is in ASCII mode, + negotiates various Telnet options, and immediately executes several + different Telnet action commands +SeeAlso: AH=06h"TelAPI",AH=E0h"TelAPI",AH=E2h"TelAPI" +--------N-1407--DXFFFF----------------------- +INT 14 - Connection Manager - RECEIVE CHARACTER BLOCK + AH = 07h + DX = FFFFh + AL = connection ID + BL = flag + 00h wait for data + nonzero do not wait if no data avaiable + CX = size of receive buffer + ES:DI -> buffer for received characters +Return: AH = return code (00h-02h,04h,FFh) (see #00303) + BH = line status (see #00306) + CX = number of characters received +Program: Connection Manager by Softwarehouse Corp. permits the sharing of + serial ports over an IPX or NetBIOS-based network +SeeAlso: AH=01h/DX=FFFFh,AH=04h/DX=FFFFh,AH=06h/DX=FFFFh +--------S-1408------------------------------- +INT 14 - FOSSIL - FLUSH OUTPUT BUFFER WAITING TILL ALL OUTPUT IS DONE + AH = 08h + DX = port number +Return: nothing +SeeAlso: AH=09h"FOSSIL" +--------S-1408------------------------------- +INT 14 - MultiDOS Plus 4.0 IODRV - GET AND RESET PORT LINE STATUS + AH = 08h +Return: AL = line status (see #00304) + AH destroyed +Notes: the port number is stored at offset BEh in the Task Control Block + on every line status change, the line status is ORed with the line + status accumulator; this function returns the accumulator and clears + it +SeeAlso: AH=03h,AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS" +--------S-1408------------------------------- +INT 14 - Digiboard DigiCHANNEL PC/X* - ALTERNATE STATUS CHECK + AH = 08h + DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) +Return: AH = RS232 status bits (see #00304 at AH=03h) + ZF set if no characters queued + ZF clear if character available + AL = next character +SeeAlso: AH=03h,AH=08h"PC-MOS",AH=09h"Digiboard",AH=14h"Digiboard" +--------S-1408------------------------------- +INT 14 - MBBIOS - NON-DESTRUCTIVE READ + AH = 08h + DX = port number +Return: AL = character (if AH bit 0 set) + AH = status (see #00304) +SeeAlso: AH=0Bh"MBBIOS",AH=0Ch"FOSSIL" +--------S-1408------------------------------- +INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STATUS CHECK + AH = 08h + DX = port number +Return: CF set if carrier loss detected + ZF set if input buffer empty + ZF clear if characters available + AL = next character dequeued +--------N-1408--DXFFFF----------------------- +INT 14 - Connection Manager - RETURN DEFAULT CONNECTION PARAMETERS + AH = 08h + DX = FFFFh + CX = size of buffer for parameters or 0000h to get length + ES:DI -> buffer for parameter vector (see #00311) +Return: AH = return code + 00h successful + CX = number of bytes required (if CX=0000h on entry) + CX = number of bytes omitted for lack of space (if CX nonzero) + nonzero invalid request +Program: Connection Manager by Softwarehouse Corp. permits the sharing of + serial ports over an IPX or NetBIOS-based network +SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh +--------S-1409------------------------------- +INT 14 - FOSSIL - PURGE OUTPUT BUFFER THROWING AWAY ALL PENDING OUTPUT + AH = 09h + DX = port number +Return: nothing +SeeAlso: AH=08h"FOSSIL",AH=0Ah"FOSSIL",AH=88h +--------S-1409------------------------------- +INT 14 - MultiDOS Plus IODRV - RESET PORT STATUS + AH = 09h +Return: modem status byte cleared +Note: the port number is stored at offset BEh in the Task Control Block +SeeAlso: AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS" +--------S-1409------------------------------- +INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR BUFFERS + AH = 09h + DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) +Return: AH = status + 00h successful + FFh error +SeeAlso: AH=08h"Digiboard",AH=0Ah"Digiboard",AH=10h"Digiboard" +--------S-1409------------------------------- +INT 14 - MBBIOS - GET/SET OPTIONS + AH = 09h + AL = option byte (see #00337) + DX = port number??? +Return: AL = old option byte +SeeAlso: AH=00h"MBBIOS",AH=04h"MBBIOS",AH=10h"FOSSIL" + +Bitfields for MBBIOS option byte: +Bit(s) Description (Table 00337) + 0 transmit buffering enabled + 2 hardware handshaking enabled + 5 high-speed option enabled (see AH=00h"MBBIOS",#00302) + other reserved +--------S-1409------------------------------- +INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RESET I/O BUFFER POINTERS + AH = 09h + DX = port number +Return: nothing +SeeAlso: AH=13h"PC-MOS" +--------N-1409--DXFFFF----------------------- +INT 14 - Connection Manager - SEND BREAK + AH = 09h + DX = FFFFh + AL = connection ID +Return: AH = return code (00h-02h) (see #00303 at AH=00h/DX=FFFFh) +Program: Connection Manager by Softwarehouse Corp. permits the sharing of + serial ports over an IPX or NetBIOS-based network +SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh +--------S-140A------------------------------- +INT 14 - FOSSIL - PURGE INPUT BUFFER THROWING AWAY ALL PENDING INPUT + AH = 0Ah + DX = port number +Return: nothing +SeeAlso: AH=09h"FOSSIL",AH=85h +--------S-140A------------------------------- +INT 14 - Digiboard DigiCHANNEL PC/X* - INPUT QUEUE CHECK + AH = 0Ah + DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) +Return: AX = number of characters available in buffer +Note: this function is also supported by the PC-MOS/386 v5.01 $serial.sys +SeeAlso: AH=09h"Digiboard",AH=0Dh"Digiboard" +--------S-140A------------------------------- +INT 14 - MBBIOS - WRITE BUFFER + AH = 0Ah + CX = count + ES:DI -> buffer (see #00338) +Return: AX = status (see #00304,#00305) + CX = unsent character count + DI updated +Note: the PACCOM version of MBBIOS does not use CX or ES:DI; instead, ES + contains the segment of a buffer containing the packet to be sent, + which by default will be freed once the packet has been sent. Use + AH=0Ch"MBBIOS" to allocate the buffer. +SeeAlso: AH=01h,AH=0Bh"MBBIOS",AH=0Ch"MBBIOS",AH=19h"FOSSIL" + +Format of MBBIOS PACCOM buffer: +Offset Size Description (Table 00338) + 00h 504 BYTEs data area +1F8h WORD length of data in data area +1FAh BYTE flags/status + bit 7: don't discard buffer after transmitting data + bit 6: buffer has been transmitted +1FBh BYTE reserved (0) for additional flags/status +1FCh WORD user data +1FEh WORD MBBIOS-internal pointer to next buffer +--------N-140A--DXFFFF----------------------- +INT 14 - Connection Manager - MODIFY ACTIVE CONNECTION PARAMETERS + AH = 0Ah + DX = FFFFh + ES:DI -> vector string containing new parameters (see #00311) +Return: AH = return code (00h-03h,06h) (see #00303) +Program: Connection Manager by Softwarehouse Corp. permits the sharing of + serial ports over an IPX or NetBIOS-based network +Note: any subvectors valid for the Change Parameters command replace the + existing values in the current set +SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh +--------S-140B------------------------------- +INT 14 - FOSSIL - TRANSMIT NO WAIT + AH = 0Bh + AL = character + DX = port number +Return: AX = result + 0000h character not accepted + 0001h character accepted +SeeAlso: AH=01h +--------S-140B------------------------------- +INT 14 - MBBIOS - READ BUFFER + AH = 0Bh + CX = size of buffer + ES:DI -> buffer +Return: AH = composite line status (see #00304) formed by ORing all statuses + on receive interrupts; bit 0 set if additional characters + available + AL = composite modem status (see #00305) formed by ORing all statuses + CX = number of characters actually read + DI updated +Note: the PACCOM version of MBBIOS does not use CX or ES:DI on call, + instead returning ES set to the segment of the buffer containing a + received packet, or 0000h if no packets available; the buffer may + be freed with AH=0Ch"MBBIOS" +SeeAlso: AH=02h,AH=08h"MBBIOS",AH=0Ah"MBBIOS",AH=0Ch"MBBIOS",AH=18h"FOSSIL" +--------N-140B--DXFFFF----------------------- +INT 14 - Connection Manager - PREPARE FOR INBOUND CONNECTION + AH = 0Bh + DX = FFFFh + AL = service name + 00h use parameter file or default + 01h use specified name + ES:DI -> 16-byte blank-padded name + BH = connection notification + 00h program awaiting connection, don't notify user + 01h notify user on connecting + BL = connection type + 00h connection will use Connection Manager API +Return: AH = return code (00h-02h) (see #00303 at AH=00h/DX=FFFFh) + AL = connection ID if AH=00h +Program: Connection Manager by Softwarehouse Corp. permits the sharing of + serial ports over an IPX or NetBIOS-based network +SeeAlso: AH=04h/DX=FFFFh,AH=0Ch/DX=FFFFh,AH=10h/DX=FFFFh +--------S-140C------------------------------- +INT 14 - FOSSIL - NON-DESTRUCTIVE READ AHEAD + AH = 0Ch + DX = port number +Return: AX = FFFFh character not available + AX = 00xxh character xx available +SeeAlso: AH=08h"MBBIOS",AH=20h"FOSSIL" +--------S-140C------------------------------- +INT 14 - MBBIOS PACCOM support - BUFFER MANAGEMENT + AH = 0Ch + ES = segment of buffer to free, or 0000h to allocate new buffer +Return: ES = segment of allocated buffer (if ES=0000h on entry) +Note: the PACCOM version of MBBIOS uses only ES as buffer address for + AH=0Ah and AH=0Bh +SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS" +--------N-140C--DXFFFF----------------------- +INT 14 - Connection Manager - TEST FOR INBOUND CONNECTION REQUEST + AH = 0Ch + DX = FFFFh + AL = connection ID from AH=0Bh/DX=FFFFh +Return: AH = return code (00h-03h) (see also #00303 at AH=00h/DX=FFFFh) + 03h not prepared for inbound connection + AL = connection ID (if AH=00h) or correct connection ID (if AH=02h) +Program: Connection Manager by Softwarehouse Corp. permits the sharing of + serial ports over an IPX or NetBIOS-based network +SeeAlso: AH=03h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh +--------S-140D------------------------------- +INT 14 - FOSSIL - KEYBOARD READ WITHOUT WAIT + AH = 0Dh +Return: AX = result + FFFFh character not available + xxyyh standard IBM-style scan code +SeeAlso: AH=0Eh +--------S-140D------------------------------- +INT 14 - Digiboard DigiCHANNEL PC/X* - GET POINTER TO CH_KEY_RDY FLAG + AH = 0Dh + DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) +Return: ES:BX -> CH_KEY_RDY flag (see #00339) +SeeAlso: AH=0Ah"Digiboard" + +(Table 00339) +Values for Digiboard CH_KEY_RDY flag: + 00h receive buffer empty + FFh characters available +--------S-140D------------------------------- +INT 14 - MBBIOS PACCOM support - SET TXD + AH = 0Dh + AL = new setting (FFh = 1.0) +Return: nothing +Desc: specify the time from RTS to start or packet +SeeAlso: AX=0D00h,AH=0Eh"MBBIOS",AH=0Fh"MBBIOS" +--------N-140D--DXFFFF----------------------- +INT 14 - Connection Manager - TERMINATE CONNECTION CLIENT ACTIVITY + AH = 0Dh + DX = FFFFh +Return: AH = return code + 00h successful + nonzero operation not terminated +Program: Connection Manager by Softwarehouse Corp. permits the sharing of + serial ports over an IPX or NetBIOS-based network +Desc: end all Connection Client TSR activity to allow it to be removed from + memory +SeeAlso: AH=05h/DX=FFFFh,AH=6Fh/BX=FFFFh +--------S-140D00----------------------------- +INT 14 - MBBIOS - GET AVAILABLE BYTES + AX = 0D00h +Return: AX = bytes in transmit buffer + CX = bytes in receive buffer +SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS" +--------S-140D01----------------------------- +INT 14 - MBBIOS - LOWER ALL MODEM CONTROL SIGNALS + AX = 0D01h +Return: nothing +Note: this function lowers DTR, RTS, etc. +SeeAlso: AX=0D02h +--------S-140D02----------------------------- +INT 14 - MBBIOS - RAISE ALL MODEM CONTROL SIGNALS + AX = 0D02h +Return: nothing +Note: this function raises DTR, RTS, etc. +SeeAlso: AX=0D01h +--------S-140D03----------------------------- +INT 14 - MBBIOS - SET HANDSHAKE BYTE + AX = 0D03h + CL = new handshake byte +Return: CL = previous handshake byte +Note: this function lowers DTR, RTS, etc. +--------S-140E------------------------------- +INT 14 - FOSSIL - KEYBOARD READ WITH WAIT + AH = 0Eh +Return: AX = xxyyh standard IBM-style scan code +SeeAlso: AH=0Dh"FOSSIL" +--------S-140E------------------------------- +INT 14 - Digiboard DigiCHANNEL PC/X* - WRITE STRING + AH = 0Eh + CX = number of characters to write + ES:BX -> string + DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) +Return: AX = number of characters actually written + ZF clear if successful + ZF set on error +SeeAlso: AH=0Fh"Digiboard" +--------S-140E------------------------------- +INT 14 - MBBIOS PACCOM support - SET PERSISTENCE + AH = 0Eh + AL = new setting (FFh = 1.0) +Return: nothing +Desc: specify the time from end of DCD to RTS +SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS" +--------N-140E--DXFFFF----------------------- +INT 14 - Connection Manager - SET HARDWARE FLOW STATE + AH = 0Eh + DX = FFFFh + AL = connection ID from AH=04h/DX=FFFFh + BL = RTS state (00h off, 01h on) +Return: AH = return code (00h-03h) (see also #00303 at AH=00h/DX=FFFFh) + 03h invalid request (BL not 00h or 01h) +Program: Connection Manager by Softwarehouse Corp. permits the sharing of + serial ports over an IPX or NetBIOS-based network +SeeAlso: AH=03h/DX=FFFFh,AH=0Ah/DX=FFFFh +--------S-140F------------------------------- +INT 14 - FOSSIL - ENABLE/DISABLE FLOW CONTROL + AH = 0Fh + AL = bit mask describing requested flow control (see #00340) + DX = port number +Return: nothing +SeeAlso: AH=09h"MBBIOS",AH=10h"FOSSIL" + +Bitfields for FOSSIL requested flow control: +Bit(s) Description (Table 00340) + 0 XON/XOFF on transmit (watch for XOFF while sending) + 1 CTS/RTS (CTS on transmit/RTS on receive) + 2 reserved + 3 XON/XOFF on receive (send XOFF when buffer near full) + 4-7 all 1 +--------S-140F------------------------------- +INT 14 - Digiboard DigiCHANNEL PC/X* - READ STRING + AH = 0Fh + CX = number of characters to read + ES:BX -> buffer + DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) +Return: AX = number of characters read + ZF clear if successful + ZF set on error (line status or wrong number of characters) +SeeAlso: AH=0Eh"Digiboard" +--------S-140F------------------------------- +INT 14 - MBBIOS PACCOM support - SET SLOT TIME + AH = 0Fh + AL = new setting in clock ticks +Return: nothing +Desc: specify the time from end of DCD to RTS +SeeAlso: AH=0Dh"MBBIOS",AH=0Eh"MBBIOS",AH=10h"MBBIOS" +--------N-140F--DXFFFF----------------------- +INT 14 - Connection Manager - RETURN ACTIVE CONNECTION PARAMETERS + AH = 0Fh + DX = FFFFh + AL = connection ID + CX = size of buffer or 0000h to get length of returned vector + ES:DI -> buffer for connection parameter vector (see #00311) +Return: AH = return code (00h-02h,06h) (see #00303 at AH=00h/DX=FFFFh) + CX = number of bytes which could not be returned because the given + buffer was too small +Program: Connection Manager by Softwarehouse Corp. permits the sharing of + serial ports over an IPX or NetBIOS-based network +SeeAlso: AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh +--------S-1410------------------------------- +INT 14 - FOSSIL - EXTENDED ^C/^K CHECKING AND TRANSMIT ON/OFF + AH = 10h + AL = bit mask + bit 0: enable/disable ^C/^K checking + bit 1: enable/disable the transmitter + DX = port number +Return: nothing +SeeAlso: AH=0Fh"FOSSIL" +--------S-1410------------------------------- +INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR RECEIVE BUFFER + AH = 10h + DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) +Return: AH = status + 00h successful + FFh error +SeeAlso: AH=09h"Digiboard",AH=11h"Digiboard" +--------S-1410------------------------------- +INT 14 - MBBIOS PACCOM support - SET CRC WAIT + AH = 10h + AL = new setting in clock ticks (should be at least 5 character times) +Return: nothing +Desc: specify the time from start of last character to dropping RTS +SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS" +--------N-1410--DXFFFF----------------------- +INT 14 - Connection Manager - QUERY SERVICE NAMES + AH = 10h + DX = FFFFh + CL = subfunction + 00h search first + 01h search next + ES:DI -> pattern buffer (see #00341) +Return: AH = return code (00h,01h,03h,06h) (see also #00303 at AH=00h/DX=FFFFh) + 01h no (more) matching names + 03h invalid request + ES:DI buffer filled with reply buffer (see #00341) containing matched + name if AH=00h +Program: Connection Manager by Softwarehouse Corp. permits the sharing of + serial ports over an IPX or NetBIOS-based network +Desc: obtain the names of groups and lines available for connection requests, + and the names of active Connection Servers +SeeAlso: AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh + +Format of Connection Manager pattern/reply buffer: +Offset Size Description (Table 00341) + 00h WORD length of pattern (30h or 32h) + 02h 16 BYTEs server pattern or name + 12h 16 BYTEs group pattern or name + 22h 16 BYTEs line pattern or name + 23h BYTE (optional) ??? + 24h BYTE (optional, returned) current line status + 00h available + 01h out of service + 02h currently allocated to a connection +Note: pattern may include '?' wildcard to match any character +--------S-1411------------------------------- +INT 14 - FOSSIL - SET CURRENT CURSOR LOCATION + AH = 11h + DH = row + DL = column +Return: nothing +Note: this is the same as INT 10/AH=02h +SeeAlso: AH=12h"FOSSIL" +--------S-1411------------------------------- +INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR TRANSMIT BUFFER + AH = 11h + DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) +Return: AH = status + 00h successful + FFh error +SeeAlso: AH=09h"Digiboard",AH=10h"Digiboard" +--------S-1411------------------------------- +INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DISABLE PORT + AH = 11h + DX = port number +Return: AL = status + 00h successful + 01h IRQ for port is shared + 02h IRQ was reserved +SeeAlso: AH=04h"SERIAL",AH=05h"SERIAL",AH=12h"PC-MOS" +--------S-1412------------------------------- +INT 14 - FOSSIL - READ CURRENT CURSOR LOCATION + AH = 12h +Return: DH = row + DL = column +Note: this is the same as INT 10/AH=03h +SeeAlso: AH=11h"FOSSIL" +--------S-1412------------------------------- +INT 14 - Digiboard DigiCHANNEL PC/X* - GET TRANSMIT BUFFER FREE SPACE + AH = 12h + DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) +Return: AX = number of bytes free +SeeAlso: AH=0Ah"Digiboard",AH=14h"Digiboard" +--------S-1412------------------------------- +INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET CURRENT PORT PARAMETERS + AH = 12h + DX = port number +Return: AH = status + FFh port number invalid + AL = line parameters (see #00304) + AH = flow control configuration (see #00336 at AH=05h"PC-MOS") + CX:BX = bps rate + DL = XOFF character or 00h for none + DH = XON character or 00h for none +--------S-1413------------------------------- +INT 14 - FOSSIL - SINGLE CHARACTER ANSI WRITE TO SCREEN + AH = 13h + AL = character +Return: nothing +Note: should not be called if it is unsafe to call DOS +SeeAlso: AH=15h +--------S-1413------------------------------- +INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - REGISTER A PORT WITH A TERMINAL + AH = 13h + DX = port number +Return: AH = status + FFh port number invalid + else + ES:BX -> BYTE flag (00h buffer empty, FFh buffer contains data) +SeeAlso: AH=17h"PC-MOS" +--------S-1414------------------------------- +INT 14 - FOSSIL - ENABLE OR DISABLE WATCHDOG PROCESSING + AH = 14h + AL = 01h enable watchdog + 00h disable watchdog + DX = port number +Return: nothing +SeeAlso: INT 21/AH=2Bh/CX=6269h"WDTSR" +--------S-1414------------------------------- +INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT STRING + AH = 14h + CX = number of characters in string + DX = port number + ES:BX -> string to be sent + SI = timeout in timer ticks or 0000h for default +Return: AX = number of bytes actually sent + ZF clear if successful + ZF set on timeout +SeeAlso: AH=01h,AH=15h"PC-MOS" +--------S-1414------------------------------- +INT 14 - Digiboard - GET NUMBER OF BOARDS INSTALLED + AH = 14h +Return: AX = number of boards installed +SeeAlso: AH=08h"Digiboard",AH=15h"Digiboard" +--------S-1415------------------------------- +INT 14 - FOSSIL - WRITE CHARACTER TO SCREEN USING BIOS SUPPORT ROUTINES + AH = 15h + AL = character +Return: nothing +SeeAlso: AH=13h"FOSSIL" +--------S-1415------------------------------- +INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STRING + AH = 15h + CX = size of buffer + DX = port number + ES:BX -> buffer for received characters + SI = timeout in clock ticks or 0000h for default +Return: AX = number of characters actually read + ZF set on timeout (no data available) +SeeAlso: AH=02h,AH=14h"PC-MOS",AH=16h"PC-MOS" +--------S-1415------------------------------- +INT 14 - Digiboard - ENABLE/DISABLE MEMORY + AH = 15h + AL = new state (00h disabled, 01h enabled) +Return: AH = status + 00h successful + 80h error + FFh error +SeeAlso: AH=14h"Digiboard",AH=16h"Digiboard" +--------S-1416------------------------------- +INT 14 - FOSSIL - INSERT/DELETE FUNCTION FROM TIMER TICK CHAIN + AH = 16h + AL = function + 00h = delete + 01h = add + ES:DX -> routine to call +Return: AX = status + 0000h successful + 0001h unsuccessful +SeeAlso: AH=07h"FOSSIL" +--------S-1416------------------------------- +INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - LINK TO ANOTHER SERIAL DRIVER + AH = 16h + ES:BX -> calling driver's INT 14 entry point +Return: nothing +Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible + operating system by The Software Link, Inc. +--------S-1416------------------------------- +INT 14 - Digiboard DigiCHANNEL PC/X* - CCB COMMAND + AH = 16h + AL = CCB command number (see #00342) (see also following entries) + BL = byte 2 + BH = byte 3 + CL = byte 1 (for all channel functions except 4Eh and 4Fh) + DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) +Return: AH = status + 00h successful + 80h error + FFh error +SeeAlso: AX=1646h,AH=18h"Digiboard" + +(Table 00342) +Values for Digiboard CCB command number: + 40h Set Receive Mid Water Mark + 41h Set Receive High Water Mark + 42h Flush Receive Buffer + 43h Flush Transmit Buffer + 44h Transmit Pause + 45h Transmit Resume + 46h Set Interrupt to Host Mask + 47h Set Baud, Data, Stop and Parity + 48h Send Break + 49h Set Modem Lines + 4Ah Set Break Count + 4Bh Set Handshake + 4Ch Set Xon/Xoff Characters + 4Dh Set Transmit Mid Water Mark + 4Eh IRQ Polling Timer to Host + 4Fh Buffer Set All + 50h Port On + 51h Port Off + 52h Receive Pause + 53h Special Character Interrupt + 54h RS-422 Enable +--------S-141646----------------------------- +INT 14 - Digiboard - CCB COMMAND - SET INTERRUPT TO HOST MASK + AX = 1646h + BL = bits to set + BH = bits to clear + CL = byte 1 + DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) +Return: AH = status + 00h successful + 80h error + FFh error +SeeAlso: AH=16h"Digiboard",AX=1647h +--------S-141647----------------------------- +INT 14 - Digiboard - CCB COMMAND - SET BAUD/DATABITS/STOPBITS/PARITY + AX = 1647h + BL = baud + BH = datatype + CL = byte 1 + DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) +Return: AH = status + 00h successful + 80h error + FFh error +SeeAlso: AH=16h"Digiboard",AX=1646h,AX=1649h +--------S-141649----------------------------- +INT 14 - Digiboard - CCB COMMAND - SET MODEM LINES + AX = 1649h + BL = bits to set + BH = bits to clear + CL = byte 1 + DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) +Return: AH = status + 00h successful + 80h error + FFh error +SeeAlso: AH=16h"Digiboard",AX=1647h +--------S-14164A----------------------------- +INT 14 - Digiboard - CCB COMMAND - SET BREAK COUNT + AX = 164Ah + BL = break count + CL = byte 1 + DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) +Return: AH = status + 00h successful + 80h error + FFh error +SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Bh +--------S-14164B----------------------------- +INT 14 - Digiboard - CCB COMMAND - SET HANDSHAKE + AX = 164Bh + BL = bits to set + BH = bits to clear + CL = byte 1 + DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) +Return: AH = status + 00h successful + 80h error + FFh error +SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Ch +--------S-14164C----------------------------- +INT 14 - Digiboard - CCB COMMAND - SET XON/XOFF CHARACTERS + AX = 164Ch + BL = XON character + BH = XOFF character + CL = byte 1 + DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) +Return: AH = status + 00h successful + 80h error + FFh error +SeeAlso: AH=16h"Digiboard",AX=164Bh,AX=164Dh +--------S-14164D----------------------------- +INT 14 - Digiboard - CCB COMMAND - SET TRANSMIT MID-WATER MARK + AX = 164Dh + BX = new mid-water mark + CL = byte 1 + DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) +Return: AH = status + 00h successful + 80h error + FFh error +SeeAlso: AH=16h"Digiboard",AX=164Ch,AX=164Eh,AX=164Fh +--------S-14164E----------------------------- +INT 14 - Digiboard - CCB COMMAND - IRQ POLLING TIMER TO HOST + AX = 164Eh + BL = ticks + BH = ??? + CL = mode + DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) +Return: AH = status + 00h successful + 80h error + FFh error +SeeAlso: AH=16h"Digiboard",AX=164Dh +--------S-14164F----------------------------- +INT 14 - Digiboard - CCB COMMAND - BUFFER SET ALL + AX = 164Fh + BL = size + DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) +Return: AH = status + 00h successful + 80h error + FFh error +SeeAlso: AH=16h"Digiboard",AX=164Dh +--------S-141653----------------------------- +INT 14 - Digiboard - CCB COMMAND - SPECIAL CHARACTER INTERRUPT + AX = 1653h + BL = enable/disable + BH = special character + CL = byte 1 + DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) +Return: AH = status + 00h successful + 80h error + FFh error +SeeAlso: AH=16h"Digiboard",AX=1646h +--------S-1417------------------------------- +INT 14 - FOSSIL - REBOOT SYSTEM + AH = 17h + AL = method + 00h = cold boot + 01h = warm boot +SeeAlso: INT 16/AX=E0FFh,INT 19,INT 60/DI=0606h +--------S-1417------------------------------- +INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - WRITE MODEM CONTROL REGISTER + AH = 17h + AL = new value for UART's modem control register + DX = port number +Return: nothing +--------S-1418------------------------------- +INT 14 - FOSSIL - READ BLOCK + AH = 18h + CX = maximum number of characters to transfer + DX = port number + ES:DI -> user buffer +Return: AX = number of characters transferred +SeeAlso: AH=19h"FOSSIL",AH=83h"COURIERS",AX=FF02h,INT 6B/AX=0100h +--------S-1418------------------------------- +INT 14 - Digiboard DigiCHANNEL PC/X* - SEND BIOS COMMAND + AH = 18h + ES:BX -> 16-byte command string + DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) +Return: AH = status + 00h successful + 80h timeout + AL = mailbox status + 00h no errors + 8Xh BIOS error + ES:BX buffer filled in with mailbox string + ZF clear if no errors + ZF set if either status byte contains an error code +SeeAlso: AH=16h"Digiboard" +--------S-1418------------------------------- +INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET DRIVER DESCRIPTION + AH = 18h + DX = port number +Return: DS:BX -> 40-byte buffer containing a string identifying the serial + driver +SeeAlso: AH=06h"PC-MOS" +--------S-1419------------------------------- +INT 14 - FOSSIL - WRITE BLOCK + AH = 19h + CX = maximum number of characters to transfer + DX = port number + ES:DI -> user buffer +Return: AX = number of characters transferred +SeeAlso: AH=18h"FOSSIL",AH=86h,INT 6B/AX=0000h +--------S-1419------------------------------- +INT 14 - Digiboard DigiCHANNEL PC/X* - SPECIAL CHARACTER INTERRUPT + AH = 19h + BL = flag + 00h disable special character interrupt + FFh enable interrupt + DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) +Return: AH = status + 00h successful + FFh failed +SeeAlso: AH=1Ah"Digiboard" +--------S-1419------------------------------- +INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SELECTIVE BUFFER FLUSH + AH = 19h + AL = what to flush + bit 0: input buffer + bit 1: output buffer + DX = port number +Return: nothing +SeeAlso: AH=09h"PC-MOS" +--------S-141A------------------------------- +INT 14 - FOSSIL - BREAK BEGIN OR END + AH = 1Ah + AL = 00h stop sending 'break' + 01h start sending 'break' + DX = port number +Return: nothing +SeeAlso: AH=06h"FOSSIL",AH=8Ah,AH=FAh +--------S-141A------------------------------- +INT 14 - Digiboard DigiCHANNEL PC/X - SPECIAL CHARACTER FLAG/COUNTER + AH = 1Ah + BX = subfunction + 00h return pointer to special character flag byte + 01h return pointer to special character counter word + DX = port number (00h-03h) (04h-43h for XAPCM232.SYS) +Return: ES:BX -> special character flag or counter +Notes: flag is FFh if one or more special characters are in the receive + buffer; it is 00h and the counter is invalid if no special characters + are in the receive buffer + counter (if valid) contains the number of characters in the receive + buffer up to and including the last-received special character +--------S-141B------------------------------- +INT 14 - FOSSIL - RETURN INFORMATION ABOUT THE DRIVER + AH = 1Bh + DX = port number + CX = size of user buffer + ES:DI -> user buffer for driver info (see #00343) +Return: AX = number of characters transferred + CX = 3058h ("0X") (X00 FOSSIL only) + DX = 2030h (" 0") (X00 FOSSIL only) + +Format of FOSSIL driver info: +Offset Size Description (Table 00343) + 00h WORD size of structure in bytes + 02h BYTE FOSSIL spec driver conforms to + 03h BYTE revision level of this specific driver + 04h DWORD pointer to ASCIZ identification string + 08h WORD size of the input buffer + 0Ah WORD number of bytes left in buffer + 0Ch WORD size of the output buffer + 0Eh WORD number of bytes left in buffer + 10h BYTE width of screen + 11h BYTE length of screen + 12h BYTE actual baud rate, computer to modem +--------S-141C------------------------------- +INT 14 - X00 FOSSIL - ACTIVATE PORT + AH = 1Ch + DX = port number +Return: AX = 1954h if successful + BL = maximum function number supported (not including 7Eh and above) + BH = revision of FOSSIL specification supported +Note: this is a duplicate of AH=04h, so that AH=04h may be made compatible + with the PS/2 BIOS in a future release +SeeAlso: AH=04h"FOSSIL",AH=1Dh +--------S-141D------------------------------- +INT 14 - X00 FOSSIL - DEACTIVATE PORT + AH = 1Dh + DX = port number +Return: none +Notes: this is a duplicate of AH=05h, so that AH=05h may be made compatible + with the PS/2 BIOS in a future release + ignored if the port was never activated with AH=04h or AH=1Ch +SeeAlso: AH=05h"FOSSIL",AH=1Ch +--------S-141E------------------------------- +INT 14 - X00 FOSSIL - EXTENDED LINE CONTROL INITIALIZATION + AH = 1Eh + AL = break status + 00h if break + 01h if no break + BH = parity (see #00344) + BL = number of stop bits + 00h one stop bit + 01h two stop bits (1.5 if 5 bit word length) + CH = word length (see #00345) + CL = bps rate (see #00346) + DX = port number +Return: AX = port status code (see #00304,#00305) +Notes: this function is intended to exactly emulate the PS/2 BIOS AH=04h call + if the port was locked at X00 load time, the appropriate parameters are + ignored +SeeAlso: AH=00h,AH=04h"SERIAL" + +(Table 00344) +Values for X00 FOSSIL parity: + 00h no parity + 01h odd parity + 02h even parity + 03h stick parity odd + 04h stick parity even +SeeAlso: #00307,#00345,#00346 + +(Table 00345) +Values for X00 FOSSIL word length: + 00h 5 bits + 01h 6 bits + 02h 7 bits + 03h 8 bits +SeeAlso: #00308,#00344,#00346 + +(Table 00346) +Values for X00 FOSSIL bps rate: + 00h 110 + 01h 150 + 02h 300 + 03h 600 + 04h 1200 + 05h 2400 + 06h 4800 + 07h 9600 + 08h 19200 +SeeAlso: #00309,#00344,#00345 +--------S-141E------------------------------------ +INT 14 - HUNTER 16 - READ COMMS PARAMETERS + AH = 1Eh + CX = channel number (00h COM1, 01h COM2, ...) + DS:BX -> buffer for communications parameters (see #00347) +Return: DS:BX buffer filled +Note: the Husky Hunter 16 is an 8088-based ruggedized laptop. Other family + members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk. +SeeAlso: AH=20h"HUNTER" + +Format of HUNTER 16 communications parameters: +Offset Size Description (Table 00347) + 00h BYTE communications type (00h IBM, nonzero Husky) + 01h BYTE port number (00h COM1, 01h COM2) + 02h BYTE baud rate (00h 110 bps, 01h 150, 02h 300, 03h 600, 04h 1200, + 05h 2400, 06h 4800, 07h 9600, 08h 19200, 09h 38400) + 03h BYTE data bits (01h seven, 02h eight) + 04h BYTE parity (00h none, 01h odd, 02h even) + 05h BYTE stop bits (00h one, 01h two) + 06h BYTE handshake (see #00348) + 07h BYTE handshake protocol (00h none, 01h Xon/Xoff, 02h HWK3780) + 08h BYTE Nulls after CR (0-20) + 09h BYTE LF (00h off, 01h on) + 0Ah BYTE Serig. 0..7Fh: Ignore this character + 80h: Serig off + 0Bh BYTE echo (00h off, 01h on) + 0Ch BYTE transmit timeout in seconds (1-60) or 00h to disable + 0Dh BYTE receive timeout in seconds (1-60) or 00h to disable + 0Eh 5 BYTEs reserved + +Bitfields for HUNTER 16 handshake: +Bit(s) Description (Table 00348) + 0-1 0: RTS off, 1: RTS hold, 2: RTS true + 2 DTR enabled + 4 CTS enabled + 5 DSR enabled + 6 DCD enabled +--------S-141F------------------------------- +INT 14 - X00 FOSSIL - EXTENDED SERIAL PORT STATUS/CONTROL + AH = 1Fh + DX = port number + AL = direction + 00h read modem control register + Return: BL = modem control register (see #00349) + AH = status + 01h write modem control register + BL = modem control register (see #00349) + Return: AX = status +Notes: this function is intended to exactly emulate the PS/2 BIOS AH=05h call + X00 forces BL bit 3 set (interrupts cannot be disabled) +SeeAlso: AH=00h,AH=05h"SERIAL" + +Bitfields for X00 FOSSIL modem control register: +Bit(s) Description (Table 00349) + 0 data terminal ready + 1 request to send + 2 OUT1 + 3 OUT2 (interrupts) enabled + 4 LOOP + 5-7 reserved +--------S-1420------------------------------- +INT 14 - X00 FOSSIL - DESTRUCTIVE READ WITH NO WAIT + AH = 20h + DX = port number +Return: AH = 00h if character was available + AL = next character (removed from receive buffer) + AX = FFFFh if no character available +SeeAlso: AH=0Ch,AH=21h"X00" +--------S-1420------------------------------- +INT 14 - Alloy MW386 - ATTACH LOGICAL COMMUNICATIONS PORT TO PHYSICAL PORT + AH = 20h + AL = logical port (01h COM1, 02h COM2) + DX = physical port number +Return: AX = status + 0000h successful + FFFFh failed +SeeAlso: AH=21h"Alloy",AH=22h"Alloy",AH=23h"Alloy",INT 17/AH=8Bh"Alloy" +--------S-1420------------------------------- +INT 14 - MultiDOS Plus - INITIALIZE PORT + AH = 20h + AL = port parameters (see #00300 at AH=00h"SERIAL") + DX = port number (0-3) +Return: AH = status + 00h successful + 41h no such port + 64h monitor mode already active +SeeAlso: AH=00h"SERIAL",AH=04h"MultiDOS",AH=21h"MultiDOS",AH=23h"MultiDOS" +--------S-1420------------------------------- +INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHECK OUTPUT QUEUE + AH = 20h + DX = port number +Return: AX = number of bytes in output buffer +SeeAlso: AH=0Ah"Digiboard" +--------S-1420------------------------------------ +INT 14 - HUNTER 16 - SELECT COMMS PARAMETERS + AH = 20h + CX = channel number (00h COM1, 01h COM2, ...) + DS:BX -> buffer with communications parameter (see #00347) +Return: AX = status + 0000h successful + 0001h invalid parameter +SeeAlso: AH=1Eh"HUNTER",AH=21h"HUNTER" +--------S-1421------------------------------- +INT 14 - X00 FOSSIL - STUFF RECEIVE BUFFER + AH = 21h + AL = character + DX = port number +Return: nothing +Notes: the given character is inserted at the end of the receive buffer as if + it had just arrived from the serial port; all normal receive + processing (XON/XOFF, ^C/^K) is performed on the character + fully re-entrant +SeeAlso: AH=20h"X00" +--------S-1421------------------------------- +INT 14 - Alloy MW386 v1.x only - RELEASE PHYSICAL COMMUNICATIONS PORT + AH = 21h + DX = physical port number +Return: AX = status + 0000h successful + FFFFh failed +SeeAlso: AH=20h"Alloy",AH=22h"Alloy" +--------S-1421------------------------------- +INT 14 - MultiDOS Plus - TRANSMIT CHARACTER + AH = 21h + AL = character to send + DX = port number +Return: AH = status (see #00350) +Note: monitor mode must have been turned on with AH=24h before calling +SeeAlso: AH=20h"MultiDOS",AH=22h"MultiDOS",AH=24h"MultiDOS" + +(Table 00350) +Values for MultiDOS Plus status: + 00h successful + 39h no DSR or CTS + 3Ch no DSR + 3Bh no CTS + 41h no such port + 42h monitor mode not active + 97h timed out +--------S-1421------------------------------- +INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT CHARACTER, WITH TIMEOUT + AH = 21h + AL = char to send + DX = port number + SI = timeout in timer ticks (0000h = default) +Return: after character is sent or timeout expires +Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible + operating system by The Software Link, Inc. +SeeAlso: AH=01h,AH=0Eh"Digiboard",AH=22h"PC-MOS" +--------S-1421------------------------------------ +INT 14 - HUNTER 16 - EXTENDED CONTROL + AH = 21h + AL = command + 01h force transmission of buffer + 02h clear transmit buffer + 03h clear receive buffer + DX = port (00h COM1, 01h COM2) +Return: AH = extended status +Desc: executes the command on the selected port +SeeAlso: AH=1Eh"HUNTER",AH=20h"HUNTER",AH=22h"HUNTER",AH=24h"HUNTER" +--------S-1422------------------------------- +INT 14 - Alloy MW386 v2+ - RELEASE LOGICAL COMMUNICATIONS PORT + AH = 22h + AL = logical port (01h COM1, 02h COM2) +Return: AX = status (0000h successful) +SeeAlso: AH=20h"Alloy",AH=21h"Alloy" +--------S-1422------------------------------- +INT 14 - MultiDOS Plus - RECEIVE CHARACTER + AH = 22h + DX = port number +Return: AH = status (see also AH=21h"MultiDOS") + 00h successful + AL = character + 3Dh framing and parity error + 3Eh overrun error + 3Fh framing error + 40h parity error + 96h ring buffer overflow +Note: if no character is available, this function waits until a character + arrives or an implementation-dependent timeout elapses +SeeAlso: AH=20h"MultiDOS",AH=21h"MultiDOS",AH=27h +--------S-1422------------------------------- +INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RECEIVE CHARACTER, WITH TIMEOUT + AH = 22h + DX = port number + SI = timeout in timer ticks (0000h = default) +Return: AH = port status (see also #00304 at AH=03h) + bit 7 = 1 indicates time-out + AL = character received +Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible + operating system by The Software Link, Inc. +SeeAlso: AH=02h,AH=0Fh"Digiboard",AH=21h"PC-MOS" +--------S-1422------------------------------------ +INT 14 - HUNTER 16 - EXTENDED STATUS + AH = 22h + DX = port (00h COM1, 01h COM2) +Return: AH = extended status + BX = number of characters in input buffer + CX = number of characters in output buffer +Desc: returns the most recent Extended Status code for the port +SeeAlso: AH=21h"HUNTER" +--------S-1423------------------------------- +INT 14 - Alloy MW386 v2+ - GET PORT NUMBER FROM LOGICAL PORT ID + AH = 23h + AL = logical port (01h COM1, 02h COM2) + DH = user ID + DL = process ID (DH,DL both FFh for current task) +Return: AL = MW386 port mode (see #00351) + CX = MW386 port number + DH = owner's user ID + DL = owner's task ID +SeeAlso: AH=20h"Alloy",INT 17/AH=8Bh"Alloy" + +Bitfields for MW386 port mode: +Bit(s) Description (Table 00351) + 0 port is shared (spooler only) + 1 port is spooled instead of direct (spooler only) + 2 port is assigned as logical COM device, not in spooler + 3 port is free +--------S-1423------------------------------- +INT 14 - MultiDOS Plus - GET PORT STATUS + AH = 23h + DX = port number +Return: AH = line status (see #00304 at AH=03h) + AL = modem status (see #00305 at AH=03h) +SeeAlso: AH=03h,AH=07h"MultiDOS",AH=20h"MultiDOS" +--------S-1423------------------------------- +INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DECLARE PORT OWNERSHIP + AH = 23h + DX = port number + BX = TCB segment/selector address of owner task +Return: nothing +SeeAlso: AH=0Dh"Digiboard",AH=21h"PC-MOS",AH=22h"PC-MOS" +--------S-1423------------------------------------ +INT 14 - HUNTER 16 - CONTROL HANDSHAKE LINES + AH = 23h + BH = handshake line to set (00h RTS, 01h DTR) + BL = new level (00h low, 01h high) +Return: nothing +Desc: sets the handshake lines of COM1 to the desired level +SeeAlso: AH=21h"HUNTER",AH=24h"HUNTER" +--------S-1424------------------------------- +INT 14 - Alloy MW386 v2+ - CHANGE PHYSICAL PORT PARAMETERS + AH = 24h + CX = physical I/O port number + DS:DX -> configuration table (see #00352) +Return: AH = 00h +Note: invalid port numbers are merely ignored +SeeAlso: INT 17/AH=96h + +Format of Alloy MW386 configuration table: +Offset Size Description (Table 00352) + 00h BYTE baud rate (see #00353) + 01h BYTE data bits (00h=5, 01h=6, 02h=7, 03h=8) + 02h BYTE parity (00h none, 01h odd, 02h even) + 03h BYTE stop bits (00h=1, 01h=2) + 04h BYTE receive flow control + 00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC, 04h RTS/CTS + 05h BYTE transmit flow control (as for receive) + +(Table 00353) +Values for Alloy MW386 baud rate: + 00h 38400 + 01h 19200 + 02h 9600 + 03h 7200 + 04h 4800 + 05h 3600 + 06h 2400 + 07h 2000 + 08h 1200 + 09h 600 + 0Ah 300 + 0Bh 150 + 0Ch 134.5 +SeeAlso: #00309 +--------S-1424------------------------------- +INT 14 - MultiDOS Plus - SET MONITOR MODE + AH = 24h + AL = port status storage + 00h single status for entire receive buffer + 01h separate status kept for each byte in receive buffer + DX = port number +Return: AH = status + 00h successful + 3Ah invalid status storage specified + 41h no such port + 64h monitor mode already active +Note: in monitor mode, MultiDOS redirects all BIOS video output to a serial + port +SeeAlso: AH=20h"MultiDOS",AH=25h +--------S-1424------------------------------- +INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - ??? + AH = 24h +Return: ??? +Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible + operating system by The Software Link, Inc. +--------S-1424------------------------------------ +INT 14 - HUNTER 16 - CONTROL CTS HANDSHAKING + AH = 24h + AL = new CTS handshake state for COM1 (00h disabled, 01h enabled) +Return: nothing +SeeAlso: AH=23h"HUNTER",AH=25h"HUNTER",AH=26h"HUNTER" +--------S-1425------------------------------- +INT 14 - MultiDOS Plus - CLEAR BUFFERS + AH = 25h + AL = function + 00h only clear buffers + 01h clear buffers and deactivate + DX = port number +Return: AH = status + 00h successful + 3Ah invalid function + 41h no such port + 42h monitor mode not active +SeeAlso: AH=20h"MultiDOS",AH=24h"MultiDOS" +--------S-1425------------------------------------ +INT 14 - HUNTER 16 - CONTROL RS232 DRIVERS + AH = 25h + AL = new state of RS232 drivers (00h off, 01h on) +Return: nothing +Note: this function can be used to save power by turning off the RS232 + drivers. It can also be used to turn on the RS232 drivers before + connecting to a remote system to avoid "garbage" while the drivers + turn on. +SeeAlso: AH=23h"HUNTER",AH=24h"HUNTER",AH=26h"HUNTER" +--------S-1426------------------------------------ +INT 14 - HUNTER 16 - CONTROL RI POWER UP + AH = 26h + AL = 00h enable RI power up + else disable RI power up +Return: nothing +Desc: control whether the Ring Indicator handshake can power up the Hunter +--------S-1427------------------------------- +INT 14 - MultiDOS Plus - GET BUFFER CHARACTER COUNT + AH = 27h + DX = port number +Return: AH = status + 00h successful + 41h no such port + 42h monitor mode not active + AL = number of characters in receive buffer +--------S-1427------------------------------------ +INT 14 - HUNTER 16 - GET INSTALLED PROTOCOLS COUNT + AH = 27h + AL = number of extended protocols installed (since last call) +Return: AL = total number installed, including new ones +Desc: Returns the number of extended communication protocols installed +SeeAlso: AH=25h"HUNTER",AH=28h"HUNTER" +--------S-1428------------------------------------ +INT 14 - HUNTER 16 - GET PROTOCOL NAME + AH = 28h + AL = protocol handle + DS:BX -> 8 character buffer for protocol name +Return: AH = status + 00h successful + DS:BX buffer filled with the protocol name + FFh failed +SeeAlso: AH=27h"HUNTER",AH=29h"HUNTER" +--------S-1429------------------------------------ +INT 14 - HUNTER 16 - GET PROTOCOL HANDLE + AH = 29h + DS:BX -> buffer containing the protocol name +Return: AH = status + 00h successful + AL = handle + FFh failed +SeeAlso: AH=28h"HUNTER",AH=2Ah"HUNTER" +--------S-142A------------------------------------ +INT 14 - HUNTER 16 - EXTENDED PROTOCOL MENU + AH = 2Ah + AL = protocol handle +Return: AH = status + 00h successful + FFh failed + AL = menu handle +SeeAlso: AH=29h"HUNTER",AH=2Bh"HUNTER" +--------S-142B------------------------------------ +INT 14 - HUNTER 16 - GET EXTENDED PROTOCOL PARAMETERS + AH = 2Bh + AL = protocol handle + DS:BX -> buffer for extended protocol parameters +Return: AH = status + 00h successful + DS:BX buffer filled with extended parameters + FFh failed +SeeAlso: AH=2Ah"HUNTER" +--------S-142C00---------------------------------- +INT 14 - HUNTER 16 - GET DTR + AX = 2C00h +Return: AH = 00h + BL = current state + 00h normal DTR operation + else DTR is forced high +Desc: Indicates whether the DTR signal on COM1 is forced high +Note: the Husky Hunter 16 is an 8088-based ruggedized laptop. Other family + members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk. +SeeAlso: AH=2Ch"SET DTR" +--------S-142C------------------------------------ +INT 14 - HUNTER 16 - SET DTR + AH = 2Ch + AL nonzero + BL = new state + 00h normal operation + else force DTR high +Return: AH = 00h +Desc: determine whether the DTR signal on COM1 should be forced high +SeeAlso: AX=2C00h +--------N-1436------------------------------- +INT 14 - ComShare - INSTALLATION CHECK + AH = 36h +Return: AX = 4353h ('CS') if installed + BX = bitmap of installed ports (bit 0: COM1 is gateway, etc.) + CX reserved for future use + WORD DX:[0100h] = ComShare version number +Program: The ComShare System is a modem-sharing program for NetBIOS and + NetWare-based networks by NashaKala Corporation +Note: ComShare supports the standard BIOS INT 14h calls with a slight + change in the interpretation of speed values + (see #00309 at AH=04h"SERIAL") +SeeAlso: AH=00h"SERIAL",AH=04h"SERIAL",AX=F4FFh +--------t-144000----------------------------- +INT 14 - I1541 - INSTALLATION CHECK + AX = 4000h +Return: AX = 1541h if installed + BH = I1541 major version (BCD) + BL = I1541 minor version (BCD) + CX = 0000h +--------t-144001----------------------------- +INT 14 - I1541 - TEST IF 1541 CABLE CONNECTED + AX = 4001h +Return: CF clear if connected + BL = LPT number where 1541 cable is connected (1..3) + CF set if cable not connected +Desc: scan all the LPT ports searching for the adapter cable +SeeAlso: AX=4000h +--------t-144002----------------------------- +INT 14 - I1541 - SELECT LPT PORT FOR OUTPUT + AX = 4002h + BL = LPT number (1..3) +Return: CF clear if successful + CF set otherwise +Desc: force the input output routines to work on the cable placed on LPT BL +SeeAlso: AX=4001h +--------t-144003----------------------------- +INT 14 - I1541 - RESET ALL DEVICES + AX = 4003h +Return: nothing +Desc: send a reset pulse of 100ms to all CBM devices +Note: it is necessary to wait about 2 seconds after reset before executing + other instructions +SeeAlso: AX=4000h,AX=4004h +--------t-144004----------------------------- +INT 14 - I1541 - SEND LISTEN SIGNAL + AX = 4004h + BH = device number (0..15) +Return: CF clear if successful + CF set on error + AL = error number (see #00354) +SeeAlso: AX=4005h,AX=4006h + +(Table 00354) +Values for I1541 error number: + 00h device not present + 01h listener not ready + 02h missing EOI time-out + 03h EOI not completed + 04h data not released + 05h frame error +--------t-144005----------------------------- +INT 14 - I1541 - SEND SECONDARY ADDRESS FOR LISTEN + AX = 4005h + BL = channel number and mode (see #00355) +Return: CF clear if successful + CF set on error + AL = error number (see #00354) +SeeAlso: AX=4004h,AX=4006h + +Bitfields for I1541 channel number and mode: +Bit(s) Description (Table 00355) + 7-4 mode + 0110 read/write + 1110 close channel + 1111 open channel + 3-0 channel number +--------t-144006----------------------------- +INT 14 - I1541 - SEND UNLISTEN SIGNAL + AX = 4006h +Return: CF clear if successful + CF set on error + AL = error number (see #00354) +SeeAlso: AX=4004h,AX=4005h +--------t-144007----------------------------- +INT 14 - I1541 - SEND TALK SIGNAL + AX = 4007h + BH = device number (0-15) +Return: CF clear if successful + CF set on error + AL = error number (see #00354) +SeeAlso: AX=4008h,AX=4009h +--------t-144008----------------------------- +INT 14 - I1541 - SEND SECONDARY ADDRESS FOR TALK + AX = 4008h + BL = channel number and mode (see #00355) +Return: CF clear if successful + CF set on error + AL = error number (see also #00354) + 40h turn around time-out +SeeAlso: AX=4007h,AX=4009h +--------t-144009----------------------------- +INT 14 - I1541 - SEND UNTALK SIGNAL + AX = 4009h +Return: CF clear if successful + CF set on error + AL = error number (see #00354) +SeeAlso: AX=4007h,AX=4008h +--------t-14400A----------------------------- +INT 14 - I1541 - SEND A BYTE TO A DEVICE + AX = 400Ah + BL = byte to send + CL = last-byte flag + 00h more bytes follow + 01h this is the last byte to be sent +Return: CF clear if successful + CF set on error + AL = error number (see #00354) +SeeAlso: AX=4000h,AX=400Bh +--------t-14400B----------------------------- +INT 14 - I1541 - RECEIVE A BYTE FROM A DEVICE + AX = 400Bh +Return: CF clear if successful + AL = byte received + CL = last-byte flag + 00h more bytes to follow + 01h received byte is the last + CF set on error + AL = error number + 80h EOI response required + 81h talker not ready + 82h clock not set + 83h clock not released + CL = 00h +SeeAlso: AX=4000h,AX=400Ah +--------t-14400C----------------------------- +INT 14 - I1541 - WAIT + AX = 400Ch + CX = number of 838ns microticks to wait (0000h means 65536, ~55ms) +Return: after wait period elapses +SeeAlso: AX=4000h,AX=400Dh +--------t-14400D----------------------------- +INT 14 - I1541 - LONGWAIT + AX = 400Dh + DX:CX = number of 838ns microticks to wait + (0000h:0000h means 4294967296, about one hour) +Example: To wait 1s you must set DX:CX=(1s/838ns)=1193180 +SeeAlso: AX=4000h,AX=400Ch +--------t-14400E----------------------------- +INT 14 - I1541 - GET INFO + AX = 400Eh +Return: AX = LPT port I/O address in use (0000h if no cable in use) + BL = LPT number (1..3) in use (00h if no cable in use) + CF set if the cable is auto-detectable + CF clear if cable could not be auto-detected or is not present +SeeAlso: AX=4000h +--------S-1456------------------------------- +INT 14 U - BWCOM14 - INSTALLATION CHECK + AH = 56h +Return: CX = 0001h if installed +Program: BWCOM14 is a network serial port emulator (simulating a Hayes modem + connected to the serial port) distributed as part of the + Beame&Whiteside BW-NFS package +SeeAlso: AH=57h,AH=58h,INT 2F/AX=DF00h/BX=5445h +--------S-1457------------------------------- +INT 14 U - BWCOM14 - INITIALIZE + AH = 57h + DL = port number +Return: AL = initialization status (00h successful, 01h already initialized) + CX = port status (0001h port redirected, 0002h and FFFFh failed) +Note: after this call, all invocations of INT 14/AH=00h-03h for the specified + port will be handled by BWCOM14 until AH=58h is called +SeeAlso: AH=00h"SERIAL",AH=56h,AH=58h +--------S-1458------------------------------- +INT 14 U - BWCOM14 - SHUTDOWN + AH = 58h +Return: CX = status (0001h successful, 0002h not initialized) +Note: after this call, BWCOM14 will no longer redirect the COM port +SeeAlso: AH=56h,AH=57h +--------N-146F--BXFFFE----------------------- +INT 14 U - Connection Manager - ??? + AH = 6Fh + BX = FFFEh + ??? +Return: ??? +Program: Connection Manager by Softwarehouse Corp. permits the sharing of + serial ports over an IPX or NetBIOS-based network +--------N-146F--BXFFFF----------------------- +INT 14 - Connection Manager - INSTALLATION CHECK + AH = 6Fh + BX = FFFFh +Return: DX:BX -> Connection Manager Communication Table if installed + BX = FFFFh if not installed +SeeAlso: AH=0Dh/DX=FFFFh +--------S-146F00----------------------------- +INT 14 - HP Vectra EX-BIOS - "F14_INQUIRE" - INSTALLATION CHECK + AX = 6F00h + BX <> 4850h (usually set to 0000h for simplicity) +Return: BX = 4850h ("HP") if HP Extended BIOS serial port extensions available + AX destroyed +Note: supported by original HP Vectra AT and by ES/QS/RS series Vectras +SeeAlso: AX=6F01h,AX=6F02h,AX=6F03h,AX=6F04h,INT 10/AX=6F00h,INT 14/AX=6F00h +SeeAlso: INT 17/AX=6F00h,INT 33/AX=6F00h +--------S-146F01----------------------------- +INT 14 - HP Vectra EX-BIOS - "F14_EXINIT" - INITIALIZE SERIAL PORT + AX = 6F01h + BX = port attributes (see #00356) + DX = port number (0-3) +Return: AH = line status (see #00304) + AL = modem status (see #00305) +Note: supported by original HP Vectra AT and by ES/QS/RS series Vectras +SeeAlso: AX=6F00h + +Bitfields for HP Vectra Extended BIOS serial port attributes: +Bit(s) Description (Table 00356) + 8-5 data rate (110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200) + 4-3 parity + 00 none + 01 odd + 10 none + 11 even + 2 stop bits (0 = one, 1 = two) + 1-0 bits per character + 10 seven-bit characters + 11 eight-bit characters + 0x undefined +--------S-146F02----------------------------- +INT 14 - HP Vectra EX-BIOS - "F14_PUT_BUFFER" - TRANSMIT BUFFER + AX = 6F02h + CX = number of characters in buffer + DX = port number (0-3) + ES:DI -> buffer containing characters +Return: AH = line status (see #00304) + AL = modem status (see #00305) + CX = number of bytes actually sent + ES:DI -> next byte to be transferred (unchanged if all bytes sent) +Desc: send characters from the specified buffer until all characters have + been sent or an error/timeout is encountered +Note: supported by original HP Vectra AT and by ES/QS/RS series Vectras +SeeAlso: AX=6F00h,AX=6F03h,AX=6F04h,INT 17/AX=6F02h +--------S-146F03----------------------------- +INT 14 - HP Vectra EX-BIOS - "F14_GET_BUFFER" - READ DATA INTO BUFFER + AX = 6F03h + CX = size of buffer + DX = port number (0-3) + ES:DI -> buffer for received characters +Return: AH = line status (see #00304) + ---on error (AH bit 7 set)--- + AL = 00h + ES:DI -> next byte to be transferred + ---if successful--- + AL = last byte read + ES:DI unchanged + CX = number of bytes read +Desc: read characters into the specified buffer until the buffer is filled + or a timeout occurs +Notes: supported by original HP Vectra AT and by ES/QS/RS series Vectras + polls the Data Set Ready modem status and Data Ready line status bits + to determine when characters are available +SeeAlso: AX=6F00h,AX=6F02h,AX=6F04h +--------S-146F04----------------------------- +INT 14 - HP Vectra EX-BIOS - "F14_TRM_BUFFER" - READ UNTIL TERMINATOR + AX = 6F04h + BL = lowest termination character + BH = highest termination character + CX = size of buffer + DX = port number (0-3) + ES:DI -> buffer for received characters +Return: AH = line status (see #00304) + ---on error (AH bit 7 set)--- + AL = 00h + ES:DI -> next byte to be transferred + ---if successful--- + AL = last byte read + ES:DI unchanged + CX = number of bytes read +Desc: read characters into the specified buffer until the buffer is filled, + a character in the specified range is received, or a timeout occurs +Notes: supported by original HP Vectra AT and by ES/QS/RS series Vectras + polls the Data Set Ready modem status and Data Ready line status bits + to determine when characters are available +SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h +--------U-147000----------------------------- +INT 14 - NEWCOM - INSTALLATION CHECK + AX = 7000h +Return: AX = 4E43h ('NC') if installed + BX = 4F4Dh ('OM') if installed + CH = major version number + CL = minor version number + DH = patch level + DL = language (currently: 00h English, 01h French) +Program: Newcom is a DOS commandline-enhancer by kilobug@kali.isicom.fr +SeeAlso: INT 2F/AX=D44Dh +--------S-147E------------------------------- +INT 14 - FOSSIL - INSTALL AN EXTERNAL APPLICATION FUNCTION + AH = 7Eh + AL = code assigned to external application (80h-BFh) + 80h reserved for communications FOSSIL + 81h video FOSSIL + 82h reserved for keyboard FOSSIL + 83h reserved for system FOSSIL + ES:DX -> entry point +Return: AX = 1954h + BL = code assigned to application (same as input AL) + DH = status + 00h failed + 01h successful +SeeAlso: AH=7Fh,AH=80h"FOSSIL",AX=8100h,AH=82h"FOSSIL",AH=83h"FOSSIL" +--------S-147F------------------------------- +INT 14 - FOSSIL - REMOVE AN EXTERNAL APPLICATION FUNCTION + AH = 7Fh + AL = code assigned to external application + ES:DX -> entry point +Return: AX = 1954h + BL = code assigned to application (same as input AL) + DH = status + 00h failed + 01h successful +SeeAlso: AH=7Eh +--------S-1480------------------------------- +INT 14 - COMMUNICATIONS FOSSIL + AH = 80h +SeeAlso: AH=7Eh +--------S-1480------------------------------- +INT 14 - COURIERS.COM - INSTALLATION CHECK + AH = 80h +Return: AH = E8h if loaded +Program: COURIERS is a TSR utility by PC Magazine +--------S-148000----------------------------- +INT 14 - ARTICOM - INSTALLATION CHECK + AX = 8000h +Return: AL = FFh if installed + BH = major version + BL = minor version +Program: ArtiCom is an asynchronous communications driver by Artisoft which + works on top of NetBIOS and allows modem/serial-port sharing by + programs using INT 14 for serial I/O. +Note: ArtiCom supports 32 simultaneous COM ports using multiport cards and + drivers +SeeAlso: AH=00h"SERIAL",AH=01h,AH=02h,AH=03h,AH=04h"SERIAL",AH=05h"SERIAL" +SeeAlso: AX=8001h,AX=8002h +--------S-148000----------------------------- +INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET ERROR CODE AND BUFFER STATUS + AX = 8000h + DX = port number +Return: AX = code for last error (see #00357) + BX = number of characters in output buffer + CX = nubmer of characters in input buffer + DX = state flag (see #00358) +Program: COMM-DRV is a universal serial communications driver by Willies' + Computer Software Company, which supports standard INT 14 and + FOSSIL calls as well as its own interfaces +SeeAlso: AX=8001h"COMM-DRV",AX=8002h"COMM-DRV",AX=8003h"COMM-DRV" + +(Table 00357) +Values for COMM-DRV error code: + 00h no error + 01h buffer not set or attempted to change buffer for active port + 02h port not active + 03h transmit buffer full + 04h receive buffer full + 05h syntax error + 06h invalid buffer size + 07h invalid port + 08h handler changed + 09h invalid baud rate + 0Ah invalid parity setting + 0Bh invalid data length + 0Ch invalid number of stop bits + 0Dh invalid protocol number + 0Eh IRQ changed + 0Fh port changged + 10h invalid threshold setting + 11h invalid IRQ number + 12h interrupts not enabled + 13h invalid break syntax + 14h fatal error + 15h CTS error + 16h invalid RS232 I/O port address + 17h environment variable not set + 18h error on IOCTL call + 19h error during atexit cleanup + 1Ah error mapping for direct calls + 1Bh error opening device + 1Ch unable to allocate memory + 1Dh error on external micro card + 1Eh card changed error + 1Fh card type error + 20h not supported + 21h parent port error + 22h card command buffer full + 23h no subdevice for this port + 24h unknown error + 25h external card busy + 26h no more timers available + 27h INT 14 vector changed + 28h INT 08 vector changed + 29h DPMI error + 2Ah TSR buffer too small (or nonexistent) + 2Bh out of asynchronous resources + 2Ch out of timer resources + 2Dh out of "other" timer resources + 2Eh file I/O error + 2Fh hardware memory > 64K + +Bitfields for state flag : +Bit(s) Description (Table 00358) + 0 port is active + 1 output throttled (XOFF received, or DSR or CTS reset) + 2 input throttled (XOFF sent, or DTR or RTS reset) +--------S-148001----------------------------- +INT 14 - ARTICOM - UNLOAD ASYNCHRONOUS REDIRECTOR FROM MEMORY + AX = 8001h +Return: AX = error code, if error (see #00360) +SeeAlso: AX=8000h"ARTICOM",AX=8002h"ARTICOM",AX=8003h"ARTICOM" +Index: uninstall;ARTICOM +--------S-148001----------------------------- +INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET PORT PARAMETERS + AX = 8001h + DX = port number +Return: BX:DI -> Port Control Block (see #00367) +SeeAlso: AX=8000h"COMM-DRV",AX=8002h"COMM-DRV",AX=8003h"COMM-DRV" +--------S-148002----------------------------- +INT 14 - ARTICOM - GET ASYNCHRONOUS REDIRECTOR STATUS + AX = 8002h + ES:DI -> buffer for redirector status structure (see #00359) +Return: AX = error code, if error (see #00360) +SeeAlso: AX=8000h"ARTICOM",AX=8003h"ARTICOM" + +Format of ARTICOM redirector status: +Offset Size Description (Table 00359) + 00h WORD redirector major and minor version numbers + 02h WORD redirectable ports found + 04h WORD redirectable ports + local ports found + 06h WORD redirector internal buffer size + 08h WORD maximum servers maintained + 0Ah WORD number of adapters found +--------S-148002----------------------------- +INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET PORT PARAMETERS + AX = 8002h + DX = port number +Return: AH bit 7 set on error + AH bit 7 clear if successful + BX:DI -> Port Control Block (see #00367) (modifyable portion only) +SeeAlso: AX=8000h"COMM-DRV",AX=8001h"COMM-DRV",AX=8003h"COMM-DRV" +--------S-148003----------------------------- +INT 14 - ARTICOM - TRANSLATE ERROR CODE TO ERROR STRING + AX = 8003h + CX = error number to translate (see #00360) +Return: ES:DI -> ASCIZ error text or 0000h:0000h if unable to translate +SeeAlso: AX=8000h + +(Table 00360) +Values for ARTICOM error codes: + 00h "No error" + 01h "An invalid port number was specified" + 02h "Port is already redirected" + 03h "Too many ports redirected" + 04h "Cannot locate the server" + 05h "Server is busy" + 06h "Access denied" + 07h "Resource in use" + 08h "Resource in use - request queued" + 09h "No such resource" + 0Ah "Invalid username/password pair" + 0Bh "Noncompatible version number" + 0Ch "Can't remove from memory" + 0Dh "Bad NETBIOS adapter number" + 0Eh "No more entries in list" + 0Fh "Resource is not available at this time" + 10h "Invalid value to INT 14 call" +--------S-148003----------------------------- +INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET I/O BUFFER SIZES + AX = 8003h + DX = port number +Return: AX = number of characters in input buffer + BX = input buffer size + CX = number of characters in output buffer + DX = output buffer size +SeeAlso: AX=8000h"COMM-DRV",AX=8001h"COMM-DRV",AX=8002h"COMM-DRV" +--------S-148004----------------------------- +INT 14 - ARTICOM - ATTACH ASYNCHRONOUS RESOURCE + AX = 8004h + DX = port to redirect (COM1=0, COM2=1, ...) + CH = attach type + CL = adapter to use for attach, 0FFh to search all + ES:DI -> attachment structure (see #00361) +Return: AX = error code, if error (see #00360) +Note: The wildcard '*' is supported in the server and resource fields. If + wild cards are used then the first matching available server is + attached. +SeeAlso: AX=8000h,AX=8003h,AX=8005h + +Format of ARTICOM attachment structure: +Offset Size Description (Table 00361) + 00h 16 BYTEs server to look for attach + 10h 16 BYTEs attach to resource name + 20h 16 BYTEs username for attach + 30h 16 BYTEs password for username or resource + 40h BYTE attach type + 00h normal + 01h queue if resource is in use (not yet supported in v1.00) +--------S-148005----------------------------- +INT 14 - ARTICOM - DETACH ASYNCHRONOUS RESOURCE + AX = 8005h + DX = port to detach (COM1=0, COM2=1, ...) +Return: AX = error code, if error (see #00360) +Note: only a previously attached resource can be detached +SeeAlso: AX=8000h,AX=8003h,AX=8004h +--------S-148006----------------------------- +INT 14 - ARTICOM - GET RESOURCE INFORMATION + AX = 8006h + BX = remote port (COM1=0, COM2=1, ...) + CL = adapter number, FFh to try all adapters + ES:DI -> resource information structure (see #00362) + DS:SI -> 16 byte server name. See note. +Return: AX = error code, if error (see #00360) + BX = next remote port, recall to get next resource info +Note: Wild cards supported in both the resource field and server name + string DS:SI. If wild cards used then first matching available + resource information is searched. Set the resource field to FFh to + return all resources. +SeeAlso: AX=8000h,AX=8002h,AX=8003h,AX=8007h + +Format of ARTICOM resource information structure: +Offset Size Description (Table 00362) + 00h BYTE 00h = free, else used + 01h 16 BYTEs resource name + 11h 16 BYTEs username of resource user + 21h WORD amount of time used + 23h WORD amount of time remaining + 53h 48 BYTEs description of resource + 93h 64 BYTEs initialization string for modem + B3h 32 BYTEs dial string for modem + D3h 32 BYTEs hang-up string for modem +--------S-148007----------------------------- +INT 14 - ARTICOM - GET REDIRECTED PORT INFORMATION + AX = 8007h + DX = port index (COM1=0, COM2=1, ...) + ES:DI -> buffer for port information structure (see #00363) +Return: CF clear if redirection info returned and port is redirected + CF set if not a redirected port + AX = error code, if error (see #00360) +SeeAlso: AX=8000h,AX=8003h,AX=8006h,AX=8008h + +Format of ARTICOM port information structure: +Offset Size Description (Table 00363) + 00h 16 BYTEs server name resource is on + 10h BYTE adapter number server is on + 11h 16 BYTEs resource name + 21h WORD remote port index, use to get additional information + 23h WORD buffer size + 25h WORD baud rate (see #00364) + 26h BYTE modem status register + 27h BYTE modem control register + 28h BYTE line status register + 29h BYTE line control register + 2Ah BYTE flow control in use: 0 - NONE, 1 - XON/XOFF, 2 - RTS/CTS + 2Bh WORD send timeout in ticks + 2Dh WORD receive timeout in ticks + 2Fh WORD time used on remote port + 31h WORD time left before timeout + 33h BYTE if server changes allowed? + 34h WORD FFFFh (-1) if connection ok, else old port index + +(Table 00364) +Values for ARTICOM baud rate: + 00h 110 + 01h 150 + 02h 300 + 03h 600 + 04h 1200 + 05h 2400 + 06h 4800 + 07h 9600 + 08h 19200 + 09h 38400 + 0Ah 57600 + 0Bh 115200 + 0Ch 134.5 + 0Dh 1800 + 0Eh 2000 + 0Fh 3600 + 10h 7200 +SeeAlso: #00309 +--------S-148008----------------------------- +INT 14 - ARTICOM - GET AVAILABLE SERVER NAME + AX = 8008h + BX = server index (0,1,...) + ES:DI -> server name structure (see #00365) +Return: AX = error code, if error (see #00360) + BX = next remote port, repeat call to get next available server +Note: the wildcard '*' is supported in the server name field. Set the + server name to FFh to search for all servers. +SeeAlso: AX=8000h,AX=8003h,AX=8007h + +Format of ARTICOM server name structure: +Offset Size Description (Table 00365) + 00h 16 BYTEs (call) ASCIZ server name + 10h BYTE (ret) the adapter server is found +--------S-148009----------------------------- +INT 14 - ARTICOM - SET SEND AND RECEIVE TIMEOUTS + AX = 8009h + BX = send timeout in ticks + CX = receive timeout in ticks + DX = port index (COM1=0, COM2=1, ...) +Return: nothing +SeeAlso: AX=8000h,AX=800Ah +--------S-14800A----------------------------- +INT 14 - ARTICOM - MODIFY FLOW CONTROL + AX = 800Ah + BL = flow control type (00h none, 01h XON/XOFF, 02h RTS/CTS) + DX = port index (COM1=0, COM2=1, ...) +Return: AX = error code, if error (see #00360) +Note: for attached ports only! +SeeAlso: AX=8000h,AX=8003h,AX=8009h +--------S-148025----------------------------- +INT 14 - ARTICOM - SET INTERNAL SEND/RECEIVE VECTOR + AX = 8025h + DS:DX -> address of trap function (see #00366) to call on read/write +Return: nothing +Note: setting the vector to a user function allows the redirector's activity + to be monitored. +SeeAlso: AX=8000h,AX=8035h,INT 21/AH=25h + +(Table 00366) +Values ARTICOM trap function is called with: + AH = operation + 80h reading character + 81h writing character + AL = character +Return: AX must be preserved + far JUMP to old trap function (see AX=8035h) +--------S-148035----------------------------- +INT 14 - ARTICOM - GET INTERNAL SEND/RECEIVE VECTOR + AX = 8035h +Return: ES:BX -> address of current send/receive routine +Note: this function returns the address of the routine which is called + inside A-REDIR.EXE each time a character is received or sent on the + active COM port. +SeeAlso: AX=8000h,AX=8025h,INT 21/AH=35h +--------S-1481------------------------------- +INT 14 - COURIERS.COM - CHECK IF PORT BUSY + AH = 81h + AL = port number (1-4) +Return: AH = status + 00h port available + 01h port exists but already in use + 02h port nonexistent +Program: COURIERS is a TSR utility by PC Magazine +SeeAlso: AH=83h,AH=8Dh +--------S-1481------------------------------- +INT 14 - COMM-DRV - EXTENDED INITIALIZATION + AH = 81h + BX:DI -> port control block (see #00367) + DX = port number +Return: AH = line status register (see #00304) + error if bit 7 set + AL = modem status register (see #00305) +Program: COMM-DRV is a universal serial communications driver by Willies' + Computer Software Company, which supports standard INT 14 and + FOSSIL calls as well as its own interfaces +Note: AX=8001h should be called first to fill in the port control block +SeeAlso: AH=00h,AX=8001h,AH=82h"COMM-DRV",AH=86h"COMM-DRV" + +Format of COMM-DRV port control block: +Offset Type Description (Table 00367) + 00h WORD port IO address + 02h WORD port IRQ + 04h WORD baud rate + 06h WORD parity + 08h WORD data bits + 0Ah WORD stop bits + 0Ch WORD break status (0000h off) + 0Eh WORD flow control protocol + 10h BYTE input block + 11h BYTE output block + 12h WORD low threshold + 14h WORD high threshold + 16h WORD segment of buffer + 18h WORD offset of buffer + 1Ah WORD input buffer length + 1Ch WORD output buffer length + 1Eh BYTE auxiliary address + 1Fh BYTE spare + 20h 4 WORDs spares +--------V-148100----------------------------- +INT 14 - VIDEO FOSSIL - RETURN VFOSSIL INFORMATION + AX = 8100h + ES:DI -> buffer for VFOSSIL information (see #00368) +Return: AX = 1954h if installed +SeeAlso: AH=7Eh,AX=8101h + +Format of VFOSSIL information: +Offset Size Description (Table 00368) + 00h WORD size of information in bytes, including this field + 02h WORD VFOSSIL major version + 04h WORD VFOSSIL revision level + 06h WORD highest VFOSSIL application function supported +--------V-148101----------------------------- +INT 14 - VIDEO FOSSIL - OPEN VFOSSIL + AX = 8101h + ES:DI -> buffer for application function table (see #00369) + CX = length of buffer in bytes +Return: AX = 1954h if installed + BH = highest VFOSSIL application function supported +Note: the number of initialized pointers in the application function table + will never exceed CX/4; if the buffer is large enough, BH+1 pointers + will be initialized +SeeAlso: AX=8102h + +Format of VFOSSIL application function table: +Offset Size Description (Table 00369) + 00h DWORD -> function to query current video mode (VioGetMode)(see #00374) + 04h DWORD -> function to set video mode (VioSetMode) (see #00375) + 08h DWORD -> function to query hardware config (VioGetConfig) (see #00376) + 0Ch DWORD -> function to write data in TTY mode (VioWrtTTY) (see #00377) + 10h DWORD -> function to get current ANSI state (VioGetANSI) (see #00378) + 14h DWORD -> function to set new ANSI state (VioSetANSI) (see #00379) + 18h DWORD -> function to get curr cursor position (VioGetCurPos) + (see #00380) + 1Ch DWORD -> function to set cursor position (VioSetCurPos) (see #00381) + 20h DWORD -> function to get cursor shape (VioGetCurType) (see #00382) + 24h DWORD -> function to set cursor shape (VioSetCurType) (see #00383) + 28h DWORD -> function to scroll screen up (VioScrollUp) (see #00384) + 2Ch DWORD -> function to scroll screen down (VioScrollDn) (see #00385) + 30h DWORD -> function to read cell string from screen (VioReadCellStr) + (see #00386) + 34h DWORD -> function to read char string from screen (VioReadCharStr) + (see #00387) + 38h DWORD -> function to write a cell string (VioWrtCellStr) + (see #00388) + 3Ch DWORD -> function to write char string, leaving attr (VioWrtCharStr) + (see #00389) + 40h DWORD -> function to write char string,const attr (VioWrtCharStrAttr) + (see #00390) + 44h DWORD -> function to replicate an attribute (VioWrtNAttr) + (see #00391) + 48h DWORD -> function to replicate a cell (VioWrtNCell) + (see #00392) + 4Ch DWORD -> function to replicate a character (VioWrtNChar) + (see #00393) + +Format of VFOSSIL video mode data structure: +Offset Size Description (Table 00370) + 00h WORD length of structure including this field + 02h BYTE mode characteristics + bit 0: clear if MDA, set otherwise + bit 1: graphics mode + bit 2: color disabled (black-and-white) + 03h BYTE number of colors supported (1=2 colors, 4=16 colors, etc) + 04h WORD number of text columns + 06h WORD number of text rows + 08h WORD reserved + 0Ah WORD reserved + 0Ch DWORD reserved +SeeAlso: #00374,#00375 + +Format of VFOSSIL video configuration data: +Offset Size Description (Table 00371) + 00h WORD structure length including this field + 02h WORD adapter type + 00h monochrome/printer + 01h CGA + 02h EGA + 03h VGA + 07h 8514/A + 04h WORD display type + 00h monochrome + 01h color + 02h enhanced color + 09h 8514 + 06h DWORD adapter memory size +SeeAlso: #00376 + +Format of VFOSSIL cursor type record: +Offset Size Description (Table 00372) + 00h WORD cursor start line + 02h WORD cursor end line + 04h WORD cursor width (always 01h) + 06h WORD cursor attribute (FFFFh = hidden) + +(Table 00373) +Values for VFOSSIL error code: + 0000h successful + 0074h internal VIO failure + 0163h unsupported mode + 0166h invalid row value + 0167h invalid column value + 017Eh buffer too small + 01A5h invalid VIO parameter + 01B4h invalid VIO handle + +(Table 00374) +Call VioGetMode with: + STACK: WORD VIO handle (must be 00h) + DWORD pointer to video mode data structure (see #00370) +Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #00373) +SeeAlso: #00375 + +(Table 00375) +Call VioSetMode with: + STACK: WORD VIO handle (must be 00h) + DWORD pointer to video mode data structure (see #00370) +Return: AX = error code (00h, 74h, 163h, 17Eh, 1A5h, 1B4h) (see #00373) +SeeAlso: #00374 + +(Table 00376) +Call VioGetConfig with: + STACK: WORD VIO handle (must be 00h) + DWORD pointer to video configuration data buffer (see #00371) +Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #00373) + +(Table 00377) +Call VioWrtTTY with: + STACK: WORD VIO handle (must be 00h) + WORD length of string + DWORD pointer to character string to be written to screen +Return: AX = error code (00h, 74h, 1B4h) (see #00373) +Notes: write wraps at end of line and terminates if it reaches end of screen + in ANSI mode, ANSI control sequences are interpreted, and this func is + not required to be reentrant; in non-ANSI mode, the function is + reentrant and may be called from within an MS-DOS function call + +(Table 00378) +Call VioGetANSI with: + STACK: WORD VIO handle (must be 00h) + DWORD pointer to WORD which will be set to 00h if ANSI is off + or 01h if ANSI is on +Return: AX = error code (00h, 74h, 1B4h) (see #00373) +SeeAlso: #00379 + +(Table 00379) +Call VioSetANSI with: + STACK: WORD VIO handle (must be 00h) + DWORD pointer to WORD indicating new state of ANSI + 00h off, 01h on +Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #00373) +SeeAlso: #00378 + +(Table 00380) +Call VioGetCurPos with: + STACK: WORD VIO handle (must be 00h) + DWORD pointer to WORD to hold current cursor column (0-based) + DWORD pointer to WORD to hold current cursor row (0-based) +Return: AX = error code (00h, 74h, 1B4h) (see #00373) +SeeAlso: #00381 + +(Table 00381) +Call VioSetCurPos with: + STACK: WORD VIO handle (must be 00h) + WORD cursor column + WORD cursor row +Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373) +Note: if either coordinate is invalid, the cursor is not moved +SeeAlso: #00380 + +(Table 00382) +Call VioGetCurType with: + STACK: WORD VIO handle (must be 00h) + DWORD pointer to cursor type record (see #00372) +Return: AX = error code (00h, 74h, 1B4h) (see #00373) +SeeAlso: #00383 + +(Table 00383) +Call VioSetCurType with: + STACK: WORD VIO handle (must be 00h) + DWORD pointer to cursor type record (see #00372) +Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #00373) +SeeAlso: #00384 + +(Table 00384) +Call VioScrollUp with: + STACK: WORD VIO handle (must be 00h) + DWORD pointer to char/attr cell for filling emptied rows + WORD number or rows to scroll (FFFFh = clear area) + WORD right column of scroll area + WORD bottom row of scroll area + WORD left column of scroll area + WORD top row of scroll area +Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373) +SeeAlso: #00385,INT 10/AH=06h + +(Table 00385) +Call VioScrollDn with: + STACK: WORD VIO handle (must be 00h) + DWORD pointer to char/attr cell for filling emptied rows + WORD number or rows to scroll (FFFFh = clear area) + WORD right column of scroll area + WORD bottom row of scroll area + WORD left column of scroll area + WORD top row of scroll area +Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373) +SeeAlso: #00384,INT 10/AH=07h + +(Table 00386) +Call VioReadCellStr with: + STACK: WORD VIO handle (must be 00h) + WORD column at which to start reading + WORD row at which to start reading + DWORD pointer to WORD containing length of buffer in bytes + on return, WORD contains number of bytes actually read + DWORD pointer to buffer for cell string +Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #00373) + +(Table 00387) +Call VioReadCharStr with: + STACK: WORD VIO handle (must be 00h) + WORD column at which to start reading + WORD row at which to start reading + DWORD pointer to WORD containing length of buffer in bytes + on return, WORD contains number of bytes actually read + DWORD pointer to buffer for character string +Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #00373) + +(Table 00388) +Call VioWrtCellStr with: + STACK: WORD VIO handle (must be 00h) + WORD column at which to start writing + WORD row at which to start writing + WORD length of cell string in bytes + DWORD pointer to cell string to write +Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373) +Note: write wraps at end of line and terminates if it reaches end of screen + +(Table 00389) +Call VioWrtCharStr with: + STACK: WORD VIO handle (must be 00h) + WORD column at which to start writing + WORD row at which to start writing + WORD length of character string + DWORD pointer to character string to write +Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373) +Note: write wraps at end of line and terminates if it reaches end of screen + +(Table 00390) +Call VioWrtCharStrAttr with: + STACK: WORD VIO handle (must be 00h) + DWORD pointer to attribute to be applied to each character + WORD column at which to start writing + WORD row at which to start writing + WORD length of character string + DWORD pointer to character string to write +Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373) +Note: write wraps at end of line and terminates if it reaches end of screen + +(Table 00391) +Call VioWrtNAttr with: + STACK: WORD VIO handle (must be 00h) + WORD column at which to start writing + WORD row at which to start writing + WORD number of times to write attribute + DWORD pointer to display attribute to replicate +Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373) +Note: write wraps at end of line and terminates if it reaches end of screen + +(Table 00392) +Call VioWrtNCell with: + STACK: WORD VIO handle (must be 00h) + WORD column at which to start writing + WORD row at which to start writing + WORD number of times to write cell + DWORD pointer to cell to replicate +Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373) +Note: write wraps at end of line and terminates if it reaches end of screen + +(Table 00393) +Call VioWrtNChar with: + STACK: WORD VIO handle (must be 00h) + WORD column at which to start writing + WORD row at which to start writing + WORD number of times to write character + DWORD pointer to character to replicate +Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #00373) +Note: write wraps at end of line and terminates if it reaches end of screen +--------V-148102----------------------------- +INT 14 - VIDEO FOSSIL - CLOSE VFOSSIL + AX = 8102h +Return: AX = 1954h +Note: terminates all operations; after this call, the video FOSSIL may either + be removed from memory or reinitialized +SeeAlso: AX=8101h,AX=8103h +--------V-148103----------------------------- +INT 14 - VIDEO FOSSIL - UNINSTALL + AX = 8103h +Return: AX = 1954h +Note: this is an extension to the VFOSSIL spec by Bob Hartman's VFOS_IBM +--------K-1482------------------------------- +INT 14 - KEYBOARD FOSSIL + AH = 82h +SeeAlso: AH=7Eh +--------S-1482------------------------------- +INT 14 - COURIERS.COM - CONFIGURE PORT + AH = 82h + AL = port number (1-4) + BX = speed (bps) + CX = bit flags + bit 0: enable input flow control + bit 1: enable output flow control + bit 2: use X.PC protocol (not yet implemented) +Return: nothing +SeeAlso: AH=00h,AH=8Ch,INT 7A"X.PC" +--------S-1482------------------------------- +INT 14 - COMM-DRV v14.0 - PORT CLEANUP + AH = 82h + DX = port number +Return: AH bit 7 set on error + AH bit 7 clear if successful +Desc: reset the port to its state before the AH=81h initialization and unhook + any interrupts used by the port +SeeAlso: AH=81h"COMM-DRV",AH=83h"COMM-DRV" +----------1483------------------------------- +INT 14 - SYSTEM FOSSIL + AH = 83h +SeeAlso: AH=7Eh +--------S-1483------------------------------- +INT 14 - COURIERS.COM - START INPUT + AH = 83h + ES:BX -> circular input buffer + CX = length of buffer + (should be at least 128 bytes if input flow control enabled) +Return: nothing +SeeAlso: AH=18h,AH=87h,AH=8Dh,AH=A5h"BAPI" +--------S-1483------------------------------- +INT 14 - COMM-DRV v14.0 - FLUSH COMMUNICATION BUFFERS + AH = 83h + DX = port number + AL = subfunction + 00h flush input buffer + 01h flush output buffer + 02h flush both buffers +Return: AH bit 7 set on error + AH bit 7 clear if successful +SeeAlso: AH=81h"COMM-DRV",AH=84h"COMM-DRV" +--------S-1484------------------------------- +INT 14 - COURIERS.COM - READ CHARACTER + AH = 84h +Return: ZF set if no characters available + ZF clear + AL = character + AH = modem status bits + bit 7: set on input buffer overflow +SeeAlso: AH=02h,AH=86h,AH=89h +--------S-1484------------------------------- +INT 14 - COMM-DRV v14.0 - SEND PACKET + AH = 84h + CX = packet length in bytes + DX = port number + ES:DI -> packet to be sent +Return: AH = line status (see #00304) + bit 7 set on error + AL destroyed +SeeAlso: AH=83h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV" +--------S-1485------------------------------- +INT 14 - COURIERS.COM - FLUSH PENDING INPUT + AH = 85h +Return: nothing +SeeAlso: AH=0Ah,AH=88h"COURIERS" +--------S-1485------------------------------- +INT 14 - COMM-DRV v14.0 - RECEIVE PACKET + AH = 85h + CX = length of packet in bytes + DX = port number + ES:DI -> buffer for packet +Return: AH = line status (see #00304) + bit 7 set on error + AL destroyed +Note: this call requires that at least the requested number of bytes are + already present in the input buffer, and will fail if there are + fewer bytes available +SeeAlso: AH=84h"COMM-DRV",AH=86h"COMM-DRV",AH=8Eh"COMM-DRV" +--------S-1486------------------------------- +INT 14 - COURIERS.COM - START OUTPUT + AH = 86h + ES:BX -> output buffer + CX = length of output buffer +Return: nothing +SeeAlso: AH=19h,AH=83h"COURIERS",AH=A4h"BAPI" +--------S-1486------------------------------- +INT 14 - COMM-DRV v14.0 - SET INPUT/OUTPUT TIMEOUTS + AH = 86h + BL = maximum clock ticks to wait before signalling error on input func + BH = maximum clock ticks to wait before signalling error on output + DX = port number + SI = input timeout in clock ticks if BL=FFh and BH=FFh + DI = output timeout in clock ticks if BL=FFh and BH=FFh +Return: AH bit 7 set on error + AH bit 7 clear if successful +Note: functions 02h, 85h, and 8Eh will wait for the input timeout before + returning an error when no data is available; functions 01h and 84h + will wait for the output timeout before returning an error if there + is no space to output the data +SeeAlso: AH=01h,AH=02h,AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=8Eh"COMM-DRV" +--------S-1487------------------------------- +INT 14 - COURIERS.COM - OUTPUT STATUS + AH = 87h +Return: AX = number of unsent characters +SeeAlso: AH=88h"COURIERS" +--------S-1487------------------------------- +INT 14 - COMM-DRV v14.0 - TURN ON DTR + AH = 87h + DX = port number +Return: AH bit 7 set on error + AH bit 7 clear if successful +SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV" +--------S-1488------------------------------- +INT 14 - COURIERS.COM - ABORT OUTPUT + AH = 88h +SeeAlso: AH=09h"FOSSIL",AH=85h"COURIERS" +--------S-1488------------------------------- +INT 14 - COMM-DRV v14.0 - TURN OFF DTR + AH = 88h + DX = port number +Return: AH bit 7 set on error + AH bit 7 clear if successful +Program: COMM-DRV is a universal serial communications driver by Willies' + Computer Software Company, which supports standard INT 14 and + FOSSIL calls as well as its own interfaces +SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV" +--------S-1489------------------------------- +INT 14 - COURIERS.COM - SEND SINGLE CHARACTER + AH = 89h + CL = character to send +Return: nothing +SeeAlso: AH=01h,AH=84h"COURIERS" +--------S-1489------------------------------- +INT 14 - COMM-DRV v14.0 - TURN ON RTS + AH = 89h + DX = port number +Return: AH bit 7 set on error + AH bit 7 clear if successful +SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV" +--------S-148A------------------------------- +INT 14 - COURIERS.COM - SEND BREAK + AH = 8Ah +Return: nothing +SeeAlso: AH=89h"COURIERS",AH=FAh +--------S-148A------------------------------- +INT 14 - COMM-DRV v14.0 - TURN OFF RTS + AH = 8Ah + DX = port number +Return: AH bit 7 set on error + AH bit 7 clear if successful +SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV" +--------S-148B------------------------------- +INT 14 - COMM-DRV v14.0 - SET USER INTERRUPT ROUTINE + AH = 8Bh + CX = bitmask of interrupt to process + 00h = deinstall + BX:DI -> DWORD containing address of function to be called +Return: AH bit 7 clear if successful + AH bit 7 set on error +--------S-148C------------------------------- +INT 14 - COURIERS.COM - SET SPEED + AH = 8Ch + BX = speed in bps +Return: nothing +SeeAlso: AH=00h,AH=82h"COURIERS" +--------S-148C------------------------------- +INT 14 - COMM-DRV v14.0 - READ UART REGISTER + AH = 8Ch + AL = register offset + DX = port number +Return: AH bit 7 set on error + AH bit 7 clear if successful + AL = contents of UART register +SeeAlso: AH=8Dh"COMM-DRV" +--------S-148D------------------------------- +INT 14 - COURIERS.COM - DECONFIGURE PORT + AH = 8Dh +Return: nothing +SeeAlso: AH=82h"COURIERS" +--------S-148D------------------------------- +INT 14 - COMM-DRV v14.0 - WRITE UART REGISTER + AH = 8Dh + AL = register offset + BL = new value for UART register + DX = port number +Return: AH bit 7 set on error + AH bit 7 clear if successful +SeeAlso: AH=8Ch"COMM-DRV" +--------S-148E------------------------------- +INT 14 - COMM-DRV v14.0 - READ PACKET NONDESTRUCTIVELY + AH = 8Eh + CX = length of packet in bytes + DX = port number + ES:DI -> buffer for packet +Return: AH = line status (see #00304) + bit 7 set on error (see AX=8000h"COMM-DRV") + AL destroyed +Program: COMM-DRV is a universal serial communications driver by Willies' + Computer Software Company, which supports standard INT 14 and + FOSSIL calls as well as its own interfaces +Desc: retrieve a packet from the input buffer without removing it from the + buffer +Note: this call requires that at least the requested number of bytes are + already present in the input buffer, and will fail if there are + fewer bytes available +SeeAlso: AX=8000h"COMM-DRV",AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV" +--------S-14A0------------------------------- +INT 14 - 3com BAPI SERIAL I/O - CONNECT TO PORT + AH = A0h + ES:BX -> ASCIZ internet host name + CX = length of name +Return: AH = return code (00h,04h-06h,08h,0Ah-0Ch) (see #00394) + CL = session ID +Program: the Bridge Application Program Interface is a set of functions which + makes many of the details of LAN communications transparent +Note: Novell TELAPI.EXE returns AH=09h (not supported) and CL=00h +SeeAlso: AH=A1h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AX=AF00h + +(Table 00394) +Values for 3com BAPI return code: + 00h successful + 01h no characters written + 02h no characters read + 03h no such session + 04h clearinghouse name not found + 05h no response from host + 06h no more sessions available + 07h session aborted + 08h invalid clearinghouse name + 09h not supported + 0Ah internal (general) network error + 0Bh out of memory + 0Ch invalid IP address +--------S-14A0--CXFFFF----------------------- +INT 14 - Interconnections Inc. TES - INSTALLATION CHECK/STATUS REPORT + AH = A0h + CX = FFFFh +Return: CF clear if successful + AX = 5445h ('TE') + CX <> FFFFh + DX = port number + CF set on error +Program: TES is a network serial port emulation program +SeeAlso: AH=A1h"TES" +--------S-14A1------------------------------- +INT 14 - 3com BAPI SERIAL I/O - DISCONNECT FROM PORT + AH = A1h + DH = session ID (00h for external session managment) +Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #00394) + AL destroyed (Novell TELAPI.EXE) +SeeAlso: AH=A0h"BAPI" +--------S-14A1------------------------------- +INT 14 - Interconnections Inc. TES - GET LIST OF SESSIONS WITH STATUS + AH = A1h +Return: CX = number of active sessions + ES:SI -> status array (see #00395) +SeeAlso: AH=A2h"TES",AH=A3h"TES" + +Format of Interconnections TES status array entry: +Offset Size Description (Table 00395) + 00h BYTE status + 01h WORD offset of name +--------S-14A2------------------------------- +INT 14 - 3com BAPI SERIAL I/O - WRITE CHARACTER + AH = A2h + AL = character + DH = session ID (00h for external session managment) +Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #00394) +SeeAlso: AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI" +--------S-14A2------------------------------- +INT 14 - Interconnections Inc. TES - GET LIST OF SERVER NAMES + AH = A2h +Return: CX = number of servers + ES:SI -> array of offsets from ES for server names +SeeAlso: AH=A1h"TES" +--------S-14A3------------------------------- +INT 14 - 3com BAPI SERIAL I/O - READ CHARACTER + AH = A3h + DH = session ID (00h for external session managment) +Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #00394) + AL = character read or 00h if none available +SeeAlso: AH=A0h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AH=A7h"BAPI" +--------S-14A3------------------------------- +INT 14 - Interconnections Inc. TES - START A NEW SESSION + AH = A3h + ES:SI -> ??? +Return: CF clear if successful + AX = 5445h ('TE') + CX <> FFFFh + DX = port number + CF set on error +SeeAlso: AH=A1h"TES",AH=A4h"TES",AH=A6h"TES" +--------S-14A4------------------------------- +INT 14 - 3com BAPI SERIAL I/O - WRITE BLOCK + AH = A4h + CX = length of buffer in bytes + DH = session ID (00h for external session managment) + ES:BX -> buffer containing data +Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #00394) + CX = number of bytes actually sent +SeeAlso: AH=19h,AH=86h,AH=A0h"BAPI",AH=A5h"BAPI" +--------S-14A4------------------------------- +INT 14 - Interconnections Inc. TES - HOLD CURRENTLY ACTIVE SESSION + AH = A4h + ??? +Return: ??? +SeeAlso: AH=A3h"TES",AH=A5h"TES" +--------S-14A5------------------------------- +INT 14 - 3com BAPI SERIAL I/O - READ BLOCK + AH = A5h + CX = length of buffer + DH = session ID (00h for external session managment) + ES:BX -> buffer for data +Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #00394) + CX = number of bytes actually read +SeeAlso: AH=18h,AH=83h"COURIERS",AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI" +SeeAlso: AH=A7h"BAPI",AX=FF02h +--------S-14A5------------------------------- +INT 14 - Interconnections Inc. TES - RESUME A SESSION + AH = A5h + AL = session number +Return: ??? +SeeAlso: AH=A4h"TES",AH=A6h"TES" +--------S-14A6------------------------------- +INT 14 - 3com BAPI SERIAL I/O - SEND SHORT BREAK + AH = A6h + DH = session ID (00h for external session managment) +Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #00394) +Desc: generate a short break signal; if data delivery was turned off by the + break, wait for the host to turn it on again +SeeAlso: AH=1Ah,AH=8Ah,AH=FAh,AH=A0h"BAPI" +--------S-14A6------------------------------- +INT 14 - Interconnections Inc. TES - DROP A SESSION + AH = A6h + AL = session number +Return: AH = status + 00h successful + else error +SeeAlso: AH=A3h"TES",AH=A5h"TES" +--------S-14A7------------------------------- +INT 14 - 3com BAPI SERIAL I/O - READ STATUS + AH = A7h + DH = session ID (00h for external session managment) +Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #00394) + CX = number of bytes available for reading +Note: Novell TELAPI.EXE v4.01 always returns either 0 or 1 bytes available +SeeAlso: AH=A5h"BAPI" +--------S-14A7------------------------------- +INT 14 - Interconnections Inc. TES - SWITCH TO NEXT ACTIVE SESSION + AH = A7h + ??? +Return: ??? +SeeAlso: AH=A3h"TES",AH=A5h"TES" +--------S-14A8------------------------------- +INT 14 - Interconnections Inc. TES - SEND STRING TO COMMAND INTERPRETER + AH = A8h + AL = 00h no visible response + ES:SI -> ASCIZ command +Return: ??? +--------N-14A8------------------------------- +INT 14 - Novell TelAPI v4.01 - CONNECTION INFORMATION??? + AH = A8h + DH = session ID??? + CH = subfunction + 02h ??? + 0Dh ??? + 0Fh ??? + 10h ??? + 11h ??? + 28h ??? + else + Return: AH = 09h (not supported) +Return: AH = return code (see #00394) + 00h successful + CL = ??? (0/1/8) (subfunctions 02h,0Dh,0Fh,10h) + CL = ??? (7Fh/FFh) (subfunction 28h) + CX = ??? (subfunction 11h) +SeeAlso: AH=A9h"TelAPI" +--------N-14A9------------------------------- +INT 14 - Novell TelAPI v4.01 - CONNECTION CONTROL??? + AH = A9h + DH = session ID??? + CH = subfunction + 02h ??? + 0Dh ??? + 0Fh ??? + 10h ??? + 11h ??? + 28h ??? + else + Return: AH = 09h (not supported) + ??? +Return: AH = return code (see #00394) + ??? +SeeAlso: AH=A8h"TelAPI",AH=E4h,INT 6B/AX=0600h +--------V-14AA01----------------------------- +INT 14 - DimVGA v2.0+ - INSTALLATION CHECK + AX = AA01h +Return: AX = FFFFh if installed, unchanged + BX = version (v1.5+ only), BH = major, BL = minor (v1.5 = 0105h) + CX = resident segment (v3.1+) +Program: DimVGA is a public domain screen saver by Menno Pieters +SeeAlso: AX=AA02h,AX=AA03h,AX=AA06h,INT 11/AX=0225h/BX=6900h,INT 12"KEYBUI" +SeeAlso: INT 2D/AL=10h"Burnout Plus",INT 2F/AX=6400h,INT 2F/AH=93h +SeeAlso: INT 2F/AX=C000h"VGAsave",INT 2F/AX=C000h"AD-DOS",INT 2F/AX=C050h +SeeAlso: INT 2F/AX=E300h +Index: screen saver;DimVGA +--------V-14AA02----------------------------- +INT 14 - DimVGA v2.0+ - SET TIME-OUT (DIMMING/BLANKING) PERIOD + AX = AA02h + BX = number of clock ticks +Return: AX = FFFFh +Note: on screen modes with 256 or less colors DimVGA will dim the screen, + when more than 256 colors can be used DimVGA will blank the screen. +SeeAlso: AX=AA01h,AX=AA03h,AX=AA04h,AX=AA06h +Index: screen saver;DimVGA +--------V-14AA03----------------------------- +INT 14 - DimVGA v2.0+ - SET DIMMING FACTOR + AX = AA03h + BX = percentage remaining visible (1-99) +Return: AX = FFFFh +SeeAlso: AX=AA02h,AX=AA05h,AX=AA06h +Index: screen saver;DimVGA +--------V-14AA04----------------------------- +INT 14 - DimVGA v2.0+ - GET TIME-OUT PERIOD + AX = AA04h +Return: AX = FFFFh + BX = current time-out in clock ticks +SeeAlso: AX=AA02h,AX=AA05h,AX=AA0Ah +Index: screen saver;DimVGA +--------V-14AA05----------------------------- +INT 14 - DimVGA v2.0+ - GET DIMMING FACTOR + AX = AA05h +Return: AX = FFFFh + BX = current dimming factor +SeeAlso: AX=AA03h,AX=AA04h,AX=AA0Ah +Index: screen saver;DimVGA +--------V-14AA06----------------------------- +INT 14 - DimVGA v2.0+ - DISABLE + AX = AA06h +Return: AX = FFFFh +SeeAlso: AX=AA01h,AX=AA07h,AX=AA0Ah +Index: screen saver;DimVGA +--------V-14AA07----------------------------- +INT 14 - DimVGA v2.0+ - ENABLE + AX = AA07h +Return: AX = FFFFh +SeeAlso: AX=AA01h,AX=AA06h,AX=AA0Ah +Index: screen saver;DimVGA +--------V-14AA08----------------------------- +INT 14 - DimVGA v2.0+ - DIM SCREEN 'MANUALLY' + AX = AA08h +Return: AX = FFFFh +Note: this function will dim the screen immediately, even if DimVGA is + currently disabled +SeeAlso: AX=AA01h,AX=AA02h,AX=AA09h +Index: screen saver;DimVGA +--------V-14AA09----------------------------- +INT 14 - DimVGA v2.0+ - UNDIM SCREEN 'MANUALLY' + AX = AA09h +Return: AX = FFFFh +Note: this function will undim the screen immediately, even if DimVGA is + currently disabled +SeeAlso: AX=AA01h,AX=AA08h +Index: screen saver;DimVGA +--------V-14AA0A----------------------------- +INT 14 - DimVGA v2.0+ - CHECK WHETHER ENABLED + AX = AA0Ah +Return: AX = FFFFh + BX = current state (0000h disabled, 0001h enabled) +SeeAlso: AX=AA01h,AX=AA06h,AX=AA07h +Index: screen saver;DimVGA +--------V-14AA0B----------------------------- +INT 14 - DimVGA v2.1+ - SET HOTKEY + AX = AA0Bh + BH = shift state (see #00396) + BL = keyboard scancode +Return: AX = FFFFh +SeeAlso: AX=AA01h,AX=AA0Ch +Index: screen saver;DimVGA + +Bitfields for DimVGA hotkey shift state: +Bit(s) Description (Table 00396) + 7-4 unused + 3 Alt key pressed + 2 Ctrl key pressed + 1 Left shift key pressed + 0 Right shift key pressed +--------V-14AA0C----------------------------- +INT 14 - DimVGA v2.1+ - GET HOTKEY + AX = AA0Ch +Return: AX = FFFFh + BH = shift state (see #00396) + BL = keyboard scancode +SeeAlso: AX=AA01h,AX=AA0Bh +Index: screen saver;DimVGA +--------V-14AA0D----------------------------- +INT 14 - DimVGA v3.0+ - SET MOUSE CHECK STATUS + AX = AA0Dh + BX = new mouse check status + 0000h mouse checking off + 0001h mouse checking on +Return: AX = FFFFh +Note: before switching mouse checking on, a mouse driver should be + found in memory. If no mouse driver is found, mouse checking + should be switched off (resident DimVGA does not check by itself). +SeeAlso: AX=AA01h,AX=AA0Eh +Index: screen saver;DimVGA +--------V-14AA0E----------------------------- +INT 14 - DimVGA v3.0+ - GET MOUSE CHECK STATUS + AX = AA0Eh +Return: BX = mouse check status (0000h disabled, 0001h enabled) +SeeAlso: AX=AA01h,AX=AA0Dh +Index: screen saver;DimVGA +--------V-14AA0F----------------------------- +INT 14 - DimVGA v3.4 - SET LOCKING STATUS + AX = AA0Fh + BX = locking status + 0000h disabled + 0001h enabled +Return: AX = FFFFh +SeeAlso: AX=AA01h,AX=AA0Dh,AX=AA10h +Index: screen saver;DimVGA +--------V-14AA10----------------------------- +INT 14 - DimVGA v3.4 - GET MOUSE CHECK STATUS + AX = AA10h +Return: BX = locking status (0000h disabled, 0001h enabled) +SeeAlso: AX=AA01h,AX=AA0Dh,AX=AA0Fh +Index: screen saver;DimVGA +----------14AD------------------------------- +INT 14 - IBM SurePath BIOS - Officially "Private" Function + AH = ADh +SeeAlso: AH=AEh"IBM",AH=AFh"IBM" +----------14AE------------------------------- +INT 14 - IBM SurePath BIOS - Officially "Private" Function + AH = AEh +SeeAlso: AH=ADh"IBM",AH=AFh"IBM" +----------14AF------------------------------- +INT 14 - IBM SurePath BIOS - Officially "Private" Function + AH = AFh +SeeAlso: AH=ADh"IBM",AH=AEh"IBM" +--------S-14AF00BXAAAA----------------------- +INT 14 - 3com BAPI SERIAL I/O - INSTALLATION CHECK + AX = AF00h + BX = AAAAh +Return: AX = AF01h if installed + BH = protocol type (if BX=AAAAh on entry) + 01h NetManage TCP/IP + BL = version for protocol type (if BX=AAAAh on entry) +Note: early versions of the BAPI and the ROM BIOS simply destroy AX; this + behavior is used to determine whether the newer functions (AH=B0h, + AH=B1h,etc) are available +SeeAlso: AH=A0h"BAPI" +--------S-14B0------------------------------- +INT 14 - 3com BAPI SERIAL I/O - EN/DISABLE "ENTER COMMAND MODE" (ECM) CHARACTER + AH = B0h + AL = new state (00h disabled, 01h enabled) +Return: AH = return code (00h,07h,0Ah) (see #00394) +Note: disabling the ECM character allows applications to send data which + includes the ECM character +SeeAlso: AX=AF00h"BAPI",AH=B1h,AH=B2h +--------S-14B1------------------------------- +INT 14 - 3com BAPI SERIAL I/O - ENTER COMMAND MODE + AH = B1h +Return: AH = return code (00h,07h,0Ah) (see #00394) +Desc: provide a means for the application or terminal emulator to perform + the same action normally caused by the ECM character +SeeAlso: AH=B0h,AH=B2h +--------S-14B2------------------------------- +INT 14 - 3com BAPI SERIAL I/O - GET ECM WATCH STATE + AH = B2h +Return: AH = return code (00h,07h,0Ah) (see #00394) + AL = watch flag (00h disabled, 01h enabled) +Desc: determine whether the ECM character is enabled +SeeAlso: AH=B0h,AH=B1h +--------S-14B3------------------------------- +INT 14 - 3com BAPI SERIAL I/O - GET/SET CONFIGURATION INFO + AH = B3h + AL = direction (00h get, 01h set) + DH = session ID (00h for external session managment) + DL = configuration item (00h = end-of-line mapping) + CX = new configuration item value (if AL=01h) + ---if DL=00h--- + CH = application EOL type (app to Telnet client) + 01h application will send lone CR + 02h application will send CR-? pair + CL = driver EOL type (Telnet client to Telnet server) + 01h driver should send CR-NUL pair + 02h driver should send CR-LF pair +Return: AH = return code (00h,03h,09h-0Bh) (see #00394) + ---if AL=00h--- + CX = configuration item value (above) +SeeAlso: AH=B2h +--------N-14E0------------------------------- +INT 14 - TelAPI - "telopen" - CREATE TELNET CONNECTION (BLOCKING) + AH = E0h + BX = port number to connect with (default 0017h used if <= 0) + CX:DX = Internet address of remote host + DS:DI -> 2-byte remote host (session) identifier + ES:SI -> 1700-byte buffer for Telnet state record + 0000h:0000h to use TelAPI internally-allocated space +Return: AX = status (0000h-0009h,FED3h,FF37h,FFBDh,FFC0h,FFCDh) (see #00397) + ES:SI buffer filled with state record + ES:SI -> internally-allocated state record in some versions +Note: the remote host identifier may be used to refer to this connection +SeeAlso: AH=E1h,AH=ECh,AX=FF00h + +(Table 00397) +Values for TelAPI status: + 0000h-7FFFh successful (session number) + FED3h (-301) no session allocated, or out of TelAPI data space + FF37h (-201) all sessions in use + FFBDh (-67) unknown hostname + FFC0h (-64) host not functioning + FFC3h (-61) connection attempt refused + FFC4h (-60) connection attempt timed out + FFC8h (-56) socket already connected + FFCDh (-51) network is unreachable + FFDDh (-35) operation would block +--------S-14E000----------------------------- +INT 14 - MX5 Extended FOSSIL - GET MNP STATUS BLOCK + AX = E000h + DX = port number (0-3) +Return: ES:BX -> status block (see #00398) +Program: MX5 is a FOSSIL driver by MagicSoft which emulates MNP Level 5, and + ships with the METZ terminal program as MTEMNP.DRV (a TSR despite + the .DRV extension) +SeeAlso: AX=E006h + +Format of MX5 Extended FOSSIL status block: +Offset Size Description (Table 00398) + 00h BYTE flag: active (00h no, 01h yes) + 01h BYTE MNP level (2,4,5) + 02h BYTE series ID from remote MNP + 03h DWORD total packets transmitted + 07h DWORD duplicate packets transmitted + 0Bh DWORD maximum speed + 0Fh DWORD total packets received + 13h DWORD duplicate packets received + 17h DWORD maximum speed +--------S-14E001----------------------------- +INT 14 - MX5 Extended FOSSIL - GET/SET MNP LEVEL + AX = E001h + BH = function + 00h get MNP level + 01h set MNP level + BL = new level (00h none, 02h/04h/05h MNP level N) + DX = port number (0-3) +Return: BL = MNP level +SeeAlso: AX=E002h,AX=E003h,AX=E004h,AX=E006h +--------S-14E002----------------------------- +INT 14 - MX5 Extended FOSSIL - GET/SET MNP ANSWER/ORIGINATE MODE + AX = E002h + BH = function + 00h get answer/originate mode + 01h set mode + BL = new mode (00h originate [default], 01h answer) + DX = port number (0-3) +Return: BL = answer/originate mode +SeeAlso: AX=E001h,AX=E003h,AX=E006h +--------S-14E003----------------------------- +INT 14 - MX5 Extended FOSSIL - GET/SET MNP WAIT TICKS + AX = E003h + BH = function + 00h get wait ticks + 01h set wait ticks + BL = MNP wait ticks (default 0Eh) + DX = port number (0-3) +Return: BL = wait ticks +SeeAlso: AX=E001h,AX=E002h,AX=E006h +--------S-14E004----------------------------- +INT 14 - MX5 Extended FOSSIL - GET/SET MNP CONNECT SOUND LEVEL + AX = E004h + BH = function + 00h get sound level + 01h set sound level + BL = new sound level (00h off, 01h on [default]) + DX = port number +Return: BL = sound state +Desc: specify whether MX5 should generate beeps after an MNP connection + (three high beeps if successful, high then low on connection failure) +SeeAlso: AX=E002h,AX=E006h +--------S-14E005----------------------------- +INT 14 - MX5 Extended FOSSIL - UNINSTALL + AX = E005h +Return: BX = segment of MX5's memory block or 0000h on failure +Note: caller must free the returned memory block to complete the uninstall +SeeAlso: AX=E006h +--------S-14E006BX0000----------------------- +INT 14 - MX5 Extended FOSSIL - INSTALLATION CHECK + AX = E006h + BX = 0000h +Return: BX = 4D58h ('MX') if installed + AH = major version + AL = minor version +SeeAlso: AX=E000h,AX=E001h,AX=E005h,AX=E007h +--------S-14E007----------------------------- +INT 14 - MX5 Extended FOSSIL - WAIT SPECIFIED NUMBER OF TICKS + AX = E007h + CX = number of ticks to wait +Return: nothing +SeeAlso: AX=E006h +--------N-14E1------------------------------- +INT 14 - TelAPI - "telclose" - TERMINATE TELNET CONNECTION + AH = E1h + BX = connection ID +Return: AX = status (0000h,FFF7h,maybe others) (see #00397) +Note: flushes and releases all buffers and data space used by the connection +SeeAlso: AH=E0h,AH=E6h,AX=FF00h +--------N-14E2------------------------------- +INT 14 - TelAPI - "telread" - BUFFERED READ + AH = E2h + BX = connection ID (see AH=E0h"TelAPI") + CX = length of buffer in bytes + ES:SI -> buffer for data +Return: AX > 0000h number of characters actually read + AX = 0000h host has closed connection + AX < 0000h error code (see #00397) +Note: translates CRLF into local EOL if the connection is in ASCII mode, + negotiates various Telnet options, and immediately executes several + different Telnet action commands +SeeAlso: AH=07h"TelAPI",AH=E3h,AH=E6h,AX=FF00h,INT 6B/AH=01h +--------N-14E3------------------------------- +INT 14 - TelAPI - "telwrite" - BUFFERED WRITE + AH = E3h + BX = connection ID + CX = length of buffer in bytes + ES:SI -> buffer containing data +Return: AX > 0000h number of characters actually written + AX < 0000h error code (see #00397) +Note: translates local EOL into CRLF if the connection is in ASCII mode, + sends the appropriate Telnet commands for the characters selected + for IP, AYT, AO, EC, EL, and Break +SeeAlso: AH=06h"TelAPI",AH=E2h,AH=E6h,AX=FF00h,INT 6B/AH=00h +--------N-14E4------------------------------- +INT 14 - TelAPI - "telioctl" - CONNECTION CONTROL + AH = E4h + BX = connection ID (see AH=E0h"TelAPI") + CX = Telnet command/option identifier (see #00400) + ES:SI -> buffer containing command/option argument (see #00399) +Return: AX = status (0000h, etc.) (see #00397) +Desc: start filter control, initiate Telnet option negotiation, or get filter + control status +SeeAlso: AH=A9h,AH=E6h,AX=FF00h,INT 6B/AX=0600h + +Format of TelAPI Telnet command/option argument: +Offset Size Description (Table 00399) + 00h 5 WORD numeric arguments + 0Ah DWORD -> ASCIZ string +SeeAlso: #00400 + +(Table 00400) +Values for TelAPI Telnet command/option identifier: + 01h ASCII args: none + 02h BINARY args: none + 03h LOCALECHO args: none client echos data + 04h REMOTEECHO args: none server echos data + 05h SGA args: none Suppress Go-Ahead signal + 07h CHARMODE args: none no line-buffering + 08h LINEMODE args: -> erase-line ch perform line-buffering + 09h RECVEOL args: EOL type + 0Ah SENDEOL args: EOL type + 0Bh EOR args: none enable end-of-record sequence + 0Dh BREAK args: -> break char + 0Eh VERBOSE args: verbosity display Telnet negotiations? + 0Fh AYT args: -> AYT escape ch + 10h AO args: -> AO escape char + 11h IP args: -> IP escape char + 12h EC args: -> escape char + 13h EL args: -> escape char + 14h STATUS args: type; returns data in structure + 18h TERMTYPE args: -> terminal type + 19h ATTACHPORT args: port number ; returns session number + 1Bh TRANSMIT_EOR args: EOR enabled append EOR to every telwrite? +SeeAlso: #00399 +--------N-14E5------------------------------- +INT 14 - TelAPI - "telreset" - RESET ALL CONNECTIONS + AH = E5h +Return: AX = status (0000h,other) (see also #00397) + FFFFh unable to reset +Desc: close all sessions and reset TelAPI to defaults +SeeAlso: AH=E1h,AH=E6h,AX=FF00h +--------N-14E6------------------------------- +INT 14 - TelAPI - "telunload" - UNINSTALL + AH = E6h +Return: AX = status + 0000h successful + FFFFh unable to uninstall +Notes: TelAPI also supports the NASI/NACS and NCSI APIs on INT 6B + this function invokes AH=E5h internally +SeeAlso: AH=E5h,AX=FF00h,INT 6B/AH=00h,INT 6B/AH=10h +--------N-14E7------------------------------- +INT 14 - TelAPI - "tellist" - GET TELNET SESSION LIST + AH = E7h + ES:SI -> 10-word buffer for session list +Return: AX = 0000h (successful) + ES:SI buffer filled +Desc: determine, for each of the ten allowable sessions, whether the session + is currently available +Note: each word in the buffer is filled with either 0000h to indicate that + the corresponding sesion is unavailable, or 0001h if available +SeeAlso: AH=E0h,AH=E5h,AX=FF00h +--------N-14E8------------------------------- +INT 14 - TelAPI - "telattach" - ATTACH COM PORT TO/FROM TELNET SESSION + AH = E8h + BX = connection ID (see AH=E0h"TelAPI") + CX = serial port number (0000h-0003h = COM1-COM4) +Return: AX = status + 0000h successful + FFFFh failed +SeeAlso: AH=E0h,AH=E9h,AX=FF00h +--------N-14E9------------------------------- +INT 14 - TelAPI - "telportosn" - GET SESSION NUMBER FOR COM PORT + AH = E9h + DX = serial port number (0000h-0003h = COM1-COM4) +Return: AX >= 0000h session number + AX < 0000h error code (see #00397) +SeeAlso: AH=E0h,AH=E8h,AH=EAh,AX=FF00h +--------N-14EA------------------------------- +INT 14 - TelAPI - "telstatus" - GET TELNET CONNECTION STATUS INFORMATION + AH = EAh + BX = connection ID (see AH=E0h"TelAPI") + ES:SI -> buffer for status info (see #00401) +Return: AX = status (0000h,FFFFh,etc.) +SeeAlso: AH=E9h,AH=EBh,AX=FF00h + +Format of TelAPI Telnet connection status information: +Offset Size Description (Table 00401) + 00h 4 BYTEs remote host IP address + 04h 20 BYTEs reserved + 18h WORD local port number + 1Ah BYTE connection mode (00h = ASCII, 01h = Binary) + 1Bh BYTE echo flag (00h local, 01h remote) + 1Ch BYTE SGA flag (00h will, 01h won't) + 1Dh BYTE EOR negotation flag (00h do negotiate, 01h don't) + 1Eh BYTE buffering (00h line mode, 01h character mode) + 1Fh BYTE reserved + 20h BYTE verbose flag (00h no, 01h verbose mode) + 21h BYTE received EOL (00h no xlat, 01h CR, 02h LF, 03h CRLF) + 22h BYTE sent EOL (00h no translation, 01h CR, 02h LF) + 23h BYTE break character + 24h BYTE IP escape character + 25h BYTE AO escape character + 26h BYTE AYT escape character + 27h BYTE EC escape character + 28h BYTE EL escape character + 29h 41 BYTEs ASCIZ Telnet-negotiated terminal type + 52h 9 BYTEs session ID +SeeAlso: #00402 +--------N-14EB------------------------------- +INT 14 - TelAPI - "telname" - GET AVAILABLE/INUSE STATUS FOR ALL SESSIONS + AH = EBh + ES:SI -> buffer for session statuses (see #00402) +Return: ES:SI buffer filled +SeeAlso: AH=E9h,AH=EAh,AX=FF00h + +Format of TelAPI session status information [array]: +Offset Size Description (Table 00402) + 00h BYTE session state (00h available, 01h connected) + 01h 9 BYTEs session ID if connected + 0Ah WORD attached COM port if connected, FFFFh if not +SeeAlso: #00401 +--------N-14EC------------------------------- +INT 14 - TelAPI - "telnblkopen" - CREATE TELNET CONNECTION (NON-BLOCKING) + AH = ECh + BX = port number to connect with (default 0017h used if <= 0) + CX:DX = Internet address of remote host + DS:DI -> 2-byte remote host (connection) identifier + ES:SI -> 1700-byte buffer for Telnet state record + 0000h:0000h to use TelAPI internally-allocated space +Return: AX = status (0000h-0009h,FED3h,FF37h,FFBDh,FFC0h,FFCDh) (see #00397) + ES:SI buffer filled with state record + ES:SI -> internally-allocated state record in some versions +Notes: the remote host identifier may be used to refer to this connection + this function returns immediately; use AH=EDh to check whether the + connection has been established yet + this function is not supported by the Microdyne TelAPI v3.7 +SeeAlso: AH=E0h"TelAPI",AH=EDh,AX=FF00h +--------N-14ED------------------------------- +INT 14 - TelAPI - "telpoll" - POLL TELNET SESSION FOR CONNECTION COMPLETION + AH = EDh + BX = connection ID (see AH=ECh) +Return: AX = status (0000h,0001h,FFFFh,etc.) (see also #00397) + 0000h session now connected + 0001h connection still in progress +Note: this function is not supported by the Microdyne TelAPI v3.7 +SeeAlso: AH=EDh,AX=FF00h +--------a-14F0F0----------------------------- +INT 14 - ASAP v1.0 - ??? + AX = F0F0h + DX = ??? + ??? +Return: ??? +Program: ASAP (Automatic Screen Access Program) is a shareware screen reader + by MicroTalk +SeeAlso: AX=F0F1h +--------a-14F0F1DX0000----------------------- +INT 14 - ASAP v1.0 - INSTALLATION CHECK + AX = F0F1h + DX = 0000h +Return: DX = segment of resident code + 0000h if not installed +Program: ASAP (Automatic Screen Access Program) is a shareware screen reader + by MicroTalk +SeeAlso: AX=F0F0h,INT 10/AX=3800h +--------S-14F4FF----------------------------- +INT 14 - IBM/Yale EBIOS SERIAL I/O - INSTALLATION CHECK + AX = F4FFh + DX = port (00h-03h) +Return: CF clear if present + AX = 0000h + CF set if not present + AX <> 0000h +SeeAlso: AH=36h"ComShare",AH=F9h,AH=FCh +--------S-14F9------------------------------- +INT 14 - IBM/Yale EBIOS SERIAL I/O - REGAIN CONTROL + AH = F9h + DX = port (00h-03h) +Return: nothing +SeeAlso: AX=F4FFh +--------S-14FA------------------------------- +INT 14 - IBM/Yale EBIOS SERIAL I/O - SEND BREAK + AH = FAh + DX = port (00h-03h) +Return: nothing +SeeAlso: AH=07h"MBBIOS",AH=1Ah,AH=8Ah +--------S-14FB------------------------------- +INT 14 - IBM/Yale EBIOS SERIAL I/O - SET OUTGOING MODEM SIGNALS + AH = FBh + AL = modem control register (see #00334 at AH=05h"SERIAL") + DX = port (00h-03h) +Return: nothing +SeeAlso: AH=05h"SERIAL" +--------S-14FC------------------------------- +INT 14 - IBM/Yale EBIOS SERIAL I/O - READ CHARACTER, NO WAIT + AH = FCh + DX = port (00h-03h) +Return: AH = RS232 status bits (see #00304 at AH=03h) + AL = character +SeeAlso: AH=02h,AH=0Ch,AX=FF02h +--------S-14FD02----------------------------- +INT 14 - IBM/Yale EBIOS SERIAL I/O - READ STATUS + AX = FD02h +Return: CX = number of characters available +--------N-14FF00----------------------------- +INT 14 - TelAPI - "telcheck" - INSTALLATION CHECK + AX = FF00h +Return: AX = 00FFh if installed + BX = version number * 100 (decimal) +SeeAlso: AH=E6h,AX=F4FFh +--------S-14FF01----------------------------- +INT 14 - IBM/Yale EBIOS SERIAL I/O - SET SEND BUFFER + AX = FF01h + CX = length of buffer (0000h to cancel buffer assignment) + DX = port (00h-03h) + ES:BX -> send buffer +Return: nothing +SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF02h +--------S-14FF02----------------------------- +INT 14 - IBM/Yale EBIOS SERIAL I/O - SET RECEIVE BUFFER + AX = FF02h + CX = length of buffer (0000h to cancel buffer assignment) + DX = port (00h-03h) + ES:BX -> receive buffer +Return: nothing +SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF01h +--------S-14FFF8----------------------------- +INT 14 - COMM-DRV v14.0 - SET BAUD RATE DIVISOR + AX = FFF8h + BX = card type (sub-device number) + CX = new baudrate divisor + DX = index to baud rate +Return: AH bit 7 set on error + AH bit 7 clear if successful +Program: COMM-DRV is a universal serial communications driver by Willies' + Computer Software Company, which supports standard INT 14 and + FOSSIL calls as well as its own interfaces +SeeAlso: AX=8000h"COMM-DRV" +--------S-14FFFB----------------------------- +INT 14 - COMM-DRV v14.0 - GET HIGHEST ALLOWED PORT NUMBER + AX = FFFBh + DX = port number +Return: AH bit 7 set on error + AH bit 7 clear if successful + BX = highest port number +--------S-14FFFC----------------------------- +INT 14 - COMM-DRV v14.0 - GET INT 14 FLAGS + AX = FFFCh + DX = port number +Return: AH bit 7 set on error + AH bit 7 clear if successful + BX = flags (see #00403) +SeeAlso: AX=FFFDh + +Bitfields for INT 14h flags: +Bit(s) Description (Table 00403) + 0 port active for INT 14h + 1 interface behaving like a FOSSIL driver +--------S-14FFFD----------------------------- +INT 14 - COMM-DRV v14.0 - SET INT 14 FLAGS + AX = FFFDh + BX = flags (see #00403) + DX = port number +Return: AH bit 7 set on error + AH bit 7 clear if successful +SeeAlso: AX=FFFCh +--------S-14FFFE----------------------------- +INT 14 - COMM-DRV v14.0 - RESTORE INT 14 VECTOR TO ORIGINAL + AX = FFFEh +Return: AH bit 7 set on error + AH bit 7 clear if successful +--------S-14FFFF----------------------------- +INT 14 - COMM-DRV v14.0 - GET INT 14 INFORMATION AREA + AX = FFFFh + BX:SI -> DWORD buffer for address of information area (see #00404) + (initialized to zeros) +Return: BX:SI buffer filled with nonzero value if installed +Program: COMM-DRV is a universal serial communications driver by Willies' + Computer Software Company, which supports standard INT 14 and + FOSSIL calls as well as its own interfaces +Index: installation check;COMM-DRV + +Format of COMM-DRV information area: +Offset Size Description (Table 00404) + 00h 8 BYTEs signature "COMM-DRV" + 08h 2 BYTEs 00h,00h + 0Ah DWORD -> direct address mapping table + 0Eh DWORD previous INT 14 vector +--------t-15--------------------------------- +INT 15 - Microsoft TSR Specification + No additional information available at this time. +--------B-1500------------------------------- +INT 15 - CASSETTE - TURN ON TAPE DRIVE'S MOTOR (PC and PCjr only) + AH = 00h +Return: CF set on error + AH = 86h no cassette present + CF clear if successful +SeeAlso: AH=01h"CASSETTE",MEM 0040h:0067h"PC" +--------M-1500------------------------------- +INT 15 - Amstrad PC1512 - GET AND RESET MOUSE COUNTS + AH = 00h +Return: CX = signed X count + DX = signed Y count +--------O-1500------------------------------- +INT 15 - VMiX v2+ - INSTALLATION CHECK + AH = 00h +Return: DX = 0798h if installed + AX = version (AH = major, AL = minor) +--------T-1500------------------------------- +INT 15 - MultiDOS Plus - GIVE UP TIME SLICE + AH = 00h +Return: nothing +Note: if issued by the highest-priority task while MultiDOS is using + priority-based rather than round-robin scheduling, control will be + returned to the caller immediately +SeeAlso: AH=03h"MultiDOS",AX=1000h +--------B-1501------------------------------- +INT 15 - CASSETTE - TURN OFF TAPE DRIVE'S MOTOR (PC and PCjr only) + AH = 01h +Return: CF set on error + AH = 86h no cassette present + CF clear if successful +SeeAlso: AH=00h"CASSETTE" +--------b-1501------------------------------- +INT 15 - Amstrad PC1512 - WRITE DATA TO NON-VOLATILE RAM + AH = 01h + AL = NVRAM location (00h to 3Fh) (see #00405) + BL = NVRAM data value +Return: AH = return code + 00h OK + 01h address bad + 02h write error +SeeAlso: AH=02h"Amstrad" + +Format of Amstrad NVRAM: +Offset Size Description (Table 00405) + 00h BYTE time of day: seconds + 01h BYTE alarm time: seconds + 02h BYTE time of day: minutes + 03h BYTE alarm time: minutes + 04h BYTE time of day: hours + 05h BYTE alarm time: hours + 06h BYTE day of week, 1 = Sunday + 07h BYTE day of month + 08h BYTE month + 09h BYTE year mod 100 + 0Ah BYTE RTC status register A (see #00406) + 0Bh BYTE RTC status register B (see #00407) + 0Ch BYTE RTC status register C (read-only) (see #00408) + 0Dh BYTE RTC status register D + bit 7: battery good + 0Eh 6 BYTEs time and date machine last used + 14h BYTE user RAM checksum + 15h WORD Enter key scancode/ASCII code + 17h WORD Forward delete key scancode/ASCII code + 19h WORD Joystick fire button 1 scancode/ASCII code + 1Bh WORD Joystick fire button 2 scancode/ASCII code + 1Dh WORD mouse button 1 scancode/ASCII code + 1Fh WORD mouse button 2 scancode/ASCII code + 21h BYTE mouse X scaling factor + 22h BYTE mouse Y scaling factor + 23h BYTE initial VDU mode and drive count + 24h BYTE initial VDU character attribute + 25h BYTE size of RAM disk in 2K blocks + 26h BYTE initial system UART setup byte + 27h BYTE initial external UART setup byte + 28h 24 BYTEs available for user application +Note: bytes 00h-0Dh are the same on the IBM AT as they are used/updated by + the clock chip + +Bitfields for RTC status register A: +Bit(s) Description (Table 00406) + 7 set if date/time being updated + 6-4 time base speed, default 010 = 32768 Hz + 3-0 interrupt rate selection, default 0110 = 1024 Hz +SeeAlso: #00405 + +Bitfields for RTC status register B: +Bit(s) Description (Table 00407) + 7 clear if normal update, set if abort update + 6 periodic interrupt enable + 5 alarm interrupt enable + 4 update end interrupt enable + 3 square wave enable + 2 date mode (clear = BCD, set = binary) + 1 24-hour format + 0 daylight saving time enable +SeeAlso: #00405 + +Bitfields for RTC status register C: +Bit(s) Description (Table 00408) + 7 IRQF flag + 6 PF flag + 5 AF flag + 4 UF flag +SeeAlso: #00405 +--------O-1501------------------------------- +INT 15 - VMiX - "sys_chanreq" - I/O CHANNEL OBJECT MANAGER + AH = 01h + STACK: WORD object ID of requestor + DWORD pointer to ASCIZ name of requested method + "assign" assign channel to object + "deassign" deassign channel + "cursor" set cursor on/off + "init" initialize comm port + "open" open I/O channel + "position" set cursor position + "receive" get buffered packet from comm port + "send" send buffered packet to comm port + "vio" set current virtual I/O to specified channel + "window" make window at cursor position + ---if "assign"--- + WORD object UID + WORD caller UID/PID + DWORD CSL with port + ---if "deassign"--- + WORD channel ID + ---if "cursor"--- + WORD channel ID (must be a SRCSINK) + WORD new state (0000h off, 0001h on) + ---if "init"--- + WORD channel ID (must be a SRCSINK) + WORD comm port number (00h-03h) + WORD UART init code + ---if "open"--- + WORD channel ID + ---if "position"--- + WORD channel ID (must be a SRCSINK) + WORD position (high byte = row, low byte = column) + ---if "receive"--- + DWORD pointer to buffer + ---if "send"--- + WORD length of buffer + DWORD pointer to buffer + ---if "vio"--- + WORD channel ID (must be a SRCSINK) + ---if "window"--- + WORD top left (high byte = row, low byte = column) + WORD bottom right (high byte = row, low byte = column) +Return: DX:AX -> IRP structure or 0000h:0000h +SeeAlso: AH=00h"VMiX",AH=02h"VMiX" +--------T-1501------------------------------- +INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE + AH = 01h + AL = semaphore number (00h-3Fh) +Return: AH = status + 00h successful + 02h invalid semaphore number +Notes: if the semaphore is not owned, ownership is assigned to the calling + task and the call returns immediately + if the semaphore is already owned by another task, the calling task + is placed on a queue for the semaphore and suspended until it can + become owner of the semaphore + semaphore 0 is used internally by MultiDOS to synchronize DOS access +SeeAlso: AH=02h"MultiDOS",AH=10h"MultiDOS",AH=1Bh"MultiDOS" +--------B-1502------------------------------- +INT 15 - CASSETTE - READ DATA (PC and PCjr only) + AH = 02h + CX = number of bytes to read + ES:BX -> buffer +Return: CF clear if successful + DX = number of bytes read + ES:BX -> byte following last byte read + CF set on error + AH = status (see #00409) +SeeAlso: AH=00h"CASSETTE",AH=03h"CASSETTE",MEM 0040h:0069h,MEM 0040h:006Bh"PC" + +(Table 00409) +Values for Cassette status: + 00h successful + 01h CRC error + 02h bad tape signals + 04h no data + 80h invalid command + 86h no cassette present +--------b-1502------------------------------- +INT 15 - Amstrad PC1512 - READ DATA FROM NON-VOLATILE RAM + AH = 02h + AL = NVRAM location (00h to 3Fh) +Return: AH = return code + 00h OK + 01h address bad + 02h checksum error + AL = NVRAM data value +SeeAlso: AH=01h"Amstrad" +--------O-1502------------------------------- +INT 15 - VMiX - "sys_memreq" - MEMORY OBJECT MANAGER + AH = 02h + STACK: WORD object ID of requestor + DWORD pointer to ASCIZ name of requested method + "assign" allocate low memory block + "assign extended" allocate extended memory pages + "assign gdt" allocate GDT selector + "paged" allocate low paged memory + "paged extended" alllocate extended memory pages + "deassign" free memory block + "deassign gdt" free GDT selector + "getvpage" get physical address for virtual page + "setvpage" set physical address for virtual page + "info" get VMiX memory usage info block + "move" move contents of 32-bit memory + "newmcb" make new DOS memory control block + "owner" get process ID of MCB or PSP owner + "umb" allocate upper memory block + "video" toggle system use of video memory and get stat + ---if "assign"--- + WORD number of objects + WORD size in bytes (multiple of 512 bytes) + ---if "assign extended"--- + WORD number of objects + WORD size in bytes (multiple of 4K) + ---if "assign gdt"--- + WORD access type (low byte) + WORD segment size in paragraphs + DWORD pointer to start of physical segment + ---if "paged"--- + WORD number of 512-byte pages + ---if "paged extended" + WORD number of 4K pages + ---if "deassign"--- + DWORD pointer returned by previous allocation call + ---if "deassign gdt"--- + WORD GDT selector + ---if "getvpage"--- + WORD owner's process ID + DWORD pointer to buffer for page structure (struct VPGE) + ---if "setvpage"--- + WORD owner's process ID + DWORD pointer to new page structure (struct VPGE) + ---if "info"--- + no additional arguments + ---if "move" + DWORD 32-bit source address + DWORD 32-bit destination address + WORD number of words to move + ---if "newmcb"--- + DWORD pointer to new MCB's location + WORD size of memory block + DWORD pointer to ASCIZ name string (max 8 chars) + ---if "owner"--- + WORD MCB or PSP segment + ---if "umb"--- + WORD size in paragraphs + ---if "video"--- + no additional arguments +Return: DX:AX -> memory block or VPGE struct or 0000h:0000h +SeeAlso: AH=00h"VMiX",AH=01h"VMiX" +--------T-1502------------------------------- +INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE + AH = 02h + AL = semaphore number (00h-3Fh) +Return: AH = status + 00h successful + 01h not semaphore owner + 02h invalid semaphore number +Notes: if any tasks are waiting for the semaphore, the first task on the wait + queue will become the new owner and be reawakened + do not use within an interrupt handler +SeeAlso: AH=01h"MultiDOS",AH=10h"MultiDOS",AH=1Ch"MultiDOS" +--------B-1503------------------------------- +INT 15 - CASSETTE - WRITE DATA (PC and PCjr only) + AH = 03h + CX = number of bytes to write + ES:BX -> data buffer +Return: CF clear if successful + ES:BX -> byte following last byte written + CF set on error + AH = status (see #00409) + CX = 0000h +SeeAlso: AH=00h"CASSETTE",AH=02h"CASSETTE" +--------V-1503------------------------------- +INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE WRITE REGISTER + AH = 03h + AL = value (I,R,G,B bits) +Return: nothing +SeeAlso: AH=04h"Amstrad" +--------O-1503------------------------------- +INT 15 - VMiX - "sys_pinput" - PROMPTED CONSOLE INPUT + AH = 03h + STACK: DWORD pointer to ASCII prompt + WORD field outline character + WORD length of input field (max 7Fh) + DWORD address of pointer to input buffer +Return: AX = length of input (input buffer is padded with blanks) +SeeAlso: AH=04h"VMiX" +--------T-1503------------------------------- +INT 15 - MultiDOS Plus - SUSPEND TASK FOR INTERVAL + AH = 03h + DX = number of time slices to remain suspended +Return: after specified interval has elapsed +Note: when priority-based scheduling is in use, high-priority tasks should + use this function to yield the processor +SeeAlso: AH=00h"MultiDOS",AH=0Ah"MultiDOS" +--------B-1504------------------------------- +INT 15 - SYSTEM - BUILD ABIOS SYSTEM PARAMETER TABLE (PS) + AH = 04h + ES:DI -> 32-byte results buffer for System Parameter Table (see #00410) + DS = segment containing ABIOS RAM extensions (zero if none) +Return: CF clear if successful + AH = 00h success + ES:DI buffer filled + AL destroyed + CF set on failure + AX destroyed + AH = 80h/86h if not supported +SeeAlso: AH=05h"ABIOS",AH=C1h + +Format of ABIOS System Parameter Table: +Offset Size Description (Table 00410) + 00h DWORD FAR address of ABIOS Common Start Routine + 04h DWORD FAR address of ABIOS Interrupt Routine + 08h DWORD FAR address of ABIOS Time-out Routine + 0Ch WORD number of bytes of stack required by this ABIOS implementation + 0Eh 16 BYTEs reserved + 1Eh WORD number of entries in initialization table +--------V-1504------------------------------- +INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE READ REGISTER + AH = 04h + AL = value (RDSEL1 and RDSEL0) +Return: nothing +SeeAlso: AH=03h"Amstrad",AH=05h"Amstrad" +--------O-1504------------------------------- +INT 15 - VMiX - "sys_vprintf" - FORMATTED OUTPUT TO STREAM + AH = 04h + STACK: DWORD control string + DWORD array of arguments +Return: nothing +SeeAlso: AH=03h"VMiX" +--------T-1504------------------------------- +INT 15 - MultiDOS Plus - SEND MESSAGE TO ANOTHER TASK + AH = 04h + AL = mailbox number (00h-3Fh) + CX = message length in bytes + DS:SI -> message +Return: AH = status + 00h successful + 01h out of message memory + 02h invalid mailbox number +Note: the message is copied into a system buffer; the caller may immediately + reuse its buffer +SeeAlso: AH=05h"MultiDOS" +--------B-1505------------------------------- +INT 15 - SYSTEM - BUILD ABIOS INITIALIZATION TABLE (PS) + AH = 05h + ES:DI -> results buffer of length 18h * Number_of_Entries (see #00411) + DS = segment containing ABIOS RAM extensions (zero if none) +Return: CF clear if successful + AH = 00h success + ES:DI buffer filled + AL destroyed + CF set on failure + AX destroyed + AH = 80h/86h if not supported +SeeAlso: AH=04h"ABIOS",AH=C1h + +Format of one entry of ABIOS Initialization Table: +Offset Size Description (Table 00411) + 00h WORD device ID (see #00412) + 02h WORD number of Logical IDs + 04h WORD Device Block length (zero for ABIOS patch or extension) + 06h DWORD -> init routine for Device Block and Function Transfer Table + 0Ah WORD request block length + 0Ch WORD Function Transfer Table length (zero for a patch) + 0Eh WORD Data Pointers length (in Common Data Area) + 10h BYTE secondary device ID (hardware level this ABIOS ver supports) + 11h BYTE revision (device driver revision level this ABIOS supports) + 12h 6 BYTEs reserved + +(Table 00412) +Values for ABIOS device ID: + 00h ABIOS internal calls + 01h floppy disk + 02h hard disk + 03h video + 04h keyboard + 05h parallel port + 06h serial port + 07h system timer + 08h real-time clock + 09h system services + 0Ah NMI + 0Bh mouse + 0Eh CMOS RAM + 0Fh DMA + 10h Programmable Option Select (POS) + 16h keyboard password +--------V-1505------------------------------- +INT 15 - Amstrad PC1512 - WRITE VDU GRAPHICS BORDER REGISTER + AH = 05h + AL = value (I,R,G,B bits) +Return: nothing +SeeAlso: AH=04h"Amstrad" +--------O-1505------------------------------- +INT 15 - VMiX - "sys_getpid" - GET PROCESS ID OF CURRENT PROCESS + AH = 05h +Return: AX = process ID +SeeAlso: AH=06h"VMiX",AH=0Bh"VMiX" +--------T-1505------------------------------- +INT 15 - MultiDOS Plus - CHECK MAILBOX + AH = 05h + AL = mailbox number (00h-3Fh) +Return: AH = status + 00h successful + DX = length of first message in queue, 0000h if no message + 02h invalid mailbox number +SeeAlso: AH=04h"MultiDOS",AH=06h"MultiDOS" +--------b-1506------------------------------- +INT 15 - Amstrad PC1512 - GET ROS VERSION NUMBER + AH = 06h +Return: BX = version number +--------O-1506------------------------------- +INT 15 - VMiX - "sys_getpcb" - GET POINTER TO PROCESS CONTROL BLOCK + AH = 06h + STACK: WORD process ID +Return: DX:AX -> process control block +SeeAlso: AH=05h"VMiX",AH=07h"VMiX",AH=08h"VMiX" +--------T-1506------------------------------- +INT 15 - MultiDOS Plus - READ MAILBOX + AH = 06h + AL = mailbox number (00h-3Fh) + CX = size of buffer in bytes + ES:DI -> buffer for message +Return: AH = status + 00h successful + CX = number of bytes copied + DX = actual length of message + 02h invalid mailbox number +Note: if the caller's buffer is not large enough, the message is truncated + and the remainder is lost +SeeAlso: AH=04h"MultiDOS",AH=05h"MultiDOS" +--------O-1507------------------------------- +INT 15 - VMiX - "sys_getocb" - GET POINTER TO OBJECT CONTROL BLOCK + AH = 07h + STACK: WORD object type +Return: DX:AX -> object control block +SeeAlso: AH=06h"VMiX",AH=08h"VMiX" +----------1507------------------------------- +INT 15 - IBM SurePath BIOS - Officially "Private" Function + AH = 07h +SeeAlso: AH=08h"IBM" +--------T-1507------------------------------- +INT 15 - MultiDOS Plus - SPAWN INTERNAL TASK (CREATE NEW THREAD) + AH = 07h + BX:CX = entry point of new task + DX = stack size in paragraphs +Return: AH = status + 00h successful + 01h no free task control blocks + 02h no free memory for task's stack +Note: execution returns immediately to calling task +SeeAlso: AH=08h"MultiDOS",AH=09h"MultiDOS",AH=13h"MultiDOS" +--------O-1508------------------------------- +INT 15 - VMiX - "sys_getccb" - GET CHANNEL CONTROL BLOCK + AH = 08h + STACK: WORD channel ID +Return: DX:AX -> channel control block +SeeAlso: AH=06h"VMiX",AH=07h"VMiX" +--------B-1508------------------------------- +INT 15 - IBM SurePath BIOS - WAIT REQUESTED TIME PERIOD + AH = 08h + AL = function + 00h wait in increments of 15.025 microseconds + CX = number of time increments to wait (0000h = maximum) + 80h wait in increments of 840 ns + ECX = number of time increments to wait + 81h I/O event wait + BH = bitmask of bits to check + BL = expected pattern + DX = I/O port address + ECX = number of 840 ns microticks to wait + Return: ECX = 00000000h if expected pattern did not occur + 82h memory event wait + BH = bitmask of bits to check + BL = expected pattern + ES:SI -> BYTE to check + ECX = number of 840 ns microticks to wait + Return: ECX = 00000000h if expected pattern did not occur + other reserved +Return: CF clear if successful + CF set on error + AH = status + 00h successful + 01h used 15.025 microsecond interval, time rounded up + 08h reserved subfunction + 86h function not supported +Notes: IBM classifies this function as optional + if the POST determines that the timer is nonfunctional, this function + uses the 15.025 microsecond refresh timer instead of the + full-resolution timer +SeeAlso: AH=07h"IBM",AH=09h"IBM",AH=86h +--------T-1508------------------------------- +INT 15 - MultiDOS Plus - TERMINATE INTERNAL TASK (KILL THREAD) + AH = 08h +Return: calling task terminated, so execution never returns to caller +Notes: an internal task must be terminated with this function rather than a + DOS termination function + task's stack space is returned to parent task's memory pool +SeeAlso: AH=07h"MultiDOS" +--------O-1509------------------------------- +INT 15 - VMiX - "sys_getqueue" - GET ID OF QUEUED ELEMENT + AH = 09h + STACK: WORD queue ID (0 = process queue, 1 = object, 3 = type) + WORD subqueue ID +Return: AX = queue ID +SeeAlso: AH=0Ah"VMiX" +----------1509------------------------------- +INT 15 - IBM BIOS - RESERVED FOR PCMCIA SYSTEM RESOURCE TABLE ACCESS + AH = 09h + no further details available +SeeAlso: AH=08h"IBM" +--------T-1509------------------------------- +INT 15 - MultiDOS Plus - CHANGE TASK'S PRIORITY + AH = 09h + AL = new priority +Return: nothing +Note: the priority has different meanings depending on whether priority- + based or round-robin scheduling is used +SeeAlso: AH=07h"MultiDOS" +--------O-150A------------------------------- +INT 15 - VMiX - "sys_qetqnext" - GET ID OF NEXT QUEUED ELEMENT + AH = 0Ah + STACK: WORD queue ID (0 = process queue, 1 = object, 3 = type) + WORD ID of current element in queue chain +Return: AX = ID of next element +SeeAlso: AH=09h"VMiX",AH=0Fh"VMiX" +--------T-150A------------------------------- +INT 15 - MultiDOS Plus - CHANGE TIME SLICE INTERVAL + AH = 0Ah + AL = new interval + 00h = 55.0 ms (default) + 80h = 27.5 ms + 40h = 13.75 ms + 20h = 6.88 ms + 10h = 3.44 ms + 08h = 1.72 ms +SeeAlso: AH=03h"MultiDOS" +--------O-150B------------------------------- +INT 15 - VMiX - "sys_sysreq" - SYSTEM CONFIGURATION MANAGER + AH = 0Bh + STACK: WORD caller's UID + DWORD pointer to ASCIZ name of requested method + "abort" abort current send/receive on comm port + "block" start/end critical section + "close" terminate interrupt-drive comm I/O + "open" prepare comm port for interrupt-driven I/O + "delay" set delay timer and wait + "hibernate" put process to sleep + "ints" enable/disable interrupt-driven INT 14h + "length" get current send/receive buffer offsets + "kswitch" switch stacks + "numproc" get number of active processes + "protocol" set protocol function for comm interrupts + "relocate" set/reset VMiX flag for relocating to himem + "status" get current open comm port status + "wake" awaken a process + "xport" get comm port polled for logins + ---if "abort"--- + no additional arguments + ---if "block"--- + WORD 0000h end, 0001h start + ---if "close"--- + no additional arguments + ---if "open"--- + WORD comm port (00h-03h) + WORD BIOS parameter byte (see #00300 at INT 14/AH=00h), + except bits 7-5: 000 = 19200, 001 = 38400, 011 = 115200 + ---if "delay"--- + WORD time in seconds + ---if "hibernate"--- + WORD process ID + ---if "ints"--- + WORD 0000h if no, 0001h if yes + ---if "length","numproc","relocate","status","xport"--- + no additional arguments + ---if "kswitch"--- + DWORD pointer to new stack + ---if "protocol"--- + DWORD pointer to function (must be in low "assign"ed memory + when in 386 mode) + ---if "wake"--- + WORD process ID +Return: DX:AX -> result or 0000h:0000h + ---if "length"--- + BYTE receive offset + BYTE send offset + ---if "kswitch"--- + DWORD old stack pointer + ---if "numproc"--- + WORD number of active processes + ---if "status"--- + current open comm port status + ---if "xport"--- + current comm port being polled for logins +Note: the "delay" command reportedly disables the keyboard until the delay + completes +SeeAlso: AH=05h"VMiX",AH=0Eh"VMiX" +--------T-150B------------------------------- +INT 15 - MultiDOS Plus - FORCE DISPLAY OUTPUT TO PHYSICAL SCREEN MEMORY + AH = 0Bh +Return: nothing +Notes: sets calling task's screen pointer to actual screen memory; the pointer + may be restored with AH=0Ch + caller's video mode must be same as foreground task's video mode + any text written while in the background will be saved to the + foreground task's virtual screen when it switches to the background + useful if a background task wants to display a message on the + foreground screen +SeeAlso: AH=0Ch"MultiDOS" +--------O-150C------------------------------- +INT 15 - VMiX - "sys_getstack" - GET POINTER TO PROCESS TSS STACK + AH = 0Ch + STACK: WORD process ID +Return: DX:AX -> TSS stack store +SeeAlso: AH=00h"VMiX" +--------T-150C------------------------------- +INT 15 - MultiDOS Plus - RESTORE OLD VIDEO DISPLAY MEMORY + AH = 0Ch +Return: nothing +Note: restores task's screen pointer saved by AH=0Bh; must not be called + unless AH=0Bh has been called first +SeeAlso: AH=0Bh"MultiDOS" +--------O-150D------------------------------- +INT 15 - VMiX - "sys_spawn" - START A CHILD PROCESS JOB SHELL + AH = 0Dh + STACK: DWORD ASCIZ string starting with requested I/O channel and + followed by standard VMiX shell command string +Return: AX = process ID or error code "SYS_ERROR" +Note: the maximum string length is 7Fh characters +SeeAlso: AH=0Eh"VMIX",AH=11h"VMiX",INT 21/AH=4Bh +--------T-150D------------------------------- +INT 15 - MultiDOS Plus - DISABLE MULTITASKING + AH = 0Dh +Return: nothing +Note: calling task receives all time slices until AH=0Eh is called; this + allows time-critical events or nonreentrant code to be processed +SeeAlso: AH=0Eh"MultiDOS",AH=10h"MultiDOS",AX=101Bh,AH=20h"MultiDOS" +--------O-150E------------------------------- +INT 15 - VMiX - "sys_kill" - HARD TERMINATE PROCESS + AH = 0Eh + STACK: WORD process ID +Return: AX = status (SYS_OK or SYS_ERROR) +SeeAlso: AH=0Bh"VMiX",AH=0Dh"VMIX" +--------T-150E------------------------------- +INT 15 - MultiDOS Plus - ENABLE MULTITASKING + AH = 0Eh +Return: nothing +SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AH=20h"MultiDOS" +--------d-150F------------------------------- +INT 15 C - SYSTEM - FORMAT UNIT PERIODIC INTERRUPT (PS ESDI drives only) + AH = 0Fh + AL = phase code + 00h reserved + 01h surface analysis + 02h formatting +Return: CF clear if formatting should continue + CF set if formatting should terminate +Note: called during ESDI drive formatting after each cylinder is completed +SeeAlso: INT 13/AH=1Ah +--------O-150F------------------------------- +INT 15 - VMiX - "sys_getqkey" - GET KEY FIELD OF QUEUED ELEMENT + AH = 0Fh + STACK: WORD queue ID (0 = process queue, 1 = object q, 3 = type q) + WORD ID of element in queue chain +Return: AX = key +SeeAlso: AH=0Ah"VMiX" +--------T-150F------------------------------- +INT 15 - MultiDOS Plus - EXECUTE A MULTIDOS PLUS COMMAND + AH = 0Fh + DS:BX -> ASCIZ command +Return: after command has been processed +Notes: specified string is executed as if it had been typed at the MultiDOS + command prompt + the task is placed on a queue which MultiDOS examines periodically and + is suspended until MultiDOS has processed the command + all lowercase characters up to the first blank are converted to upper + case within the given buffer +--------!---Section-------------------------- diff --git a/floppy/doc/INTERRUP.C b/floppy/doc/INTERRUP.C new file mode 100644 index 0000000..600e0fc --- /dev/null +++ b/floppy/doc/INTERRUP.C @@ -0,0 +1,9446 @@ +Interrupt List, part 3 of 18 +Copyright (c) 1989-1999,2000 Ralf Brown +--------O-1510------------------------------- +INT 15 - VMiX - "sys_virtual" - EXECUTE CONFORMING FUNCTION IN PROTECTED MODE + AH = 10h + STACK: DWORD pointer to function + N WORDs function args +Return: AX = function's return value??? (not specified in documentation) +Note: while the function is executing, the following global descriptors are + available: + 20h stack segment + 38h code segment of function + 40h data alias for function's code segment + additional GDT descriptors can be allocated using AH=02h with + function "assign gdt" +SeeAlso: AH=02h"VMiX",AH=51h"VMiX" +--------T-1510------------------------------- +INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE + AH = 10h + AL = semaphore number (00h-3Fh) +Return: AH = status + 00h semaphore not in use + 01h semaphore owned by another task + 02h invalid semaphore number + 03h semaphore owned by caller +SeeAlso: AH=02h"MultiDOS",AH=0Dh"MultiDOS",AH=1Dh"MultiDOS" +--------Q-151000----------------------------- +INT 15 - TopView - "PAUSE" - GIVE UP CPU TIME + AX = 1000h +Return: after other processes run +Note: under DESQview, if the process issuing this call has hooked INT 08h, + the current time-slice is set to expire at the next clock tick rather + than immediately +SeeAlso: AH=00h"MultiDOS",AX=5305h,INT 21/AH=89h,INT 21/AH=EEh"DoubleDOS" +SeeAlso: INT 2F/AX=1680h,INT 60/DI=0106h,INT 62/AH=01h,INT 6F/AH=2Ah"F_YIELD" +SeeAlso: INT 7A/BX=000Ah,INT 7F/AH=02h"MultiLink",INT 7F/AH=E8h +--------Q-151001----------------------------- +INT 15 - TopView - "GETMEM" - ALLOCATE "SYSTEM" MEMORY + AX = 1001h + BX = number of bytes to allocate +Return: ES:DI -> block of memory or 0000h:0000h (DV v2.26+) + AX = status (DV v2.42) + 0000h successful + 0001h failed +Note: use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient + common memory. Under DV v2.42, this call never generates a user + prompt regardless of the SETERROR value; instead, it always returns + AX=0001h and ES:DI=0000h:0000h if out of memory +SeeAlso: AX=1002h,AX=102Eh,AX=DE0Ch,AX=DE15h +--------Q-151002----------------------------- +INT 15 - TopView - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY + AX = 1002h + ES:DI -> previously allocated block +Return: block freed +SeeAlso: AX=1001h,AX=DE0Dh +--------Q-151003----------------------------- +INT 15 - TopView - "PRINTC" - DISPLAY CHARACTER/ATTRIBUTE ON SCREEN + AX = 1003h + BH = attribute + BL = character + DX = segment of object handle for window +Return: nothing +Note: BX=0000h does not display anything, it only positions the hardware + cursor to the logical cursor's current position +--------Q-1510------------------------------- +INT 15 - TopView - UNIMPLEMENTED IN DV 2.x + AH = 10h + AL = 04h thru 12h +Return: pops up "Programming error" window in DV 2.x +--------Q-151013----------------------------- +INT 15 - TopView - "GETBIT" - DEFINE A 2ND-LEVEL INTERRUPT HANDLER + AX = 1013h + ES:DI -> FAR service routine +Return: BX = bit mask indicating which bit was allocated + 0000h if no more bits available +SeeAlso: AX=1014h,AX=1015h +Note: only a few TopView/DESQview API calls are allowed during a hardware + interrupt; if other calls need to be made, the interrupt handler + must schedule a 2nd-level interrupt with "SETBIT" (AX=1015h) +--------Q-151014----------------------------- +INT 15 - TopView - "FREEBIT" - UNDEFINE A 2ND-LEVEL INTERRUPT HANDLER + AX = 1014h + BX = bit mask from INT 15/AX=1013h +Return: nothing +SeeAlso: AX=1013h,AX=1015h +--------Q-151015----------------------------- +INT 15 - TopView - "SETBIT" - SCHEDULE ONE OR MORE 2ND-LEVEL INTERRUPTS + AX = 1015h + BX = bit mask for interrupts to post +Return: indicated routines will be called: (DV 2.0x) at next task switch + (DV 2.2x) immediately on return from + hardware interrupt +Notes: this is one of the few TopView calls which are allowed from a hardware + interrupt handler + the handler will be called with ES containing the segment of the handle + of the next task to be executed; on return, ES must be the segment of + a task handle +SeeAlso: AX=1013h,AX=1014h +--------Q-151016----------------------------- +INT 15 - TopView - "ISOBJ" - VERIFY OBJECT HANDLE + AX = 1016h + ES:DI = possible object handle +Return: BX = status + FFFFh if ES:DI is a valid object handle (see #00414) + 0000h if ES:DI is not +Note: under DESQview versions prior to 2.50, an object handle is always a + pointer to the object; for versions 2.50 and up, only task handles + are always pointers--other handles may consist of a unique object + number and offset into DESQview's common memory (see #00423) +SeeAlso: AX=DE14h,AX=DE2Bh,AX=DE2Ch + +(Table 00413) +Values for DESQview object type: + 00h window/task + 01h mailbox + 02h keyboard + 03h timer + 04h pointer + 05h panel + 06h objectq + +Format of DESQview object: +Offset Size Description (Table 00414) + 00h WORD offset in common memory of previous object of same type + 02h WORD offset in common memory of next object of same type + 04h WORD signature FEDCh (DV 2.42-) + signature FEDCh or object number (DV 2.50+) + 06h WORD object type (see #00413) + 08h DWORD object handle to return to caller + 0Ch DWORD canonicalized object address (segment = common memory) + 10h WORD offset in common memory of owning task + (0000h for unowned OBJECTQs) + 12h WORD mapping context + offset in common memory of mapping context record (see #00416) + remainder varies by object type and DESQview version +---v2.42 keyboard object--- + 14h WORD flag bits (see also AH=12h/BH=0Ah"OBJECT") + bit 15: keyboard opened + 16h 4 BYTEs ??? + 1Ah WORD priority in OBJECTQ??? + 1Ch ... + 25h WORD offset in common memory of ??? task + 27h 4 BYTEs ??? +---v2.42 objectq object--- + 14h WORD flag bits (see also AH=12h/BH=0Ah"OBJECT") + bit 15: OBJECTQ opened + 16h 2 BYTEs ??? + 18h WORD offset in common memory of ??? task + 1Ah 6 BYTEs ??? +---v2.42 mailbox object--- + 14h WORD flag bits (see also AH=12h/BH=0Ah"OBJECT") + bit 15: mailbox opened + 1Ah WORD priority in OBJECTQ??? + 1Ch 6 BYTEs ??? + 22h WORD offset in common memory of mailbox name (counted string) + 0000h if no name + <= 5 BYTEs ??? +---v2.22-2.42,2.52,2.60 window/task object--- + 14h BYTE 00h window, 01h task + 15h BYTE internal (not Switch menu) window number??? + 16h BYTE internal (not Switch menu) window number??? + 17h WORD segment of internal window record (see #00417) + 19h 2 BYTEs ??? + 1Bh BYTE cursor row + 1Ch BYTE cursor column + 1Dh BYTE visible window origin, row + 1Eh BYTE visible window origin, column + 1Fh BYTE window height (logical) + 20h BYTE window width (logical) + 21h BYTE window position, row + 22h BYTE window position, column + 23h BYTE window height (visible) + 24h BYTE window width (visible) + 25h BYTE row of top of frame (or window if unframed) + 26h BYTE column of left of frame (or window if unframed) + 27h BYTE window height (physical, including frame) + 28h BYTE window width (physical, including frame) + 29h BYTE unzoomed visible origin, row (00h before first zoom) + 2Ah BYTE unzoomed visible origin, column (00h before first zoom) + 2Bh BYTE unzoomed window position, row (00h before first zoom) + 2Ch BYTE unzoomed window position, column (00h before first zoom) + 2Dh BYTE unzoomed window height (00h before first zoom) + 2Eh BYTE unzoomed window width (00h before first zoom) + unzoomed parameters above are updated when window is zoomed + to full screen + 2Fh BYTE ??? initially logical window height + 30h BYTE ??? initially logical window width + 31h 2 BYTEs ??? + 33h BYTE minimum height of window + 34h BYTE minimum width of window + 35h BYTE maximum height of window + 36h BYTE maximum width of window + 37h 3 BYTEs ??? + 3Ah 8 BYTEs window frame characters: ul,ur,ll,lr,t,b,l,r + 42h 24 BYTEs attributes??? + 5Ah 8 BYTEs window frame characters: ul,ur,ll,lr,t,b,l,r + 62h 3 BYTEs ??? + 65h BYTE ??? bitflags + 66h BYTE bit 0: window is zoomed + 67h BYTE ??? + 68h WORD offset in common memory of window name or 0000h if untitled + 6Ah WORD length of window name + 6Ch 2 BYTEs ??? + 6Eh WORD offset of logical cursor in window (in character cells) + 70h DWORD pointer to field table for window + 74h BYTE ??? + 75h 2 BYTEs ??? + 77h BYTE number of last-visited field + 78h DWORD pointer to field table entry for last-visited field + 7Ch 3 BYTEs ??? + 7Fh BYTE select field marker character + 80h BYTE ??? bit flags + bit 0: allow ECh window stream opcode to change reverse logattr + bit 1: alternate field processing mode selected + 81h BYTE ??? + 82h DWORD notification function (manager stream opcode 8Ah) + no notification if segment = 0000h + 86h DWORD notification argument (manager stream opcode 8Bh) + 8Ah WORD offset in common memory of ??? window object or 0000h + 8Ch WORD offset in common memory of ??? window object or 0000h + 8Eh WORD offset in common memory of ??? window object or 0000h + 90h BYTE ??? bitflags + 91h BYTE ??? + ---task object only + 92h BYTE bit flags (bits 0-4) + 93h BYTE character for ??? (default 20h) + 94h BYTE ??? flag + 95h WORD offset in common memory of ??? + 97h 2 BYTEs ??? + 99h WORD ??? + 9Bh BYTE ??? bit flags + bit 3: ??? + bit 6: perform protected-attribute processing on select fields + 9Ch BYTE ??? + 9Dh WORD offset in common memory of current register save record + (see #00415). No register save record in use if < 01C0h + 9Fh WORD offset in common memory of task's keyboard object + A1h WORD offset in common memory of task's OBJECTQ object + A3h WORD offset in common memory of task's mailbox object + A5h WORD semaphore: FFFFh if on user stack, else on task's private stack + A7h DWORD user's SS:SP + ABh WORD task's private SP (SS read from offset 0Ah) + ADh 6 BYTEs ??? + B3h BYTE ??? bit flags + bit 0: run in foreground only + B4h BYTE ??? + B5h BYTE ??? bitflags + B6h BYTE task status (see #00555 at AX=DE2Ch) + B7h 9 BYTEs ??? + C0h WORD head pointer for keyboard buffer (wraps back to 00h after 80h) + C2h WORD tail pointer for keyboard buffer (wraps back to 00h after 80h) + C4h 2 BYTEs ??? (0000h) + C6h WORD segment of keyboard buffer for task + C8h WORD offset in common memory of ??? keyboard object + CAh BYTE ??? +---v2.22-2.42 + CBh WORD offset in common memory of ??? object + CEh BYTE ??? flag + CFh WORD offset in common memory of default notify window for task + or 0000h if none + D1h 4 BYTEs ??? + D5h BYTE window number on Switch Window menu + D6h 5 BYTEs ??? + DBh WORD offset in common memory of ??? object + DDh 2 BYTEs ??? + DFh WORD API level for task + E1h WORD offset in common memory of object task is waiting on if task + status is 'waiting', else 0000h + E7h WORD segment of ??? + E9h 4 BYTEs ??? + EDh WORD EMS handle of virtualization buffer, 0000h if no virtualization + F1h 12 BYTEs ??? + FBh WORD ??? + FDh BYTE ??? + FFh 12 BYTEs ??? +10Bh DWORD pointer to process record (see #00418,#00419) +10Dh 10 BYTEs ??? +119h DWORD SS:SP for ??? +11Dh 4 BYTEs ??? +121h DWORD pointer to ??? +125h 25 BYTEs ??? +13Eh DWORD pointer to ??? in system memory +---v2.22 +142h 3 BYTEs ??? +145h task's default keyboard object +---v2.42 +142h DWORD pointer to first task instance data record in system memory +148h DWORD pointer to last task instance data record in system memory + (see #00420) +14Ah BYTE ??? +14Dh 42 BYTEs task's default keyboard object +177h 32 BYTEs task's ObjectQ object +197h 41 BYTEs task's default mailbox object +1C0h 24 BYTEs first register save record +450h -- default top of private stack +---v2.52 (probably all DV/X) +Same as v2.60 below except there is an extra 29 bytes inserted somewhere + before offset 9Fh, but not yet known exactly where. Also, for the WAIT_ON + field (v2.60 offset E3h), some X apps (probably waiting on a socket) have + 0000h even when waiting. +---v2.60 + CBh WORD ??? (added in 2.50 - rest is same as 2.42) + CDh WORD offset in common memory of ??? object + D0h BYTE ??? flag + D1h WORD offset in common memory of default notify window for task + or 0000h if none + D3h 4 BYTEs ??? + D7h BYTE window number on Switch Window menu + D8h 5 BYTEs ??? + DDh WORD offset in common memory of ??? object + DFh 2 BYTEs ??? + E1h WORD API level for task + E3h WORD If status at B6h=waiting, offset in common memory of object + that task is waiting on, else 0000h. (Task with CPU also + has 0000h here) + E9h WORD segment of ??? + EBh 4 BYTEs ??? + EFh WORD EMS handle of virtualization buffer, 0 if no virtualization + F3h 12 BYTEs ??? + FDh WORD ??? + FFh BYTE ??? +101h 8 BYTEs ??? +109h DWORD pointer to process record in system memory +10Dh 14 BYTEs ??? +11Bh DWORD SS:SP for ??? +11Fh 4 BYTEs ??? +123h DWORD pointer to ??? +127h 25 BYTEs ??? +140h DWORD pointer to ??? in system memory +144h DWORD pointer to first task instance data record in system memory +148h DWORD pointer to last task instance data record in system memory + (from INT 15/AX=DE27h) (see #00420) +14Ch BYTE ??? +14Eh 42 BYTEs task's default keyboard object +179h 32 BYTEs task's ObjectQ object +199h 41 BYTEs task's default mailbox object +1C2h 24 BYTEs first register save record +452h -- default top of private stack + +Format of DESQview Register Save Record: +Offset Size Description (Table 00415) + 00h WORD AX + 02h WORD BX + 04h WORD CX + 06h WORD DX + 08h WORD DI + 0Ah WORD SI + 0Eh WORD DS + 10h WORD ES + 12h DWORD return address + 16h WORD original flags + +Format of DESQview mapping context record: +Offset Size Description (Table 00416) + 00h WORD lowest segment in process's memory + (often start of system memory chain) + 02h WORD size of process's memory in paragraphs + 04h BYTE flag: 00h if process swapped out, 01h otherwise + 05h BYTE flag: 00h if allocated in conventional memory, 01h if EMS + 06h 2 BYTEs ??? + 08h WORD EMS handle if in EMS, else 0 + 0Ah 2 BYTEs ??? (nonzero if system memory resides in shared mem???) + 0Ch WORD segment of system memory block that contains process record, + referenced from segment of start of system memory chain + 0Eh BYTE ??? + 0Fh WORD size of system memory block that contains process record + and DOS memory in paragraphs + 11h BYTE bit flags + Bit 0: Swapped out??? + Bit 1: ??? + Bit 2: Swapped out??? + 12h BYTE ??? + 13h BYTE reference count + ---v2.31 + 14h 10 BYTEs ??? + 1Eh WORD segment of process record + 20h 2 BYTEs ??? + 22h WORD segment of ??? (in first free system memory block???) + 24h WORD segment of end of system memory chain + 26h WORD segment of start of system memory chain + 28h 8 BYTEs ??? + 2Ah DWORD pointer to ??? (process record???) + 2Dh 10 BYTEs ??? + 37h BYTE lowest interrupt vector to save on context switch + 38h BYTE highest interrupt vector to save on context switch + 39h WORD offset in common memory of main task with this context + 3Ah 12 BYTEs ??? + 46h BYTE internal mapping context number + 47h 12 BYTEs ??? + ---v2.5x-2.60 + 14h 6 BYTEs ??? + 1Ah WORD segment of process record + 1Ch 2 BYTEs ??? + 1Eh WORD segment of first free system memory block + 20h WORD segment of start of system memory chain + 22h WORD segment of end of system memory chain + 24h 8 BYTEs ??? + 2Ch DWORD pointer to ??? (1 segment into process record???) + 30h 3 BYTEs ??? + 33h WORD Offset in common memory of main task with this context + 35h 7 BYTEs ??? + 3Ch BYTE internal mapping context number + 3Dh 14 BYTEs ??? + 4Bh WORD first DOS memory segment (first MCB segment+1) + 4Dh BYTE ??? (flag???) + ---v2.53 (2.5x???) + 4Eh 12 BYTEs ??? + ---v2.60 + 4Eh WORD segment of script buffer (see #00421) + 50h 6 BYTEs ??? + +Format of DESQview Internal Window Record (v2.31-2.60): +Offset Size Description (Table 00417) + 00h BYTE internal window number??? + 01h BYTE display page??? + 02h BYTE video mode + 03h 3 BYTEs ??? + 06h BYTE logical window height + 07h BYTE logical window width + 08h DWORD pointer to text video buffer + 0Ch 116 BYTEs ??? + +Format of DESQview process record (v2.31): +Offset Size Description (Table 00418) +-470h 13 BYTEs filename of ??? Script +-463h 1117 BYTEs ??? (script buffer???) + -6h 6 BYTEs ??? + 00h WORD segment of parent PSP in process + 02h 5 BYTEs ??? + 07h WORD segment of current PSP in process + 09h WORD segment of first MCB in process + 0Bh 13 BYTEs ??? + 18h 1024 BYTEs process's interrupt vector table +418h 376 BYTEs ??? +590h first MCB in process +SeeAlso: #00419 + +Format of DESQview process record (v2.52-v2.60) (probably also 2.5x): +Offset Size Description (Table 00419) + 00h 28 BYTEs EXE header of last EXE, ??? if last program run was COM + 1Ch ??? BYTEs overwritten with ASCIZ filename of last program run (EXE/COM) +11Ch WORD segment of parent PSP in process +11Eh 4 BYTEs ??? +122h WORD segment of current PSP +124h WORD segment of current PSP +126h WORD segment of first MCB in process +128h 4 BYTEs ??? +12Ch DWORD pointer to first process instance data record in system memory +130h DWORD pointer to last process instance data record in system memory + (from INT 15/AX=DE27h) (see #00420) +134h 8 BYTEs ??? +13Ch WORD size of current environment +13Eh WORD segment of current environment +140h WORD segment of current PSP +142h DWORD entry point of current program +146h 10 BYTEs ??? +---v2.52 (v2.5x???) +150h BYTE ??? +151h WORD segment of parent PSP in process +153h WORD ??? +155h WORD ??? +157h WORD ??? +159h 4 BYTEs ??? +15Dh WORD segment of current environment +15Fh WORD segment of current PSP +161h WORD segment of ??? +162h WORD ??? +164h 3 BYTEs ??? +168h 1024 BYTEs process's interrupt vector table +568h 120 BYTEs ??? +5E0h first MCB in process +---v2.60 +150h WORD segment of parent PSP in process +152h WORD ??? +154h WORD ??? +156h WORD ??? +158h 4 BYTEs ??? +15Ch WORD segment of current environment +15Eh WORD segment of current PSP +160h WORD segment of ??? +162h WORD ??? +164h 1024 BYTEs process's interrupt vector table +564h 108 BYTEs ??? +5D0h first MCB in process +SeeAlso: #00418 + +Format of DESQview task or process instance data record (v2.5x???, v2.60): +Offset Size Description (Table 00420) + 00h DWORD pointer to next record of same type or 00000000 + 04h DWORD pointer to previous record of same type or 00000000 + 08h DWORD pointer to source area of memory during restore state + 0Ch WORD number of bytes to save/restore + 0Eh DWORD pointer to destination area of memory during restore state + 12h WORD ??? (0) + 14h N BYTEs source memory buffer during restore state + +Format of DESQview script buffer (v2.60): +Offset Size Description (Table 00421) + 00h 13 BYTEs ASCIZ Script filename + 0Dh 80 BYTEs ??? + 5Eh N BYTEs script records (see #00422) + +Format of one DESQview script record (v2.60): +Offset Size Description (Table 00422) + 00h BYTE signature 12h + 01h 18 BYTEs blank-padded script name + 13h BYTE ASCII code of key attached to script or 0 if non-ASCII key + 14h BYTE scan code of key attached to script if non-ASCII, else 0 + 15h BYTE ??? + 16h WORD size of script in bytes + 18h N BYTEs script (ASCII code of each keystroke; if 0, next byte is + scan code of non-ASCII key) +SeeAlso: #00421 + +Format of DESQview Common Memory Header (v2.31-2.60): +Offset Size Description (Table 00423) + 00h WORD offset of lowest used block + 02h WORD bytes of commom memory, including header + 04h WORD offset of first free block + 06h N BYTEs size depends of DV version, ??? (DVP buffer???) +Note: the above is located at the beginning of the commom memory segment +SeeAlso: #00424,#00425,#00433 + +Format of DESQview Free block header: +Offset Size Description (Table 00424) + 00h WORD size of block in bytes including header + 02h WORD offset of next free block + 04h N BYTEs free block +SeeAlso: #00423,#00425 + +Format of DESQview Used block header: +Offset Size Description (Table 00425) + 00h WORD size of block in bytes including header + 02h N BYTEs used block +SeeAlso: #00423,#00424 +--------Q-151017----------------------------- +INT 15 - TopView - UNIMPLEMENTED IN DV 2.x + AX = 1017h +Return: pops up "Programming error" window in DV 2.x +--------Q-151018----------------------------- +INT 15 - TopView - "LOCATE" - FIND WINDOW AT A GIVEN SCREEN LOCATION + AX = 1018h + BH = column + BL = row + ES = segment of object handle for window below which to search + 0000h = start search with topmost window +Return: ES = segment of object handle for window which is visible at the + indicated position, or covered by indicated window + 0000h if no window +SeeAlso: AX=1023h,AX=1024h +--------Q-151019----------------------------- +INT 15 - TopView - "SOUND" - MAKE TONE + AX = 1019h + BX = frequency in Hertz (0000h = silence) + CX = duration in clock ticks (18.2 ticks/sec) +Return: immediately, tone continues to completion +Notes: if another tone is already playing, the new tone does not start until + completion of the previous one. Up to 32 tones may be queued before + the process is blocked until a note completes. + in DV 2.00, the lowest tone allowed is 20 Hz + if CX = 0, the current note is cancelled; if BX = 0 as well, all queued + notes are also cancelled +SeeAlso: AH=82h"HUNTER",INT 16/AH=73h +--------Q-15101A----------------------------- +INT 15 - TopView - "OSTACK" - SWITCH TO TASK'S INTERNAL STACK + AX = 101Ah +Return: stack switched +Notes: this call may not be nested; a second call must be preceded by a call + to "USTACK" (AX=1025h) + while TopView requires many API calls to be executed while on the + task's internal stack, DESQview allows those calls to be executed + regardless of the current stack +SeeAlso: AX=1025h +--------Q-15101B----------------------------- +INT 15 - TopView - "BEGINC" - BEGIN CRITICAL REGION + AX = 101Bh +Return: task-switching temporarily disabled +Notes: will not task-switch until "ENDC" (AX = 101Ch) called unless task + voluntarily releases the CPU (upon regaining the CPU, task-switching + will again be disabled) + suspends the caller until DOS is free +SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AX=DE13h,AX=DE1Ch,INT 2F/AX=1681h +SeeAlso: INT 60/DI=0602h +--------Q-15101C----------------------------- +INT 15 - TopView - "ENDC" - END CRITICAL REGION + AX = 101Ch +Return: task-switching enabled +Note: this API call may be made from within a hardware interrupt handler +SeeAlso: AX=101Bh,AX=DE13h,AX=DE1Bh,INT 2F/AX=1682h,INT 60/DI=0603h +--------Q-15101D----------------------------- +INT 15 - TopView - "STOP" - STOP TASK + AX = 101Dh + ES = segment of object handle for task to be stopped + (== handle of main window for that task) +Return: indicated task will not get any CPU time until restarted with AX=101Eh +Note: once a task has been stopped, additional "STOP"s are ignored +BUG: in DV 2.00, this function is ignored unless the indicated task is the + current task +SeeAlso: AX=101Eh,AX=102Bh,AH=12h"VMiX",INT 21/AH=81h +--------Q-15101E----------------------------- +INT 15 - TopView - "START" - START TASK + AX = 101Eh + ES = segment of object handle for task to be started + (== handle of main window for that task) +Return: indicated task is started up again +Note: once a task has been started, additional "START"s are ignored +SeeAlso: AX=101Dh,AX=102Bh,INT 21/AH=82h +--------Q-15101F----------------------------- +INT 15 - TopView - "DISPEROR" - POP-UP ERROR WINDOW + AX = 101Fh + BX = bit fields + bits 0-12: number of characters to display + bits 13,14: which mouse button may be pressed to remove window + 00 = either + 01 = left + 10 = right + 11 = either + bit 15: beep if 1 + ES:DI -> text of message + CH = width of error window (0 = default) + CL = height of error window (0 = default) + DX = segment of object handle +Return: BX = status: 1 = left button, 2 = right, 27 = ESC pressed +Note: window remains on-screen until ESC or indicated mouse button is pressed +--------Q-151020----------------------------- +INT 15 - TopView - UNIMPLEMENTED IN DV v2.00+ + AX = 1020h +Return: pops up "Programming error" window in DV v2.00+ +--------Q-151021----------------------------- +INT 15 - TopView - "PGMINT" - INTERRUPT ANOTHER TASK + AX = 1021h + BX = segment of object handle for task to interrupt (not self) + DX:CX -> FAR routine to jump to next time task is run +Return: nothing +Notes: the FAR routine is entered with the current ES, DS, SI, DI, and BP + values, using the task's internal stack (see AX=101Ah); only SS:SP + needs to be preserved + multiple PGMINTs to a single task are processed last-in first-out + if the other task is in a DOS or DV API call, the interruption will + occur on return from that call +--------Q-151022BX0000----------------------- +INT 15 - TopView - "GETVER" - GET VERSION + AX = 1022h + BX = 0000h +Return: BX nonzero, TopView or compatible loaded + (BL = major version, BH = minor version) +Notes: TaskView returns BX = 0001h, DESQview v2.00+ returns BX = 0A01h +--------Q-151023----------------------------- +INT 15 - TopView - "POSWIN" - POSITION WINDOW + AX = 1023h + BX = segment of object handle for parent window within which to + position the window (0 = full screen) + ES = segment of object handle for window to be positioned + DL = general window position (see #00426) + CH = number of columns to offset from position specified by DL + CL = number of rows to offset from position specified by DL +Return: nothing + +Bitfields for TopView general window position: +Bit(s) Description (Table 00426) + 0,1 horizontal position + 00 = current, 01 = center, 10 = left, 11 = right + 2,3 vertical position + 00 = current, 01 = center, 10 = top, 11 = bottom + 4 don't redraw screen if set + 5-7 not used +--------Q-151024----------------------------- +INT 15 - TopView - "GETBUF" - GET VIRTUAL SCREEN INFO + AX = 1024h + BX = segment of object handle for window (0000h = use default) +Return: ES:DI -> virtual screen + CX = size of virtual screen in bytes + DL = screen type + 00h text screen + 01h graphics screen +SeeAlso: INT 10/AH=FEh,INT 21/AH=2Bh/CX=4445h +--------Q-151025----------------------------- +INT 15 - TopView - "USTACK" - SWITCH BACK TO USER'S STACK + AX = 1025h +Return: stack switched back +Notes: call only after having switched to internal stack with AX=101Ah + while TopView requires many API calls to be executed while on the + task's private stack, DESQview allows those calls to be executed + regardless of the current stack +SeeAlso: AX=101Ah +--------Q-1510------------------------------- +INT 15 - DESQview (TopView???) - UNIMPLEMENTED IN DV 2.x + AH = 10h + AL = 26h thru 2Ah +Return: pops up "Programming error" window in DV 2.x +--------Q-15102B----------------------------- +INT 15 - DESQview v2.00+ (TopView???) - "POSTTASK" - AWAKEN TASK + AX = 102Bh + BX = segment of object handle for task +Return: nothing +Note: forces a task which is waiting on its objectq to continue by placing + the handle for the task on the objectq +SeeAlso: AX=101Dh,AX=101Eh,INT 21/AH=82h +--------Q-15102C----------------------------- +INT 15 - DESQview v2.00+ - "NEWPROC" - START NEW APPLICATION IN NEW PROCESS + AX = 102Ch + ES:DI -> contents of .PIF/.DVP file (see #00427) + BX = size of .PIF/.DVP info +Return: BX = segment of object handle for new task + 0000h on error +SeeAlso: AX=DE24h,INT 21/AH=4Bh + +Format of .PIF/.DVP file: +Offset Size Description (Table 00427) + 00h BYTE reserved (0) + 01h BYTE checksum of bytes 02h through 170h + 02h 30 BYTEs blank-padded program title + 20h WORD maximum memory to allocate to partition in KB + 22h WORD minimum memory required in KB + 24h 64 BYTEs ASCIZ program pathname + 64h BYTE default drive letter ('A',...) + 65h 64 BYTEs ASCIZ default directory name + A5h 64 BYTEs ASCIZ program parameters + E5h BYTE initial screen mode (0-7) (also see offset 189h) + E6h BYTE number of text pages used + E7h BYTE number of first interrupt to save + E8h BYTE number of last interrupt to save + E9h BYTE rows in virtual screen buffer + EAh BYTE columns in virtual screen buffer + EBh BYTE initial window position, row + ECh BYTE initial window position, column + EDh WORD system memory in KB + EFh 64 BYTEs ASCIZ shared program name +12Fh 64 BYTEs ASCIZ shared program data file +16Fh BYTE program flags 1 (see #00428) +170h BYTE flags2 + bit 6: uses command-line parameters in field at A5h + bit 5: swaps interrupt vectors +---information unique to .DVP files--- +171h 2 BYTEs keys to use on open menu +173h WORD size of script buffer in bytes +175h WORD automatically give up CPU after this many tests for keyboard + input in one clock tick (default 0 = never) +177h BYTE nonzero = "uses own colors" +178h BYTE nonzero if application swappable +179h 3 BYTEs reserved (0) according to Quarterdeck documentation + in actual .DVP files, frequently 01h +17Ch BYTE nonzero to automatically close on exit (see also #00430) +17Dh BYTE nonzero if copy-protect floppy is required +---information unique to DESQview 2.0+--- +17Eh BYTE .DVP version number + 00h DESQview v1.2+ + 01h DESQview v2.0+ + 02h DESQview v2.2+ +17Fh BYTE reserved (0) +180h BYTE initial number of rows in physical window +181h BYTE initial number of columns in physical window +182h WORD maximum expanded memory to allow, in KB +184h BYTE DVP program flags 3 (see #00429) +185h BYTE keyboard conflict level (0-4 for DV<2.26, 00h-0Fh for DV2.26+) + (see #00431) +186h BYTE number of graphics pages used +187h WORD extra system memory size +189h BYTE initial screen mode (FFh = default) (overrides offset E5h) +---information unique to DESQview 2.2+--- +18Ah BYTE serial port usage + FFh uses all serial ports + 00h no serial ports + 01h only COM1 + 02h only COM2 +18Bh BYTE DVP program flags 4 (see #00430) +18Ch BYTE protection level for 386 machines +18Dh 19 BYTEs reserved (0) for regular DESQview +---information unique to DESQview/X 1.0--- +18Dh BYTE X flags + bits 3-7: unused (0) + bit 2: don't display wait message when opening window + bit 1: don't display DOS window + bit 0: (XNEWPROC) use DOS client layer (DOS-to-X) + (NEWPROC) inherit DOS client layer usage +18Eh BYTE X keyboard behavior (0-3) +18Fh BYTE font scaling + 00h fixed fonts + 01h scalable fonts +190h 10 BYTEs reserved (0) +19Ah WORD length of data follownig XDVP signature +19Ch 4 BYTEs signature "XDVP" +1A0h N BYTEs list of variable length records (see #00432) + +Bitfields for .PIF/.DVP program flags 1: +Bit(s) Description (Table 00428) + 7 writes text directly to screen + 6 runs in foreground only (see also #00427 offset 184h) + 5 uses math coprocessor + 4 accesses system keyboard buffer directly + 3-1 reserved (0) + 0 swappable +SeeAlso: #00427,#00429,#00430 + +Bitfields for .DVP program flags 3: +Bit(s) Description (Table 00429) + 7 automatically assign window position + 5 maximum memory value has been specified + 4 disallow "Close" command + 3 foreground-only when doing graphics + set by DV 2.3+ when "Runs in Background" = "D" (undoc) + 2 don't virtualize (see also #00430) + 1 foreground-only during DOS calls + set by DV 2.3+ when "Runs in Background" = "D" (undoc) +SeeAlso: #00427,#00428,#00430 + +Bitfields for .DVP program flags 4: +Bit(s) Description (Table 00430) + 7 automatically close application on exit if .COM or .EXE specified + (see also #00427 offset 17Ch) + 6 swappable if not using serial ports + 5 start program with window hidden (v2.26+) + 4 start program in background (v2.26+) + 3 virtualize text (see also #00429) + 2 virtualize graphics (see also #00429) + 1 share CPU when foreground + 0 share EGA when foreground and zoomed +SeeAlso: #00427,#00428,#00429 + +Bitfields for DESQview keyboard conflict level: +Bit(s) Description (Table 00431) + 3 save/restore entire INT 09 handler state every taskswtch + 2 take special precautions for programs which read the BIOS keyboard + buffer directly from memory + 1 never indicate keystroke available during scripts/xfers + 0 only indicate keystroke available every sixth poll +SeeAlso: #00427 + +Format of DESQview/X variable length record: +Offset Size Description (Table 00432) + 00h WORD length of following record, 0000h if end of record list + 02h BYTE record type + 01h script filename, up to 64 characters + 02h command-line parameters (allows >64 characters on cmdline) + 03h environment inheritance + 04h environment string + 05h starting window position +---types 01h,02h,04h--- + 03h N BYTEs ASCII data +---type 03h--- + 03h BYTE inheritance + 00h do not inherit + 01h inherit environment +---type 05h--- + 03h N BYTEs ASCII copy of fields as typed into DVPMAN, separated by commas: + starting row, starting column, starting height, starting width +Note: if there are multiple occurrences of record types 01h, 02h, or 03h, + only the last instance of each type is used; multiple occurrences of + type 04h are concatenated +SeeAlso: #00427 +--------Q-15102D----------------------------- +INT 15 - DESQview v2.00+ - "KMOUSE" - KEYBOARD MOUSE CONTROL + AX = 102Dh + BL = subfunction + 00h determine whether using keyboard mouse + Return: BL = 00h using real mouse + 01h using keyboard mouse + 01h turn keyboard mouse on + 02h turn keyboard mouse off +SeeAlso: INT 33/AX=0024h +--------Q-15102E----------------------------- +INT 15 - DESQview v2.40+ - ALLOCATE SYSTEM MEMORY + AX = 102Eh + BX = number of bytes +Return: AX = status + 0000h successful + ES:DI -> allocated system memory (see #00433) + 0001h failed + ES:DI = 0000h:0000h +Note: under DV 2.42, this call is identical to AX=1001h +SeeAlso: AX=1001h,AX=1002h,AX=DE0Ch + +Format of DESQview system memory block header: +Offset Size Description (Table 00433) + 00h WORD segment of next header or 0000h + 02h WORD segment of previous header or 0000h + 04h WORD size of block in paragraphs, including header + 06h BYTE availability flag (00h in use, 01h free) +Note: this header is located one paragraph before the memory block proper +SeeAlso: #00423 +--------Q-1511------------------------------- +INT 15 - TopView commands + AH = 11h + AL = various (except 17h) +Return: varies by function +Note: in DESQview 2.x, these function calls are identical to AH=DEh, so + see those below +SeeAlso: AX=DE00h,AX=DE22h,AX=DE30h +--------T-1511------------------------------- +INT 15 - VMiX - "sys_system" - EXECUTE SHELL SYSTEM COMMANDS + AH = 11h + STACK: DWORD pointer to ASCIZ string containing a VMiX shell + request (max len = 127) +Return: AX = status (SYS_OK or SYS_ERROR) +SeeAlso: AH=0Ch"VMiX" +--------T-1511------------------------------- +INT 15 - MultiDOS Plus - TURN OFF AltZ TOGGLE + AH = 11h +Note: disables the Alt-Z MultiDOS command/program-selection hotkey +SeeAlso: AH=12h"MultiDOS" +Index: hotkeys;MultiDOS Plus +--------Q-151117BX0000----------------------- +INT 15 - DESQview v2.20+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT + AX = 1117h + BX = 0000h get current mapping context without setting + nonzero set new mapping context +Return: BX = mapping context in effect before call + interrupts enabled +Notes: this function differs from AX = DE17h for DESQview v2.20 through 2.25 + mapping contexts determine conventional-memory addressability; setting + a mapping context ensures that the associated program and data areas + are in memory for access. Usable by drivers, TSRs and shared + programs. + caller need not be running under DESQview, but must ensure that the + stack in use will not be mapped out by the call +SeeAlso: AX=DE17h,INT 2F/AX=1685h +--------m-1511DE----------------------------- +INT 15 - DESQview - QEXT.SYS - INSTALLATION CHECK + AX = 11DEh +Return: CF clear if installed + AX = segment at which QEXT.SYS is located +Desc: QEXT.SYS is Quarterdeck's HMA manager for DESQview; more recent + versions also implement the XMS standard +Note: a private entry point (see #00434) may be found by searching the + beginning of the returned segment for the signature string + "QUARTERDECK EXTENDED MEMORY MANAGER 286"; the word immediately + prior to the signature contains the QEXT version number in BCD, + and the word prior to that contains the offset within the QEXT + code segment of the private entry point +SeeAlso: INT 2F/AX=4310h"XMS",INT 67/AH=3Fh + +(Table 00434) +Call QEXT.SYS private entry point with: + AH = 00h ??? + AH = nonzero ??? +--------T-1512------------------------------- +INT 15 - VMiX - "sys_sleep" - PUT PROCESS TO SLEEP + AH = 12h + STACK: WORD process ID +Return: AX = status (SYS_OK or SYS_ERROR) +SeeAlso: AH=03h"MultiDOS",AX=101Dh,AH=13h"VMiX" +--------T-1512------------------------------- +INT 15 - MultiDOS Plus - TURN ON AltZ TOGGLE + AH = 12h +Note: enables the Alt-Z MultiDOS command/program-selection hotkey +SeeAlso: AH=11h"MultiDOS" +Index: hotkeys;MultiDOS Plus +--------Q-1512--BH00------------------------- +INT 15 - TopView - SEND MESSAGE - "HANDLE" - RETURN OBJECT HANDLE + AH = 12h + BH = 00h + BL = which handle to return + 00h handle in DWORD on top of stack + 01h current task's window handle + 02h given task's mailbox handle (task's handle on stack) + 03h current task's mailbox handle + 04h given task's keyboard handle (task's handle on stack) + 05h current task's keyboard object handle + 06h given task's OBJECTQ handle (task's handle on stack) + 07h current task's OBJECTQ handle + 08h \ + thru > return 0000:0000 under DV < 2.26 + 10h / + 0Ch (2.26+) task owning object with handle in DWORD on top of stack + 0Dh (2.26+) task handle of owner (parent) of current task +Return: DWORD on top of stack is object handle +Note: BL=0Ch,0Dh returns 00000000h if the object is not open (keyboard, + mailbox, panel, pointer, and timer objects) or is an orphan (task, + window) +SeeAlso: AH=12h/BH=02h,AH=12h/BH=80h +--------Q-1512--BH01------------------------- +INT 15 - TopView - SEND MESSAGE - "NEW" - CREATE NEW OBJECT + AH = 12h + BH = 01h + BL = object type to create (see #00435) + STACK: (only if window object or WINDOW class) + DWORD address to jump to (no new task if high word == 0) + DWORD (reserved) 0 = non-task window, FFFFh = task window + DWORD bytes for task's private stack (FFFFh == default of 0100h) + DWORD bytes system memory for input buffer for READ/READN + (0 == none, -1 == default--same as logical window size) + DWORD window size, columns + DWORD window size, rows + DWORD length of window title + DWORD address of window title +Return: DWORD on top of stack is new object handle +Notes: if a new task is created, it is started with + AX = BX = SI = DI = BP = 0 + DX:CX = handle of parent task + DS = ES = SS = segment of private stack (and new task's handle) + new windows are orphans, inherit the colors/hidden status of the + creating task's window, and are placed in the upper left hand corner + of the screen but not automatically redrawn + new keyboards are closed, and have all object bits cleared except for + the hardware cursor bit +SeeAlso: AH=12h/BH=02h,AH=12h/BH=81h + +(Table 00435) +Values for TopView/DESQview object type (for creation): + 00h (DV 2.0x only) handle is DWORD on top of stack + 01h (DV 2.0x only) use task's window handle + 02h (DV 2.0x only) given task's mailbox (task's handle on stack) + 03h (DV 2.0x only) current task's mailbox + 04h (DV 2.0x only) given task's keyboard (task's handle on stack) + 05h (DV 2.0x only) current task's keyboard object + 08h WINDOW class + 09h MAILBOX class + 0Ah KEYBOARD class + 0Bh TIMER object (counts down 32-bit time in 10ms increments) + 0Fh POINTER object + 10h PANEL object +--------Q-1512--BH02------------------------- +INT 15 - TopView - SEND MESSAGE - "FREE" - FREE AN OBJECT + AH = 12h + BH = 02h + BL = object + 00h handle in DWORD on top of stack + window: close window and free + timer: free timer + panel: free panel object + pointer: free pointer + 01h task's window handle - kills task, never returns + 02h given task's mailbox (task's handle on top of stack) + 03h current task's mailbox + 04h given task's keyboard (task's handle on top of stack) + 05h current task's keyboard object +Return: STACK popped if handle passed on stack +Notes: when a window is freed, its keyboard and pointer objects are freed; + task windows also free any mailbox, objectq, and panel objects held + by the task and any child tasks + if the keyboard being freed is the default keyboard for a task, this + call is equivalent to CLOSE + panel and pointer objects are automatically closed if open +SeeAlso: AH=12h/BH=01h,AH=12h/BH=0Dh,AH=12h/BH=82h +--------Q-1512--BH03------------------------- +INT 15 - TopView - SEND MESSAGE - "ADDR" - GET HANDLE OF MESSAGE SENDER + AH = 12h + BH = 03h + BL = object + 00h mailbox handle in DWORD on top of stack + 02h sender of last msg read from mailbox (task's handle on stack) + 03h sender of last msg read from current task's mailbox +Return: DWORD on stack is task handle of message sender +SeeAlso: AH=12h/BH=00h,AH=12h/BH=83h +--------Q-1512--BH03------------------------- +INT 15 - DESQview v2.26+ - "CONNECT" - CONNECT TWO WINDOWS + AH = 12h + BH = 03h + BL = window to be connected + 00h handle of window to be attached in DWORD on top of stack + 01h attach current task's main window + STACK: DWORD handle of window to attach to or 00000000h to detach +Return: STACK popped +Notes: when two windows are connected, both will move if the user moves either + multiple windows may be attached to a single window, but each window + may only be attached to one window at a time +SeeAlso: AH=12h/BH=83h +--------Q-1512--BX0300----------------------- +INT 15 - TopView - SEND MESSAGE - "DIR" - GET PANEL FILE DIRECTORY + AH = 12h + BX = 0300h + STACK: DWORD handle of panel object (see #00436) +Return: STACK: DWORD length of directory (always multiple of 14 bytes) + DWORD address of directory +Note: a null string is returned if the object is not open +SeeAlso: AH=12h/BX=0400h"APPLY",AH=12h/BH=83h + +Format of TopView panel file: +Offset Size Description (Table 00436) + 00h 2 BYTEs C0h C3h + 02h BYTE number of panels in file + 03h for each panel in file: + 8 BYTEs blank-padded panel name + DWORD panel offset in file + WORD panel length + data for panels (each consists of one or more window/query/manager + streams); first byte of each panel must be 1Bh, fifth byte must be + E5h +--------Q-1512--BH04------------------------- +INT 15 - TopView - SEND MESSAGE - "READ" - READ NEXT LOGICAL LINE OF WINDOW + AH = 12h + BH = 04h + BL = window to read from + 00h handle is DWORD on top of stack + 01h use calling task's default window + 0Ch (DV 2.26+) default window of task owning handle on top of stack + 0Dh (DV 2.26+) default window of parent task of current task +Return: STACK: DWORD number of bytes read + DWORD address of buffer +Notes: reading starts at the current logical cursor position; the cursor is + updated to point at the character following the last one read + any translucent blanks (FFh) which are visible on screen are changed + to the character which is seen through them + the string produced by the read is placed in an input buffer which may + be reused by the next READ or READN of a window + window stream opcodes D8h and D9h determine whether the read returns + characters or attributes +SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=12h,AH=12h/BH=84h +--------Q-1512--BH04------------------------- +INT 15 - TopView - SEND MESSAGE - "READ" - GET NEXT RECORD FROM OBJECT + AH = 12h + BH = 04h + BL = object + 00h handle is DWORD on top of stack + mailbox: wait for and get next message + keyboard: wait for and get pointer to next input buffer + pointer: wait for and get next message + 02h get next message from mailbox (task's handle on top of stack) + 03h get next message from current task's mailbox + 04h get the next input from keyboard (handle on top of stack) + 05h get the next input from task's default keyboard + 06h wait for input from any object in OBJECTQ (handle on stack) + 07h wait for input from any object in task's default OBJECTQ +Return: STACK: (if objectq) DWORD handle of object with input + (otherwise) DWORD number of bytes + DWORD address of pointer message (see #00437) +Notes: for a keyboard in keystroke mode, the input buffer is a single byte + containing the character code as returned by the BIOS; the BIOS scan + code is available via the STATUS call if the character is zero + for a keyboard in field mode, the input buffer format is determined + by the field table header for the window the keyboard is attached to + keyboard input buffers and mailbox message buffers may be invalidated + by the next READ, ERASE, CLOSE, or FREE message to the same object +SeeAlso: AH=12h/BH=05h"OBJECT",AH=12h/BH=84h + +Format of DESQview pointer message: +Offset Size Description (Table 00437) + 00h WORD row + 02h WORD column + 04h BYTE status (see #00438) + 05h BYTE field number or zero (APILEVEL >= 2.00 only) + +Bitfields for DESQview pointer status: +Bit(s) Description (Table 00438) + 7-2 number of clicks-1 if multiple-click mode active + 7 set when press/release mode active and button pressed + 6 set when press/release mode active and button released + 1-0 button pressed (00=none,01=button1,10=button2) +SeeAlso: #00437 +--------Q-1512--BX0400----------------------- +INT 15 - TopView - SEND MESSAGE - "READ" - WAIT FOR TIMER TO EXPIRE + AH = 12h + BX = 0400h + STACK: DWORD timer's handle +Return: after timer expires + STACK: DWORD time in 1/100 sec after midnight when timer expired +SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=84h +--------Q-1512--BX0400----------------------- +INT 15 - TopView - SEND MESSAGE - "APPLY" - WRITE PANEL TO WINDOW + AH = 12h + BX = 0400h + STACK: DWORD handle of panel object + DWORD window's handle (or 0 for current task's window) + DWORD length of panel name + DWORD pointer to panel name +Return: STACK: DWORD handle of window which was used + DWORD handle of keyboard or 0 +Notes: status of APPLY may be checked with STATUS message + panel MUST have the following format + first byte must be 1Bh (i.e. must start with a stream) + first opcode in stream must be E5h + single byte arg of opcode is interpreted thus: + bits 7,6 11 means create new window + 10 means create new field table for existing window + 01 means use existing window and field table + bit 5 if set, panel contains a field table + (creates a new keyboard and puts it in field mode) + bit 4 if set, panel contains input fields + bit 3 if set, panel contains select fields but no input fields + if the panel contains input or select fields, a keyboard handle is + returned; either the window's current open keyboard or a + newly-created keyboard object. The caller should read that keyboard + to obtain input from the panel. +SeeAlso: AH=12h/BH=84h +--------Q-1512--BH05------------------------ +INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE TO OBJECT + AH = 12h + BH = 05h + BL = object + 00h handle is DWORD on top of stack + timer: start timer to end at a specified time + keyboard: add input buffer to queue + pointer: move pointer icon to specified position + 02h send message by value/status=0 to mbox (task's handle on stack) + 03h send message by value/status=0 to current task's mailbox + 04h add input buffer to KEYBOARD queue (handle on top of stack) + 05h add input buffer to task's default KEYBOARD queue + 06h add an object to OBJECTQ (handle on top of stack) + 07h add an object to task's default OBJECTQ + STACK: (if mailbox) DWORD length + DWORD address + (if keyboard) DWORD status (scan code in keystroke mode) + DWORD length (should be 1 in keystroke mode) + DWORD address + (if objectq) DWORD handle of object to add + (if timer) DWORD 1/100ths seconds since midnight (actually + only accurate to 1/18 sec) + (if pointer) DWORD column relative to origin of window + DWORD row relative to origin of window +Return: STACK popped +Notes: under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h) + the data and status written to a keyboard object must match the format + returned by the keyboard object in the current mode + the pointer position is scaled according to the current scaling factors +SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h +--------Q-1512--BH05------------------------- +INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE STRING TO WINDOW + AH = 12h + BH = 05h + BL = window to write to + 00h DWORD on top of stack is window handle + 01h write string to task's default window + 0Ch (DV 2.26+) default window of task owning handle on top of stack + 0Dh (DV 2.26+) default window of parent of current task + STACK: DWORD object handle if handle passed on stack + DWORD total length of string (high word == 0) + DWORD address of string to display (see #00439) +Return: indicated actions performed + a. non-control characters are displayed (opcodes DEh and DFh control + whether the attributes are left or changed to the current attrib) + b. CR/LF/BS/Tab cause the usual cursor movement + c. ESC starts a data structure with additional commands if following + byte is less than 20h; otherwise, it is written to the window + STACK: DWORD handle of new window if window stream opcode E6h + else nothing (arguments have been popped) +SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h + +Format of stream data structure: +Offset Size Description (Table 00439) + 00h BYTE 1Bh magic value identifying start of stream + 01h BYTE stream type (00h, 01h, 10h, 14h-1Fh legal) + (see #00440,#00446,#00447,#00448) + 02h WORD length of remainder of stream in bytes + var-length fields follow, each an OPCODE followed by + zero or more args + +(Table 00440) +Values for MODE 00h (set or display values) "WINDOW STREAM" opcodes: +Opcodes:args + 00h display 20h blanks with the default attribute + 01h-1Fh display OPCODE blanks with the default attribute + 20h display char with default attribute 20h times + BYTE char to repeat + 21h-3Fh display char with default attribute OPCODE-20h times + BYTE char to repeat + 40h display 20h blanks with specified attribute + BYTE attribute of blanks + 41h-5Fh display OPCODE-40h blanks with specified attribute + BYTE attribute of blanks + 60h display next 20h characters + 20h BYTEs characters to display + 61h-7Fh display next OPCODE-60h characters + N BYTEs characters to display + 80h-87h display N blanks with default attribute + BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE) + [000h means 800h] + 88h-8Fh display N copies of the character + BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE) + [000h means 800h] + BYTE character to repeat + 90h-97h display N blanks with specified attribute + BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE) + [000h means 800h] + BYTE attribute + 98h-9Fh display string at logical cursor pos + BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE) + [000h means 800h] + N BYTEs string to display + A0h set logical cursor row + BYTE row number (0 is top) + A1h set logical cursor column + BYTE column number (0 is leftmost) + A2h set top edge of scrolling region + BYTE row + A3h set left edge of scrolling region + BYTE column + A4h set row of physical window position + BYTE line + A5h set column of physical window position + BYTE column + A6h set height of physical window + BYTE number of rows + A7h set width of physical window + BYTE number of columns + A8h set viewport row + BYTE row + A9h set viewport column + BYTE column + AAh set virtual screen height [contents of window unpredictable after] + BYTE rows + ABh set virtual screen width [contents of window unpredictable after] + BYTE columns + ACh-AEh unused + AFh set compatible/preferred video modes + BYTE compatibility/preference mask + bit 7 compatible with monochrome + bit 6 compatible with color text, EGA/VGA graphics + bit 5 compatible with medium-resolution CGA graphics + bit 4 compatible with high-resolution CGA graphics + bit 3 prefer monochrome + bit 2 prefer color text, EGA/VGA graphics + bit 1 prefer medium-resolution CGA graphics + bit 0 prefer high-resolution CGA graphics + B0h move logical cursor down + BYTE number of rows (signed, negative values move up) + [if rows=0 and hardware cursor owner, update hardware cursor] + B1h move logical cursor right + BYTE number of columns (signed, negative values move left) + [if cols=0 and hardware cursor owner, update hardware cursor] + B2h shift top edge of scrolling region + BYTE number of rows (signed) + B3h shift left edge of scrolling region + BYTE number of columns (signed) + B4h shift physical window down + BYTE number of lines (signed) + B5h shift physical window right + BYTE number of columns (signed) + B6h expand physical window vertically + BYTE number of lines (signed) + B7h expand physical window horizontally + BYTE number of columns (signed) + B8h adjust viewport row + BYTE number of rows (signed) + B9h adjust viewport column + BYTE number of columns (signed) + BAh adjust virtual screen height [contents of window unpredict after] + BYTE number of rows to increase (signed) + BBh adjust virtual screen width [contents of window unpredictbl after] + BYTE number of columns to increase (signed) + BCh-BFh reserved (currently unused) + C0h set logical cursor position + BYTE row number (0 is top border) + BYTE column number (0 is left border) + C1h set top left corner of scrolling region + BYTE row + BYTE column + C2h set physical window pos + BYTE upper left row (no top border if 0) + BYTE upper left column (no left border if 0) + C3h set current window size + BYTE number of rows + BYTE number of columns + C4h set upper left corner of viewport (portion of virtual screen displayed + in window) + BYTE row + BYTE column + C5h set size of virtual screen [contents unpredictable afterwards] + BYTE number of rows + BYTE number of columns + C6h unused + C7h unused + C8h set logical cursor relative to current position + BYTE number of rows to move down (signed) + BYTE number of columns to move right (signed) + [if rows=cols=0 and hardware cursor owner, update hardw cursor] + C9h shift top left corner of scrolling region + BYTE number of rows (signed) + BYTE number of columns (signed) + CAh set window pos relative to current position + BYTE number of rows to shift down (signed) + BYTE number of columns to shift right (signed) + CBh set window size relative to current size + BYTE number of rows to expand (signed) + BYTE number of cols to expand (signed) + CCh shift viewport relative to current position + BYTE rows to shift (signed) + BYTE cols to shift (signed) + CDh resize virtual screen + BYTE number of rows to expand (signed) + BYTE number of columns to expand (signed) + CEh scroll text when using E8h-EBh/F8h-FBh opcodes (default) + CFh scroll attributes when using E8h-EBh/F8h-FBh opcodes + D0h allow window frame to extend beyond screen + D1h always display a complete frame, even if window extends beyond edge of + screen + D2h allow DV to change logical colors on video mode switch (default) + D3h application changes logical attributes + D4h window is visible [must redraw to actually make visible] + D5h window is hidden [must redraw to actually remove] + D6h window has frame (default) + D7h window unframed [must redraw to actually remove frame] + D8h READ/READN will read characters from window (default) + D9h READ/READN will read attributes from window + DAh use logical attributes, which may be remapped (see #00441) + DBh use physical attributes for characters + DCh enable special actions for control characters (default) + DDh disable special control char handling, all chars displayable by BIOS TTY + call + DEh write both character and attribute (default) + DFh write character only, leave attribute untouched + E0h repeat following commands through E1h opcode + BYTE number of times to repeat (00h means 256 times) + E1h end of commands to repeat, start repeating them + E2h set current output color + BYTE color + E3h clear virtual screen from scroll origin to end using current color + E4h redraw window + E5h select menu style + BYTE style (normally 18h) + bits 5,4 = 01 use two-letter menu entries for remainder of + this stream + E5h (panel file only) + BYTE modifier + bits 7,6 = 11 panel stream creates new window + = 10 panel defines new field table for existing window + = 01 panel stream uses existing window & field table + bit 5 = 1 stream contains a field table (create kyboard object) + bit 4 = 1 stream defines input fields (create keyboard object) + bit 3 = 1 stream defines select fields but not input fields + bit 2 = 1 stream defines exclusive input window (DV 2.2) + bit 1 reserved + bit 0 reserved + E6h create new window and perform rest of manipulations in new window + BYTE number of rows + BYTE number of columns + Return: DWORD object handle of new window returned on stack at end + Note: the window is created with a physical size of 0x0 at the + same position as the window to which this stream was sent + E7h no operation + E8h scroll area up (top left corner defined by opcode C1h) + BYTE height + BYTE width + E9h scroll area down (top left corner defined by opcode C1h) + BYTE height + BYTE width + EAh scroll area left (top left corner defined by opcode C1h) + BYTE height + BYTE width + EBh scroll area right (top left corner defined by opcode C1h) + BYTE height + BYTE width + ECh set logical attributes for window contents + BYTE video modes command applies to + bit 7 monochrome + bit 6 color text, EGA/VGA graphics + bit 5 medium-resolution CGA graphics + bit 4 high-resolution CGA graphics + BYTE which attributes to set + bit 7 if set, copy single following byte to indicated attribs + bits 4-6 number of first attribute to change - 1 + bits 0-3 number of consecutive attributes to change + N BYTEs new attributes + EDh set logical attributes for window frame + BYTE video modes command applies to (also see opcode ECh) + BYTE which attributes to set + bit 7 if set, copy single following byte to indicated attrs + bits 4-6 number of first attribute to change - 1 + bits 0-3 number of consecutive attributes to change + N BYTEs new attributes + attributes + 1 = top left corner + 2 = top right corner + 3 = bottom left corner + 4 = bottom right corner + 5 = top edge + 6 = bottom edge + 7 = left edge + 8 = right edge + EEh set characters for window frame + BYTE video modes command applies to (also see opcode ECh) + BYTE which characters to set + bit 7 if set, copy single following byte to indicated chars + bits 4-6 number of first character to change - 1 + bits 0-3 number of consecutive characters to change + N BYTEs new chars (same relative position as attributes above) + EFh set window name + BYTE length of name (should be in range 0 to logical screen width) + N BYTEs name + F0h clear input field to blanks + BYTE field number + F1h fill input field with character + BYTE field number + BYTE char + F2h set color of input field + BYTE field number (1-N) + BYTE attribute + F3h set initial contents of input field + BYTE field number (1-N) + N BYTEs enough chars to exactly fill field as defined by op FFh + F4h position cursor to start of specific input field + BYTE field number (1-N) + F5h change field table entry + BYTE field number + 7-8 BYTEs field table entry (also see opcode FFh below) + F6h set field type + BYTE field number + BYTE type + 00h inactive + 40h output field + 80h input field + C0h deselected field + C2h selected field + F7h "broadcast write" write data to fields with program output bit set in + the field table entry, in field number order + N BYTEs (total length of all program output fields) + F8h scroll field up a line + BYTE field number + F9h scroll field down a line + BYTE field number + FAh scroll field left + BYTE field number + FBh scroll field right + BYTE field number + FCh set field table header + 6 BYTEs field table header (see #00442) + FDh reset modified bit for all fields + FEh reset selected and modified bits for all fields + FFh set up input fields + 6 BYTEs table header (see #00442) + 7/8N BYTEs the field table entries, one for each field (see #00444) + Note: DESQview uses and updates the actual copy of the information + which is contained in the stream. Thus this info must remain + intact until after the data entry is complete. +SeeAlso: #00439,#00446 + +(Table 00441) +Values for TopView logical attributes: + 01h normal text + 02h highlighted normal text + 03h help text + 04h highlighted help text + 05h error message + 06h highlighted error message + 07h emphasized text + 08h marked text + 9-16 reverse video versions of 1-8 +SeeAlso: #00440 + +Format of TopView field table header: +Offset Size Description (Table 00442) + 00h BYTE number of fields (must be <= existing number of fields) + 01h BYTE screen behavior bits (see #00443) + 02h BYTE current input field (updated by DESQview) + 03h BYTE current select field (updated by DESQview) + 04h BYTE attribute for select fields when they are pointed at + 05h BYTE attribute for select fields which have been selected +SeeAlso: #00440,#00444 + +Bitfields for TopView screen behavior bits: +Bit(s) Description (Table 00443) + 7 reserved + 6 menu items may be selected via keyboard + 5 left mouse button in "status" mode (press anywhere in window + immediately returns control to application) + 4 right mouse button in "status" mode + 3 select fields return contents or blanks rather than 'Y' or 'N' + 2 modified bits reset on return to application + 1-0 type of data returned + 00 no data returned on read of keyboard + 01 data returned as array of characters containing all fields packed + together, with no field numbers + 10 data returned as numbered variable-length records for all fields + 11 data returned as numbered variable-length records for the fields + which were modified +SeeAlso: #00440 + +Format of TopView field table entry: +Offset Size Description (Table 00444) + 00h BYTE start row \ + 01h BYTE start column \ if menu selection and start is to + 02h BYTE end row / right or below end, select from kbd only + 03h BYTE end column / + 04h BYTE field type (see #00445) + 05h BYTE modifier + if type is fill-in, then bit flags to determine behavior + bit 7 automatically enter CR when field full + bit 6 move to next field when current field is full + bit 5 enter text from right end (for numbers) + bit 4 force input to uppercase + bit 3 clear old contents on first keystroke + bit 2 input returned when cursor moves out of + modified field ("validate", API level 2.02+) + bit 1 reserved + bit 0 reserved + if select field, first key to press to activate + 00h if have to point-&-click or is an extended-ASCII + keystroke (only if two-key menus enabled) + 06h BYTE (select field only) normal color of field + 07h BYTE second key for select field. This byte is present iff + two-letter menu entries selected with opcode E5h, and in that + case is present regardless of field type +SeeAlso: #00442 + +Bitfields for TopView field type: +Bit(s) Description (Table 00445) + 7,6 field class + 00 inactive (non-entry) field + 01 echos keystrokes input to make menu selection + 10 fill-in field + 11 select field + 5 field can be filled by broadcast write (F7h opcode) + 4 reserved + 3 reserved + 2 reserved + 1 set if field selected + 0 set if field modified +SeeAlso: #00444 + +(Table 00446) +Values for MODE 01h "QUERY STREAM" opcodes: +(valid only for those opcodes listed here) + A0h return logical cursor row in next byte + A1h return logical cursor column in next byte + A2h return top row of scrolling region in next byte + A3h return left column of scrolling region in next byte + A4h return row of physical window origin in next byte + A5h return column of physical window origin in next byte + A6h return height of physcial window in next byte + A7h return width of physical window in next byte + A8h return row of viewport origin in next byte + A9h return column of viewport origin in next byte + AAh return height of virtual screen in next byte + ABh return width of virtual screen in next byte + AFh return current video mode in next byte + C0h return current logical cursor position in next two bytes + C1h return top left corner of scrolling region in next two bytes + C2h return current window position in next two bytes + C3h return current window size in next two bytes + C4h return current viewport origin in next two bytes + C5h return current virtual screen size in next two bytes + D0h \ overwritten with D0h if frames may fall off screen edge + D1h / D1h if frames always displayed entirely + D2h \ overwritten with D2h if DESQview controls color palette + D3h / D3h if application changes color palette + D4h \ overwritten with D4h if window visible + D5h / D5h if window hidden + D6h \ overwritten with D6h if window has frame + D7h / D7h if window unframed + D8h \ overwritten with D8h if reading characters from window + D9h / D9h if reading attributes from window + DAh \ overwritten with DAh if using logical attributes + DBh / DBh if using physical attributes + DCh \ overwritten with DCh if TTY control char interpretation on + DDh / DDh if TTY control char interpretation off + DEh \ overwritten with DEh if writing both characters and attributes + DFh / DFh if leaving attributes untouched + E2h return current color in next byte + ECh get logical attributes for window contents + BYTE execute call if currently in specified video mode + bit 7 monochrome + bit 6 color text, EGA/VGA graphics + bit 5 medium-resolution CGA graphics + bit 4 high-resolution CGA graphics + BYTE which attributes to get + bit 7 unused??? + bits 4-6 first attribute to get - 1 + bits 0-3 number of consecutive attributes + N BYTEs buffer to hold attributes + EDh get logical attributes for window frame + BYTE execute call if currently in video mode (also see opcode ECh) + BYTE which attributes to get + bit 7 unused??? + bits 4-6 first attribute to get - 1 + bits 0-3 number of consecutive attributes + N BYTEs buffer to hold attributes + EEh get characters for window frame + BYTE execute call if currently in video mode (also see opcode ECh) + BYTE which attributes to get + bit 7 unused??? + bits 4-6 first char to get - 1 + bits 0-3 number of consecutive chars + N BYTEs buffer to hold chars + EFh return first N characters of current window name + BYTE max length of returned name + N BYTEs buffer to hold window name + F3h return contents of specified field + BYTE field number + N BYTEs buffer to hold field contents (size equal to field size) + F5h get field table entry + BYTE field number + 7-8 BYTEs buffer to hold field table entry (see #00444) + Notes: DV < 2.26 always returns 7 bytes + DV 2.26+ w/ APILEVEL < 2.26 returns 8 bytes iff field table + is using 8-byte entries and eighth byte after F5h is E7h + (NOP); otherwise, 7 bytes are returned + DV 2.26+ w/ APILEVEL > 2.26 returns 7 or 8 bytes depending + on the field table entry size + F6h get type of a field + BYTE field number + BYTE type + FCh get field table header + 6 BYTEs buffer to store field table header (see #00442) +SeeAlso: #00439,#00447 + +(Table 00447) +Values for MODE 10h "MANAGER STREAM" opcodes (valid only for those listed): + 00h allow window to be moved horizontally + 01h allow window to be moved vertically + 02h allow window to change width + 03h allow window to change height + 04h allow window to be scrolled horizontally + 05h allow window to be scrolled vertically + 06h allow "Close Window" menu selection for application + 07h allow "Hide Window" menu selection for application + 08h allow application to be suspended ("Rearrange/Freeze") + 0Eh allow "Scissors" menu + 10h allow DESQview main menu to be popped up + 11h allow "Switch Windows" menu + 12h allow "Open Window" menu + 13h allow "Quit" menu selection + 20h-33h opposite of 00h-13h, disallow specified action + 40h notify if horizontal position of window changes + 41h notify if vertical position of window changes + 42h notify if width of window changes + 43h notify if height of window changes + 44h notify if window scrolled horizontally + 45h notify if window scrolled vertically + 46h notify if window is closed--program has to clean up and exit itself + 47h notify if window is hidden + 48h notify if "?" on main menu selected + 49h notify if pointer message sent to window + 4Ah notify if window is placed in foreground + 4Bh notify if window is placed in background + 4Ch notify if video mode changes + 4Dh notify if "Scissors" menu "Cut" option selected + 4Eh notify if "Scissors" menu "Copy" option selected + 4Fh notify if "Scissors" menu "Paste" option selected + 50h notify if DESQview main menu about to pop up + 51h notify if DESQview main menu popped down + 60h-71h opposite of 40h-51h: don't notify on specified event + 84h attach window to parent task's window (both move together) + 85h detach window from parent task's window (may move independently) + 86h disable background operation for application + 87h enable running in background + 88h set minimum size of physical window + BYTE rows + BYTE columns + 89h set maximum size of physical window + BYTE rows + BYTE cols + 8Ah set primary asynchronous notification routine (see #00449) + DWORD address of routine, 0000h:0000h means none (see also below) + 8Bh set async notification parameter + DWORD 32-bit value passed to 8Ah async routine in DS:SI + ACh (DV2.2+) perform regular select field attribute processing + ADh (DV2.2+) protect attributes in selected field from being lost + AEh make window default notify window for owning app (API level 2.00+) + AFh set selected field marker character + BYTE character to display at left edge of selected fields + BCh set standard field processing mode + BDh set alternate field processing mode (enables cursor pad for menus) + BEh disables changing reverse logical attributes with ECh opcode + BFh enables changing reverse logical attributes with ECh opcode + C0h make current window topmost in system + C1h force current process into foreground + C2h make current window topmost in process + C3h position mouse pointer relative to origin of current field + BYTE rows below upper left corner of field + BYTE columns to right of upper left corner of field + C4h position mouse pointer relative to origin of given field + BYTE field number + BYTE rows below upper left corner of field + BYTE columns to right of upper left corner of field + C5h orphan current window (also hides it) + Note: must be last in stream; all subsequent commands ignored + C6h show all windows for this process + C7h hide all windows for this process + C8h suspend process and hide all its windows + C9h force current process into background + CAh make current window bottom-most in process + CBh cancel current window manager operation, remove DV menu, give control + to topmost application + CCh orphan window and give it to the system for use as paste data + CEh reorder windows + DWORD pointer to null-terminated list of words; each word is segment + of object handle for a window + FFh no operation +SeeAlso: #00439,#00446,#00448 + +(Table 00448) +Values for MODES 14h to 1Fh "USER STREAMS": + normally NOPs, but may be defined by SETESC message to invoke FAR + routines, one for each mode number + on entry to handler, + DS:SI -> first byte of actual stream (not header) + CX = number of bytes in stream + ES:DI = window's handle +SeeAlso: #00446,#00447 + +(Table 00449) +Values asynchronous notification routine defined by man.stream 8Ah called with: + ES:DI = handle of window + DS:SI is 32-bit value set by 8Bh manager stream opcode + mailbox contains message indicating event + Opcode + 40h horizontal movement + DWORD object handle of window + BYTE new row + BYTE new col + 41h vertical movement + DWORD object handle of window + BYTE new row + BYTE new col + 42h horizontal size change + DWORD object handle of window + BYTE new rows + BYTE new cols + 43h vertical size change + DWORD object handle of window + BYTE new rows + BYTE new cols + 44h scrolled horizontally + DWORD object handle of window + BYTE mouse row within window + BYTE mouse column within window + BYTE field mouse is on, 0 if none + BYTE amount moved: >0 right, <0 left, 0 done + 45h scrolled vertically + DWORD object hande of window + BYTE mouse row within window + BYTE mouse column within window + BYTE field mouse is on, 0 if none + BYTE amount moved: >0 down, <0 up, 0 done + 46h window close request + DWORD object handle of window + BYTE mouse pointer row + BYTE mouse pointer column + BYTE field mouse is on, 0 if none + 47h application's windows hidden + 48h Help for Program selected + DWORD object handle of window + BYTE mouse pointer row + BYTE mouse pointer column + BYTE field mouse is on, 0 if none + 49h pointer message sent to window + DWORD pointer handle which received message + 4Ah switched to window from another ("raise") + 4Bh switched away from the window ("lower") + 4Ch video mode changed + BYTE new BIOS video mode + 4Dh Scissors/cUt selected + DWORD object handle of window + BYTE row of upper left corner + BYTE column of upper left corner + BYTE field number ul corner is in, 0=none + DWORD handle of orphaned window created with + copy of data from specified region + BYTE height of region + BYTE width of region + 4Eh Scissors/Copy selected + DWORD object handle of window + BYTE row of upper left corner + BYTE column of upper left corner + BYTE field number ul corner is in, 0=none + DWORD handle of orphaned window created with + copy of data from specified region + BYTE height of region + BYTE width of region + 4Fh Scissors/Paste selected + DWORD object handle of window + BYTE row of upper left corner + BYTE column of upper left corner + BYTE field number ul corner is in, 0=none + DWORD handle of orphaned window with data + BYTE height of region + BYTE width of region + Note: orphaned data window should be adopted or freed + when done + 50h main menu about to pop up + 51h main menu popped down +Return: all registers unchanged +--------Q-1512--BH06------------------------- +INT 15 - DESQview 2.20+ - SEND MESSAGE - "SETPRI" - SET PRIORITY WITHIN OBJECTQ + AH = 12h + BH = 06h + BL = object + 00h object handle in DWORD on top of stack + mailbox, keyboard, pointer, or timer + (DV 2.50+) window + 01h (DV 2.50+) current task's window + 04h given task's keyboard (task's handle on top of stack) + 05h current task's default keyboard + STACK: DWORD new priority of object in task's OBJECTQ + (new priority of task if window handle) +Return: STACK popped +Notes: initially all objects have the same default value. Should only make + relative adjustments to this default value. + when changing priorities, all objects already on the objectq are + reordered + for window handles, only the non-blocked task(s) with the highest + priority receive CPU time under DESQview 2.50-2.52; the default + priority is 0Ah +SeeAlso: AH=12h/BH=07h,AH=12h/BH=87h +--------Q-1512--BH07------------------------- +INT 15 - DESQview 2.20+ - SEND MESSAGE - "GETPRI" - GET PRIORITY WITHIN OBJECTQ + AH = 12h + BH = 07h + BL = object + 00h object handle in DWORD on top of stack + mailbox, keyboard, pointer, or timer + (DV 2.50+) window + 01h (DV 2.50+) current task's window + 04h given task's keyboard (task's handle on top of stack) + 05h current task's default keyboard +Return: STACK: DWORD object priority +Note: initially all objects have the same default value. Should only make + relative adjustments to this default value. +SeeAlso: AH=12h/BH=06h +--------Q-1512--BH08------------------------- +INT 15 - TopView - SEND MESSAGE - "SIZEOF" - GET OBJECT SIZE + AH = 12h + BH = 08h + BL = object + 00h handle in DWORD on top of stack + window: total character positions in window + timer: elapsed time since timer started + pointer: number of messages queued to pointer object + panel: number of panels in panel file + keyboard: number of input buffers queued + 01h total chars in current task's default window + 02h number of messages in task's mailbox (task's handle on stack) + 03h number of messages in current task's mailbox + 04h number of input buffers queued in task's kbd (handle on stack) + 05h number of input buffers queued for current task's default kbd + 06h number of objects queued in OBJECTQ (task's handle on stack) + 07h number of objects queued in current task's OBJECTQ + 0Ch (DV 2.26+) total chars in window owning handle on top of stack + 0Dh (DV 2.26+) total chars in parent task's window +Return: DWORD on top of stack is result (any handle on stack has been popped) +Note: for panel objects, a count of zero is returned if no panel file is open + for the object +SeeAlso: AH=12h/BH=04h,AH=12h/BH=09h +--------Q-1512--BH09------------------------- +INT 15 - TopView - SEND MESSAGE - "LEN" - GET OBJECT LENGTH + AH = 12h + BH = 09h + BL = object + 00h handle in DWORD on top of stack + window: get chars/line + timer: get 1/100 seconds remaining before timer expires + mailbox: (DV/X) get number of bytes queued to mailbox + 01h get number of chars/line in current task's default window + 0Ch (DV 2.26+) get chars/line in window owning handle on top of stk + 0Dh (DV 2.26+) get chars/line in parent task's window +Return: DWORD on top of stack is length (any handle on stack has been popped) +SeeAlso: AH=12h/BH=08h +--------Q-1512--BH0A------------------------- +INT 15 - TopView - SEND MESSAGE - "ADDTO" - WRITE CHARS AND ATTRIBS TO WINDOW + AH = 12h + BH = 0Ah + BL = window to write to + 00h window handle is DWORD on top of stack + 01h current task's default window + 0Ch (DV 2.26+) default window of task owning handle on top of stack + 0Dh (DV 2.26+) default window of parent of current task + STACK: DWORD count of attributes + DWORD address of attribute string + DWORD count of characters + DWORD address of character string +Return: STACK popped +Notes: if one string is longer than the other, the shorter one will be reused + until the longer one is exhausted + the cursor is left just after the last character written +SeeAlso: AH=12h/BH=0Bh"WINDOW" +--------Q-1512--BH0A------------------------- +INT 15 - TopView - SEND MESSAGE - "ADDTO" - SEND MAILBOX MESSAGE/STAT BY VALUE + AH = 12h + BH = 0Ah + BL = mailbox to write to + 00h handle is DWORD on top of stack + 02h default mailbox of task whose handle is on top of stack + 03h current task's default mailbox + STACK: DWORD status (low byte) + DWORD length of message + DWORD address of message +Return: STACK popped +Notes: the message is copied into either system or common memory + insufficient memory normally causes the process to be aborted; under + DESQview 2.2+, failed writes may return CF set instead (see AX=DE15h) +SeeAlso: AH=12h/BH=0Bh"MAILBOX" +--------Q-1512--BH0A------------------------- +INT 15 - TopView - SEND MESSAGE - "ADDTO" - SET OBJECT BITS + AH = 12h + BH = 0Ah + BL = object + 00h handle is DWORD on top of stack + timer: start timer for specified interval + pointer: set control flags (see #00451) + keyboard: set control flags (see #00450) + 04h set control flags on KEYBOARD object (handle on top of stack) + 05h set control flags on task's default KEYBOARD object + STACK: (if timer) DWORD duration in 1/100 seconds + (otherwise) DWORD bits to set +Return: STACK popped +SeeAlso: AH=12h/BH=0Bh"OBJECT" + +Bitfields for DESQview keyboard object bits: +Bit(s) Description (Table 00450) + 15 reserved, can't be set + 14 unused + 13 reserved, can't be set + 12-6 unused + 5 (DV 2.2+) exclusive input + 4 filter all keys (used with handler established by SETESC) + if 0, only keys that would normally be displayed are filtered + 3 program continues executing while input in progress + 2 insert mode active for field mode + 1 hardware cursor displayed when task is hardware cursor owner + must be set if keyboard in field mode and field table includes input + fields + 0 keyboard is in field mode rather than keystroke mode + +Bitfields for DESQview pointer object bits: +Bit(s) Description (Table 00451) + 15 reserved, can't be set + 14-8 unused + 7 mouse pointer is hidden while in window + 6 get messages even if window not topmost + 5 get messages even if window not foreground + 4 multiple clicks separated by less than 1/3 second are counted and + returned in a single message + 3 pointer position is relative to screen origin, not window origin + 2 send message on button release as well as button press + 1 (DV 2.23+) send message with row=FFFFh and col=FFFFh whenever the + pointer leaves the window + 0 send message only on button activity, not movement + DV-specific, and INT 15/AX=DE0Fh must have been called first +--------Q-1512--BH0B------------------------- +INT 15 - TopView - SEND MESSAGE - "SUBFROM" - WRITE ATTRIBUTES TO WINDOW + AH = 12h + BH = 0Bh + BL = window to write attributes to + 00h handle is DWORD on top of stack + 01h current task's default window + 0Ch (DV 2.26+) default window of task owning handle on top of stack + 0Dh (DV 2.26+) default window of parent of current task + STACK: DWORD number of attributes to write + DWORD address of attributes +Return: STACK popped +Note: the attributes are written starting at the current cursor position; the + cursor is left just after the last position written +SeeAlso: AH=12h/BH=0Ah"WINDOW" +--------Q-1512--BH0B------------------------- +INT 15 - TopView - SEND MESSAGE - "SUBFROM" - SEND MAILBOX MESSAGE/STAT BY REF + AH = 12h + BH = 0Bh + BL = mailbox to write to + 00h handle is DWORD on top of stack + 02h default mailbox of task whose handle is on top of stack + 03h current task's default mailbox + STACK: DWORD status (low byte) + DWORD length of message + DWORD address of message +Return: STACK popped +Notes: only a pointer to the message is stored, but the write may still fail + due to insufficient memory + under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h) +SeeAlso: AH=12h/BH=0Ah"MAILBOX" +--------Q-1512--BH0B------------------------- +INT 15 - TopView - SEND MESSAGE - "SUBFROM" - REMOVE OBJECT FROM OBJECTQ + AH = 12h + BH = 0Bh + BL = OBJECTQ from which to remove all copies of a particular object + 06h OBJECTQ of task whose handle is on top of stack + 07h task's default OBJECTQ + STACK: DWORD handle of object to remove +Return: STACK popped +Note: should be sent whenever an object is erased or closed +--------Q-1512--BH0B------------------------- +INT 15 - TopView - SEND MESSAGE - "SUBFROM" - RESET OBJECT BITS + AH = 12h + BH = 0Bh + BL = object + 00h handle is DWORD on top of stack + pointer: reset control flags + keyboard: reset control flags + 04h clear control flags on KEYBOARD object (handle on top of stack) + 05h clear control flags on task's default KEYBOARD object + STACK: DWORD which bits to clear (see #00450,#00451) +Return: STACK popped +SeeAlso: AH=12h/BH=0Ah"OBJECT" +--------Q-1512--BH0C------------------------- +INT 15 - TopView - SEND MESSAGE - "OPEN" - OPEN OBJECT + AH = 12h + BH = 0Ch + BL = object + 00h handle is DWORD on top of stack + window: fill with given character from scroll origin to end + keyboard: attach to a window + timer: open + pointer: start taking input for window + panel: associate with a panel file + 01h fill task's default window with given char from scrl org to end + 02h open given task's mailbox for input (task's handle on stack) + 03h open current task's mailbox + 04h attach a KEYBOARD to a window (handle on top of stack) + 05h attach task's default KEYBOARD to a window + 06h open a task's OBJECTQ (task's handle on top of stack) + 07h open current task's OBJECTQ + 0Ch (DV 2.26+) fill def window of task owning handle on top of stck + 0Dh (DV 2.26+) fill default window of parent of current task + STACK: (if window) DWORD character to fill with + (if keyboard) DWORD handle of window to attach to + (if pointer) DWORD handle of window to attach to + (if panel) DWORD length of filename or resident panel + DWORD address of filename or resident panel + (otherwise) nothing +Return: STACK popped +Notes: if first byte of panel file name is 1Bh, then the "name" IS a panel + if first two bytes of panel file "name" are C0hC3h, then the "name" IS + the panel file + result code of open may be retrieved with STATUS message + logical cursor is left at scroll origin after filling window + the task opening a mailbox becomes its owner, and the only task allowed + to read the mailbox + messages are only sent to a pointer object when the mouse is positioned + in the window to which the pointer has been attached + there is no need to explicitly open a timer object, as ADDTO and WRITE + messages automatically open the timer +SeeAlso: AH=12h/BH=0Dh,AH=12h/BH=14h"LOCK" +--------Q-1512--BH0D------------------------- +INT 15 - TopView - SEND MESSAGE - "CLOSE" - CLOSE OBJECT + AH = 12h + BH = 0Dh + BL = object + 00h handle is DWORD on top of stack + timer: close + keyboard: detach from window and discard queued input + pointer: stop taking input + panel: close + mailbox: close, unlock, and discard any pending messages + 02h close given task's mailbox (task's handle on top of stack) + 03h close task's default mailbox + 04h close KEYBOARD object (handle on top of stack) + 05h close task's default KEYBOARD + 06h close given task's OBJECTQ (task's handle on top of stack) + 07h close current task's OBJECTQ +Return: STACK popped if handle passed on stack +Notes: when an OBJECTQ is closed, each object in the OBJECTQ is sent an + ERASE message (AH=12h/BH=0Eh) + when a panel object is closed, the panel file and any panels currently + in use are freed; window and keyboard objects created by APPLY are + not affected, but field mode input ceases + open but idle timer objects consume a small amount of CPU time +SeeAlso: AH=12h/BH=0Ch,AH=12h/BH=0Eh,AH=12h/BH=14h"LOCK" +--------Q-1512--BH0E------------------------- +INT 15 - TopView - SEND MESSAGE - "ERASE" - ERASE OBJECT + AH = 12h + BH = 0Eh + BL = object + 00h handle is DWORD on top of stack + window: clear from scroll origin to end of window + keyboard: discard input + timer: cancel current interval + pointer: discard all pending messages + mailbox: discard all pending messages + 01h clear task's default window from scroll origin to end + 02h discard all queued messages in mailbox (handle on top of stack) + 03h discard all queued messages in current task's default mailbox + 04h discard all input queued to KEYBOARD (handle on top of stack) + 05h discard all input queued to task's default KEYBOARD + 06h remove all objects from OBJECTQ (task's handle on top of stack) + 07h remove all objects from current task's OBJECTQ + 0Ch (DV 2.26+) clear window of task owning handle on top of stack + 0Dh (DV 2.26+) clear default window of parent of current task +Return: STACK popped if handle passed on stack +Note: when an OBJECTQ is erased, each object in the OBJECTQ is also erased +SeeAlso: AH=12h/BH=02h +--------Q-1512--BH0F------------------------- +INT 15 - TopView - SEND MESSAGE - "STATUS" - GET OBJECT STATUS + AH = 12h + BH = 0Fh + BL = object + 00h handle is DWORD on top of stack + timer: is it running? + pointer: return status of last message + panel: verify success of last OPEN or APPLY + 02h return status of last msg READ from mailbox (handle on stack) + 03h return status of last msg READ from task's default mailbox + 04h get stat of last msg from task's KEYBOARD (task handle on stk) + 05h get status of last msg from task's default KEYBOARD + 06h return whether OBJECTQ is open or not (handle on top of stack) + 07h return whether task's default OBJECTQ is open or not +Return: DWORD on top of stack is status (any handle passed on stack popped) +Notes: if object is a panel object, the status indicates the error code: + 00h successful + 14h panel name not in panel directory + 15h not enough memory to apply panel + 16h invalid panel format + 17h panel file already open + 81h-92h DOS error codes+80h \ codes > 80h indicate + 95h not enough memory to open panel file > that the panel was + 98h null panel file name / not opened + if object is a timer, the status is: + 00000000h open but not running + 40000000h open and running + 80000000h closed + if object is an OBJECTQ, the status is: + 00000000h open + 80000000h closed + if object is a keyboard in keystroke mode, the status is the extended + character code (scan code) of the last keystroke + if object is a keyboard in field mode, the status indicates the reason + for the last return from the field manager + 00h Enter key pressed + 01h Button 1 or keystroke selection + 02h Button 2 + 03h validation + 04h auto Enter on field + 1Bh Escape pressed + 46h ^Break pressed + other: extended code for key terminating input + the status of mailbox messages sent by the window manager is always 80h + the status of a pointer message is the same as the status field in the + message +SeeAlso: AH=12h/BH=04h"READ" +--------Q-1512--BH10------------------------- +INT 15 - TopView - SEND MESSAGE - "EOF" - GET OBJECT EOF STATUS + AH = 12h + BH = 10h + BL = object + 00h handle is DWORD on top of stack + window: return TRUE if logical cursor past end of window + mailbox: ??? + 01h returns TRUE if logical cursor past end of task's def window + 02h return ??? for task's mailbox (task's handle on top of stack) + 03h return ??? for current task's mailbox + 0Ch (DV 2.26+) check log crsr of window owning handle on top of stk + 0Dh (DV 2.26+) check log cursor of window of parent task +Return: DWORD on top of stack is status (any handle on stack has been popped) +--------Q-1512--BH11------------------------- +INT 15 - TopView - SEND MESSAGE - "AT" - POSITION OBJECT CURSOR + AH = 12h + BH = 11h + BL = window for which to move cursor + 00h window's handle is DWORD on top of stack + 01h task's default window + 0Ch (DV 2.26+) default window of task owning handle on top of stack + 0Dh (DV 2.26+) default window of parent of current task + STACK: DWORD column + DWORD row +Return: STACK popped +--------Q-1512--BH11------------------------- +INT 15 - TopView - SEND MESSAGE - "SETNAME" - ASSIGN NAME TO MAILBOX + AH = 12h + BH = 11h + BL = mailbox to name + 00h DWORD on top of stack is mailbox handle + 02h use given task's mailbox (task's handle on top of stack) + 03h use current task's default mailbox + STACK: DWORD length of name + DWORD address of name +Return: STACK popped +SeeAlso: AH=12h/BH=12h"GETNAME",AX=DE0Eh +--------Q-1512--BX1100----------------------- +INT 15 - TopView - SEND MESSAGE - "SETSCALE" - SET POINTER SCALE FACTOR + AH = 12h + BX = 1100h + STACK: DWORD object handle for pointer object + DWORD number of colums to scale pointer position to + DWORD number of rows to scale pointer position to +Return: STACK popped +SeeAlso: AH=12h/BX=1200h +--------Q-1512--BH12------------------------- +INT 15 - TopView - SEND MESSAGE - "READN" - GET NEXT N OBJECT BYTES + AH = 12h + BH = 12h + BL = window to read from + 00h handle is DWORD on top of stack + 01h read next N chars or attributes on task's default window + 0Ch (DV 2.26+) read window of task owning handle on top of stack + 0Dh (DV 2.26+) read default window of parent of current task + STACK: DWORD count +Return: STACK: DWORD number of bytes actually read + DWORD address of buffer containing data +Notes: reading starts at the current logical cursor position; the cursor is + updated to point at the character following the last one read + any translucent blanks (FFh) which are visible on screen are changed + to the character which is seen through them + the string produced by the read is placed in an input buffer which may + be reused by the next READ or READN of a window + window stream opcodes D8h and D9h determine whether the read returns + characters or attributes +SeeAlso: AH=12h/BH=04h"WINDOW",AH=12h/BH=05h"WINDOW" +--------Q-1512--BH12------------------------- +INT 15 - DESQview 2.50+ - SEND MESSAGE - "GETNAME" - GET NAME OF MAILBOX + AH = 12h + BH = 12h + BL = mailbox for which to retrieve name + 00h DWORD on top of stack is mailbox handle + 02h use given task's mailbox (task's handle on top of stack) + 03h use current task's default mailbox + STACK: DWORD length of buffer for name + DWORD pointer to buffer +Return: STACK: DWORD length of returned name (or size of buffer, if less) +Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x +Note: the returned name is not NUL-terminated +SeeAlso: AH=12h/BH=11h"SETNAME",AX=DE0Eh +--------Q-1512--BX1200----------------------- +INT 15 - TopView - SEND MESSAGE - "GETSCALE" - GET POINTER SCALE FACTOR + AH = 12h + BX = 1200h + STACK: DWORD object handle for pointer +Return: STACK: DWORD pointer pos scaled as if window were this many colums wide + DWORD pointer pos scaled as if window were this many rows high +SeeAlso: AH=12h/BX=1100h +--------Q-1512--BH13------------------------- +INT 15 - TopView - SEND MESSAGE - "REDRAW" - REDRAW WINDOW + AH = 12h + BH = 13h + BL = window object + 00h DWORD on top of stack is handle for window to redraw + 01h redraw task's default window + 0Ch (DV 2.26+) redraw window of task owning handle on top of stack + 0Dh (DV 2.26+) redraw default window of parent of current task +Return: STACK popped if handle was passed on stack +SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=0Eh +--------Q-1512--BH13------------------------- +INT 15 - DESQview 2.50+ - SEND MESSAGE - "READINTO" - GET NEXT MAIL MESSAGE + AH = 12h + BH = 13h + BL = mailbox from which to read + 00h DWORD on top of stack is mailbox handle + 02h use given task's mailbox (task's handle on top of stack) + 03h use current task's default mailbox + STACK: DWORD size of buffer in bytes + DWORD pointer to buffer +Return: STACK: DWORD number of bytes read +Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x +Notes: this call blocks if no input is available, but will return less than + the requested number of bytes if some (but insufficient) data is + available + use this call instead of AH=12h/BH=04h if the mailbox has flag bits + 4 or 5 set, as common memory may be exhausted by that call when + attempting to read the next message +SeeAlso: AH=12h/BH=04h"READ",AH=12h/BH=05h,AH=12h/BH=16h +--------Q-1512--BX1300----------------------- +INT 15 - TopView - SEND MESSAGE - "SETICON" - SPECIFY POINTER ICON + AH = 12h + BX = 1300h + STACK: DWORD object handle for pointer + DWORD character to use for pointer +Return: STACK popped +--------Q-1512--BH14------------------------- +INT 15 - TopView - SEND MESSAGE - "SETESC" - SET ESCAPE ROUTINE ADDRESS + AH = 12h + BH = 14h + BL = message modifier + 00h handle is DWORD on top of stack + 01h define user stream + 04h intercept keystrokes from KEYBOARD to window (handle on stack) + 05h intercept keystrokes from task's default KEYBOARD to a window + STACK: (if window) DWORD user stream number (14h-1Fh) + DWORD address of FAR user stream handler + (if keyboard) DWORD address of FAR filter function (see #00452) +Return: STACK popped + +(Table 00452) +Values keyboard filter function is called with when keyboard is in field mode: + AL = character + AH = 00h or extended ASCII code if AL = 00h + BL = field number + CH = cursor column + CL = cursor row + DL = field type modifier (sixth item in field table entry) + DH = seventh item in field table entry + ES:SI = window's handle + DS:DI -> field table entry for field containing the cursor +Return: AH = action to take + 00h use keystroke + 01h ignore keystroke + FFh beep and ignore keystroke +Note: the filter function is not allowed to make INT 15, DOS, or BIOS calls +--------Q-1512--BH14------------------------- +INT 15 - TopView - SEND MESSAGE - "LOCK" - REQUEST EXCLUSIVE ACCESS TO RESOURCE + AH = 12h + BH = 14h + BL = object + 00h mailbox handle is DWORD on top of stack + 02h use given task's mailbox (task's handle on top of stack) + 03h use current task's default mailbox +Return: STACK popped if BL=00h +Note: release exclusive access by sending CLOSE message to mailbox + access may be requested multiple times, and requires multiple CLOSEs +SeeAlso: AH=12h/BH=0Dh +--------Q-1512--BH15------------------------- +INT 15 - DESQview v2.20+ - SEND MESSAGE - "SETFLAGS" - SET OBJECT FLAGS + AH = 12h + BH = 15h + BL = object + 00h DWORD on top of stack + mailbox, keyboard, or pointer only + 02h mailbox for task whose handle is on top of stack + 03h mailbox for current task + 04h keyboard for task whose handle is on top of stack + 05h keyboard for current task + STACK: DWORD flags (see #00453,#00454) +Return: STACK popped +Notes: only available if the API level has been set to at least 2.20 + equivalent to performing SUBFROM and ADDTO calls on the object + if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than + "READ" (see AH=12h/BH=13h"READINTO") to retrieve messages +SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=16h + +Bitfields for DESQview mailbox object flags: +Bit(s) Description (Table 00453) + 0 all mail messages in common memory + 1 allow write even if closed + 2 don't erase messages when mailbox closed + 4 (DV/X) append messages with like status and sender (stream-oriented + mail) + 5 (DV/X) store mail in expanded memory (pool grows as needed) + 6 (DV/X) make mailbox into non-owned mailbox + +Bitfields for DESQview keyboard object flags: +Bit(s) Description (Table 00454) + 5 exclusive input when keyboard in use for input +--------Q-1512--BH16------------------------- +INT 15 - DESQview v2.20+ - SEND MESSAGE - "GETFLAGS" - GET OBJECT FLAGS + AH = 12h + BH = 16h + BL = object + 00h DWORD on top of stack + mailbox, keyboard, or pointer only + 02h mailbox for task whose handle is on top of stack + 03h mailbox for current task + 04h keyboard for task whose handle is on top of stack + 05h keyboard for current task +Return: STACK: DWORD current control flags (see #00453,#00454) +Notes: only available if the API level has been set to at least 2.20 + if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than + "READ" (see AH=12h/BH=13h"READINTO") to retrieve messages +SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=13h"READINTO",AH=12h/BH=15h +--------Q-1512--BH17------------------------- +INT 15 - DESQview v2.42-2.52 - BUG + AH = 12h + BH = 17h + BL = object + 00h DWORD on top of stack + mailbox, keyboard, or pointer only + 02h mailbox for task whose handle is on top of stack + 03h mailbox for current task + 04h keyboard for task whose handle is on top of stack + 05h keyboard for current task +Return: STACK popped if handle passed on stack +Notes: due to a fencepost error, message 17h is accepted for mailboxes, + keyboards, and pointers, but causes a random branch + DESQview v2.50-2.52 are distributed as part of DESQview/X v1.02 +--------Q-1512--BH80------------------------- +INT 15 - DESQview v2.50+ - SEND MESSAGE 00h WITH ERROR RECOVERY + AH = 12h + BH = 80h +Note: this function is identical to AH=12h/BH=00h, except that DESQview will + not pop up a "Programming Error" window, instead returning an error + code in AL (see #00455) +SeeAlso: AH=12h/BH=00h + +(Table 00455) +Values for DESQview error code: + 00h no error + 01h invalid values + 02h alias invalid + 03h handle valid but wrong type + 04h invalid handle +--------Q-1512--BH81------------------------- +INT 15 - DESQview v2.50+ - SEND MESSAGE 01h WITH ERROR RECOVERY + AH = 12h + BH = 81h +Note: this function is identical to AH=12h/BH=01h, except that DESQview will + not pop up a "Programming Error" window, instead returning an error + code in AL (see #00455) +SeeAlso: AH=12h/BH=01h +--------Q-1512--BH82------------------------- +INT 15 - DESQview v2.50+ - SEND MESSAGE 02h WITH ERROR RECOVERY + AH = 12h + BH = 82h +Note: this function is identical to AH=12h/BH=02h, except that DESQview will + not pop up a "Programming Error" window, instead returning an error + code in AL (see #00455) +SeeAlso: AH=12h/BH=02h +--------Q-1512--BH83------------------------- +INT 15 - DESQview v2.50+ - SEND MESSAGE 03h WITH ERROR RECOVERY + AH = 12h + BH = 83h +Note: this function is identical to AH=12h/BH=03h, except that DESQview will + not pop up a "Programming Error" window, instead returning an error + code in AL (see #00455) +SeeAlso: AH=12h/BH=03h,AH=12h/BX=0300h +--------Q-1512--BH84------------------------- +INT 15 - DESQview v2.50+ - SEND MESSAGE 04h WITH ERROR RECOVERY + AH = 12h + BH = 84h +Note: this function is identical to AH=12h/BH=04h, except that DESQview will + not pop up a "Programming Error" window, instead returning an error + code in AL (see #00455) +SeeAlso: AH=12h/BH=04h,AH=12h/BX=0400h +--------Q-1512--BH85------------------------- +INT 15 - DESQview v2.50+ - SEND MESSAGE 05h WITH ERROR RECOVERY + AH = 12h + BH = 85h +Note: this function is identical to AH=12h/BH=05h, except that DESQview will + not pop up a "Programming Error" window, instead returning an error + code in AL (see #00455) +SeeAlso: AH=12h/BH=05h +--------Q-1512--BH86------------------------- +INT 15 - DESQview v2.50+ - SEND MESSAGE 06h WITH ERROR RECOVERY + AH = 12h + BH = 86h +Note: this function is identical to AH=12h/BH=06h, except that DESQview will + not pop up a "Programming Error" window, instead returning an error + code in AL (see #00455) +SeeAlso: AH=12h/BH=06h +--------Q-1512--BH87------------------------- +INT 15 - DESQview v2.50+ - SEND MESSAGE 07h WITH ERROR RECOVERY + AH = 12h + BH = 87h +Note: this function is identical to AH=12h/BH=07h, except that DESQview will + not pop up a "Programming Error" window, instead returning an error + code in AL (see #00455) +SeeAlso: AH=12h/BH=07h +--------Q-1512--BH88------------------------- +INT 15 - DESQview v2.50+ - SEND MESSAGE 08h WITH ERROR RECOVERY + AH = 12h + BH = 88h +Note: this function is identical to AH=12h/BH=08h, except that DESQview will + not pop up a "Programming Error" window, instead returning an error + code in AL (see #00455) +SeeAlso: AH=12h/BH=08h +--------Q-1512--BH89------------------------- +INT 15 - DESQview v2.50+ - SEND MESSAGE 09h WITH ERROR RECOVERY + AH = 12h + BH = 89h +Note: this function is identical to AH=12h/BH=09h, except that DESQview will + not pop up a "Programming Error" window, instead returning an error + code in AL (see #00455) +SeeAlso: AH=12h/BH=09h +--------Q-1512--BH8A------------------------- +INT 15 - DESQview v2.50+ - SEND MESSAGE 0Ah WITH ERROR RECOVERY + AH = 12h + BH = 8Ah +Note: this function is identical to AH=12h/BH=0Ah, except that DESQview will + not pop up a "Programming Error" window, instead returning an error + code in AL (see #00455) +SeeAlso: AH=12h/BH=0Ah +--------Q-1512--BH8B------------------------- +INT 15 - DESQview v2.50+ - SEND MESSAGE 0Bh WITH ERROR RECOVERY + AH = 12h + BH = 8Bh +Note: this function is identical to AH=12h/BH=0Bh, except that DESQview will + not pop up a "Programming Error" window, instead returning an error + code in AL (see #00455) +SeeAlso: AH=12h/BH=0Bh +--------Q-1512--BH8C------------------------- +INT 15 - DESQview v2.50+ - SEND MESSAGE 0Ch WITH ERROR RECOVERY + AH = 12h + BH = 8Ch +Note: this function is identical to AH=12h/BH=0Ch, except that DESQview will + not pop up a "Programming Error" window, instead returning an error + code in AL (see #00455) +SeeAlso: AH=12h/BH=0Ch +--------Q-1512--BH8D------------------------- +INT 15 - DESQview v2.50+ - SEND MESSAGE 0Dh WITH ERROR RECOVERY + AH = 12h + BH = 8Dh +Note: this function is identical to AH=12h/BH=0Dh, except that DESQview will + not pop up a "Programming Error" window, instead returning an error + code in AL (see #00455) +SeeAlso: AH=12h/BH=0Dh +--------Q-1512--BH8E------------------------- +INT 15 - DESQview v2.50+ - SEND MESSAGE 0Eh WITH ERROR RECOVERY + AH = 12h + BH = 8Eh +Note: this function is identical to AH=12h/BH=0Eh, except that DESQview will + not pop up a "Programming Error" window, instead returning an error + code in AL (see #00455) +SeeAlso: AH=12h/BH=0Eh +--------Q-1512--BH8F------------------------- +INT 15 - DESQview v2.50+ - SEND MESSAGE 0Fh WITH ERROR RECOVERY + AH = 12h + BH = 8Fh +Note: this function is identical to AH=12h/BH=0Fh, except that DESQview will + not pop up a "Programming Error" window, instead returning an error + code in AL (see #00455) +SeeAlso: AH=12h/BH=0Fh +--------Q-1512--BH90------------------------- +INT 15 - DESQview v2.50+ - SEND MESSAGE 10h WITH ERROR RECOVERY + AH = 12h + BH = 90h +Note: this function is identical to AH=12h/BH=10h, except that DESQview will + not pop up a "Programming Error" window, instead returning an error + code in AL (see #00455) +SeeAlso: AH=12h/BH=10h +--------Q-1512--BH91------------------------- +INT 15 - DESQview v2.50+ - SEND MESSAGE 11h WITH ERROR RECOVERY + AH = 12h + BH = 91h +Note: this function is identical to AH=12h/BH=11h, except that DESQview will + not pop up a "Programming Error" window, instead returning an error + code in AL (see #00455) +SeeAlso: AH=12h/BH=11h,AH=12h/BX=1100h +--------Q-1512--BH92------------------------- +INT 15 - DESQview v2.50+ - SEND MESSAGE 12h WITH ERROR RECOVERY + AH = 12h + BH = 92h +Note: this function is identical to AH=12h/BH=12h, except that DESQview will + not pop up a "Programming Error" window, instead returning an error + code in AL (see #00455) +SeeAlso: AH=12h/BH=12h,AH=12h/BX=1200h +--------Q-1512--BH93------------------------- +INT 15 - DESQview v2.50+ - SEND MESSAGE 13h WITH ERROR RECOVERY + AH = 12h + BH = 93h +Note: this function is identical to AH=12h/BH=13h, except that DESQview will + not pop up a "Programming Error" window, instead returning an error + code in AL (see #00455) +SeeAlso: AH=12h/BH=13h +--------Q-1512--BH94------------------------- +INT 15 - DESQview v2.50+ - SEND MESSAGE 14h WITH ERROR RECOVERY + AH = 12h + BH = 94h +Note: this function is identical to AH=12h/BH=14h, except that DESQview will + not pop up a "Programming Error" window, instead returning an error + code in AL (see #00455) +SeeAlso: AH=12h/BH=14h +--------Q-1512--BH95------------------------- +INT 15 - DESQview v2.50+ - SEND MESSAGE 15h WITH ERROR RECOVERY + AH = 12h + BH = 95h +Note: this function is identical to AH=12h/BH=15h, except that DESQview will + not pop up a "Programming Error" window, instead returning an error + code in AL (see #00455) +SeeAlso: AH=12h/BH=15h +--------Q-1512--BH96------------------------- +INT 15 - DESQview v2.50+ - SEND MESSAGE 16h WITH ERROR RECOVERY + AH = 12h + BH = 96h +Note: this function is identical to AH=12h/BH=16h, except that DESQview will + not pop up a "Programming Error" window, instead returning an error + code in AL (see #00455) +SeeAlso: AH=12h/BH=16h +--------T-1513------------------------------- +INT 15 - VMiX - "sys_wake" - WAKE SLEEPING PROCESS + AH = 13h + STACK: WORD process ID +Return: AX = status (SYS_OK or SYS_ERROR) +SeeAlso: AH=12h"VMiX" +--------T-1513------------------------------- +INT 15 - MultiDOS Plus - GET TASK CONTROL BLOCK + AH = 13h +Return: BX:AX -> task control block (see #00456) +SeeAlso: AH=15h"MultiDOS" + +Format of MultiDOS Plus v4.0 task control block: +Offset Size Description (Table 00456) + 00h DWORD pointer to next TCB + 04h 8 BYTEs ASCIZ task name + 0Ch 2 BYTEs ??? + 0Eh WORD task PSP segment + 10h WORD abort/suspend flags + 12h WORD current screen segment (see AH=0Bh,AH=0Ch) + 14h WORD priority level (0000h-FFFEh) + 16h WORD time slice counter + 18h 2 BYTEs ??? + 1Ah WORD suspend timer value + 1Ch WORD stack segment + 1Eh WORD stack pointer + 20h WORD display type + 22h WORD display memory + 24h 2 BYTEs ??? + 26h WORD termination count + 28h WORD equipment flag for BIO10 driver + 2Ah BYTE background CRT mode + 2Bh WORD screen width in columns + 2Dh WORD screen size in bytes + 2Fh WORD segment of physical screen memory + 31h 16 BYTEs eight cursor positions + 41h WORD current cursor shape + 43h BYTE active display page + 44h WORD CRT controller I/O port base + 46h 2 BYTEs ??? + 48h WORD foreground task flag + 4Ah 6 BYTEs ??? + 50h WORD saved video segment (see AH=0Bh,AH=0Ch) + 52h DWORD old INT 22 + 56h DWORD old INT 23 + 5Ah DWORD old INT 24 + 5Eh WORD top of memory for task + 60h 4 BYTEs ??? + 64h WORD DTA segment (see INT 21/AH=1Ah) + 66h WORD DTA offset + 68h 4 BYTEs ??? + 6Ch BYTE current ANSI.SYS attribute + 6Dh BYTE current ANSI.SYS column + 6Eh BYTE current ANSI.SYS row + 6Fh BYTE current ANSI.SYS display state + 70h BYTE maximum ANSI.SYS columns + 71h BYTE current ANSI.SYS page + 72h WORD saved ANSI.SYS cursor position + 74h BYTE ANSI.SYS parameter buffer index + 75h BYTE current ANSI.SYS screen mode + 76h BYTE ANSI.SYS wrap flag + 77h 6 BYTEs ANSI.SYS parameter buffer + 7Dh BYTE ANSI.SYS keyboard DSR state + 7Eh 7 BYTEs ANSI.SYS keyboard DSR buffer + 85h 3 BYTEs ??? + 88h 16 BYTEs request header for DOS driver calls + 98h 14 BYTEs ??? + A6h WORD segment of EMS map if EMS task + A8h WORD flag: task makes EMS calls + AAh WORD EMS handle for task + ACh WORD keyboard shift state + AEh 12 BYTEs ??? + BAh WORD TCB of parent if child task + BCh WORD termination code + BEh WORD COM port number + C0h 4 BYTEs ??? + C4h WORD current IRQ number + C6h 2 BYTEs ??? + C8h WORD miscellaneous flag word + CAh 2 BYTEs ??? + CCh DWORD old INT 10 + D0h WORD EMS alternate map set number + D2h 414 BYTEs DOS current disk and directory context (optional) +--------T-1514------------------------------- +INT 15 - VMiX - "sys_clrwindow" - CLEAR WINDOW + AH = 14h + STACK: WORD top left corner of window (high byte = row, low = col) + WORD bottom right corner of window (high = row, low = col) +Return: AX = status (SYS_OK) +Note: clears window to color set with "sys_setcolors" (AH=18h) +SeeAlso: AH=15h"VMiX",AH=16h"VMiX",AH=18h"VMiX",AH=1Fh"VMiX" +--------T-1514------------------------------- +INT 15 - MultiDOS Plus - CHECK IF MultiDOS FOREGROUND OR BACKGROUND + AH = 14h +Return: AX = current state + 0000h MultiDOS Plus command prompt is background task + 0001h command prompt is foreground task +SeeAlso: AH=0Bh"MultiDOS" +--------T-1515------------------------------- +INT 15 - VMiX - "sys_setbwindow" - SET BANNER WINDOW MESSAGE + AH = 15h + STACK: DWORD pointer to ASCIZ banner message for top of screen +Return: AX = status (SYS_OK) +SeeAlso: AH=14h"VMiX",AH=16h"VMiX" +--------T-1515------------------------------- +INT 15 - MultiDOS Plus - GET SYSTEM BLOCK + AH = 15h +Return: BX:AX -> system block (see #00457) +SeeAlso: AH=13h"MultiDOS" + +Format of MultiDOS Plus 4.0 system block: +Offset Size Description (Table 00457) + 00h WORD segment of system control block + 02h WORD redirection flag set by /NOREDIRECT + 04h WORD no-INT 10 flag set by /NO10 + 06h DWORD old INT 10 + 0Ah DWORD new INT 10 + 0Eh DWORD pointer to WORD with current TCB offset (see #00456) + 12h DWORD pointer to WORD with idle task TCB offset + 16h DWORD pointer to WORD with foreground TCB offset (see #00456) + 1Ah DWORD pointer to WORD with MultiDOS TCB offset (see #00456) + 1Eh WORD Task Control Block size + 20h WORD number of TCBs + 22h WORD flag: EMS present + 24h WORD EMS page frame base segment + 26h WORD 16K pages in EMS page frame + 28h WORD base segment for conventional memory tasks + 2Ah WORD conventional memory size in paragraphs + 2Ch DWORD pointer to list of queue pointers +--------T-1516------------------------------- +INT 15 - VMiX - "sys_setwindow" - SET ROOT WINDOW SIZE AND HOME CURSOR + AH = 16h + STACK: DWORD pointer to I/O Request Packet + WORD top left corner of window (high byte = row, low = col) + WORD bottom right corner of window (high = row, low = col) +Return: AX = status (SYS_OK or SYS_ERROR) +SeeAlso: AH=14h"VMiX",AH=17h"VMiX" +--------T-1516------------------------------- +INT 15 - MultiDOS Plus - INITIALIZATION + AH = 16h +Note: used internally during initialization; any other calls will cause + unpredictable results +--------T-1517------------------------------- +INT 15 - VMiX - "sys_getcolors" - GET CONSOLE WINDOW COLORS + AH = 17h +Return: AH = foreground color + AL = background color +SeeAlso: AH=16h"VMiX",AH=18h"VMiX" +--------T-1517------------------------------- +INT 15 - MultiDOS Plus - MAP IRQ + AH = 17h + AL = IRQ to map (01h-0Fh) + BX = offset of task control block (see #00456) to associate with IRQ +Return: AX = status + 0000h successful + other invalid IRQ +Note: the EMS map of the specified TCB is associated with the given interrupt +SeeAlso: AH=18h"MultiDOS",AH=19h"MultiDOS" +--------T-1518------------------------------- +INT 15 - VMiX - "sys_setcolors" - SET CONSOLE COLORS + AH = 18h + STACK: WORD new background/foreground colors + bits 3-0: foreground + bits 7-4: background + bits 15-8: unused +Return: AX = color +SeeAlso: AH=14h"VMiX",AH=17h"VMiX",AH=19h"VMiX" +--------T-1518------------------------------- +INT 15 - MultiDOS Plus - UNMAP IRQ + AH = 18h + AL = IRQ to unmap (01h-0Fh) +Return: AX = status + 0000h successful + 0001h invalid IRQ +Note: results are unpredictable if the IRQ has not been mapped +SeeAlso: AH=17h"MultiDOS",AH=19h"MultiDOS" +--------T-1519------------------------------- +INT 15 - VMiX v2+ - "sys_setconwn" - SET WINDOW COLORS + AH = 19h + STACK: WORD new background/foreground colors + bits 3-0: foreground + bits 7-4: background + bits 15-8: unused +Return: AX = color +SeeAlso: AH=18h"VMiX" +--------T-1519------------------------------- +INT 15 - MultiDOS Plus - UNMAP ALL IRQs + AH = 19h +Return: AX destroyed +Note: for MultiDOS internal use only +SeeAlso: AH=17h"MultiDOS",AH=18h"MultiDOS" +--------T-151A------------------------------- +INT 15 - VMiX v2+ - "sys_sint" - INVOKE SOFTWARE INTERRUPT + AH = 1Ah + STACK: WORD interrupt number + DWORD pointer to register structure +Return: AX = returned flags +--------T-151A------------------------------- +INT 15 - MultiDOS Plus - MAP SEMAPHORE NAME TO NUMBER + AH = 1Ah + DS:SI -> 8-byte name +Return: AL = status + 00h successful + AH = semaphore number (20h-3Fh) + 04h out of string space +Notes: all eight bytes of the name are significant + if the name does not already exist, it is added to the name table and + associated with a free semaphore number + names cannot be destroyed +SeeAlso: AH=1Bh"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS" +--------T-151B------------------------------- +INT 15 - VMiX v2+ - "sys_blkmov" - MOVE MEMORY BLOCK + AH = 1Bh + STACK: DWORD source address + DWORD destination address + WORD number of words to move +Return: nothing +--------T-151B------------------------------- +INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE BY NAME + AH = 1Bh + DS:SI -> 8-byte name +Return: AH = status + 00h successful + 02h invalid semaphore number + 03h caller already owns semaphore + 04h out of string space +Notes: (see AH=01h"MultiDOS") + equivalent to AH=1Ah followed by AH=01h +SeeAlso: AH=01h"MultiDOS",AH=1Ah"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS" +--------T-151C------------------------------- +INT 15 - VMiX v2+ - "sys_bitblt" - PUT GRAPHICAL OBJECT AT CURSOR POSITION + AH = 1Ch + STACK: WORD AND/OR pixel with background (00h = OR, 01h = AND) + DWORD pointer to object bitmap + WORD object width in pixels + WORD object height in pixels +Return: nothing +SeeAlso: AH=1Dh"VMiX" +--------T-151C------------------------------- +INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE BY NAME + AH = 1Ch + DS:SI -> 8-byte name +Return: AH = status + 00h successful + 01h not semaphore owner + 02h invalid semaphore number + 04h out of string space +Notes: (see AH=02h"MultiDOS") + equivalent to AH=1Ah followed by AH=02h +SeeAlso: AH=02h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Dh"MultiDOS" +--------T-151D------------------------------- +INT 15 - VMiX v2+ - "sys_getfont" - GET CURRENT CONSOLE GRAPHICS FONT + AH = 1Dh +Return: AX = current font number (00h-03h) +SeeAlso: AH=1Ch"VMiX",AH=1Eh"VMiX" +--------T-151D------------------------------- +INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE BY NAME + AH = 1Dh + DS:SI -> 8-byte name +Return: AH = status + 00h semaphore not in use + 01h semaphore owned by another task + 02h invalid semaphore number + 03h caller owns semaphore + 04h out of string space +Notes: (see AH=10h"MultiDOS") + equivalent to AH=1Ah followed by AH=10h +SeeAlso: AH=10h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Ch"MultiDOS" +--------T-151E------------------------------- +INT 15 - VMiX v2+ - "sys_setfont" - SET CONSOLE GRAPHICS FONT + AH = 1Eh + STACK: WORD new font number (00h-03h) +Return: AX = current font number (00h-03h) +SeeAlso: AH=1Dh"VMiX" +--------T-151E00----------------------------- +INT 15 - MultiDOS Plus - CLEAR EVENT COUNTER + AX = 1E00h + DX = event/trigger number (00h-3Fh) +Return: AH = status + 00h successful +SeeAlso: AX=1E01h,AX=1E02h +--------T-151E01----------------------------- +INT 15 - MultiDOS Plus - TRIGGER EVENT + AX = 1E01h + DX = event/trigger number (00h-3Fh) +Return: AH = status + 00h successful + 01h invalid event/trigger number +Notes: schedules any task waiting for event; if no task is waiting, the event + counter is incremented (and will roll over if it was 65535) + may be invoked by interrupt handler +SeeAlso: AX=1E00h,AX=1E02h +--------T-151E02----------------------------- +INT 15 - MultiDOS Plus - WAIT FOR EVENT + AX = 1E02h + DX = event/trigger number (00h-3Fh) +Return: AH = status + 00h successful + 01h invalid event/trigger number +Note: if the event counter is zero, the task is suspended until the event is + triggered with AX=1E01h; else, the counter is decremented and the + call returns immediately +SeeAlso: AX=1E00h,AX=1E01h +--------T-151E08----------------------------- +INT 15 - MultiDOS Plus 4.01 - SET CONTEXT-SWITCH FUNCTIONS + AX = 1E08h + DX:BX -> context save handler (see #00458) + DX:CX -> context restore handler (see #00458) +Return: nothing +Note: handlers may be removed by setting addresses to 0000h:0000h + +(Table 00458) +Values MultiDOS Plus context-switch handlers are called with: + ES:BX -> task's TCB +Return: all registers preserved +--------T-151F------------------------------- +INT 15 - VMiX v2.???+ - "sys_scrollwin" - SCROLL WINDOW + AH = 1Fh + STACK: WORD top left corner of window (high byte = row, low = col) + WORD bottom right corner of window +Return: AX = status (SYS_OK) +SeeAlso: AH=14h"VMiX",AH=18h"VMiX" +--------T-151F------------------------------- +INT 15 - MultiDOS Plus v4.01 - GET MEMORY PARAMETERS + AH = 1Fh +Return: BX = first segment of conventional memory + DX = first segment of EMS swap frame into which MultiDOS will load + programs +--------T-1520------------------------------- +INT 15 - MultiDOS Plus v4.01 - CHECK IF MULTITASKING ENABLED + AH = 20h +Return: AX = current state + 0000h multitasking enabled + other TCB of task that disabled multitasking +SeeAlso: AH=0Dh"MultiDOS",AH=13h"MultiDOS" +--------c-152000----------------------------- +INT 15 U - DOS 3.0+ PRINT.COM - DISABLE CRITICAL REGION FLAG + AX = 2000h +Return: nothing +Desc: stop setting user flag on entry to PRINT critical region +Note: also supported by PC Network v1.00 RECEIVER.COM +SeeAlso: AX=2001h +--------c-152001----------------------------- +INT 15 U - DOS 3.0+ PRINT.COM - SET CRITICAL REGION FLAG + AX = 2001h + ES:BX -> byte which is to be incremented while in a DOS call +Return: nothing +Desc: specify a user flag which PRINT should set to let an interested + application know it is in a critical region +Note: also supported by PC Network v1.00 RECEIVER.COM +SeeAlso: AX=2000h +--------O-152010----------------------------- +INT 15 - OS HOOK - SETUP SYSREQ ROUTINE (AT,XT286,PS50+) + AX = 2010h + ??? +Return: ??? +SeeAlso: AX=2011h +--------O-152011----------------------------- +INT 15 - OS HOOK - COMPLETION OF SYSREQ FUNCTION (AT,XT286,PS50+) + AX = 2011h + ??? +Return: ??? +SeeAlso: AX=2010h +--------B-1521------------------------------- +INT 15 - SYSTEM - POWER-ON SELF-TEST ERROR LOG (PS50+) + AH = 21h + AL = subfunction + 00h read POST log + 01h write POST log + BH = device ID + BL = error code +Return: CF clear if successful + CF set on error + AH = status + 00h OK + 01h list full + 02h unsupported subfunction + 80h invalid command + 86h unsupported function + if function 00h: + BX = number of error codes stored + ES:DI -> error log +Notes: the log is a series of words, the first byte of which identifies the + error code and the second the device. + supported by AMI PCI BIOS + IBM considers this a required BIOS function + if the device ID is FFh, the "error code" is the actual device number + minus 255 (thus these devices have no specific error codes) +SeeAlso: AH=23h"SYSTEM",AH=24h"SYSTEM" +--------B-1522------------------------------- +INT 15 - SYSTEM - later PS/2s - LOCATE ROM BASIC + AH = 22h +Return: CF set on error + AH = status (86h if function not supported) + CF clear on success + AH = 00h + ES:BX -> ROM BASIC +Notes: if this function is not supported, ROM BASIC is at F600h:0000h + IBM classifies this function as optional +SeeAlso: INT 86"BASIC",INT F0"BASIC" +--------B-152300----------------------------- +INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - GET ??? CMOS DATA + AX = 2300h +Return: CF clear if successful + CL = value of CMOS location 2Dh + CH = value of CMOS location 2Eh + CF set on error + AH = error code (80h,86h) +Note: IBM classifies this function as optional +SeeAlso: AX=2301h,AX=2304h,AX=2305h +--------B-152301----------------------------- +INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - SET ??? CMOS DATA + AX = 2301h + CL = new value for CMOS location 2Dh + CH = new value for CMOS location 2Eh +Return: CF clear if successful + CF set on error + AH = error code (80h,86h) +Notes: sets the contents of CMOS locations 2Dh and 2Eh + IBM classifies this function as optional +SeeAlso: AX=2300h,AX=2304h,AX=2305h +--------B-152302----------------------------- +INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - GET ROM STARTUP VIDEO REG TABLES + AX = 2302h + BL = data index (00h-0Dh) (see #00459) +Return: ES:BX -> table for register (see #00460,#00461) + CX = size of table in bytes (may be 0000h) +Note: IBM classifies this function as optional +SeeAlso: AX=2300h,AX=2301h,AX=2303h + +(Table 00459) +Values for PS/1 ROM startup video register tables: + 00h DAC registers + 01h ??? + 02h Palette registers + 03h-0Dh ??? + +Format of PS/1 ROM startup DAC register table: +Offset Size Description (Table 00460) + 00h WORD number of DAC registers in table + 02h var array of 3-byte DAC register values, starting at register 00h +SeeAlso: #00459 + +Format of PS/1 ROM startup Palette register table: +Offset Size Description (Table 00461) + 00h 16 BYTEs colors for palette registers 00h through 0Fh + 10h BYTE border color +SeeAlso: #00459,#00018 +--------B-152303----------------------------- +INT 15 U - IBM BIOS - SMART ENERGY SYSTEM - ??? + AX = 2303h + BX = ??? ('x') + DX = 'y' and 'z' + bits 15-7 = 'y' + bits 6-3 unused + bits 2-0 = 'z' + DI = ??? (0352h) +Return: ??? +Notes: performs graphics functions, writes to segment A000h and VGA I/O ports + IBM classifies this function as optional +--------B-152304----------------------------- +INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - SYSTEM SETUP + AX = 2304h + DX = segment of 32K buffer +Return: CF clear if successful + AX = 0003h (left over from setting video mode 3) + BX,CX,DX,BP,DS,ES destroyed + CF set on error + AH = error code (80h,86h) +Desc: run system setup utility, and optionally save any changed settings to + CMOS RAM +Note: IBM classifies this function as optional +SeeAlso: AX=2301h,AX=2305h +--------B-152305----------------------------- +INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - GET PROCESSOR SPEED + AX = 2305h +Return: CF clear if successful + AL = processor speed in MHz + CF set on error + AL = FFh (speed unknown or >80 MHz) + AL = error code (80h,86h = unsupported function) +Note: IBM classifies this function as optional +SeeAlso: AX=2301h,AX=2304h,AH=BCh +--------b-152400----------------------------- +INT 15 - SYSTEM - later PS/2s - DISABLE A20 GATE + AX = 2400h +Return: CF clear if successful + AH = 00h + CF set on error + AH = status + 01h keyboard controller is in secure mode + 86h function not supported +Notes: also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+ + IBM classifies this function as optional +BUG: AMI BIOS v1.00.03.AV0M never reports an error on failure to disable + the A20 gate; it simply writes 0 to PORT 0092h +SeeAlso: AX=2401h,AX=2402h,AX=2403h,PORT 0092h +--------b-152401----------------------------- +INT 15 - SYSTEM - later PS/2s - ENABLE A20 GATE + AX = 2401h +Return: CF clear if successful + AH = 00h + CF set on error + AH = status + 01h keyboard controller is in secure mode + 86h function not supported +Notes: also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+ + IBM classifies this function as optional +SeeAlso: AX=2400h,AX=2402h,PORT 0092h +--------b-152402----------------------------- +INT 15 - SYSTEM - later PS/2s - GET A20 GATE STATUS + AX = 2402h +Return: CF clear if successful + AH = 00h + AL = current state (00h disabled, 01h enabled) + CX = ??? (set to 0000h-000Bh or FFFFh by AMI BIOS v1.00.03.AV0M) + FFFFh if keyboard controller does not become ready within C000h + read attempts + CF set on error + AH = status + 01h keyboard controller is in secure mode + 86h function not supported +Notes: also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+ + IBM classifies this function as optional +SeeAlso: AX=2400h,AX=2401h +--------b-152403----------------------------- +INT 15 - SYSTEM - later PS/2s - QUERY A20 GATE SUPPORT + AX = 2403h +Return: CF clear if successful + AH = 00h + BX = status of A20 gate support (see #00462) + CF set on error + AH = status + 01h keyboard controller is in secure mode + 86h function not supported +Notes: also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+ + IBM classifies this function as optional +BUG: at one point early in processing INT 15/AH=24h, the AMI PCI BIOS + version 1.00.05.AX1 compares whether AL==03h instead of AL>=03h, + thus causing a random branch on any value of AL greater than 3. +SeeAlso: AX=2402h + +Bitfields for A20 gate support status: +Bit(s) Description (Table 00462) + 0 supported on keyboard controller + 1 supported with bit 1 of I/O port 92h + 14-2 reserved + 15 additional data is available (location not yet defined) +--------T-153000----------------------------- +INT 15 - Object Kernel for DOS - INSTALLATION CHECK + AX = 3000h +Return: AX:BX = 4F42h:4A21h ('OBJ!') if installed + CX = resident segment +Program: the Object Kernel is a program by M.W. Pieters which is currently + under development +Note: Central Point's CPBACKUP v9 calls INT 15/AX=3000h at startup, but it + may be checking for a different program's presence +SeeAlso: AX=3001h,AX=3008h +--------T-153001----------------------------- +INT 15 - Object Kernel for DOS - GET STATUS BLOCK + AX = 3001h +Return: AX = FFFFh + ES:DI -> status block +SeeAlso: AX=3000h,AX=3008h +--------T-153002----------------------------- +INT 15 - Object Kernel for DOS - KILL PROCESS + AX = 3002h + (not yet implemented) +SeeAlso: AX=3000h +--------T-153003----------------------------- +INT 15 - Object Kernel for DOS - STOP PROCESS + AX = 3003h + (not yet implemented) +SeeAlso: AX=3000h +--------T-153004----------------------------- +INT 15 - Object Kernel for DOS - START PROCESS + AX = 3004h + (not yet implemented) +SeeAlso: AX=3000h +--------T-153005----------------------------- +INT 15 - Object Kernel for DOS - RESTART PROCESS + AX = 3005h + (not yet implemented) +SeeAlso: AX=3000h +--------T-153006----------------------------- +INT 15 - Object Kernel for DOS - EXECUTE PROCESS + AX = 3006h + (not yet implemented) +SeeAlso: AX=3000h +--------T-153007----------------------------- +INT 15 - Object Kernel for DOS - LIST PROCESSES + AX = 3007h + (not yet implemented) +SeeAlso: AX=3000h +--------T-153008----------------------------- +INT 15 - Object Kernel for DOS - SWITCH ObjectKernel ON/OFF + AX = 3008h + BH = new state (00h disabled, 01h enabled) +Return: AX = FFFFh +SeeAlso: AX=3000h,AX=3009h +--------T-153009----------------------------- +INT 15 - Object Kernel for DOS - RESERVED FOR FUTURE USE + AX = 3009h to 30FFh +SeeAlso: AX=3000h +Program: the Object Kernel is a program by M.W. Pieters which is currently + under development +----------153D------------------------------- +INT 15 - IBM SurePath BIOS - Officially "Private" Function + AH = 3Dh +SeeAlso: AH=07h"IBM",AH=3Eh"IBM" +----------153E------------------------------- +INT 15 - IBM SurePath BIOS - Officially "Private" Function + AH = 3Eh +SeeAlso: AH=3Dh"IBM",AH=3Fh"IBM" +----------153F------------------------------- +INT 15 - IBM SurePath BIOS - Officially "Private" Function + AH = 3Fh +SeeAlso: AH=07h"IBM",AH=3Eh"IBM" +--------B-1540------------------------------- +INT 15 - SYSTEM - READ/MODIFY PROFILES (CONVERTIBLE) + AH = 40h + AL = subfunction + 00h get system profile in CX and BX + 01h set system profile from CX and BX + 02h get internal modem profile in BX + 03h set internal modem profile from BX +Return: CF clear if successful + AH = 00h + CF set on error + AH = status (80h = profile execution failed) +--------V-154000----------------------------- +INT 15 - Compaq SLT/286 or Portable 386 - READ LCD/PLASMA TIMEOUT + AX = 4000h +Return: AX = 4000h + CL = timeout in minutes, 00h if disabled +SeeAlso: AX=4001h,AX=4600h +--------V-154001----------------------------- +INT 15 - Compaq SLT/286 or Portable 386 - SET LCD/PLASMA TIMEOUT + AX = 4001h + CL = timeout in minutes, 00h to disable +Return: AL = status + 00h timeout modified + 01h timeout cannot be modified + 40h timeout cannot be modified + CL = timeout in minutes, 00h if disabled +SeeAlso: AX=4000h,AX=4601h +--------B-1541------------------------------- +INT 15 - SYSTEM - WAIT ON EXTERNAL EVENT (CONVERTIBLE and some others) + AH = 41h + AL = condition type (see #00463) + BH = condition compare or mask value + BL = timeout value times 55 milliseconds + 00h means no timeout + DX = I/O port address if AL bit 4 set + ES:DI -> user byte if AL bit 4 clear +Return: after event or timeout occurs +Note: call AH=C0h and examine bit 3 of feature byte 1 to determine whether + this function is supported +SeeAlso: AH=83h,AH=86h,AH=C0h + +Bitfields for external event wait condition type: +Bit(s) Description (Table 00463) + 0-2 condition to wait for + 0 any external event + 1 compare and return if equal + 2 compare and return if not equal + 3 test and return if not zero + 4 test and return if zero + 3 reserved + 4 1=port address, 0=user byte + 5-7 reserved +--------B-1542------------------------------- +INT 15 - SYSTEM - REQUEST POWER OFF (CONVERTIBLE,HP 95LX) + AH = 42h + AL = suspend type + 00h to use system profile + 01h to force suspend regardless of system profile +Return: nothing +Note: the HP 95LX apparently suspends regardless of the value in AL; on + power-up, execution will resume following the instruction calling + this function +SeeAlso: AH=44h +--------b-154280----------------------------- +INT 15 - Compaq SLT/286 - ENTER STANDBY + AX = 4280h +Return: AH = 42h + CF clear if successful + CF set if unable to enter standby +SeeAlso: AX=4600h,AX=5307h/CX=0001h"STAND-BY" +--------B-1543------------------------------- +INT 15 - SYSTEM - READ SYSTEM STATUS (CONVERTIBLE) + AH = 43h +Return: AL = status bits (see #00464) + +Bitfields for Convertible system status: +Bit(s) Description (Table 00464) + 7 power low + 6 external power in use + 5 standby power lost + 4 power activated by alarm + 3 internal modem powered on + 2 RS232/parallel adapter powered on + 1 reserved + 0 LCD detached +--------B-1544------------------------------- +INT 15 - SYSTEM - (DE)ACTIVATE INTERNAL MODEM POWER (CONVERTIBLE) + AH = 44h + AL = new modem power state (00h power off, 01h power on) +Return: nothing +SeeAlso: AH=42h +--------b-1544C0----------------------------- +INT 15 - Olivetti Quaderno - INITIALIZE DIGITAL SIGNAL PROCESSING??? + AX = 44C0h + ES:DI -> new DSP procedure (exchanged with CMOS[28h]) + ES:SI -> ??? buffer +Return: ES:DI -> old DSP procedure + ES:SI buffer filled with ten bytes from CMOS (addresses 14h-1Ch) + followed by 00h (addresses 15h-1Ch copied only if less than 21h) +Note: this function is also supported by XBIOS.COM +SeeAlso: AX=44C9h +--------b-1544C1----------------------------- +INT 15 - Olivetti Quaderno - ??? + AX = 44C1h + ??? +Return: ??? +Note: this function is also supported by XBIOS.COM +SeeAlso: AX=44C9h +--------b-1544C2----------------------------- +INT 15 - Olivetti Quaderno - ??? + AX = 44C2h + DL = byte to be written to I/O port 350h +Note: this function is also supported by XBIOS.COM +SeeAlso: AX=44C3h,AX=44C9h +--------b-1544C3----------------------------- +INT 15 - Olivetti Quaderno - GET ??? + AX = 44C3h +Return: DH = bitfields (see #00465) + DL = value read from I/O port 350h +Note: this function is also supported by XBIOS.COM +SeeAlso: AX=44C2h,AX=44C9h + +Bitfields for Olivetti Quaderno ???: +Bit(s) Description (Table 00465) + 5-7 5-7 read from I/O port 351h + 2-4 zero + 1-0 "tres complique" +--------b-1544C4----------------------------- +INT 15 - Olivetti Quaderno - ??? + AX = 44C4h and 44C5h + ??? +Return: ??? +Note: this function is also supported by XBIOS.COM +SeeAlso: AX=44C9h +--------b-1544C6----------------------------- +INT 15 - Olivetti Quaderno - READ LCD + AX = 44C6h +Return: DX = FFFFh clock is displayed on LCD display + DX = other: hex number displayed in first four positions of display + BH = left alphanumeric character on display (see #00466) + BL = right alphanumeric character on display (see #00466) + CL = colon flags (see #00467) +Notes: the LCD display has the format HH:HH:AA, where H is a hex digit and A + is an alphanumeric character + this function is also supported by XBIOS.COM +SeeAlso: AX=44C7h,AX=44C9h + +(Table 00466) +Values for Olivetti Quaderno LCD alphanumeric characters: + 00h-0Fh hex digit + 2Bh "+" + 2Dh "-" + 30h-39h "0" to "9" + 41h-5Ah "A" to "Z" + 61h-6Ah "a" to "z" + else blank + +Bitfields for Olivetti Quaderno LCD colon flags: +Bit(s) Description (Table 00467) + 0 left colon on + 1 right colon on + 2-7 unused +--------b-1544C7----------------------------- +INT 15 - Olivetti Quaderno - WRITE LCD + AX = 44C7h + DX = hex display + FFFFh display clock and "HI", "Md", or "Lo" + BH,BL,CL unused + other: display specified hex number in first four positions + BH = left alphanumeric character on display (see #00466) + BL = right alphanumeric character on display (see #00466) + CL = colon flags (see #00467) +Return: nothing +Note: this function is also supported by XBIOS.COM +SeeAlso: AX=44C6h +--------b-1544C8----------------------------- +INT 15 - Olivetti Quaderno - ??? + AX = 44C8h + CL = ??? (00h,02h,21h) + CH = ??? + ??? +Return: ??? +Note: this function is also supported by XBIOS.COM +SeeAlso: AX=44C9h +--------b-1544C9----------------------------- +INT 15 - Olivetti Quaderno - GET XBIOS VERSION + AX = 44C9h +Return: AL = major version + AH = minor version +Note: this function is also supported by XBIOS.COM +--------B-1544F1----------------------------- +INT 15 U - Toshiba laptops - SECURITY LEVEL CHECK + AX = 44F1h + DS:DX -> byte with 00h ??? +Return: ??? +Note: used by Toshiba BIOS setup utility TSETUP.EXE to distinguish + between USER and SUPERVISOR security level +SeeAlso: AX=44F2h,AX=44F3h +--------B-1544F2BX0604----------------------- +INT 15 U - Toshiba laptops - SECURITY LEVEL CHECK + AX = 44F2h + BX = 0604h ??? +Return: CF = ??? + AH = ??? + DX = ??? +Note: used by Toshiba BIOS setup utility TSETUP.EXE to distinguish + between USER and SUPERVISOR security level +SeeAlso: AX=44F1h,AX=44F3h +--------B-1544F3----------------------------- +INT 15 U - Toshiba laptops - SECURITY LEVEL CHECK + AX = 44F3h + DS:DX -> byte with 00h or 01h ??? +Return: DS:DX -> changed ??? +Note: used by Toshiba BIOS setup utility TSETUP.EXE to distinguish + between USER and SUPERVISOR security level +SeeAlso: AX=44F1h,AX=44F2h +--------b-1545------------------------------- +INT 15 U - HP 100LX/200LX - SET DISPLAY CONTROL STATUS + AH = 45h + AL = new display control status + bit 0: DISPCTL flag +C instead of -C + bit 1: DISPCTL flag +K instead of -K +SeeAlso: AH=46h"HP",AH=47h"HP" +--------b-1546------------------------------- +INT 15 U - HP 100LX/200LX - SET POWER OFF TIMEOUT + AH = 46h + BX = timeout value in ticks + 0000h inhibit auto power off +Note: the 200LX default timeout is 0CCDh = 3277 ticks = approx. 3 min. +SeeAlso: AH=45h"HP",AH=47h"HP" +--------b-154600----------------------------- +INT 15 - Compaq SLT/286 - READ POWER CONSERVATION/MODEM CONFIGURATION + AX = 4600h +Return: AH = modem configuration information (see #00468) + AL = power conservation status information (see #00469) + BH = default system inactivity timeout (1-21 minutes) + BL = current system inactivity timeout (1-21 minutes) + CH = default video display inactivity timeout (1-63 minutes) + CL = current video display inactivity timeout (1-63 minutes) + DH = default fixed disk drive inactivity timeout (1-21 minutes) + DL = current fixed disk drive inactivity timeout (1-21 minutes) +SeeAlso: AX=4280h,AX=4601h,INT 77 + +Bitfields for Compaq SLT/286 modem configuration information: +Bit(s) Description (Table 00468) + 0 powerup state (0 off, 1 on) + 1 modem installed + 2 IRQ line assignment (0 IRQ 4, 1 IRQ 3) + 3 COM port assignment (0 = COM 2, 1 = COM 1) + 4 modem state (0 not assigned, 1 assigned) + 5 modem is on + +Bitfields for Compaq SLT/286 power conservation status: +Bit(s) Description (Table 00469) + 0 power source (0 internal, 1 external) + 1-2 low battery state + 00 no low battery condition + 01 low battery 1 + 10 reserved + 11 low battery 2 + 3-4 power conservation mode + 00 automatic, 01 on, 10 off, 11 reserved +--------b-154601----------------------------- +INT 15 - Compaq SLT/286 - MODIFY POWER CONSERVATION/MODEM CONFIGURATION + AX = 4601h + BL = system inactivity timeout (1-21 minutes) + FFh do not change + CL = video display inactivity timeout (1-63 minutes) + FFh do not change + DL = current fixed disk drive inactivity timeout (1-21 minutes) + FFh do not change + DH = new modem state (00h turn off, 01h turn on, FFh don't change) +Return: CF clear if successful + AH = 00h + BL = current system inactivity timeout (1-21 minutes) + CL = current video display inactivity timeout (1-63 minutes) + DL = current fixed disk drive inactivity timeout (1-21 minutes) + DH = modem state (FFh unchanged, 00h turned off, 01h turned on) + CF set on error + AH = error code + 01h input is out of range + 02h no modem present +SeeAlso: AX=4600h,INT 77 +--------b-154604----------------------------- +INT 15 - Compaq Contura 486 and "Alladin" 1993/08/05 ROMs - GET ??? + AX = 4604h +Return: CF clear if successful + AL = byte read from I/O port 03F8h + CF set on error (not supported) + AH = 86h (unsupported function) +Note: also supported by 1993/7/26 LTE Lite 386 ROM +--------b-154605----------------------------- +INT 15 - Compaq Contura 486 and "Alladin" 1993/08/05 ROMs - ??? + AX = 4605h +Return: CF clear if successful + CF set on error (not supported) + AH = 86h (unsupported function) +Note: this function is a NOP (other than clearing CF) in the 1993/08/05 + version of the Contura 486/486c/486cx and "Aladdin" ROM, and the + 1993/7/26 LTE Lite 386 ROM +--------b-1547------------------------------- +INT 15 U - HP 100LX/200LX - GET/SET DISPLAY CONTRAST + AH = 47h + AL = subfunction + 00h set contrast + BL = new contrast + (00h-0Fh, 0Fh is darkest, 10h-FFh are same as 0Fh) + other get current contrast +Return: AL = contrast (00h-0Fh, 0Fh is darkest) +Note: may be for backward compatibility with HP95LX, as INT 15/AH=62h does + substantially the same thing as this function +SeeAlso: AH=45h"HP",AH=48h"HP",AH=62h"HP" +--------b-1548------------------------------- +INT 15 U - HP 100LX/200LX - SET BUZZER VOLUME + AH = 48h + AL = volume (00h-03h; 03h is loudest, 04h-FFh are same as 03h) +SeeAlso: AH=47h"HP" +--------S-1549------------------------------- +INT 15 U - HP 100LX/200LX - SERIAL INTERFACE SELECT + AH = 49h + AL = serial interface + 00h wired (COM1) + 01h infrared +Note: interface should only be changed in deactivated state (see AH=4Ah) +SeeAlso: AH=4Ah"HP" +--------J-154900----------------------------- +INT 15 - Far East MS-DOS - GET BIOS TYPE + AX = 4900h +Return: CF clear if successful + AH = 00h + BL = BIOS mode + 00h DOS/V + 01h standard DBCS DOS (hardware DBCS support) + CF set on error + AH = 86h (function not supported) +Note: in practice, DOS/J returns AH=86h; AX DOS does not support this call +SeeAlso: AH=50h,INT 21/AH=30h +--------S-154A------------------------------- +INT 15 U - HP 100LX/200LX - SERIAL INTERFACE CONTROL + AH = 4Ah + AL = control + 00h deactivate + 01h activate +Note: interface selected with AH=49h will be (de)activated +SeeAlso: AH=49h"HP",AH=4Bh"HP" +--------b-154B------------------------------- +INT 15 U - HP 100LX/200LX - ADJUST SYSTEM TIME + AH = 4Bh +Desc: adjust system time based on real-time clock +SeeAlso: AH=4Ah"HP",INT 1A/AH=02h,INT 21/AH=2Ch +--------b-154DD4----------------------------- +INT 15 - HP 95LX/100LX/200LX - INSTALLATION CHECK + AX = 4DD4h +Return: BX = 4850h ("HP") if HP 95LX/100LX/200LX + CX = model + 0101h HP 95LX + 0102h HP 100LX/200LX + DH = ??? + 02h HP 200LX 2MB BIOS 1.01 A D german + DL = ??? + 00h HP 95LX + 01h HP 200LX 2MB BIOS 1.01 A D german +SeeAlso: INT 0B"HP 95LX",INT 0F"HP 95LX",INT 5F/AH=00h,INT 60/DI=0100h +SeeAlso: INT 61"HP 95LX" +--------b-154E------------------------------- +INT 15 - HP 95LX - ENABLE/DISABLE LIGHT SLEEP + AH = 4Eh + AL = light sleep + 00h disabled + 01h enabled +Note: when light sleep is disabled, the system will continue running at full + speed; when enabled, it may automatically slow to conserve batteries +SeeAlso: INT 06"HP 95LX",INT 60/DI=0100h +----------154E------------------------------- +INT 15 - IBM SurePath BIOS - Officially "Private" Function + AH = 4Eh +SeeAlso: AH=07h"IBM",AH=3Eh"IBM" +--------B-154F------------------------------- +INT 15 C - KEYBOARD - KEYBOARD INTERCEPT (AT model 3x9,XT2,XT286,CONV,PS) + AH = 4Fh + AL = hardware scan code (see #00006) + CF set +Return: CF set to continue processing scan code + AL = possibly-altered hardware scan code (see #00006) + CF clear + scan code should be ignored +Notes: called by INT 09 handler to translate scan codes; the INT 09 code does + not examine the scan code it reads from the keyboard until after + this function returns. This permits software to rearrange the + keyboard; for example, swapping the CapsLock and Control keys, or + turning the right Shift key into Enter. + DOS 6 KEYB.COM will not pass through this function if Ctrl-Alt-Del is + pressed and a SmartDrive v4-compatible cache is installed which has + dirty cache buffers; some other disk caches such as HyperDisk + operate similarly in order to prevent loss of cached data which has + not yet been written to disk + IBM classifies this function as required +SeeAlso: INT 09,INT 15/AH=C0h +--------J-1550------------------------------- +INT 15 - DOS/V - FONT SUBSYSTEM ACCESS + AH = 50h + AL = which function address to retrieve + 00h "read font" function + 01h "write font" function + BL = 00h + BH = character size (00h single-byte, 01h double-byte) + DH = width of character cell + DL = height of character cell + BP = code page (see #00470) +Return: CF clear if successful + AH = 00h + ES:BX -> requested function's address + CF set on error + AH = error code (see #00471) +SeeAlso: AH=49h + +(Table 00470) +Values for DOS/V code page: + 0 default + 437 US English + 932 Japanese + 934 Korea + 936 China + 938 Taiwan +SeeAlso: #01757 + +(Table 00471) +Values for DOS/V error code: + 01h invalid font type in BH + 02h BL not zero + 03h invalid font size + 04h invalid code page + 80h unsupported function (PC) + 86h unsupported function (XT) +SeeAlso: #01680 +--------T-1550------------------------------- +INT 15 - VMIX v2.???+ - "sys_vm_page" - SET NEW VIRTUAL PAGE TABLE + AH = 50h + BX = segment of page directory table + CX = page number of page table +SeeAlso: AH=10h"VMiX",AH=51h"VMiX",AH=52h"VMiX" +--------T-1551------------------------------- +INT 15 - VMiX v2.???+ - "sys_vm_func" - EXECUTE FUNCTION IN PROTECTED MODE + AH = 51h + STACK: DWORD selector:offset of function +Return: registers as returned by function +Note: executes function with privilege level 0 (highest privilege) +SeeAlso: AH=10h"VMiX",AH=52h"VMiX" +--------B-155101----------------------------- +INT 15 - SYSTEM - later PS/2s - EXPANSION UNIT, RETURN CONFIGURATION NUMBER + AX = 5101h +Return: CF set if successful + AH = 00h + AL = current configuration number + 00h system unit only + FFh configuration not recognized + BX = status flag + bits 0-14: reserved + bit 15: additional data is available (location TBD) + CF clear on error + AH = status + 01h expansion unit is not present + 86h function not supported +Note: CF convention is the reverse of the standard convention for this + interrupt. (Perhaps a typo in the IBM BIOS Tech Ref?) +--------T-1552------------------------------- +INT 15 - VMiX v2.???+ - "sys_vm_init" - INITIALIZE PROTECTED-MODE ENVIRONMENT + AH = 52h +SeeAlso: AH=50h"VMiX",AH=51h"VMiX" +--------d-1552------------------------------- +INT 15 C - IBM/MS INT 13 Extensions - MEDIA EJECT INTERCEPT + AH = 52h + DL = drive number +Return: CF clear if OK to eject media + AH = 00h + CF set if ejection disallowed + AH = error code (B1h,B3h) (see #00234) +Note: called by the IBM/MS INT 13 Extensions driver/BIOS when an ejection + request is made +SeeAlso: INT 13/AH=46h"INT 13 Extensions" +--------p-155300----------------------------- +INT 15 - Advanced Power Management v1.0+ - INSTALLATION CHECK + AX = 5300h + BX = device ID of system BIOS (0000h) +Return: CF clear if successful + AH = major version (BCD) + AL = minor version (BCD) + BX = 504Dh ("PM") + CX = flags (see #00472) + CF set on error + AH = error code (06h,09h,86h) (see #00473) +BUG: early versions of the Award Modular BIOS with built-in APM support + reportedly do not set BX on return + +Bitfields for APM flags: +Bit(s) Description (Table 00472) + 0 16-bit protected mode interface supported + 1 32-bit protected mode interface supported + 2 CPU idle call reduces processor speed + 3 BIOS power management disabled + 4 BIOS power management disengaged (APM v1.1) + 5-7 reserved + +(Table 00473) +Values for APM error code: + 01h power management functionality disabled + 02h interface connection already in effect + 03h interface not connected + 04h real-mode interface not connected + 05h 16-bit protected-mode interface already connected + 06h 16-bit protected-mode interface not supported + 07h 32-bit protected-mode interface already connected + 08h 32-bit protected-mode interface not supported + 09h unrecognized device ID + 0Ah invalid parameter value in CX + 0Bh (APM v1.1) interface not engaged + 0Ch (APM v1.2) function not supported + 0Dh (APM v1.2) Resume Timer disabled + 0Eh-1Fh reserved for other interface and general errors + 20h-3Fh reserved for CPU errors + 40h-5Fh reserved for device errors + 60h can't enter requested state + 61h-7Fh reserved for other system errors + 80h no power management events pending + 81h-85h reserved for other power management event errors + 86h APM not present + 87h-9Fh reserved for other power management event errors + A0h-FEh reserved + FFh undefined +--------p-155301----------------------------- +INT 15 - Advanced Power Management v1.0+ - CONNECT REAL-MODE INTERFACE + AX = 5301h + BX = device ID of system BIOS (0000h) +Return: CF clear if successful + CF set on error + AH = error code (02h,05h,07h,09h) (see #00473) +Note: on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0 + compatibility mode until it is informed that the user supports a + newer version of APM (see AX=530Eh) +SeeAlso: AX=5302h,AX=5303h,AX=5304h +--------p-155302----------------------------- +INT 15 R - Advanced Power Management v1.0+ - CONNECT 16-BIT PROTMODE INTERFACE + AX = 5302h + BX = device ID of system BIOS (0000h) +Return: CF clear if successful + AX = real-mode segment base address of protected-mode 16-bit code + segment + BX = offset of entry point + CX = real-mode segment base address of protected-mode 16-bit data + segment + ---APM v1.1--- + SI = APM BIOS code segment length + DI = APM BIOS data segment length + CF set on error + AH = error code (02h,05h,06h,07h,09h) (see #00473) +Notes: the caller must initialize two consecutive descriptors with the + returned segment base addresses; these descriptors must be valid + whenever the protected-mode interface is called, and will have + their limits arbitrarily set to 64K. + the protected mode interface is invoked by making a far call with the + same register values as for INT 15; it must be invoked while CPL=0, + the code segment descriptor must have a DPL of 0, the stack must be + in a 16-bit segment and have enough room for BIOS use and possible + interrupts, and the current I/O permission bit map must allow access + to the I/O ports used for power management. + functions 00h-03h are not available from protected mode + on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0 + compatibility mode until it is informed that the user supports a + newer version of APM (see AX=530Eh) +SeeAlso: AX=5301h,AX=5303h,AX=5304h +--------p-155303----------------------------- +INT 15 - Advanced Power Management v1.0+ - CONNECT 32-BIT PROTMODE INTERFACE + AX = 5303h + BX = device ID of system BIOS (0000h) +Return: CF clear if successful + AX = real-mode segment base address of protected-mode 32-bit code + segment + EBX = offset of entry point + CX = real-mode segment base address of protected-mode 16-bit code + segment + DX = real-mode segment base address of protected-mode 16-bit data + segment + ---APM v1.1--- + SI = APM BIOS code segment length + DI = APM BIOS data segment length + CF set on error + AH = error code (02h,05h,07h,08h,09h) (see #00473) +Notes: the caller must initialize three consecutive descriptors with the + returned segment base addresses for 32-bit code, 16-bit code, and + 16-bit data, respectively; these descriptors must be valid whenever + the protected-mode interface is called, and will have their limits + arbitrarily set to 64K. + the protected mode interface is invoked by making a far call to the + 32-bit code segment with the same register values as for INT 15; it + must be invoked while CPL=0, the code segment descriptor must have a + DPL of 0, the stack must be in a 32-bit segment and have enough room + for BIOS use and possible interrupts, and the current I/O permission + bit map must allow access to the I/O ports used for power management. + functions 00h-03h are not available from protected mode + on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0 + compatibility mode until it is informed that the user supports a + newer version of APM (see AX=530Eh) +SeeAlso: AX=5301h,AX=5302h,AX=5304h +--------p-155304----------------------------- +INT 15 - Advanced Power Management v1.0+ - DISCONNECT INTERFACE + AX = 5304h + BX = device ID of system BIOS (0000h) +Return: CF clear if successful + CF set on error + AH = error code (03h,09h) (see #00473) +SeeAlso: AX=5301h,AX=5302h,AX=5303h +--------p-155305----------------------------- +INT 15 - Advanced Power Management v1.0+ - CPU IDLE + AX = 5305h +Return: CF clear if successful (after system leaves idle state) + CF set on error + AH = error code (03h,0Bh) (see #00473) +Notes: call when the system is idle and should be suspended until the next + system event or interrupt + should not be called from within a hardware interrupt handler to avoid + reentrance problems + if an interrupt causes the system to resume normal processing, the + interrupt may or may not have been handled when the BIOS returns + from this call; thus, the caller should allow interrupts on return + interrupt handlers may not retain control if the BIOS allows + interrupts while in idle mode even if they are able to determine + that they were called from idle mode + the caller should issue this call continuously in a loop until it needs + to perform some processing of its own +SeeAlso: AX=1000h,AX=5306h,INT 2F/AX=1680h +--------p-155306----------------------------- +INT 15 - Advanced Power Management v1.0+ - CPU BUSY + AX = 5306h +Return: CF clear if successful + CF set on error + AH = error code (03h,0Bh) (see #00473) +Notes: called to ensure that the system runs at full speed even on systems + where the BIOS is unable to recognize increased activity (especially + if interrupts are hooked by other programs and not chained to the + BIOS) + this call may be made even when the system is already running at full + speed, but it will create unnecessary overhead + should not be called from within a hardware interrupt handler to avoid + reentrance problems +SeeAlso: AX=5305h +--------p-155307----------------------------- +INT 15 - Advanced Power Management v1.0+ - SET POWER STATE + AX = 5307h + BX = device ID (see #00474) + CX = system state ID (see #00475) +Return: CF clear if successful + CF set on error + AH = error code (01h,03h,09h,0Ah,0Bh,60h) (see #00473) +Note: should not be called from within a hardware interrupt handler to avoid + reentrance problems +SeeAlso: AX=530Ch + +(Table 00474) +Values for APM device IDs: + 0000h system BIOS + 0001h all devices for which the system BIOS manages power + 01xxh display (01FFh for all attached display devices) + 02xxh secondary storage (02FFh for all attached secondary storage devices) + 03xxh parallel ports (03FFh for all attached parallel ports) + 04xxh serial ports (04FFh for all attached serial ports) +---APM v1.1+ --- + 05xxh network adapters (05FFh for all attached network adapters) + 06xxh PCMCIA sockets (06FFh for all) + 0700h-7FFFh reserved + 80xxh system battery devices (APM v1.2) + 8100h-DFFFh reserved + Exxxh OEM-defined power device IDs + F000h-FFFFh reserved + +(Table 00475) +Values for system state ID: + 0000h ready (not supported for device ID 0001h) + 0001h stand-by + 0002h suspend + 0003h off (not supported for device ID 0001h in APM v1.0) +---APM v1.1--- + 0004h last request processing notification (only for device ID 0001h) + 0005h last request rejected (only for device ID 0001h) + 0006h-001Fh reserved system states + 0020h-003Fh OEM-defined system states + 0040h-007Fh OEM-defined device states + 0080h-FFFFh reserved device states +--------p-155307CX0001----------------------- +INT 15 - Advanced Power Management v1.0+ - SYSTEM STAND-BY + AX = 5307h + CX = 0001h + BX = 0001h (device ID for all power-managed devices) +Return: CF clear +Notes: puts the entire system into stand-by mode; normally called in response + to a System Stand-by Request notification after any necessary + processing, but may also be invoked at the caller's discretion + should not be called from within a hardware interrupt handler to avoid + reentrance problems + the stand-by state is typically exited on an interrupt +SeeAlso: AX=4280h,AX=5307h/CX=0002h"SUSPEND",AX=5307h/CX=0003h,AX=530Bh +--------p-155307CX0002----------------------- +INT 15 - Advanced Power Management v1.0+ - SUSPEND SYSTEM + AX = 5307h + CX = 0002h + BX = 0001h (device ID for all power-managed devices) +Return: after system is resumed + CF clear +Notes: puts the entire system into a low-power suspended state; normally + called in response to a Suspend System Request notification after + any necessary processing, but may also be invoked at the caller's + discretion + should not be called from within a hardware interrupt handler to avoid + reentrance problems + the caller may need to update its date and time values because the + system could have been suspended for a long period of time +SeeAlso: AX=5307h/CX=0001h"STAND-BY",AX=530Bh +--------p-155307CX0003----------------------- +INT 15 - Advanced Power Management v1.2 - TURN OFF SYSTEM + AX = 5307h + CX = 0003h + BX = 0001h (device ID for all power-managed devices) +Return: after system is resumed + CF clear +Notes: if supported by the system's power supply, turns off the system power +SeeAlso: AX=5307h/CX=0001h"STAND-BY",AX=530Bh +--------p-155308----------------------------- +INT 15 - Advanced Power Management v1.0+ - ENABLE/DISABLE POWER MANAGEMENT + AX = 5308h + BX = device ID for all devices power-managed by APM + 0001h (APM v1.1+) + FFFFh (APM v1.0) + CX = new state + 0000h disabled + 0001h enabled +Return: CF clear if successful + CF set on error + AH = error code (01h,03h,09h,0Ah,0Bh) (see #00473) +Notes: when power management is disabled, the system BIOS will not + automatically power down devices, enter stand-by or suspended mode, + or perform any power-saving actions in response to AX=5305h calls + should not be called from within a hardware interrupt handler to avoid + reentrance problems + the APM BIOS should never be both disabled and disengaged at the same + time +SeeAlso: AX=5309h,AX=530Dh,AX=530Fh +--------p-155309----------------------------- +INT 15 - Advanced Power Management v1.0+ - RESTORE POWER-ON DEFAULTS + AX = 5309h + BX = device ID for all devices power-managed by APM + 0001h (APM v1.1) + FFFFh (APM v1.0) +Return: CF clear if successful + CF set on error + AH = error code (03h,09h,0Bh) (see #00473) +Note: should not be called from within a hardware interrupt handler to avoid + reentrance problems +SeeAlso: AX=5308h +--------p-15530A----------------------------- +INT 15 - Advanced Power Management v1.0+ - GET POWER STATUS + AX = 530Ah + BX = device ID + 0001h all devices power-managed by APM + 80xxh specific battery unit number XXh (01h-FFh) (APM v1.2) +Return: CF clear if successful + BH = AC line status + 00h off-line + 01h on-line + 02h on backup power (APM v1.1) + FFh unknown + other reserved + BL = battery status (see #00476) + CH = battery flag (APM v1.1+) (see #00477) + CL = remaining battery life, percentage + 00h-64h (0-100) percentage of full charge + FFh unknown + DX = remaining battery life, time (APM v1.1) (see #00478) + ---if specific battery unit specified--- + SI = number of battery units currently installed + CF set on error + AH = error code (09h,0Ah) (see #00473) +Notes: should not be called from within a hardware interrupt handler to avoid + reentrance problems + supported in real mode (INT 15) and both 16-bit and 32-bit protected + mode + +(Table 00476) +Values for APM v1.0+ battery status: + 00h high + 01h low + 02h critical + 03h charging + FFh unknown + other reserved +SeeAlso: #00477,#00478 + +Bitfields for APM v1.1+ battery flag: +Bit(s) Description (Table 00477) + 0 high + 1 low + 2 critical + 3 charging + 4 selected battery not present (APM v1.2) + 5-6 reserved (0) + 7 no system battery +Note: all bits set (FFh) if unknown +SeeAlso: #00476,#00478 + +Bitfields for APM v1.1+ remaining battery life: +Bit(s) Description (Table 00478) + 15 time units: 0=seconds, 1=minutes + 14-0 battery life in minutes or seconds +Note: all bits set (FFFFh) if unknown +SeeAlso: #00476,#00477 +--------p-15530B----------------------------- +INT 15 - Advanced Power Management v1.0+ - GET POWER MANAGEMENT EVENT + AX = 530Bh +Return: CF clear if successful + BX = event code (see #00479) + CX = event information (APM v1.2) if BX=0003h or BX=0004h + bit 0: PCMCIA socket was powered down in suspend state + CF set on error + AH = error code (03h,0Bh,80h) (see #00473) +Notes: although power management events are often asynchronous, notification + will not be made until polled via this call to permit software to + only receive event notification when it is prepared to process + power management events; since these events are not very time- + critical, it should be sufficient to poll once or twice per second + the critical resume notification is made after the system resumes + from an emergency suspension; normally, the system BIOS only notifies + its partner that it wishes to suspend and relies on the partner to + actually request the suspension, but no notification is made on an + emergency suspension + should not be called from within a hardware interrupt handler to avoid + reentrance problems +SeeAlso: AX=5307h,AX=5307h/CX=0001h"STAND-BY",AX=5307h/CX=0002h"SUSPEND" + +(Table 00479) +Values for APM event code: + 0001h system stand-by request + 0002h system suspend request + 0003h normal resume system notification + 0004h critical resume system notification + 0005h battery low notification +---APM v1.1--- + 0006h power status change notification + 0007h update time notification + 0008h critical system suspend notification + 0009h user system standby request notification + 000Ah user system suspend request notification + 000Bh system standby resume notification +---APM v1.2--- + 000Ch capabilities change notification (see AX=5310h) +------ + 000Dh-00FFh reserved system events + 01xxh reserved device events + 02xxh OEM-defined APM events + 0300h-FFFFh reserved +--------p-15530C----------------------------- +INT 15 - Advanced Power Management v1.1+ - GET POWER STATE + AX = 530Ch + BX = device ID (see #00474) +Return: CF clear if successful + CX = system state ID (see #00475) + CF set on error + AH = error code (01h,09h) (see #00473) +SeeAlso: AX=5307h +--------p-15530D----------------------------- +INT 15 - Advanced Power Management v1.1+ - EN/DISABLE DEVICE POWER MANAGEMENT + AX = 530Dh + BX = device ID (see #00474) + CX = function + 0000h disable power management + 0001h enable power management +Return: CF clear if successful + CF set on error + AH = error code (01h,03h,09h,0Ah,0Bh) (see #00473) +Desc: specify whether automatic power management should be active for a + given device +SeeAlso: AX=5308h,AX=530Fh +--------p-15530E----------------------------- +INT 15 - Advanced Power Management v1.1+ - DRIVER VERSION + AX = 530Eh + BX = device ID of system BIOS (0000h) + CH = APM driver major version (BCD) + CL = APM driver minor version (BCD) (02h for APM v1.2) +Return: CF clear if successful + AH = APM connection major version (BCD) + AL = APM connection minor version (BCD) + CF set on error + AH = error code (03h,09h,0Bh) (see #00473) +SeeAlso: AX=5300h,AX=5303h +--------p-15530F----------------------------- +INT 15 - Advanced Power Management v1.1+ - ENGAGE/DISENGAGE POWER MANAGEMENT + AX = 530Fh + BX = device ID (see #00474) + CX = function + 0000h disengage power management + 0001h engage power management +Return: CF clear if successful + CF set on error + AH = error code (01h,09h) (see #00473) +Notes: unlike AX=5308h, this call does not affect the functioning of the APM + BIOS + when cooperative power management is disengaged, the APM BIOS performs + automatic power management of the system or device +SeeAlso: AX=5308h,AX=530Dh +--------p-155310----------------------------- +INT 15 - Advanced Power Management v1.2 - GET CAPABILITIES + AX = 5310h + BX = device ID (see #00474) + 0000h (APM BIOS) + other reserved +Return: CF clear if successful + BL = number of battery units supported (00h if no system batteries) + CX = capabilities flags (see #00480) + CF set on error + AH = error code (01h,09h,86h) (see #00473) +Notes: this function is supported via the INT 15, 16-bit protected mode, and + 32-bit protected mode interfaces; it does not require that a + connection be established prior to use + this function will return the capabilities currently in effect, not + any new settings which have been made but do not take effect until + a system restart +SeeAlso: AX=5300h,AX=530Fh,AX=5311h,AX=5312h,AX=5313h + +Bitfields for APM v1.2 capabilities flags: +Bit(s) Description (Table 00480) + 15-8 reserved + 7 PCMCIA Ring Indicator will wake up system from suspend mode + 6 PCMCIA Ring Indicator will wake up system from standby mode + 5 Resume on Ring Indicator will wake up system from suspend mode + 4 Resume on Ring Indicator will wake up system from standby mode + 3 resume timer will wake up system from suspend mode + 2 resume timer will wake up system from standby mode + 1 can enter global suspend state + 0 can enter global standby state +--------p-155311----------------------------- +INT 15 - Advanced Power Management v1.2 - GET/SET/DISABLE RESUME TIMER + AX = 5311h + BX = device ID (see #00474) + 0000h (APM BIOS) + other reserved + CL = function + 00h disable Resume Timer + 01h get Resume Timer + 02h set Resume Timer + CH = resume time, seconds (BCD) + DL = resume time, minutes (BCD) + DH = resume time, hours (BCD) + SI = resume date (BCD), high byte = month, low byte = day + DI = resume date, year (BCD) +Return: CF clear if successful + ---if getting timer--- + CH = resume time, seconds (BCD) + DL = resume time, minutes (BCD) + DH = resume time, hours (BCD) + SI = resume date (BCD), high byte = month, low byte = day + DI = resume date, year (BCD) + CF set on error + AH = error code (03h,09h,0Ah,0Bh,0Ch,0Dh,86h) (see #00473) +Notes: this function is supported via the INT 15, 16-bit protected mode, and + 32-bit protected mode interfaces +SeeAlso: AX=5300h,AX=5310h,AX=5312h,AX=5313h +--------p-155312----------------------------- +INT 15 - Advanced Power Management v1.2 - ENABLE/DISABLE RESUME ON RING + AX = 5312h + BX = device ID (see #00474) + 0000h (APM BIOS) + other reserved + CL = function + 00h disable Resume on Ring Indicator + 01h enable Resume on Ring Indicator + 02h get Resume on Ring Indicator status +Return: CF clear if successful + CX = resume status (0000h disabled, 0001h enabled) + CF set on error + AH = error code (03h,09h,0Ah,0Bh,0Ch,86h) (see #00473) +Notes: this function is supported via the INT 15, 16-bit protected mode, and + 32-bit protected mode interfaces +SeeAlso: AX=5300h,AX=5310h,AX=5311h,AX=5313h +--------p-155313----------------------------- +INT 15 - Advanced Power Management v1.2 - ENABLE/DISABLE TIMER-BASED REQUESTS + AX = 5313h + BX = device ID (see #00474) + 0000h (APM BIOS) + other reserved + CL = function + 00h disable timer-based requests + 01h enable timer-based requests + 02h get timer-based requests status +Return: CF clear if successful + CX = timer-based requests status (0000h disabled, 0001h enabled) + CF set on error + AH = error code (03h,09h,0Ah,0Bh,86h) (see #00473) +Notes: this function is supported via the INT 15, 16-bit protected mode, and + 32-bit protected mode interfaces + some BIOSes set AH on return even when successful +SeeAlso: AX=5300h,AX=5310h,AX=5311h,AX=5312h +--------p-155380BH00------------------------- +INT 15 - APM SL Enhanced v1.0 - GET SUSPEND/GLOBAL STANDBY MODE + AX = 5380h + BH = 00h +Return: CF clear if successful + AL = 82360SL Auto Power Off Timer High Count (APWR_TMRH) + BL = sustdbymode (see #00481) +SeeAlso: AX=5380h/BH=01h,AX=5380h/BH=02h,AX=5380h/BH=7Fh + +Bitfields for APM SL sustdbymode: +Bit(s) Description (Table 00481) + 2 ??? + 1 Auto Power Off Timer Enable (APWR_TMR_EN) + 0 ??? +--------p-155380BH01------------------------- +INT 15 - APM SL Enhanced v1.0 - SET SUSPEND/GLOBAL STANDBY MODE + AX = 5380h + BH = 01h + BL = sustdbymode (see #00481) +Return: CF clear if successful +SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=7Fh +--------p-155380BH02------------------------- +INT 15 - APM SL Enhanced v1.0 - GET GLOBAL STANDBY TIMER + AX = 5380h + BH = 02h +Return: CF clear if successful + SI:DI = timer count in seconds (actually 1.024 seconds) +Desc: reads the value of 82360SL GSTDBY_TMRH & GSTDBY_TMRL registers +SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=03h,AX=5380h/BH=04h,AX=5380h/BH=7Fh +--------p-155380BH03------------------------- +INT 15 - APM SL Enhanced v1.0 - SET GLOBAL STANDBY TIMER + AX = 5380h + BH = 03h + SI:DI = timer count in seconds (actually 1.024 seconds) +Return: CF clear if successful +Desc: sets the value of 82360SL GSTDBY_TMRH & GSTDBY_TMRL registers +Note: the maximum timer count is 268431 seconds +SeeAlso: AX=5380h/BH=02h,AX=5380h/BH=7Fh +--------p-155380BH04------------------------- +INT 15 - APM SL Enhanced v1.0 - GET AUTO POWER OFF TIMER + AX = 5380h + BH = 04h +Return: CF clear if successful + SI:DI = timer count in seconds (actually 1.024 seconds) +Desc: reads the value of 82360SL APWR_TMRH & APWR_TMRL registers +SeeAlso: AX=5380h/BH=02h,AX=5380h/BH=05h,AX=5380h/BH=06h,AX=5380h/BH=7Fh +--------p-155380BH05------------------------- +INT 15 - APM SL Enhanced v1.0 - SET AUTO POWER OFF TIMER + AX = 5380h + BH = 05h + SI:DI = timer count in seconds (actually 1.024 seconds) +Return: CF clear if successful +Desc: sets the value of 82360SL APWR_TMRH & APWR_TMRL registers +Note: the maximum timer count is 134213 seconds +SeeAlso: AX=5380h/BH=04h,AX=5380h/BH=7Fh +--------p-155380BH06------------------------- +INT 15 - APM SL Enhanced v1.0 - GET RESUME CONDITION + AX = 5380h + BH = 06h +Return: CF clear if successful + BL = resume condition (see #00482) +Desc: reads the value of 82360SL RESUME_MASK register +SeeAlso: AX=5380h/BH=04h,AX=5380h/BH=07h,AX=5380h/BH=08h,AX=5380h/BH=7Fh + +Bitfields for APM SL resume condition: +Bit(s) Description (Table 00482) + 7-2 reserved (0) + 1 alarm enabled (resume on CMOS alarm) + 0 ring enabled +--------p-155380BH07------------------------- +INT 15 - APM SL Enhanced v1.0 - SET RESUME CONDITION + AX = 5380h + BH = 07h + BL = resume condition (see #00482) +Return: CF clear if successful +Desc: sets the value of 82360SL RESUME_MASK register +SeeAlso: AX=5380h/BH=06h,AX=5380h/BH=7Fh +--------p-155380BH08------------------------- +INT 15 - APM SL Enhanced v1.0 - GET CALENDAR EVENT TIME + AX = 5380h + BH = 08h +Return: CF clear if successful + CH = hours + CL = minutes + SI = seconds + CF set on error + AH = error code (see #00483) +Desc: gets calendar event time from CMOS ram +SeeAlso: AX=5380h/BH=06h,AX=5380h/BH=09h,AX=5380h/BH=0Ah,AX=5380h/BH=7Fh + +(Table 00483) +Values for APM SL error code: + 02h no alarm set + 03h no battery +--------p-155380BH09------------------------- +INT 15 - APM SL Enhanced v1.0 - SET CALENDAR EVENT TIME + AX = 5380h + BH = 09h + CH = hours + CL = minutes + SI = seconds +Return: CF clear if successful + CF set on error + AH = error code (see #00483) +Desc: sets calendar event time in CMOS ram, enables Alarm resume +SeeAlso: AX=5380h/BH=08h,AX=5380h/BH=7Fh +--------p-155380BH0A------------------------- +INT 15 - APM SL Enhanced v1.0 - GET CALENDAR EVENT DATE + AX = 5380h + BH = 0Ah +Return: CF clear if successful + SI = century + DI = year + CH = month + CL = day + CF set on error + AH = error code (see #00483) +Desc: reads calendar event date from Extended CMOS ram +SeeAlso: AX=5380h/BH=08h,AX=5380h/BH=0Bh,AX=5380h/BH=0Ch,AX=5380h/BH=7Fh +--------p-155380BH0B------------------------- +INT 15 - APM SL Enhanced v1.0 - SET CALENDAR EVENT DATE + AX = 5380h + BH = 0Bh + SI = century + DI = year + CH = month + CL = day +Return: CF clear if successful + CF set on error + AH = error code (see #00483) +Desc: sets calendar event date in Extended CMOS ram +SeeAlso: AX=5380h/BH=0Ah,AX=5380h/BH=7Fh +--------p-155380BH0C------------------------- +INT 15 - APM SL Enhanced v1.0 - GET CPU SPEED MODE + AX = 5380h + BH = 0Ch +Return: CF clear if successful + CL = CPU clock divider (1,2,4 or 8) + BL = autocpumode ??? +Desc: reads bits 4-5 of CPUPWRMODE register +SeeAlso: AX=5380h/BH=0Ah,AX=5380h/BH=0Dh,AX=5380h/BH=7Fh +--------p-155380BH0D------------------------- +INT 15 - APM SL Enhanced v1.0 - SET CPU SPEED MODE + AX = 5380h + BH = 0Dh + CL = CPU clock divider (1,2,4 or 8) + BL = autocpumode ??? +Return: CF clear if successful +Desc: writes bits 4-5 of CPUPWRMODE register +SeeAlso: AX=5380h/BH=0Ch,AX=5380h/BH=7Eh,AX=5380h/BH=7Fh +--------p-155380BH7E------------------------- +INT 15 - APM SL Enhanced v1.0 - SL HW PARAMETER + AX = 5380h + BH = 7Eh +Return: AL = ??? + 03h on A-Step 386SL BIOSes + 12h on later steps + BX = Control port (00B0h) +SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=7Fh +--------p-155380BH7F------------------------- +INT 15 - Advanced Power Management v1.1 - OEM APM INSTALLATION CHECK + AX = 5380h + BH = 7Fh +Return: CF clear if successful + BX = OEM identifier + all other registers OEM-defined + ---Intel SL Enhanced Option BIOS--- + BX = 534Ch ('SL') + CL = 4Fh ('O') + AL = version (10h = 1.0) + ---HP APM BIOS--- + BX = 4850h ('HP') + CX = version (0001h) + CF set on error + AH = error code (03h) (see #00473) +SeeAlso: AX=5380h/BH=00h +--------p-155380----------------------------- +INT 15 - Advanced Power Management v1.1 - OEM APM FUNCTIONS + AX = 5380h + BH <> 7Fh + all other registers OEM-defined +Return: OEM-defined +SeeAlso: AX=5380h/BH=7Fh +--------p-155380BX8000----------------------- +INT 15 U - Phoenix BIOS 4.0 Rel 6.0 - ??? + AX = 5380h + BX = 8000h + CX = 0020h +Return: ??? +Note: although a check for the indicated value is present in the examined + copy of the BIOS, no code was associated with it (possibly an OEM + option not included in that copy) and this function always returns + CF set/AH=03h if CX=0020h and CF set/AH=86h for CX<>0020h +SeeAlso: AX=5380h/BX=8001h +--------p-155380BX8001----------------------- +INT 15 U - Phoenix BIOS 4.0 Rel 6.0 - ??? + AX = 5380h + BX = 8001h + CX = 0020h +Return: ??? +Note: although a check for the indicated value is present in the examined + copy of the BIOS, no code was associated with it (possibly an OEM + option not included in that copy) +SeeAlso: AX=5380h/BX=8000h +--------X-1553B0BH00------------------------- +INT 15 - Intel System Management Bus - RESERVED + AX = 53B0h + BH = 00h +Program: the SMBus is a variant of ACCESS.bus being used by Intel and Duracell + for the Smart Battery proposal, but designed to be generic enough to + handle other devices besides batteries +--------X-1553B0BH01------------------------- +INT 15 - Intel System Management Bus - INSTALLATION CHECK + AX = 53B0h + BH = 01h + BL = 72h ('r') + CX = 6164h ('ad') +Return: CF clear if installed + AH = SMBus BIOS Interface Specification major version (01h) + AL = SMBus BIOS Interface Specification minor version (00h) + BL = number of SMBus devices present + CX = 6941h ('iA') + DX = vendor-specified SMBus hardware code + 0000h means undefined hardware type + CF set if error + AH = Error code 0Ah, 86h (see #00484) +Note: this function is only supported in INT 15h mode +SeeAlso: AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=04h,AX=53B0h/BH=06h +SeeAlso: #01105 at INT 1A/AX=B10Ah/SF=8086h + +(Table 00484) +Values for Intel System Management Bus error codes: + 00h SMBus OK + 01h SMBus connect failed + 02h SMBus already connected (see also #00485) + 03h SMBus disconnect failed + 04h SMBus not connected + 05h SMBus INT 15 interface disabled + 06h SMBus device address request out of range + 07h SMBus unknown failure + 08h SMBus message list empty + 09h SMBus message list overflow + 0Ah SMBus invalid signature + 10h SMBus device address not acknowledged + 11h SMBus device error detected + 12h SMBus device command access denied + 13h SMBus unknown error + 14h SMBus transaction pending + 15h SMBus no transaction pending + 16h SMBus request does not match pending transaction + 17h SMBus device access denied + 18h SMBus timeout + 19h SMBus protocol not supported + 1Ah SMBus busy + 1Bh SMBus SMI detected + 80h SMBus OK (previously unreported SMI occurred) + 86h SMBus not supported + +(Table 00485) +Values for Intel System Management Bus Already Connected sub-error codes: + 01h real mode connect already established + 02h 16-bit PMode connect already established + 03h 32-bit PMode connect already established +SeeAlso: #00484 +--------X-1553B0BH02------------------------- +INT 15 - Intel System Management Bus - REAL MODE CONNECT + AX = 53B0h + BH = 02h + CX = 6941h ('iA') +Return: CF clear if successful + AX = SMBus Real mode code segment + BX = offset of entry point into SMBus BIOS Interface + CX = SMBus Real mode data segment + CF set if error + AH = error code (01h,02h,0Ah,86h) (see #00484) + AL = sub-error code if error code is 02h (see #00485) +Desc: connect to SMBus interface; once connected, all SMBus calls are made + to the supplied entry point instead of INT 15 (with registers + identical to those described here for INT 15) +Notes: Support for this function is optional + this function is only supported in INT 15 mode when implemented +SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=03h,AX=53B0h/BH=04h,AX=53B0h/BH=05h +--------X-1553B0BH03------------------------- +INT 15 - Intel System Management Bus - 16-BIT PROTECTED-MODE CONNECT + AX = 53B0h + BH = 03h + CX = 6941h ('iA') +Return: CF clear if successful + AX = SMBus 16-bit code segment (real mode base address) + BX = offset of entry point into SMBus BIOS Interface + CX = SMBus 16-bit data segment (real mode base address) + SI = code segment length in bytes + DI = data segment length in bytes + CF set if error + AH = error code (01h,02h,0Ah,86h) (see #00484) + AL = sub-error code if error code is 02h (see #00485) +Desc: connect to SMBus interface; once connected, all SMBus calls are made + to the supplied entry point instead of INT 15 (with registers + identical to those described here for INT 15) +Notes: before calling the entry point, two descriptors must be initialized + in the GDT or LDT. They must be consecutive and be in the order of + code, then data. At the time of the call, the descriptors must be + valid and have CPL=0. + the code descriptor must be ring-0 privilege + this function is only supported in INT 15 mode +SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=04h,AX=53B0h/BH=05h +--------X-1553B0BH04------------------------- +INT 15 - Intel System Management Bus - 32-BIT PROTECTED-MODE CONNECT + AX = 53B0h + BH = 04h + CX = 6941h ('iA') +Return: CF clear if successful + AX = SMBus 32-bit code segment (real mode base address) + EBX = offset of entry point into SMBus BIOS Interface + CX = SMBus 16-bit code segment (real mode base address) + DX = SMBus data segment (real mode base address) + SI = code segment length in bytes + DI = data segment length in bytes + CF set if error + AH = error code (01h,02h,0Ah,86h) (see #00484) + AL = sub-error code if error code is 02h (see #00485) +Desc: connect to SMBus interface; once connected, all SMBus calls are made + to the supplied entry point instead of INT 15 (with registers + identical to those described here for INT 15) +Notes: before calling the entry point, two descriptors must be initialized in + the GDT or LDT. They must be consecutive and be in the order of + 32-bit code, 16-bit code, then data. At the time of the call, the + descriptors must be valid and have CPL=0. + the code descriptors must be ring-0 privilege + this function is supported only in INT 15 mode +SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=05h +--------X-1553B0BH05------------------------- +INT 15 - Intel System Management Bus - DISCONNECT + AX = 53B0h + BH = 05h + CX = 6941h ('iA') +Return: CF clear if successful + AH = 00h (SMBus OK) + CF set if error + AH = error code (03h,04h,05h,0Ah,86h) (see #00484) +Note: this function is supported in connected mode (far CALL entry point) + only +SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=04h +--------X-1553B0BH06------------------------- +INT 15 - Intel System Management Bus - GET DEVICE ADDRESSES + AX = 53B0h + BH = 06h + BL = position in list to report + CH = 6941h ('iA') +Return: CF clear if successful + AH = 00h (SMBus OK) + BH = number of SMBus devices + BL = SMBus Device Address of device at position BL in list + (see #00486) + CF set if error + AH = error code (06h,0Ah,86h) (see #00484) +Desc: retrieves already assigned SMBus device addresses +Notes: this function is supported in INT 15h mode only + bit 0 of the device address indicates read/write, so a device may + be listed at both xxxxxxx0b and xxxxxxx1b +SeeAlso: I2C A0h [and I2C.LST in general] + +(Table 00486) +Values for System Management Bus predefined device addresses: + 10h SMBus host + 12h Smart Battery charger + 14h Smart Battery selector + 16h Smart Battery + 18h SMBus Alert response + 50h ACCESS.bus host + 58h LCD contrast controller + 5Ah CCFL backlight driver + 6Eh ACCESS.bus default address + 80h-86h PCMCIA socket controllers + 88h VGA graphics controller + 90h-96h unrestricted addresses + 82h SMBus device default address +--------X-1553B0BH07------------------------- +INT 15 - Intel System Management Bus - RETRIEVE CRITICAL MESSAGES + AX = 53B0h + BH = 07h + CX = 6941h ('iA') +Return: CF clear if successful + AH = 00h (SMBus OK) + AL = device address + BX = device message + CF set if error + AH = error code (05h,07h,08h,09h,0Ah,86h) (see #00484) +Desc: retrieves oldest queued critical message from an SMBus device to the + host +Notes: up to five messages are queued; if the queue is full, messages will be + lost and error 09h returned +--------X-1553B0BH08------------------------- +INT 15 - Intel System Management Bus - RESERVED + AX = 53B0h + BH = 08h-0Fh +--------X-1553B0BH10------------------------- +INT 15 - Intel System Management Bus - REQUEST + AX = 53B0h + BH = 10h + BL = protocol (see #00487) + CH = device address + CL = device command (see #00488) + DH = MSB Data or block length (for BlockWrite) + DL = LSB Data or first byte of block (for BlockWrite) +Return: CF clear if successful + AH = 00h or 80h (SMBus OK) + (80h indicates a previously unreported SMI took place) + CF set if error + AH = error code (05h,10h,11h,12h,13h,14h,17h,19h,1Ah,86h) + (see #00484) +Desc: request access to a device on the SMBus +SeeAlso: AX=53B0h/BH=11h, AX=53B0h/BH=13h + +(Table 00487) +Values for Intel System Management Bus protocol codes: + 00h Quick Command + 01h Send Byte + 02h Receive Byte + 03h Write Byte + 04h Read Byte + 05h Write Word + 06h Read Word + 07h Block Write + 08h Block Read + 09h Process Call + 0Ah-FFh reserved +SeeAlso: #00488 + +(Table 00488) +Values for Intel System Management Bus Smart Battery command codes: + Cmd Protocol(s) Description + 00h Rd/Wr Word "ManufacturerAccess" implementation-specific + 01h Rd/Wr Word get/set Low Capacity Alarm threshold + 02h Rd/Wr Word get/set Remaining Time Alarm value (in minutes) + 03h Rd/Wr Word get/set battery characteristics (see #00489) + 04h Rd/Wr Word "AtRate" indicate charge/discharge rate + 05h Read Word "AtRateTimeToFull" time to completely charge (in min.) + 06h Read Word "AtRateTimeToEmpty" time to entirely discharge (min.) + 07h Read Word "AtRateOK" boolean: can battery supply another 10sec? + 08h Read Word internal battery temperature (in 0.1 Kelvins) + 09h Read Word current battery voltage in millivolts + 0Ah Read Word current flowing through battery in milliamperes + (positive if charging, negative if discharging) + 0Bh Read Word average current over the past minute + 0Ch Read Word expected error margin in capacity computations in % + 0Dh Read Word predicted remaining charge as % of full charge + 0Eh Read Word predicted remaining charge as % of design capacity + 0Fh Read Word predicted remaining charge in mAh or 10mWh + 10h Read Word predicted full charge capacity in mAh or 10mWh + 11h Read Word predicted remaining battery life in minutes + FFFFh = not discharging + 12h Read Word rolling average of predicted life over past minute + 13h Read Word rolling average of predicted charge time over past min. + FFFFh = not charging + 14h Read Word get battery's desired charging current in mA + 14h Write Word set charging current in mA + 15h Read Word get battery's desired charging current in mV + 15h Write Word set desired charging voltage in mV + 16h Read Word get current battery status (see #00490) + 17h Read Word get number of charge/discharge cycles for battery + 18h Read Word get design capacity in mAh or 10mWh + 19h Read Word get design voltage + 1Ah Read Word get specification information (see #00491) + 1Bh Read Word get manufacture date (see #01665 at INT 21/AX=5700h) + 1Ch Read Word get serial number + 1Dh-1Fh reserved + 20h Read Block get manufacturer's name + 21h Read Block get device name + 22h Read Block get device chemistry (see #00492) + 23h Read Block get manufacturer data + 24h-2Eh reserved + 2Fh manufacturer-specific + 30h-3Bh reserved + 3Ch-3Fh manufacturer-specific +Note: bits 7-6 are reserved for addressing multiple batteries in a future + version of the specification +SeeAlso: #00487 + +Bitfields for Smart Battery battery characteristics: +Bit(s) Description (Table 00489) + 0 battery has internal charge controller (read-only) + 1 primary/secondary battery support (read-only) + 6-2 reserved + 7 conditioning cycle requested + 8 internal charge controller enabled + 9 battery operating in primary mode + 13-10 reserved + 14 disable broadcast to charger + 15 report capacity in units of 10mW / 10mWh instead of mA / mAh +SeeAlso: #00488,#00490 + +Bitfields for Smart Battery battery status: +Bit(s) Description (Table 00490) + 15 overcharged + 14 terminate-charge alarm + 13 reserved + 12 over-temperature alarm + 11 terminate-discharge alarm + 10 reserved + 9 remaining-capacity alarm + 8 remaining-time alarm + 7 initialized + 6 charging + 5 fully charged + 4 fully discharged + 3-0 error codes + 0000 OK + 0001 busy + 0010 reserved command + 0011 unsupported command + 0100 access denied (tried to write to read-only value) + 0101 overflow/underflow + 0110 bad size + 0111 unknown error +SeeAlso: #00488,#00489,#00491 + +Bitfields for Smart Battery specification information: +Bit(s) Description (Table 00491) + 3-0 SmartBattery specification minor revision number + 7-4 SmartBattery specification version number + 11-8 voltage scaling (0-3, multiply voltages by 10^scale) + 15-12 current scaling (0-3, multiply currents by 10^scale) +SeeAlso: #00488,#00490 + +(Table 00492) +Values for Smart Battery device chemistry (not case-sensitive): + "LION" Lithium ion + "NiMH" Nickel metal hydride + "PbAc" lead-acid + "NiCd" Nickel Cadmium + "NiZn" Nickel Zinc + "RAM" rechargeable Alkaline Manganese + "ZnAr" Zinc-Air +SeeAlso: #00488 +--------X-1553B0BH11------------------------- +INT 15 - Intel System Management Bus - REQUEST CONTINUATION + AX = 53B0h + BH = 11h + BL = protocol (see #00487) + CH = device address + CL = number of valid bytes in DX (1 or 2) + DH = MSB Data (CL = 1 or 2) + DL = LSB Data (CL = 2) +Return: CF clear if successful + AH = 00h (SMBus OK) + CL = SMBus status + 00h SMBus hardware not ready for more data + 01h SMBus hardware ready for 2 more data bytes + CF set if error + AH = error code (05h,11h,13h,15h,16h,18h,1Bh,86h) (see #00484) +Desc: continue WriteBlock protocol started with function 10h +SeeAlso: AX=53B0h/BH=10h, AX=53B0h/BH=13h +--------X-1553B0BH12------------------------- +INT 15 - Intel System Management Bus - REQUEST ABORT + AX = 53B0h + BH = 12h + BL = protocol (see #00487) + CH = device address + CL = device command +Return: CF clear if successful + AH = 00h (SMBus OK) + CF set if error + AH = error code (05h,13h,15h,16h,86h) (see #00484) +Desc: stop the currently pending SMBus request; usually used to terminate + a request after an SMI Detected error +--------X-1553B0BH13------------------------- +INT 15 - Intel System Management Bus - REQUEST DATA AND STATUS + AX = 53B0h + BH = 13h + BL = protocol (see #00487) + CH = device address + CL = device command +Return: CF clear if successful + AH = 00h (SMBus OK) + CH = status + 00h no data pending, transaction complete + 01h no data pending, transaction continues + 02h data pending + CL = number of valid bytes in DX (0-2) + DH = MSB data + DL = LSB data + CF set if error + AH = error code (05h,10h,11h,13h,15h,16h,18h,1Bh,86h) (see #00484) +Desc: determine when a transaction is complete, gather data returned by read + transactions +Note: for Block Read protocol (08h), first call returns block length in DH + and the first byte of the block in DL +----------1554------------------------------- +INT 15 - IBM SurePath BIOS - Officially "Private" Function + AH = 54h +SeeAlso: AH=07h"IBM",AH=3Eh"IBM" +--------T-155400----------------------------- +INT 15 C - Omniview Multitasker - INSTALLATION NOTIFICATION + AX = 5400h + ES:BX -> device information tables + DI:DX -> dispatcher entry point +Note: called by OmniView to notify programs loaded before OmniView of state + changes inside OmniView +SeeAlso: AX=5407h,INT 2F/AX=DE00h +--------T-155401----------------------------- +INT 15 C - Omniview Multitasker - PROCESS CREATION + AX = 5401h + ES:BX = process handle +Note: called by OmniView to notify programs loaded before OmniView of state + changes inside OmniView +SeeAlso: AX=5402h,INT 2F/AX=DE04h +--------T-155402----------------------------- +INT 15 C - Omniview Multitasker - PROCESS DESTRUCTION + AX = 5402h + ES:DX = process handle +Note: called by OmniView to notify programs loaded before OmniView of state + changes inside OmniView +SeeAlso: AX=5401h,INT 2F/AX=DE05h +--------T-155403----------------------------- +INT 15 C - Omniview Multitasker - SAVE + AX = 5403h + ES:DX = process swapping out +Note: called by OmniView to notify programs loaded before OmniView of state + changes inside OmniView +SeeAlso: AX=5404h,INT 2F/AX=DE08h +--------T-155404----------------------------- +INT 15 C - Omniview Multitasker - RESTORE + AX = 5404h + ES:DX = process swapping in +Note: called by OmniView to notify programs loaded before OmniView of state + changes inside OmniView +SeeAlso: AX=5403h,INT 2F/AX=DE09h +--------T-155405----------------------------- +INT 15 C - Omniview Multitasker - SWITCHING TO BACKGROUND + AX = 5405h + ES:DX = process swapping in +Note: called by OmniView to notify programs loaded before OmniView of state + changes inside OmniView +SeeAlso: AX=5406h +--------T-155406----------------------------- +INT 15 C - Omniview Multitasker - SWITCHING TO FOREGROUND + AX = 5406h + ES:DX = process swapping in +Note: called by OmniView to notify programs loaded before OmniView of state + changes inside OmniView +SeeAlso: AX=5405h +--------T-155407----------------------------- +INT 15 C - Omniview Multitasker - EXIT NOTIFICATION + AX = 5407h +Note: called by OmniView to notify programs loaded before OmniView of state + changes inside OmniView +SeeAlso: AX=5400h,INT 2F/AX=DE03h +--------V-155F31----------------------------- +INT 15 C - Chips & Technologies '65530' BIOS - POST INITIALIZATION NOTIFICATION + AX = 5F31h +Return: nothing +Desc: this function is called after the video BIOS completes power-up + initialization and just prior to displaying the sign-on message +SeeAlso: AX=5F33h,AX=5F35h,INT 10/AX=5F50h +--------V-155F33----------------------------- +INT 15 C - Chips & Technologies '65530' BIOS - MODE SET HOOK + AX = 5F33h + BL = current width in characters + BH = curent video mode + CH = active display page +Return: nothing +Desc: this function is called at the end of a video mode set +Note: the OEM has the option of enabling or disabling this callout, as well + as specifying whether the callout occurs on INT 15h or INT 42h +SeeAlso: AX=5F31h,AX=5F35h,INT 10/AX=5F50h,INT 42/AX=5F33h +--------V-155F35----------------------------- +INT 15 C - Chips & Technologies '65530' BIOS - MONITOR SENSING HOOK + AX = 5F35h +Return: DL = boot display + 00h CRT + 01h flat panel (LCD) + 02h both simultaneously + leave unchanged to boot according to BIOS settings +SeeAlso: AX=5F31h,AX=5F33h,INT 10/AX=5F50h +--------b-1560------------------------------------ +INT 15 - HUNTER 16 - SET SYSTEM CLOCK SPEED + AH = 60h + AL = new speed + 00h normal (8 MHz) + 01h Slow Mode 1 (4 MHz) + 02h Slow Mode 2 (2 MHz) +Note: the Husky Hunter 16 is an 8088-based ruggedized laptop. Other family + members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk. +SeeAlso: AX=6301h +--------p-156000----------------------------- +INT 15 U - HP 100LX/200LX - GET MAIN BATTERY LEVEL + AX = 6000h +Return: AX = battery level +Note: multiply the returned value with 1Bh and add 622h to get millivolts +SeeAlso: AX=6001h,AX=6002h,AX=6003h,AX=6004h +--------p-156001----------------------------- +INT 15 U - HP 100LX/200LX - GET BACKUP BATTERY LEVEL + AX = 6001h +Return: AX = battery level +Note: multiply the returned value with 1Bh and add 622h to get millivolts +SeeAlso: AX=6000h,AX=6002h +--------p-156002----------------------------- +INT 15 U - HP 100LX/200LX - GET POWER INFO + AX = 6002h +Return: AL = power settings (see #00493) +SeeAlso: AX=6000h,AX=6003h,AX=6004h + +Bitfields for power settings: +Bit(s) Description (Table 00493) + 0-1 unused ??? + 2 card battery status low (OK if bit clear) + 3 battery charging off (disabled if bits 3-5 clear) + 4 battery charging slow + 5 battery charging fast + 6 power adaptor active + 7 battery type NiCad (alkaline if bit clear) +--------p-156003----------------------------- +INT 15 U - HP 100LX/200LX - SET MAIN BATTERY TYPE + AX = 6003h + BL = battery type + 00h alkaline + 01h NiCad +SeeAlso: AX=6000h,AX=6004h +--------p-156004----------------------------- +INT 15 U - HP 100LX/200LX - SET BATTERY CHARGING MODE + AX = 6004h + BL = charging + 00h disabled + 01h enabled +SeeAlso: AX=6000h,AX=6003h +--------b-1561------------------------------------ +INT 15 - HUNTER 16 - GET POWER LEVEL + AH = 61h +Return: AH = percentage of full power left (0..100) +Desc: determine how much battery power is left +SeeAlso: AH=62h,AH=66h,AH=73h"HUNTER" +--------b-1561------------------------------- +INT 15 U - HP 100LX/200LX - SET ANNOUNCIATORS POSITION + AH = 61h + AL = position (20h = left, 60h = right) +Note: The announciators are the indicator symbols for the Shift and Fn keys + in the bottom line +SeeAlso: AH=62h"HP",INT 16/AH=02h +--------b-1562------------------------------------ +INT 15 - HUNTER 16 - SET LOW POWER THRESHOLD + AH = 62h + AL = level (00h 5%, 01h 10%, ... 12h 95%) + BX = interval between power low warnings in seconds (1..600) +Return: AH = Status +Desc: set the level (relative to full power) when power-low warnings begin + and the interval between the warnings +SeeAlso: AH=61h,AH=65h,AH=66h +--------b-1562------------------------------- +INT 15 U - HP 100LX/200LX - SET DISPLAY CONTRAST + AH = 62h + BL = contrast (00h-1Fh, 1Fh is the darkest) +SeeAlso: AH=47h"HP",AH=61h"HP" +--------b-156300---------------------------------- +INT 15 - HUNTER 16 - GET IDLE TIMEOUT + AX = 6300h +Return: AH = status + BX = timeout in seconds (0-3600) +Desc: get the idle timeout value, the interval without keyboard or + communications activity before the system shuts down +SeeAlso: AX=6301h +--------b-156301---------------------------------- +INT 15 - HUNTER 16 - SET IDLE TIMEOUT + AX = 6301h + BX = timeout in seconds (0-3600) +Desc: sets the idle timeout value, the interval without keyboard or + communications activity before the system shuts down +SeeAlso: AX=6300h +--------b-1564------------------------------------ +INT 15 - HUNTER 16 - CONTROL RESUME MODE + AH = 64h + AL = new state + 00h disable Resume mode + 01h enable Resume mode +Return: AH = status +Desc: turn Resume mode on or off. In Resume mode the system starts in + the application that was running when it shut down as if nothing + had happened. +SeeAlso: AH=67h,AH=68h,AH=69h +--------b-1565------------------------------------ +INT 15 - HUNTER 16 - AUTHORISE CHARGING + AH = 65h + AL = charging level + 01h charging not allowed + 02h charging allowed until power down + 03h charging allowed until batteries changed or fail. + Ask user if charging is still allowed on next poweron + 04h charging allowed indefinitely + BX = 0203h + CX = 0405h + DX = 0607h +Return: AH = status +SeeAlso: AH=66h,AH=68h +--------b-1566------------------------------------ +INT 15 - HUNTER 16 - SET BATTERY LEVEL + AH = 66h + AL = level in percent of maximum (0..100) +Return: AH = status +SeeAlso: AH=61h,AH=65h +--------b-1567------------------------------------ +INT 15 - HUNTER 16 - CONTROL STOP MODE + AH = 67h + AL = mode when waiting for input + 00h use STOP mode (allows communication) + 01h use HALT mode (disallows communication) +Return: AH = status +Desc: select the power save mode to use when waiting for input +SeeAlso: AH=69h +----------156700BXFFFF----------------------- +INT 15h - Arabic/Hebrew MS-DOS 5.0???+ - INSTALLATION CHECK + AX = 6700h + BX = FFFFh +Return: BX = FFFFh (Arabic/Hebrew MS-DOS not installed) + BX = version (e.g. 0101h for Arabic/Hebrew MS-DOS 5.0) +Note: This call is made by the SK_HGC.COM TSR for HGC and HGC/RAMFont + graphics adapters to ensure it runs on the correct version of + Arabic or Hebrew MS-DOS. + The function is probably implemented in the ARABIC.COM/HEBREW.COM + driver. + Arabic/Hebrew versions of MS-DOS 3.3 existed, but no details are + available. +SeeAlso: AX=67C3h,INT 2F/AX=AD41h +----------1567C3CX1Bh +----------------------- +INT 15h - Arabic/Hebrew MS-DOS 5.0???+ - HGC & HGC/RAMFont support??? + AX = 67C3h + CX = 1Bh + CS|DS???:SI -> buffer +Return: ES:DI -> ??? + AX = ??? +Program: The SK_HGC.COM TSR is used to support operation of ARABIC.COM/ + HEBREW.COM with the Hercules Graphic Card series of video adapters. + It is provided for compatibility with ADOS 3.30/HDOS 3.30 only. + This file must be loaded immediately after ARABIC.COM/HEBREW.COM + to insure correct operation with these devices. +Notes: This call is made by the SK_HGC.COM TSR for HGC and HGC/RAMFont + graphics adapters when it has successfully detected an Arabic/Hebrew + issue of MS-DOS via INT15h/6700h/BX=FFFFh to ensure it runs on the + correct version of Arabic or Hebrew MS-DOS. + At some unknown offset in the buffer it contains a flag indicating + if a HGC or HGC/RAMFont adapter is present or not. + ARABIC/HEBREW does not operate with Monochrome Display Adapters (MDA) + and the Hercules Graphic Card Plus (HGC+). ARABIC/HEBREW does operate + with Hercules Graphic Card (HGC) with a burnt-in ROM/EPROM font (many + HGC cards, even the highly integrated ones, allow for this kind of + user customization), though this is not officially supported. + In some pre-1987 IBM XT/AT and compatibles, the Hercules Graphic + Card Plus operates like a MDA card. This hardware limitation + prevents ARABIC/HEBREW from running on this combination of hardware. +SeeAlso: AX=6700h +--------b-1568------------------------------------ +INT 15 - HUNTER 16 - REQUEST POWER DOWN + AH = 68h +Desc: turns off the Hunter 16 if power down is allowed (see AH=69h) +SeeAlso: AH=69h +--------b-1569------------------------------------ +INT 15 - HUNTER 16 - CONTROL POWER DOWN AVAILABILITY + AH = 69h + AL = mode + 00h inhibit power down + 01h allow power down +Return: AH = status +SeeAlso: AH=67h,AH=68h,AH=6Ah +--------b-156A------------------------------------ +INT 15 - HUNTER 16 - CONTROL SLOW MODE + AH = 6Ah + AL = mode + 00h inhibit Slow mode + 01h allow Slow mode +Return: AH = status +SeeAlso: AH=69h +--------b-156B------------------------------------ +INT 15 - HUNTER 16 - GET ROM BIOS VERSION + AH = 6Bh +Return: BH = version number (ASCII) + BL = release number (ASCII) + CH = major??? release number (ASCII) + CL = minor??? release number (ASCII) +SeeAlso: AH=6Ch +--------b-156C------------------------------------ +INT 15 - HUNTER 16 - GET SERIAL NUMBER + AH = 6Ch +Return: BL:CX = BCD serial number +Note: when shipped, all Hunter 16s have the same Serial Number, but a + different number can be stored (see AH=72h) +SeeAlso: AH=6Bh,AH=72h +--------b-156D------------------------------------ +INT 15 - HUNTER 16 - GET EVENT DETAIL + AH = 6Dh +Return: AH = 00h if successful + CX:BX = event flags bit 0..31 (see #00494) +Note: this function allows testing for events +SeeAlso: AH=6Eh,AH=6Fh + +Bitfields for HUNTER 16 events: +Bit(s) Description (Table 00494) + 6 RI received + 5 RTC Alarm + 4 data received on COM2 + 3 data received on COM1 + 2 error on COM2 + 1 error on COM1 + 0 PWR button pressed +--------b-156E------------------------------------ +INT 15 - HUNTER 16 - ENABLE/TRAP EVENT + AH = 6Eh + AL = Software Interrupt + 00h do not trap event + else trap as software interrupt number AL + BH = event number (see AH=6Dh) + BL = enable mask + 00h disable event + 01h enable event +Return: AH = 00h if successful +SeeAlso: AH=6Dh,AH=6Fh +--------b-156F------------------------------------ +INT 15 - HUNTER 16 - ACKNOWLEDGE EVENT + AH = 6Fh + AL = event number (see AH=6Dh) +Return: AH = 00h if successful +Desc: Acknowledges the event, so the next similar event can be detected +SeeAlso: AH=6Dh"HUNTER",AH=6Eh +--------b-1570------------------------------------ +INT 15 - HUNTER 16 - CONTROL SOUND + AH = 70h + AL = new state + 00h disable sound + else enable sound +Note: the Husky Hunter 16 is an 8088-based ruggedized laptop. Other family + members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk. +--------x-157000----------------------------- +INT 15 - Tandy 1000SL/TL - READ FROM EEPROM + AX = 7000h + BL = number of word to read (00h-3Fh) +Return: CF clear if function supported + DX = contents of EEPROM word +Note: newer Tandy 1000-series machines use EEPROM instead of CMOS RAM in + the clock chip to store system configuration information +SeeAlso: AX=7001h +--------x-157001----------------------------- +INT 15 - Tandy 1000SL/TL - WRITE TO EEPROM + AX = 7001h + BL = number of word to read (00h-3Fh) + DX = new value for EEPROM word +Return: CF clear if function supported +Note: the EEPROMs are normally written only by the system setup program; + changing the values can badly mess up a Tandy +SeeAlso: AX=7000h +----------157002----------------------------- +INT 15 U - Tandy 1000 Model ??? - GET ROM PAGE + AX = 7002h +Return: AL = ROM page mapped at 0E0000h (0-6 (13?)) +Note: some Tandy machines have DOS and DeskMate in a 512k paged ROM. The + BIOS uses this call to determine what ROM page is mapped in the 64k + segment at 0E0000h. + the 1000TL has 8 64k ROM pages; page 7 is permanently mapped at + 0F0000h. There may be 16 32k ROM pages on other systems. +SeeAlso: AX=7003h,INT E0"DeskMate" +----------157003----------------------------- +INT 15 U - Tandy 1000 Model ??? - SET ROM PAGE + AX = 7003h + DL = ROM page to be mapped at 0E0000h (0-6 (13?)) +Return: CF clear if valid ROM page specified +Note: Some Tandy machines have DOS and DeskMate in a 512k paged ROM. The + BIOS uses this call to map ROM pages in the 64k segment at 0E0000h. + The 1000TL has 8 64k ROM pages; page 7 is permanently mapped at + 0F0000h. There may be 16 32k ROM pages on other systems. +SeeAlso: AX=7002h,INT E0"DeskMate" +--------b-1571------------------------------------ +INT 15 - HUNTER 16 - SELECT POWER UP KEYS + AH = 71h + BL = column + BH = row + AL = column switch (00h disable, 01h enable) + CL = row switch (00h disable, 01h enable) +Return: AH = status +SeeAlso: AH=7Bh,AH=88h +--------b-157200---------------------------------- +INT 15 - HUNTER 16 - RESET SERIAL NUMBER + AX = 7200h +Return: AH = 00h if successful +Desc: reset the serial number to the default serial number present when the + Hunter 16 was shipped +SeeAlso: AH=6Ch,AH=72h +--------b-1572------------------------------------ +INT 15 - HUNTER 16 - REDIRECT SERIAL NUMBER + AH = 72h + AL nonzero + DS:BX -> new serial number (6 ASCII digits) +Return: AH = 00h if successful +Desc: install a new serial number +SeeAlso: AH=6Ch,AX=7200h +--------b-1573------------------------------------ +INT 15 - HUNTER 16 - GET ORACLE GT POWER LEVEL + AH = 73h + AL = drive (0: A:, 1: B:) +Return: AH = status + 00h successful + FFh Oracle GT drive not connected + AL = power level in percent of maximum (0..100) +Desc: get the power remaining in the Oracle GT batteries +SeeAlso: AH=61h +--------b-1574------------------------------------ +INT 15 - HUNTER 16 - SET BACKLIGHT POWER UP STATE + AH = 74h + AL = new level + 01h off + 02h unchanged + 03h change level + BL = desired level (00h-7Fh) +Return: AH = status +Desc: select the backlight level to use when the Hunter is next turned on +SeeAlso: AH=64h,AH=75h,INT 10/AH=64h,INT 10/AH=78h +--------b-1575------------------------------------ +INT 15 - HUNTER 16 - SET CONTRAST POWER UP STATE + AH = 75h + AL = new level + 01h off + 02h unchanged + 03h change level + BL = desired level (00h-7Fh) +Return: AH = status +Desc: select the LCD contrast level to use when the Hunter is next turned on +SeeAlso: AH=63h,AH=74h +--------b-1576------------------------------------ +INT 15 - HUNTER 16 - CONTROL POWER SAVE + AH = 76h + BX = power save control (see #00495) +SeeAlso: AH=74h + +Bitfields for HUNTER 16 power save control: +Bit(s) Description (Table 00495) + 0 power save enabled + 1 inhibit power save when waiting for COM1 data + 2 inhibit power save when waiting for COM2 data + 3 inhibit power save when waiting for data from barcode wand + 4 inhibit power up on timer tick +--------b-1579------------------------------------ +INT 15 - HUNTER 16 - REDIRECT LPT1 + AH = 79h + AL = port to which to redirect (00h COM1, 01h COM2) +--------b-157A------------------------------------ +INT 15 - HUNTER 16 - INVOKE HOT KEY + AH = 7Ah +Desc: this function has the same effect as pressing the HOT key +SeeAlso: AH=7Bh +--------b-157B------------------------------------ +INT 15 - HUNTER 16 - CONTROL HOT KEY + AH = 7Bh + AL = 00h prevent HOT key + else allow HOT key +Desc: Allow or prevent the HOT key function which is used to examine and + change the Hunter setup +SeeAlso: AH=71h,AH=7Ah,AH=7Ch +--------b-157C------------------------------------ +INT 15 - HUNTER 16 - CONTROL HOT KEY POWER OPTION + AH = 7Ch + AL = 00h prevent HOT key power option + else allow HOT key power option +Desc: allow or prevent changing the power options +SeeAlso: AH=7Bh,AH=7Dh +--------b-157D------------------------------------ +INT 15 - HUNTER 16 - OVERRIDE LOW POWER TURN OFF + AH = 7Dh + AL = 00h turn off after 10 warnings + else never turn off +Desc: specify whether the Hunter 16 turns off after 10 low power warnings +SeeAlso: AH=7Ch +--------b-157E------------------------------------ +INT 15 - HUNTER 16 - CONTROL BATTERY CHANGE FACILITIES (APM) + AH = 7Eh + AL = 00h do not prompt + else prompt +Desc: select whether the user is prompted for the battery state if the + battery cap has been off when the system is turned on +SeeAlso: AH=7Fh +--------b-157F------------------------------------ +INT 15 - HUNTER 16 - SET BATTERY TYPE (APM) + AH = 7Fh + AL = battery type + 00h non-rechargeable + else rechargeable +SeeAlso: AH=7Eh +--------B-1580------------------------------- +INT 15 C - OS HOOK - DEVICE OPEN (AT,XT286,PS) + AH = 80h + BX = device ID + CX = process ID + CF clear +Return: CF clear if successful + AH = 00h + CF set on error + AH = status (see #00496) +Note: this function should be hooked by a multitasker which wishes to keep + track of device ownership; the default BIOS handler merely returns + successfully +SeeAlso: AH=81h,AH=82h + +(Table 00496) +Values for status: + 80h invalid command (PC,PCjr) + 86h function not supported (XT) +--------b-1580------------------------------------ +INT 15 - HUNTER 16 - GET/SET BATTERY CAPACITY (APM) + AH = 80h + AL = function + 00h get + Return: AL = capacity (500mA + AL * 50mA, max 40 = 2500mA) + else set + BL = battery capacity (same as AL above) +SeeAlso: AH=61h"HUNTER",AH=81h"HUNTER" +--------B-1581------------------------------- +INT 15 C - OS HOOK - DEVICE CLOSE + AH = 81h + BX = device ID + CX = process ID + CF clear +Return: CF clear if successful + AH = 00h + CF set on error + AH = status (see #00496) +Note: this function should be hooked by a multitasker which wishes to keep + track of device ownership; the default BIOS handler merely returns + successfully +SeeAlso: AH=80h,AH=82h +--------b-1581------------------------------------ +INT 15 - HUNTER 16 - CONTROL POWER OUTPUT + AH = 81h + AL = new state of power output (00h off, nonzero on) +Desc: turn the +5V low power output on or off +SeeAlso: AH=80h"HUNTER" +--------B-1582------------------------------- +INT 15 C - OS HOOK - PROGRAM TERMINATION + AH = 82h + BX = process ID + CF clear +Return: CF clear if successful + AH = 00h + CF set on error + AH = status (see #00496) +Notes: closes all devices opened by the given process ID with function 80h + this function should be hooked by a multitasker which wishes to keep + track of device ownership; the default BIOS handler merely returns + successfully +SeeAlso: AH=80h,AH=81h +--------b-1582------------------------------------ +INT 15 - HUNTER 16 - SOUND OUTPUT + AH = 82h + DX = length (duration in seconds = DX * 666670 / frequency) + BX = pitch (see #00497) +Desc: Sound the tone specified in BX for the duration in DX +SeeAlso: AX=1019h + +(Table 00497) +Values for HUNTER 16 sound pitch: +BX(dec) Note Frequency BX(dec) Note Frequency + 425 G 1568.000 1515 A 440.000 + 451 F# 1479.503 1605 G# 415.307 + 477 F 1396.900 1701 G 392.000 + 506 E 1318.500 1802 F# 369.998 + 536 D# 1244.523 1909 F 349.230 + 568 D 1174.700 2022 E 329.630 + 601 C# 1108.749 2143 D# 311.127 + 637 C 1046.500 2270 D 293.660 + 675 B 958.770 2405 C# 277.183 + 715 A# 932.329 2548 MID C 261.630 + 758 A 880.000 2700 B 246.940 + 803 G# 830.609 2860 A# 233.081 + 850 G 783.990 3030 A 220.000 + 901 F# 739.990 3210 G# 207.654 + 954 F 698.460 3401 G 196.000 + 1011 E 659.260 3604 F# 184.996 + 1071 D# 622.257 3818 F 174.610 + 1135 D 587.330 4045 E 164.810 + 1203 C# 554.365 4286 D# 155.560 + 1274 C 523.250 4540 D 146.830 + 1350 B 493.880 4668 C# 142.827 + 1430 A# 466.162 4803 C 138.810 +--------B-1583------------------------------- +INT 15 - BIOS - SET EVENT WAIT INTERVAL (AT,PS50+) + AH = 83h + AL = subfunction + 00h set interval + CX:DX = microseconds to delay + ES:BX -> byte whose high bit is to be set at end of interval + 01h cancel wait interval +Return: CF set on error or function already busy + AH = status + 80h invalid command (PC,PCjr) + 86h function not supported (XT and later) + CF clear if successful +Notes: the resolution of the wait period is 977 microseconds on many systems + because many BIOSes use the 1/1024 second fast interrupt from the AT + real-time clock chip which is available on INT 70 + IBM AT 1984/1/10 BIOS ignores AL and always performs subfunction 00h +SeeAlso: AH=41h,AH=86h,INT 70,MEM 0040h:0098h,MEM 0040h:009Ch +--------b-1583------------------------------------ +INT 15 - HUNTER 16 - CONTROL SCREEN SYNCHRONISATION + AH = 83h + AL = state of LCD window (00h disabled, nonzero enabled) +Desc: Enable/disable the facility where the displayed window tracks the + cursor output to keep the focus visible +--------B-1584------------------------------- +INT 15 - BIOS - JOYSTICK SUPPORT (XT after 1982/11/8,AT,XT286,PS) + AH = 84h + DX = subfunction + 0000h read joystick switches + Return: AL bits 7-4 = switch settings + 0001h read positions of joysticks + Return: AX = X position of joystick A + BX = Y position of joystick A + CX = X position of joystick B + DX = Y position of joystick B +Return: CF set on error + AH = status (see #00496) + CF clear if successful +Notes: if no game port is installed, subfunction 0000h returns AL=00h (all + switches open) and subfunction 0001h returns AX=BX=CX=DX=0000h + a 250kOhm joystick typically returns 0000h-01A0h +SeeAlso: AH=84h"V20-XT-BIOS" +--------b-1584------------------------------- +INT 15 - V20-XT-BIOS - JOYSTICK SUPPORT + AH = 84h + DX = subfunction + 0000h read joystick switches + Return: AL bits 7-4 = switch settings + other: read positions of joysticks as indicated by bits 0-3 + Return: AX = X position of joystick A (if DX bit 0 set) + BX = Y position of joystick A (if DX bit 1 set) + CX = X position of joystick B (if DX bit 2 set) + DX = Y position of joystick B (if DX bit 3 set) +Return: CF set on error + AH = status (see #00496) + CF clear if successful +Program: V20-XT-BIOS is a ROM BIOS replacement with extensions by Peter + Koehlmann / c't magazine +SeeAlso: AH=84h"PS",INT 10/AH=0Eh/CX=ABCDh +----------1584--DX0002----------------------- +INT 15 - AMIGATSR - INSTALLATION CHECK + AH = 84h + DX = 0002h +Return: AX = 1234h if installed +Program: AMIGATSR is a serial-port driver for using an Amiga gamepad on a PC +SeeAlso: AH=84h/DX=0002h"MULTIJOY" +----------1584--DX0002----------------------- +INT 15 - MULTIJOY - INSTALLATION CHECK + AH = 84h + DX = 0002h +Return: AX = 4321h if installed +SeeAlso: AH=84h/DX=0002h"AMIGATSR",AH=84h/DX=0003h"MULTIJOY" +----------1584--DX0003----------------------- +INT 15 - MULTIJOY - GET ACTIVE JOYSTICK + AH = 84h + DX = 0003h +Return: AX = number of the currently-active joystick device + BX = device classification (see #04098) +SeeAlso: AH=84h/DX=0002h"MULTIJOY" + !!! more info to follow + +Bitfields for MULTIJOY device classification: +Bit(s) Description (Table 04098) + 15 device connected and ready + 14 no buttons (overrides bits 12-9) + 13 no axes (overrides bits 8-5) + 12-9 number of buttons, less one + 8-5 number of axes, less one + 4 digital device rather than analog + 3-0 device type + 0000 keyboard emulating joystick + 0001 gamepad + 0010 joystick + 0011 steering wheel + 0100 flight yoke + 0101 mouse emulating joystick + 0110 trackball emulating joystick + 0111 GlidePoint (touchpad) emulating joystick + 1000 touchscreen emulating joystick + 1001 steering wheel + 1010 light pen emulating joystick + 1011 speech recognition emulating joystick + 1100 TV remote emulating joystick + 1101 network/Internet remote control + 1110 PC software-controlled (demo mode, etc.) + 1111 other device +----------1584--DX0004----------------------- +INT 15 - MULTIJOY - SELECT JOYSTICK + AH = 84h + DX = 0004h + BX = number of the joystick device to make active +Return: ??? +SeeAlso: AH=84h/DX=0003h"MULTIJOY" +--------b-158400---------------------------------- +INT 15 - HUNTER 16 - GET DISKETTE PORT + AX = 8400h + BH = Drive (0: A:, 1: B:) +Return: AL = Port (0: COM1, >0: COM2) +Desc: return the COM port used for the floppy drive +SeeAlso: AX=8401h +--------b-158401---------------------------------- +INT 15 - HUNTER 16 - SET DISKETTE PORT + AX = 8401h + BH = Drive (0: A:, 1: B:) + BL = Port (0: COM1, >0: COM2) +Desc: set the COM port used for the floppy drive +SeeAlso: AX=8400h +--------B-1585------------------------------- +INT 15 C - OS HOOK - SysReq KEY ACTIVITY (AT,PS) + AH = 85h + AL = SysReq key action (00h pressed, 01h released) + CF clear +Return: CF clear if successful + AH = 00h + CF set on error + AH = status (see #00496) +Notes: called by keyboard decode routine + the default handler simply returns successfully; programs which wish + to monitor the SysReq key must hook this call + the SysReq key is often labeled SysRq +SeeAlso: INT 09 +--------b-158500---------------------------------- +INT 15 - HUNTER 16 - RESTORE POWER MENU (APM) + AX = 8500h +Desc: restore the standard power menu +SeeAlso: AX=8501h"HUNTER" +--------b-158501---------------------------------- +INT 15 - HUNTER 16 - SET POWER MENU (APM) + AX = 8501h + BL = user software interrupt number +Desc: install an alternate power menu routine +SeeAlso: AX=8500h"HUNTER" +--------B-1586------------------------------- +INT 15 - BIOS - WAIT (AT,PS) + AH = 86h + CX:DX = interval in microseconds +Return: CF clear if successful (wait interval elapsed) + CF set on error or AH=83h wait already in progress + AH = status (see #00496) +Note: the resolution of the wait period is 977 microseconds on many systems + because many BIOSes use the 1/1024 second fast interrupt from the AT + real-time clock chip which is available on INT 70; because newer + BIOSes may have much more precise timers available, it is not + possible to use this function accurately for very short delays unless + the precise behavior of the BIOS is known (or found through testing) +SeeAlso: AH=41h,AH=83h,INT 1A/AX=FF01h,INT 70 +--------b-1586------------------------------------ +INT 15 - HUNTER 16 - GET/SET SCREEN ATTRIBUTE TABLE + AH = 86h + AL = function (00h get, nonzero set) + BX = 1234h + DS:SI -> 256-byte Attribute buffer +Note: In text modes each character has its attribute byte XOR'd with the + corresponding byte in the attribute table. If the attribute is 15, + 15 is XOR'd with Table[15] +--------B-1587------------------------------- +INT 15 - SYSTEM - COPY EXTENDED MEMORY + AH = 87h + CX = number of words to copy (max 8000h) + ES:SI -> global descriptor table (see #00499) +Return: CF set on error + CF clear if successful + AH = status (see #00498) +Notes: copy is done in protected mode with interrupts disabled by the default + BIOS handler; many 386 memory managers perform the copy with + interrupts enabled + on the PS/2 30-286 & "Tortuga" this function does not use the port 92h + for A20 control, but instead uses the keyboard controller (8042). + Reportedly this may cause the system to crash when access to the + 8042 is disabled in password server mode (see also PORT 0064h,#P0398) + this function is incompatible with the OS/2 compatibility box +SeeAlso: AH=88h,AH=89h,INT 1F/AH=90h + +(Table 00498) +Values for extended-memory copy status: + 00h source copied into destination + 01h parity error + 02h interrupt error + 03h address line 20 gating failed + 80h invalid command (PC,PCjr) + 86h unsupported function (XT,PS30) + +Format of global descriptor table: +Offset Size Description (Table 00499) + 00h 16 BYTEs zeros (used by BIOS) + 10h WORD source segment length in bytes (2*CX-1 or greater) + 12h 3 BYTEs 24-bit linear source address, low byte first + 15h BYTE source segment access rights (93h) + 16h WORD (286) zero + (386+) extended access rights and high byte of source address + 18h WORD destination segment length in bytes (2*CX-1 or greater) + 1Ah 3 BYTEs 24-bit linear destination address, low byte first + 1Dh BYTE destination segment access rights (93h) + 1Eh WORD (286) zero + (386+) extended access rights and high byte of destin. address + 20h 16 BYTEs zeros (used by BIOS to build CS and SS descriptors) +--------b-1587------------------------------------ +INT 15 - HUNTER 16 - SET INT 72h VECTOR + AH = 87h + DS:DX = new service routine +Desc: set the INT 72h vector which is called in 2 cases: + - when the machine is about to turn off or reboot, INT 72h is called + with AH=0 + - when the machine is powering up INT 72h is called with AH=01h +Note: the actual INT 72h vector must also be changed with INT 21/AH=25h +--------B-1588------------------------------- +INT 15 - SYSTEM - GET EXTENDED MEMORY SIZE (286+) + AH = 88h +Return: CF clear if successful + AX = number of contiguous KB starting at absolute address 100000h + CF set on error + AH = status + 80h invalid command (PC,PCjr) + 86h unsupported function (XT,PS30) +Notes: TSRs which wish to allocate extended memory to themselves often hook + this call, and return a reduced memory size. They are then free to + use the memory between the new and old sizes at will. + the standard BIOS only returns memory between 1MB and 16MB; use AH=C7h + for memory beyond 16MB + not all BIOSes correctly return the carry flag, making this call + unreliable unless one first checks whether it is supported through + a mechanism other than calling the function and testing CF + Due to applications not dealing with more than 24-bit descriptors + (286), Windows 3.0 has problems when this function reports more + than 15 MB. Some releases of HIMEM.SYS are therefore limited to use + only 15 MB, even when this function reports more. +SeeAlso: AH=87h,AH=8Ah"Phoenix",AH=C7h,AX=DA88h,AX=E801h,AX=E820h +--------b-1588------------------------------------ +INT 15 - HUNTER 16 - GET POWER UP KEYS + AH = 88h +Return: AH = 00h + BX = column + CL = row +SeeAlso: AH=71h +--------B-1589------------------------------- +INT 15 - SYSTEM - SWITCH TO PROTECTED MODE + AH = 89h + BL = interrupt number of IRQ0 (IRQ1-7 use next 7 interrupts) + BH = interrupt number of IRQ8 (IRQ9-F use next 7 interrupts) + ES:SI -> GDT for protected mode (see #00500) +Return: CF set on error + AH = FFh error enabling address line 20 + CF clear if successful + AH = 00h + in protected mode at specified address + BP may be destroyed; all segment registers change +Notes: BL and BH must be multiples of 8 + the protected-mode CS must reference the same memory as the CS this + function is called from because execution continues with the address + following the interrupt call +SeeAlso: AH=87h,AH=88h,INT 67/AX=DE0Ch + +Format of BIOS switch-to-protected-mode Global Descriptor Table: +Offset Size Description (Table 00500) + 00h 8 BYTEs null descriptor (initialize to zeros) + 08h 8 BYTEs GDT descriptor (see #00501) + 10h 8 BYTEs IDT descriptor + 18h 8 BYTEs DS descriptor + 20h 8 BYTEs ES + 28h 8 BYTEs SS + 30h 8 BYTEs CS + 38h 8 BYTEs uninitialized, used to build descriptor for BIOS CS + +Format of segment descriptor table entry: +Offset Size Description (Table 00501) + 00h WORD segment limit, low word + 02h 3 BYTEs segment base address, low 24 bits + 05h BYTE access mode (see #00502) + 06h BYTE 386+ extended access mode (see #00505) + 07h BYTE 386+ segment base address, high 8 bits +SeeAlso: #00500,INT 2C/AX=0002h,INT 31/AX=0009h + +Bitfields for segment descriptor table access mode field: +Bit(s) Description (Table 00502) + 3-0 segment type (see #00503,#00504) + 4 descriptor type (1 = application, 0 = system) + 6-5 descriptor privilege level + 7 segment is present in RAM +SeeAlso: #00501,#00505 + +(Table 00503) +Values for system segment descriptor type: + 0 reserved + 1 available 16-bit TSS + 2 LDT + 3 busy 16-bit TSS + 4 16-bit call gate + 5 task gate + 6 16-bit interrupt gate + 7 16-bit trap gate + 8 reserved + 9 available 32-bit TSS + 10 reserved + 11 busy 32-bit TSS + 12 32-bit call gate + 13 reserved + 14 32-bit interrupt gate + 15 32-bit trap gate +SeeAlso: #00502,#00504 + +Bitfields for application segment descriptor type: +Bit(s) Description (Table 00504) + 3 code/data + 0 date + 1 code +---data segments--- + 2 expand down + 1 writeable +---code segments--- + 2 conforming + 1 readable +------ + 0 accessed +SeeAlso: #00502,#00503 + +Bitfields for 386+ segment descriptor table extended access mode field: +Bit(s) Description (Table 00505) + 3-0 high 4 bits of segment limit + 4 available + 5 reserved (0) + 6 default operation size (1 = 32 bits, 0 = 16 bits) + 7 granularity (1 = 4K, 0 = byte) +SeeAlso: #00501,#00502,#02557 +--------b-158900---------------------------------- +INT 15 - HUNTER 16 - GET POWER MODE + AX = 8900h +Return: AH = 00h + BL = current power mode + 00h Standard Power Mode (SPM) + 01h Advanced Power Mode (APM) +SeeAlso: AX=8901h +--------b-158901---------------------------------- +INT 15 - HUNTER 16 - SET POWER MODE + AX = 8901h + BL = new mode + 00h Standard Power Mode (SPM) + 01h Advanced Power Mode (APM) +Return: AH = 00h +SeeAlso: AX=8900h +--------b-158A------------------------------------ +INT 15 - HUNTER 16 - CONTROL POWER INPUT (SPM) + AH = 8Ah + AL = new state of Power Input (00h disabled, nonzero enabled) + SI = 1234h + DI = 5678h +Return: AH = status + 00h success + FFh failure +Desc: Enable or disable Power Input. When Power Input is disabled the AC + adapter will neither charge the batteries nor supply power to the + Hunter 16. Disable Power Input if using Alkaline batteries. +--------b-158A------------------------------- +INT 15 - Phoenix BIOS v4.0 - GET BIG MEMORY SIZE + AH = 8Ah +Return: DX:AX = extended memory size in K +SeeAlso: AH=88h,AX=E801h,AX=E820h +--------b-158B------------------------------------ +INT 15 - HUNTER 16 - GET/SET CHARGER TEMPERATURE OVERRIDE + AH = 8Bh + AL = function + 00h get + Return: BH = Maximum charging temperature + Temp = -20 + (n * 0.63) degrees Centigrade + BL = Minimum charging temperature + else set + BH = maximum charging temperature (as above) + BL = minimum charging temperature (as above) +Return: AH = status + 00h success + FFh failure +Desc: get/set the temperature interval within which the charger should + operate +--------b-158C------------------------------------ +INT 15 - HUNTER 16 - GET/SET POWER SAVE ENTRY FLAG + AH = 8Ch + AL = function + 00h get + Return: BX = which operations disable power save (see #00506) + else set + BX = which operations should disable power save (see #00506) +SeeAlso: AH=8Dh + +Bitfields for HUNTER 16 operations disabling power save: +Bit(s) Description (Table 00506) + 0 INT 10h prevents power save + 1 INT 13h prevents power save + 2 INT 14h prevents power save + 3 INT 15h prevents power save + 4 INT 1Ah prevents power save + 5 INT 21h prevents power save + 6 direct write to video RAM prevents power save + 7 access to 8250 UART prevents power save + 8 access to 8253 (Sound) prevents power save +--------b-158D------------------------------------ +INT 15 - HUNTER 16 - GET/SET BOOST CHARGE (SPM) + AH = 8Dh + AL = function + 00h get + Return: AL = Fast Charge state (00h prevented, else allowed) + nonzero set + BH = Fast Charge state (00h prevent, nonzero allow) +Return: AH = status + 00h success + FFh failure +Desc: control whether Fast Charging (200ma rather than 70ma) is allowed +SeeAlso: AH=8Ch +--------B-1590------------------------------- +INT 15 - OS HOOK - DEVICE BUSY (AT,PS) + AH = 90h + AL = device type (see #00507) + ES:BX -> request block for type codes 80h through BFh + CF clear +Return: CF set if wait time satisfied + CF clear if driver must perform wait + AH = 00h +Notes: type codes are allocated as follows: + 00-7F non-reentrant devices; OS must arbitrate access + 80-BF reentrant devices; ES:BX points to a unique control block + C0-FF wait-only calls, no complementary INT 15/AH=91h call + floppy and hard disk BIOS code uses this call to implement a timeout; + for device types 00h and 01h, a return of CF set means that the + timeout expired before the disk responded. + this function should be hooked by a multitasker to allow other tasks + to execute while the BIOS is waiting for I/O completion; the default + handler merely returns with AH=00h and CF clear +SeeAlso: AH=91h,INT 13/AH=00h,INT 17/AH=00h,INT 1A/AH=83h + +(Table 00507) +Values for device type: + 00h disk + 01h diskette + 02h keyboard + 03h PS/2 pointing device + 21h waiting for keyboard input (Phoenix BIOS) + 80h network + FBh digital sound (Tandy) + FCh disk reset (PS) + FDh diskette motor start + FEh printer +--------B-1591------------------------------- +INT 15 - OS HOOK - DEVICE POST (AT,PS) + AH = 91h + AL = device type (see #00507) + ES:BX -> request block for type codes 80h through BFh + CF clear +Return: AH = 00h +Note: this function should be hooked by a multitasker to allow other tasks + to execute while the BIOS is waiting for I/O completion; the default + handler merely returns with AH=00h and CF clear +SeeAlso: AH=90h +--------B-1592------------------------------- +INT 15 - IBM SurePath BIOS - Officially "Private" Function + AH = 92h +SeeAlso: AH=07h"IBM",AH=3Eh"IBM" +--------B-15A0------------------------------- +INT 15 - IBM SurePath BIOS - ACCESS LOADABLE-ABIOS SIGNATURE + AH = A0h + AL = function + 00h get loadable-ABIOS signature + Return: BL = signature value + 00h loadable-ABIOS prompting not required + A1h loadable-ABIOS prompting is required + 01h write loadable-ABIOS signature + BL = new signature value + 00h loadable-ABIOS prompting not required + A1h loadable-ABIOS prompting is required +Return: CF clear if successful + CF set on error + AH = status + 00h successful + 01h invalid subfunction + 02h unable to read/write signature + 86h function not supported +Note: IBM classifies this function as optional +SeeAlso: AH=08h"IBM" +--------x-15A100----------------------------- +INT 15 U - AMI PCI BIOS - SET ??? FLAG + AX = A100h +Return: AX = 0000h + CF clear + BX,CX,DI may be destroyed +Desc: sets bit 7 of CMOS RAM location 37h and updates the CMOS checksum in + locations 3Eh and 3Fh +Notes: in the examined version of the BIOS, nonzero values in AL cause it to + drop through to checking the next possible value of AH, i.e. only + subfunction 00h is supported + also supported by Dell XPS P90 and IBM PS/PV 6384, which also use + AMI BIOSes +--------B-15AB------------------------------- +INT 15 - IBM SurePath BIOS - Officially "Private" Function + AH = ABh +SeeAlso: AH=07h"IBM",AH=3Eh"IBM" +----------15B001CX5354----------------------- +INT 15 - Stac STACKER - INSTALLATION CHECK + AX = B001h + CX = 5354h ('ST') + DX = 4143h ('AC') +Return: AX = 4F4Bh ('OK') if installed +Note: this function is encapsulated in Stac's STACKER.LIB C library; it is + called by Novell DOS 7+ NWCACHE v1.01, which makes use of this + library +--------n-15BA10----------------------------- +INT 15 - HP OmniShare - Pen Driver - REPORT PEN CONTROL AREA EVENT + AX = BA10h + BL = event + 00h the pen left control areas + 01h the pen entered the Brightness- area + 02h the pen entered the Brightness+ area + 03h the pen entered the Contrast- area + 04h the pen entered the Contrast+ area +Return: CF clear if successfully processed + CF set on error (function not supported, ie. not an OmniShare BIOS) +Note: The pen driver is responsible for detecting when the pen enters and + leaves control areas of the OmniShare tablet, and notifying the BIOS. + The BIOS manages the events, including the autorepetition, and sets + the status LEDs. +SeeAlso: AX=BA20h,AX=BA13h +--------n-15BA11----------------------------- +INT 15 - HP OmniShare - Pen Driver - SET THE COMMUNICATION LED STATE + AX = BA11h + BL = new LED state (00h steady, 01h flashing) +Return: CF clear if successful + CF set on error +Note: this function is for use by communication software to give visual + feedback of active communications even if the display is in standby + mode. +SeeAlso: AX=BA10h,AX=BA24h +--------n-15BA12----------------------------- +INT 15 - HP OmniShare - Pen Driver - STORE PEN BATTERY CHARGE + AX = BA12h + BL = new battery state (00h good, 01h low charge) +Return: CF set on error + CF clear if successfully stored in CMOS +Note: The last report will be displayed by the Power-On Self Test the next + time the OmniShare boots. This allows something meaningful to be + reported even if the pen is not detected during the POST. +SeeAlso: AX=BA13h +--------n-15BA13----------------------------- +INT 15 - HP OmniShare - Pen Driver - GET PEN BATTERY CHARGE + AX = BA13h +Return: CF clear if successful + BL = pen battery state (00h good, 01h low charge) + CF set on error +Note: returns the last value set by AX=BA12h. +SeeAlso: AX=BA12h +--------p-15BA20----------------------------- +INT 15 - HP OmniShare - STANDBY.COM - INSTALLATION CHECK + AX = BA20h +Return: CF clear if successful (installed) + CF set on error (not installed) +Notes: The display controller can enter a standby mode after a given timeout, + to conserve power or (for the OmniShare) to increase the life of + the backlight. + A side effect of standby mode is that the communications LED turns on + automatically when the display is in standby mode. This is done in + hardware, and is intended to show that the unit is still on. +SeeAlso: AX=BA10h,AX=BA20h,AX=BA22h,AX=BA24h,AX=BA26h +--------p-15BA21----------------------------- +INT 15 - HP OmniShare - STANDBY.COM - SET STANDBY DURATION + AX = BA21h + BL = new timeout before standby mode in minutes (01h-0Fh) + 00h to disable automatic switch to standby mode +Return: CF clear if successful + CF set on error (function not supported) +Note: The actual timeout with a GD6205 controller is ((N*64)-32) seconds, + instead of (N*60) seconds as documented. +SeeAlso: AX=BA20h,AX=BA22h +--------p-15BA22----------------------------- +INT 15 - HP OmniShare - STANDBY.COM - GET STANDBY DURATION + AX = BA22h +Return: CF clear if successful + BL = standy duration in minutes (01h-0Fh), or 00h if disabled + CF set on error (function not supported) +Note: The actual timeout with a GD6205 controller is ((N*64)-32) seconds, + instead of (N*60) seconds as documented. +SeeAlso: AX=BA20h,AX=BA21h +--------p-15BA23----------------------------- +INT 15 - HP OmniShare - STANDBY.COM - TURN ON THE SCREEN IMMEDIATELY + AX = BA23h +Return: CF clear if successful + CF set on error +SeeAlso: AX=BA11h,AX=BA20h,AX=BA24h +--------p-15BA24----------------------------- +INT 15 - HP OmniShare - STANDBY.COM - TURN OFF THE SCREEN IMMEDIATELY + AX = BA24h +Return: CF clear if successful + CF set on error +Note: This function is not implemented yet. Reserved for future versions + of the OmniShare. +SeeAlso: AX=BA11h,AX=BA20h,AX=BA23h +--------p-15BA25----------------------------- +INT 15 - HP OmniShare - STANDBY.COM - PREPARE FOR UNINSTALL + AX = BA25h +Return: CF clear if successful + AX = 25BAh + BX = PSP of STANDBY.COM resident portion + DX:CX -> previous INT 15 handler + CF set on error +Note: This function is used internally by the STANDBY.COM /u option, and + should not be used by application programs. +SeeAlso: AX=BA20h +--------p-15BA26----------------------------- +INT 15 - HP OmniShare - STANDBY.COM - IS THE DISPLAY IN STANDBY MODE? + AX = BA26h +Return: CF clear if successful + AL = display state (00h active, 01h in standby mode) + CF set on error (function not supported) +SeeAlso: AX=BA20h,AX=BA23h +--------p-15BA27----------------------------- +INT 15 - HP OmniShare - STANDBY.COM - RESERVED FUNCTIONS + AX = BA27h to BA2Fh +Desc: reserved for future use +--------b-15BC------------------------------- +INT 15 - Phoenix 386 BIOS - DETERMINE CPU SPEED FOR DELAY LOOPS + AH = BCh +Return: CF clear + (Phoenix 1.10 10a) BYTE 0040h:00B0h set to delay loop count + (Dell 4xxDE BIOS A11) WORD 0040h:00ECh set to delay loop count +Note: this function reads system timer channel 0 twice, then does + calculations on the returned values to determine the delay loop + counter needed by the BIOS for beeps and floppy timeouts +SeeAlso: AX=2305h,MEM 0040h:00B0h +--------E-15BF00----------------------------- +INT 15 - Rational Systems DOS/16M - ??? + AX = BF00h + ??? +Return: ??? +Note: under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h +SeeAlso: AX=BF02h +--------E-15BF01----------------------------- +INT 15 - Rational Systems DOS/16M - ??? + AX = BF01h + ??? +Return: ??? +Notes: under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h + called by DOS/4GW +SeeAlso: AX=BF00h,AX=BF02h +--------E-15BF02DX0000----------------------- +INT 15 - Rational Systems DOS/16M - INSTALLATION CHECK + AX = BF02h + DX = 0000h +Return: DX = nonzero if installed + DX:SI -> XBRK structure (see #00508) +Note: this function is also supported by DOS/4G +SeeAlso: AX=BF01h,AX=BFDCh,AX=BFDEh/BX=0000h +SeeAlso: INT 21/AH=FFh/DH=0Eh,INT 2F/AH=A1h,INT 2F/AX=F100h,INT 2F/AX=FBA1h + +Format of DOS/16M XBRK structure: +Offset Size Description (Table 00508) + 00h DWORD linear address of first available byte + 04h DWORD linear address of last available byte + 1 ??? + 08h DWORD real-mode address of XBRK structure??? + 0Ch DWORD ??? + 10h 2 BYTEs ??? + 12h WORD segment of ??? + 14h 8 BYTEs ??? + 1Ch 512 BYTEs protected-mode IDT +21Ch N BYTEs protected-mode GDT +--------E-15BF03----------------------------- +INT 15 - Rational Systems DOS/4GW - UNINSTALL??? + AX = BF03h + BX = PSP segment of extender + ??? +Return: ??? +Note: if BX is not the PSP segment of the extender, it passes the call down + the INT 15 chain; this allows nested instances of the extender +SeeAlso: AX=BF06h +--------E-15BF04----------------------------- +INT 15 - Rational Systems DOS/4GW - ??? + AX = BF04h + BX = PSP segment of extender +Return: nothing??? +Notes: if BX is not the PSP segment of the extender, it passes the call down + the INT 15 chain; this allows nested instances of the extender + grabs INT 2Fh and installs handlers for INT 2F/AX=1605h-1607h +SeeAlso: INT 2F/AX=1607h/BX=22C0h +--------E-15BF05----------------------------- +INT 15 - Rational Systems DOS/4GW - INITIALIZE PROTECTED-MODE INTERFACE + AX = BF05h + BX = PSP segment of extender +Return: nothing??? +Notes: if BX is not the PSP segment of the extender, it passes the call down + the INT 15 chain; this allows nested instances of the extender + calls INT 67/AX=DE01h if ??? +--------E-15BF06----------------------------- +INT 15 - Rational Systems DOS/4GW - ??? + AX = BF06h + BX = PSP segment of extender + ??? +Return: ??? +Note: if BX is not the PSP segment of the extender, it passes the call down + the INT 15 chain; this allows nested instances of the extender +SeeAlso: AX=BF03h +--------E-15BFDCDX0000----------------------- +INT 15 - Rational Systems DOS/4GW - INSTALLATION CHECK + AX = BFDCh + DX = 0000h + SI = 0000h +Return: DX = nonzero if installed + DX:SI -> XBRK structure (see #00508) +SeeAlso: AX=BF02h +--------E-15BFDEBX0000----------------------- +INT 15 - DESQview/X - DVDOS4GX.DVR - INSTALLATION CHECK + AX = BFDEh + BX = 0000h +Return: AX = ??? (0003h) + BX = FFFFh +SeeAlso: AX=BF02h +--------E-15BFDEBX0001----------------------- +INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET PROCESS MANAGER NAME + AX = BFDEh + BX = 0001h +Return: BX = 0000h (success) + CX:DX -> name of process manager executable +SeeAlso: AX=BFDEh/BX=0000h +--------E-15BFDEBX0002----------------------- +INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ??? + AX = BFDEh + BX = 0002h + CX:DX -> ??? +Return: BX = 0000h (success) +SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0003h +--------E-15BFDEBX0003----------------------- +INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ??? + AX = BFDEh + BX = 0003h +Return: BX = 0000h (success) + CX:DX -> ??? +SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0002h +--------E-15BFDEBX0004----------------------- +INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ??? + AX = BFDEh + BX = 0004h + CL = ??? +Return: BX = 0000h (success) + CX:DX -> XBRK structure (see #00508) +SeeAlso: AX=BFDEh/BX=0000h +--------E-15BFDEBX0005----------------------- +INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ??? + AX = BFDEh + BX = 0005h + CX = new value for ??? +Return: BX = 0000h (success) + AX = old value of ??? + DS:SI -> ??? (if AX nonzero on return) + ES:DI -> ??? (if AX zero on return) +Note: called by DOS4GW.EXE +SeeAlso: AX=BFDEh/BX=0000h +--------E-15BFDEBX0006----------------------- +INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ??? + AX = BFDEh + BX = 0006h +Return: BX = 0000h (success) + AH = interrupt number??? (BEh) + CX:DX = ??? +SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0007h,INT BE"DESQview" +--------E-15BFDEBX0007----------------------- +INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ??? + AX = BFDEh + BX = 0007h + CX:DX = ??? +Return: BX = 0000h (success) +SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0006h +--------E-15BFDEBX0008----------------------- +INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ??? + AX = BFDEh + BX = 0008h + CX = segment of ??? + DS = ??? +Return: BX = status + 0000h successful + AL = ??? (80h or C0h) + DX = ??? (0603h) if AL=C0h + 0001h failed + AX = 0000h +Note: called by DOS4GW.EXE +SeeAlso: AX=BFDEh/BX=0000h +--------E-15BFDEBX0009----------------------- +INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET PROTECTED MODE PROGRAM LOADER + AX = BFDEh + BX = 0009h +Return: BX = 0000h (success) + CX:DX -> full pathname to LOAD32.EXP +SeeAlso: AX=BFDEh/BX=0000h +--------E-15BFDEBX000A----------------------- +INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - DECREMENT ??? + AX = BFDEh + BX = 000Ah +Return: BX = 0000h (success) + AX = new value of ??? counter +Notes: also resets a variety of values if the counter goes negative + called by DOS4GW.EXE +SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Bh +--------E-15BFDEBX000B----------------------- +INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - INCREMENT ??? + AX = BFDEh + BX = 000Bh +Return: AX = new value of ??? counter +Note: called by DOS4GW.EXE +SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Ah +--------E-15BFDEBX000C----------------------- +INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ??? + AX = BFDEh + BX = 000Ch + CL = ??? + 00h + nonzero +Return: ??? +SeeAlso: AX=BFDEh/BX=0000h +--------E-15BFDEBX000D----------------------- +INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ??? + AX = BFDEh + BX = 000Dh + ??? +Return: ??? +SeeAlso: AX=BFDEh/BX=0000h +--------E-15BFDEBX000E----------------------- +INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ??? + AX = BFDEh + BX = 000Eh + DX:CX -> ??? +Return: AX = segment of handle for calling task + BX = ??? (probably destroyed) + DX:CX -> ??? +SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Fh,AX=BFDEh/BX=0013h +--------E-15BFDEBX000F----------------------- +INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ??? + AX = BFDEh + BX = 000Fh +Return: AX = segment of handle for calling task + BX = ??? (probably destroyed) + DX:CX -> ??? +Note: identical to AX=BFDEh/BX=000Eh with CX:DX = 0000h:0000h +SeeAlso: AX=BFDEh/BX=000Eh,AX=BFDEh/BX=0010h +--------E-15BFDEBX0010----------------------- +INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET TASK HANDLE + AX = BFDEh + BX = 0010h +Return: AX = segment of caller's task handle + BX destroyed +SeeAlso: AX=BFDEh/BX=000Fh +--------E-15BFDEBX0011----------------------- +INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ??? + AX = BFDEh + BX = 0011h +Return: CX = code segment of DVDOS4GX.DVR + BX = ??? (0004h) +SeeAlso: AX=BFDEh/BX=0000h +--------E-15BFDEBX0012----------------------- +INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ??? + AX = BFDEh + BX = 0012h +Return: DX = code segment of DVDOS4GX.DVR + BX = ??? (012Ch) + CX = ??? (0006h) +SeeAlso: AX=BFDEh/BX=0000h +--------E-15BFDEBX0013----------------------- +INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ??? + AX = BFDEh + BX = 0013h +Return: DX:CX -> ??? +SeeAlso: AX=BFDEh/BX=000Eh +--------E-15BFDEBX0014----------------------- +INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - LOCK ??? MAILBOX + AX = BFDEh + BX = 0014h + CX = index of ??? mailbox + (0000h-0004h valid, but no range checking done) +Return: AX,BX destroyed +SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h +--------E-15BFDEBX0015----------------------- +INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - UNLOCK ??? MAILBOX + AX = BFDEh + BX = 0015h + CX = index of ??? mailbox + (0000h-0004h valid, but no range checking done) +Return: AX,BX destroyed +SeeAlso: AX=BFDEh/BX=0014h,AX=BFDEh/BX=0016h +--------E-15BFDEBX0016----------------------- +INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - CHECK IF ??? MAILBOX OWNED + AX = BFDEh + BX = 0016h + CX = index of ??? mailbox + (0000h-0004h valid, but no range checking done) +Return: AX = status + 0000h no one owns mailbox + 0001h mailbox has an owner + BX destroyed +SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h +--------E-15BFDEBX0017----------------------- +INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ??? MAILBOX OWNER + AX = BFDEh + BX = 0017h + CX = index of ??? mailbox + (0000h-0004h valid, but no range checking done) +Return: AX = segment of mailbox owner's handle + BX = segment of caller's task handle +SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0016h +--------E-15BFDEBXFFFD----------------------- +INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ??? + AX = BFDEh + BX = FFFDh +Return: CX:DX = ??? +SeeAlso: AX=BFDEh/BX=FFFEh +--------E-15BFDEBXFFFE----------------------- +INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ??? + AX = BFDEh + BX = FFFEh + CX:DX = ??? +SeeAlso: AX=BFDEh/BX=FFFDh +--------E-15BFDEBXFFFF----------------------- +INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - NOP + AX = BFDEh + BX = FFFFh +SeeAlso: AX=BFDEh/BX=0000h +--------B-15C0------------------------------- +INT 15 - SYSTEM - GET CONFIGURATION (XT >1986/1/10,AT mdl 3x9,CONV,XT286,PS) + AH = C0h +Return: CF set if BIOS doesn't support call + CF clear on success + ES:BX -> ROM table (see #00509) + AH = status + 00h successful + The PC XT (since 1986/01/10), PC AT (since 1985/06/10), the + PC XT Model 286, the PC Convertible and most PS/2 machines + will clear the CF flag and return the table in ES:BX. + 80h unsupported function + The PC and PCjr return AH=80h/CF set + 86h unsupported function + The PC XT (1982/11/08), PC Portable, PC AT (1984/01/10), + or PS/2 prior to Model 30 return AH=86h/CF set +Notes: the 1986/1/10 XT BIOS returns an incorrect value for the feature byte + the configuration table is at F000h:E6F5h in 100% compatible BIOSes + Dell machines contain the signature "DELL" or "Dell" at absolute FE076h + and a model byte at absolute address FE845h (see #00516) + Hewlett-Packard machines contain the signature "HP" at F000h:00F8h and + a product identifier at F000h:00FAh (see #00519) + Compaq machines can be identified by the signature string "COMPAQ" at + F000h:FFEAh, and is preceded by additional information (see #00517) + Tandy 1000 machines contain 21h in the byte at F000h:C000h and FFh in + the byte at FFFFh:000Eh; Tandy 1000SL/TL machines only provide the + first three data bytes (model/submodel/revision) in the returned + table + the ID at F000h:C000h is used by some Microsoft software before + trusting the floppy flags bits 1 and 0 at 0040h:00B5h. + the Wang PC contains the signature "WANG" at FC00h:0000h. This is used + by Peter Reilley's portable binary editor and viewer BEAV to detect + a Wang PC. + Toshiba laptops contain the signature "TOSHIBA" at FE010h as part of + a laptop information record at F000h:E000h (see #00520) + some AST machines contain the string "COPYRIGHT AST RESEARCH" one byte + past the end of the configuration table + the Phoenix 386 BIOS contains a second version and date string + (presumably the last modification for that OEM version) beginning at + F000h:FFD8h, with each byte doubled (so that both ROM chips contain + the complete information) +SeeAlso: AH=C7h,AH=C9h,AX=D100h,AX=D103h + +Format of ROM configuration table: +Offset Size Description (Table 00509) + 00h WORD number of bytes following + 02h BYTE model (see #00515) + 03h BYTE submodel (see #00515) + 04h BYTE BIOS revision: 0 for first release, 1 for 2nd, etc. + 05h BYTE feature byte 1 (see #00510) + 06h BYTE feature byte 2 (see #00511) + 07h BYTE feature byte 3 (see #00512) + 08h BYTE feature byte 4 (see #00513) + 09h BYTE feature byte 5 (see #00514) + ??? (08h) (Phoenix 386 v1.10) + ??? (0Fh) (Phoenix 486 v1.03 PCI) +---AWARD BIOS--- + 0Ah N BYTEs AWARD copyright notice +---Phoenix BIOS--- + 0Ah BYTE ??? (00h) + 0Bh BYTE major version + 0Ch BYTE minor version (BCD) + 0Dh 4 BYTEs ASCIZ string "PTL" (Phoenix Technologies Ltd) + also on Phoenix Cascade BIOS +---Quadram Quad386--- + 0Ah 17 BYTEs ASCII signature string "Quadram Quad386XT" +---Toshiba (Satellite Pro 435CDS at least)--- + 0Ah 7 BYTEs signature "TOSHIBA" + 11h BYTE ??? (8h) + 12h BYTE ??? (E7h) product ID??? (guess) + 13h 3 BYTEs "JPN" + +Bitfields for feature byte 1: +Bit(s) Description (Table 00510) + 7 DMA channel 3 used by hard disk BIOS + 6 2nd interrupt controller (8259) installed + 5 Real-Time Clock installed + 4 INT 15/AH=4Fh called upon INT 09h + 3 wait for external event (INT 15/AH=41h) supported + 2 extended BIOS area allocated (usually at top of RAM) + 1 bus is Micro Channel instead of ISA + 0 system has dual bus (Micro Channel + ISA) +SeeAlso: #00509,#00511 + +Bitfields for feature byte 2: +Bit(s) Description (Table 00511) + 7 32-bit DMA supported + 6 INT 16/AH=09h (keyboard functionality) supported (see #00585) + 5 INT 15/AH=C6h (get POS data) supported + 4 INT 15/AH=C7h (return memory map info) supported + 3 INT 15/AH=C8h (en/disable CPU functions) supported + 2 non-8042 keyboard controller + 1 data streaming supported + 0 reserved +SeeAlso: #00509,#00512,AH=C6h,AH=C7h,AH=C8h,INT 16/AH=09h + +Bitfields for feature byte 3: +Bit(s) Description (Table 00512) + 7 not used + 6-5 reserved + 4 POST supports ROM-to-RAM enable/disable + 3 SCSI subsystem supported on system board + 2 information panel installed + 1 IML (Initial Machine Load) system (BIOS loaded from disk) + 0 SCSI supported in IML +SeeAlso: #00509,#00511,#00512 + +Bitfields for feature byte 4: +Bit(s) Description (Table 00513) + 7 IBM "private" (set on N51SX, CL57SX) + 6 system has EEPROM + 5-3 ABIOS presence + 001 not supported + 010 supported in ROM + 011 supported in RAM (must be loaded) + 2 "private" + 1 system supports memory split at/above 16M + 0 POSTEXT directly supported by POST +SeeAlso: #00509,#00512,#00514 + +Bitfields for feature byte 5 (IBM): +Bit(s) Description (Table 00514) + 7-5 IBM "private" + 4-2 reserved + 1 system has enhanced mouse mode + 0 flash EPROM +SeeAlso: #00509,#00513 + +(Table 00515) +Values for model/submodel/revision: +Model Submdl Rev BIOS date System + FFh * * 04/24/81 PC (original) + FFh * * 10/19/81 PC (some bugfixes) + FFh * * 10/27/82 PC (HD, 640K, EGA support) + FFh 00h rev ??? Tandy 1000SL + FFh 01h rev ??? Tandy 1000TL + FFh 46h *** ??? Olivetti M15 + FEh * * 08/16/82 PC XT + FEh * * 11/08/82 PC XT and Portable + FEh * * ../..x.. Toshiba laptops up to ~1987 + ("x"=product ID) (see #00521) + FEh 00h *** * ??? Olivetti M19 + FEh 43h *** ??? Olivetti M240 + FEh A6h ??? ??? Quadram Quad386 + FDh * * 06/01/83 PCjr + FCh * * 01/10/84 AT models 068,099 6 MHz 20MB + FCh * * 02/25/93 Linux DOSEMU (all versions) + FCh 00h 00h ??? PC3270/AT + FCh 00h 01h 06/10/85 AT model 239 6 MHz 30MB + FCh 00h > 01h ??? 7531/2 Industrial AT + FCh 01h 00h 11/15/85 AT models 319,339 8 MHz, Enh Keyb, 3.5" + FCh 01h 00h 09/17/87 Tandy 3000 + FCh 01h 00h ../..x.. Toshiba laptops since ~1988 + ("x"=product ID) (see #00521) + FCh 01h 00h 03/08/93 Compaq DESKPRO/i + FCh 01h 00h various Compaq DESKPRO, SystemPro, ProSignia + FCh 01h 00h 07/20/93 Zenith Z-Lite 425L + FCh 01h 00h 04/09/90 AMI BIOS + FCh 01h 20h 06/10/92 AST + FCh 01h 30h ??? Tandy 3000NL + FCh 01h ??? ??? Compaq 286/386 + FCh 02h 00h 04/21/86 PC XT-286 + FCh 02h 00h various Compaq LTE Lite + FCh 02h 00h 08/05/93 Compaq Contura 486/486c/486cx + FCh 02h 00h 08/11/88 SoftWindows 1.0.1 (Power Macintosh) + FCh 04h 00h 02/13/87 ** PS/2 Model 50 (10 MHz/1 ws 286) + FCh 04h 01h 05/09/87 PS/2 Model 50 (10 Mhz 286, LW-type 32) + FCh 04h 02h ??? PS/2 Model 50 + FCh 04h 02h 01/28/88 PS/2 Model 50Z (10 Mhz 286, LW-type 33) + FCh 04h 03h 04/18/88 PS/2 Model 50Z (10 MHz/0 ws 286) + FCh 04h 04h ??? PS/2 Model 50Z + FCh 05h 00h 02/13/87 ** PS/2 Model 60 (10 MHz 286) + FCh 06h 00h ??? IBM 7552-140 "Gearbox" + FCh 06h 01h ??? IBM 7552-540 "Gearbox" + FCh 08h *** ??? Epson, unknown model + FCh 08h 00h ??? PS/2 Model 25/286 + FCh 09h 00h ??? PS/2 Model 25 (10 MHz 286) + FCh 09h 00h 08/25/88 PS/2 Model 30 286 (10 Mhz, LW-type 37) + FCh 09h 02h 06/28/89 PS/2 Model 30-286 + FCh 09h 02h 06/28/89 PS/2 Model 25 286 (10 Mhz, LW-type 37) + FCh 0Bh 00h 12/01/89 PS/1 (LW-Type 44) + FCh 0Bh 00h 02/16/90 PS/1 Model 2011 (10 MHz 286) + FCh 20h 00h 02/18/93 Compaq ProLinea + FCh 25h 09h 12/07/91 PS/2 Model 56 SLC (20 MHz 386SLC) + FCh 30h *** ??? Epson, unknown model + FCh 31h *** ??? Epson, unknown model + FCh 33h *** ??? Epson, unknown model + FCh 42h *** ??? Olivetti M280 + FCh 45h *** ??? Olivetti M380 (XP 1, XP3, XP 5) + FCh 48h *** ??? Olivetti M290 + FCh 4Fh *** ??? Olivetti M250 + FCh 50h *** ??? Olivetti M380 (XP 7) + FCh 51h *** ??? Olivetti PCS286 + FCh 52h *** ??? Olivetti M300 + FCh 81h 00h 01/15/88 Phoenix 386 BIOS v1.10 10a + FCh 81h 01h ??? "OEM machine" + FCh 82h 01h ??? "OEM machine" + FCh 94h 00h ??? Zenith 386 + FBh 00h 01h 01/10/86 PC XT-089, Enh Keyb, 3.5" support + FBh 00h 01h 05/13/94 HP 200LX 2MB BIOS 1.01 A D german + FBh 00h 02h 05/09/86 PC XT + FBh 00h 04h 08/19/93 HP 100LX 1MB BIOS 1.04 A + FBh 4Ch *** ??? Olivetti M200 + FAh 00h 00h 09/02/86 PS/2 Model 30 (8 MHz 8086) + FAh 00h 01h 12/12/86 PS/2 Model 30 + FAh 00h 02h 02/05/87 PS/2 Model 30 + FAh 01h 00h 06/26/87 PS/2 Model 25/25L (8 MHz 8086) + FAh 30h 00h ??? IBM Restaurant Terminal + FAh 4Eh *** ??? Olivetti M111 + FAh FEh 00h ??? IBM PCradio 9075 + F9h 00h 00h 09/13/85 PC Convertible + F9h FFh 00h ??? PC Convertible + F8h 00h 00h 03/30/87 ** PS/2 Model 80 (16MHz 386) + F8h 00h 00h ??? PS/2 Model 75 486 (33Mhz 486) + F8h 01h 00h 10/07/87 PS/2 Model 80 (20MHz 386) + F8h 02h 00h ??? PS/2 Model 55-5571 + F8h 04h 00h 01/29/88 PS/2 Model 70 (20 Mhz 386DX,LW-type 33) + F8h 04h 02h 04/11/88 PS/2 Model 70 20MHz, type 2 system brd + F8h 04h 03h 03/17/89 PS/2 Model 70 20MHz, type 2 system brd + F8h 05h 00h ??? IBM PC 7568 + F8h 06h 00h ??? PS/2 Model 55-5571 + F8h 07h 00h ??? IBM PC 7561/2 + F8h 07h 01h ??? PS/2 Model 55-5551 + F8h 07h 02h ??? IBM PC 7561/2 + F8h 07h 03h ??? PS/2 Model 55-5551 + F8h 09h 00h 01/29/88 PS/2 Model 70 16MHz 386DX, type 1 sysbd + F8h 09h 02h 04/11/88 PS/2 Model 70 some models + F8h 09h 03h 03/17/89 PS/2 Model 70 some models + F8h 09h 04h 12/15/89 PS/2 Model 70 (16 Mhz 386, LW-type 33) + F8h 0Bh 00h 01/18/89 PS/2 Model P70 (8573-121) typ 2 sys brd + F8h 0Bh 02h 12/16/89 PS/2 Model P70 ?? + F8h 0Ch 00h 11/02/88 PS/2 Model 55SX (16 MHz 386SX) + F8h 0Dh 00h ??? PS/2 Model 70 25MHz, type 3 system brd + F8h 0Dh 00h 06/08/88 PS/2 Model 70 386 25MHz, type 3 sys brd + F8h 0Dh 01h 02/20/89 PS/2 Model 70 386 25MHz, type 3 sys brd + F8h 0Dh ??? 12/01/89 PS/2 Model 70 486 25Mhz, type 3 sys brd + F8h 0Eh 00h ??? PS/1 486SX + F8h 0Fh 00h ??? PS/1 486DX + F8h 10h 00h ??? PS/2 Model 55-5551 + F8h 11h 00h 10/01/90 PS/2 Model 90 XP (25 MHz 486) + F8h 12h 00h ??? PS/2 Model 95 XP + F8h 13h 00h 10/01/90 PS/2 Model 90 XP (33 MHz 486) + F8h 14h 00h 10/01/90 PS/2 Model 90-AK9 (25 MHz 486), 95 XP + F8h 15h 00h ??? PS/2 Model 90 XP + F8h 16h 00h 10/01/90 PS/2 Model 90-AKD / 95XP486 (33MHz 486) + F8h 17h 00h ??? PS/2 Model 90 XP + F8h 19h 05h ??? PS/2 Model 35/35LS or 40 (20 MHz 386SX) + F8h 19h 05h 03/15/91 PS/2 Model 35 SX / 40 SX (LW-type 37) + F8h 19h 06h 04/04/91 PS/2 Model 35 SX / 40 SX (LW-type 37) + F8h 1Ah 00h ??? PS/2 Model 95 XP + F8h 1Bh 00h 09/29/89 PS/2 Model 70 486 (25 Mhz 386DX) + F8h 1Bh 00h 10/02/89 PS/2 Model 70-486 (25 MHz 486) + F8h 1Ch 00h 02/08/90 PS/2 Model 65-121 / 65 SX (16MHz 386SX) + F8h 1Eh 00h 02/08/90 PS/2 Model 55LS (16 MHz 386SX) + F8h 23h 00h ??? PS/2 Model L40 SX + F8h 23h 01h ??? PS/2 Model L40 SX (20 MHz 386SX) + F8h 23h 02h 02/27/91 PS/2 Model L40 SX (20Mhz386SX,LW-typ37) + F8h 25h 00h ??? PS/2 Model 57 SLC + F8h 25h 06h ??? PS/2 Model M57 (20 MHz 386SLC) + F8h 26h 00h ??? PS/2 Model 57 SX + F8h 26h 01h ??? PS/2 Model 57 (20 MHz 386SX) + F8h 26h 02h 07/03/91 PS/2 Model 57 SX (20Mhz 386SX, SCSI) + F8h 28h 00h ??? PS/2 Model 95 XP + F8h 29h 00h ??? PS/2 Model 90 XP + F8h 2Ah 00h ??? PS/2 Model 95 XP (50 MHz 486) + F8h 2Bh 00h ??? PS/2 Model 90 / 90XP486 (50 MHz 486) + F8h 2Ch 00h ??? PS/2 Model 95 XP + F8h 2Ch 01h ??? PS/2 Model 95 (20 MHz 486SX) + F8h 2Dh 00h ??? PS/2 Model 90 XP (20 MHz 486SX) + F8h 2Eh 00h ??? PS/2 Model 95 XP + F8h 2Eh 00h ??? PS/2 Model 95 XP486 (20 Mhz 486SX) + F8h 2Eh 01h ??? PS/2 Model 95 (20 MHz 486SX + 487SX) + F8h 2Fh 00h ??? PS/2 Model 90 XP (20 MHz 486SX + 487SX) + F8h 30h 00h ??? PS/1 Model 2121 (16 MHz 386SX) + F8h 33h 00h ??? PS/2 Model 30-386 + F8h 34h 00h ??? PS/2 Model 25-386 + F8h 36h 00h ??? PS/2 Model 95 XP + F8h 37h 00h ??? PS/2 Model 90 XP + F8h 38h 00h ??? PS/2 Model 57 + F8h 39h 00h ??? PS/2 Model 95 XP + F8h 3Fh 00h ??? PS/2 Model 90 XP + F8h 40h 00h ??? PS/2 Model 95 XP + F8h 41h 00h ??? PS/2 Model 77 + F8h 45h 00h ??? PS/2 Model 90 XP (Pentium) + F8h 46h 00h ??? PS/2 Model 95 XP (Pentium) + F8h 47h 00h ??? PS/2 Model 90/95 E (Pentium) + F8h 48h 00h ??? PS/2 Model 85 + F8h 49h 00h ??? PS/ValuePoint 325T + F8h 4Ah 00h ??? PS/ValuePoint 425SX + F8h 4Bh 00h ??? PS/ValuePoint 433DX + F8h 4Eh 00h ??? PS/2 Model 295 + F8h 50h 00h ??? PS/2 Model P70 (8573) (16 MHz 386) + F8h 50h 01h 12/16/89 PS/2 Model P70 (8570-031) + F8h 52h 00h ??? PS/2 Model P75 (33 MHz 486) + F8h 56h 00h ??? PS/2 Model CL57 SX + F8h 57h 00h ??? PS/2 Model 90 XP + F8h 58h 00h ??? PS/2 Model 95 XP + F8h 59h 00h ??? PS/2 Model 90 XP + F8h 5Ah 00h ??? PS/2 Model 95 XP + F8h 5Bh 00h ??? PS/2 Model 90 XP + F8h 5Ch 00h ??? PS/2 Model 95 XP + F8h 5Dh 00h ??? PS/2 Model N51 SLC + F8h 5Eh 00h ??? IBM ThinkPad 700 + F8h 61h *** ??? Olivetti P500 + F8h 62h *** ??? Olivetti P800 + F8h 80h 00h ??? PS/2 Model 80 (25 MHz 386) + F8h 80h 01h 11/21/89 PS/2 Model 80-A21 (25 Mhz 386) + F8h 81h 00h ??? PS/2 Model 55-5502 + F8h 87h 00h ??? PS/2 Model N33SX + F8h 88h 00h ??? PS/2 Model 55-5530T + F8h 97h 00h ??? PS/2 Model 55 Note N23SX + F8h 99h 00h ??? PS/2 Model N51 SX + F8h F2h 30h ??? Reply Model 32 + F8h F6h 30h ??? Memorex Telex + F8h FDh 00h ??? IBM Processor Complex (with VPD) + F8h ??? ??? ??? PS/2 Model 90 (25 MHz 486SX) + F8h ??? ??? ??? PS/2 Model 95 (25 MHz 486SX) + F8h ??? ??? ??? PS/2 Model 90 (25 MHz 486SX + 487SX) + F8h ??? ??? ??? PS/2 Model 95 (25 MHz 486SX + 487SX) + E4h ??? ??? ??? Triumph Adler PC/XT + E1h ??? ??? ??? ??? (checked for by DOS4GW.EXE) + E1h 00h 00h ??? PS/2 Model 55-5530 Laptop + D9h ??? ??? ??? Peacock XT + 9Ah * * ??? Compaq XT/Compaq Plus + 30h ??? ??? ??? Sperry PC + 2Dh * * ??? Compaq PC/Compaq Deskpro + ??? 56h ??? ??? Olivetti, unknown model + ??? 74h ??? ??? Olivetti, unknown model +Notes: BIOS dates may vary without changes to the revision code, especially + for non-IBM machines + * This BIOS call is not implemented in these early versions or under + Linux's DOSEMU. Read the Model byte at F000h:FFFEh and BIOS date at + F000h:FFF5h instead. + ** These BIOS versions require the DASDDRVR.SYS patches. + *** These Olivetti and Epson machines store the submodel in the byte at + F000h:FFFDh. +SeeAlso: #00509,#00516 + +(Table 00516) +Values for Dell model byte: + 02h Dell 200 + 03h Dell 300 + 05h Dell 220 + 06h Dell 310 + 07h Dell 325 + 09h Dell 310A + 0Ah Dell 316 + 0Bh Dell 220E + 0Ch Dell 210 + 0Dh Dell 316SX + 0Eh Dell 316LT + 0Fh Dell 320LX + 11h Dell 425E +SeeAlso: #00509,#00515 + +Format of Compaq product information: +Address Size Description (Table 00517) + F000h:FFE4h BYTE product family code (first byte) + F000h:FFE5h BYTE Point release number + F000h:FFE6h BYTE ROM version code + F000h:FFE7h BYTE product family code (second byte) + F000h:FFE8h WORD BIOS type code +SeeAlso: #00518,#00520 + +Format of Hewlett-Packard ROM ID at F000h:00F8h: +Offset Size Description (Table 00518) + 00h 2 BYTEs signature "HP" (48h 50h) + 02h 2 BYTEs 00h 00h + 04h BYTE secondary code revision + 05h BYTE primary code revision + 06h BYTE date code, year-1960 (BCD) + 07h BYTE date code, week of year (BCD) +SeeAlso: #00517,#00519 + +Bitfields for Hewlett-Packard product identifier: +Bit(s) Description (Table 00519) + 4-0 machine code + 0 original Vectra + 1 ES/12 + 2 RS/20 + 3 Portable/CS + 4 ES + 5 CS + 6 RS/16 + other reserved + 7-5 CPU type + 0 = 80286 + 1 = 8088 + 2 = 8086 + 3 = 80386 + other reserved +SeeAlso: #00518 + +Format of Toshiba laptop information: +Offset Size Description (Table 00520) + 00h 8 BYTEs ASCII product number (e.g. "T2200SX ") + 08h 8 BYTEs ASCII version number (e.g. "V1.20 ") + 10h 8 BYTEs ASCII signature string "TOSHIBA " + 18h 8 BYTEs always zero??? + 20h DWORD -> built-in BIOS setup program entry point or 0000h:0000h +Note: this record is located at F000h:E000h +SeeAlso: #00517,#00518 + +(Table 00521) +Values for Toshiba product ID: +model prodID version date product number + FEh 29h ../..).. Toshiba T1000LE + FEh 2Ah ../..*.. Toshiba T1000XE + FEh 2Bh ../..+.. Toshiba T1000SE + FEh 2Ch ../..,.. Toshiba T1000 + FEh 2Dh ../..-.. Toshiba T1200F + FEh 2Dh V4.00 12/26-87 Toshiba T1200H + FEh 2Eh ../..... Toshiba T1100+ + FCh 22h ../..".. Toshiba T8500 + FCh 26h 01/15&88 Toshiba T5200 + FCh 27h ../..'.. Toshiba T5100 + FCh 28h ../..(.. Toshiba T2000 + FCh 2Ah 12/26*89 Toshiba T1200XE + FCh 2Bh ../..+.. Toshiba T1600 + FCh 2Ch ../..,.. Toshiba T3100e + FCh 2Dh ../..-.. Toshiba T3200 + FCh 2Fh ../../.. Toshiba T3100 + FCh 34h V1.50 02/04494 Toshiba T100X + FCh 38h ../..8.. Toshiba T2000SXe + FCh 39h V1.20 09/16991 Toshiba T2200SX + FCh 39h V1.40 10/01992 Toshiba T2200SX + FCh 3Ch V1.50 01/28<91 Toshiba T2000SX + FCh 3Dh ../..=.. Toshiba T3200SXC + FCh 3Eh ../..>.. Toshiba T3100SX + FCh 3Fh ../..?.. Toshiba T3200SX + FCh 40h ../..@.. Toshiba T4500C + FCh 41h V1.20 04/05A92 Toshiba T4500 ("T4500SXC" ???) + FCh 45h V3.20 04/14E92 Toshiba T4400SX ("C" or "SXC" on cover) + FCh 45h 01/13E93 Toshiba T4400SXC + FCh 46h * ../..F.. Toshiba T6400 + FCh 46h * ../..F.. Toshiba T6400C + FCh 5Fh V1.40 01/18_94 Toshiba T3300SL + FCh 69h ../..i.. Toshiba T1900C ("T1900CT" ???) + FCh 6Ah V1.30 05/19j93 Toshiba T1900 ("T1900S" ???) + FCh 6Dh V1.10 12/25m92 Toshiba T1850C + FCh 6Eh V1.00 08/19n92 Toshiba T1850 + FCh 6Eh V1.10 12/25n92 Toshiba T1850 + FCh 6Fh V1.00 07/17o92 Toshiba T1800 + FCh 6Fh V1.10 12/25o92 Toshiba T1800 + FCh 7Eh V1.30 06/17~93 Toshiba T4600C + FCh 7Fh V1.40 11/10x94 Toshiba T4600 + FCh 8Ah V1.30 10/22x93 Toshiba T6600C + FCh 91h V1.20 07/15x94 Toshiba T2400CT + FCh 91h V5.00 07/28x95 Toshiba T2400CS/CT + FCh 92h V5.00 07/28x95 Toshiba T3600CT + FCh 96h * V1.40 12/08x94 Toshiba T200 + FCh 96h * V1.50 12/08x94 Toshiba T200CS (T200) + FCh 97h ../..x.. Toshiba T4800CT + FCh 98h * V1.10 12/22x93 Toshiba T1910 + FCh 98h * V2.40 07/12x94 Toshiba T1910/CS (T19XX) + FCh 99h ../..x.. Toshiba T4700CS + FCh 9Bh V2.30 01/31x94 Toshiba T4700CT + FCh 9Bh V2.50 03/22x94 Toshiba T4700CT + FCh 9Bh V5.00 07/28x95 Toshiba T4700CT + FCh 9Ch V1.30 01/11x94 Toshiba T1950CT + FCh 9Ch V2.50 07/22x94 Toshiba T1950CT (T19XX) + FCh 9Dh * V2.40 07/12x94 Toshiba T1950/CS (T19XX) + FCh 9Eh * V1.20 12/25x93 Toshiba T3400 + FCh 9Eh * V1.30 03/22x94 Toshiba T3400/CT + FCh B5h ** V5.10 08/25x95 Toshiba T2110/CS (T21XX) + FCh B5h V5.10 08/25x95 Toshiba T2130CS/CT (T21XX) + FCh BAh V1.30 02/16x95 Toshiba T2150CDS/CDT + FCh BAh V5.00 07/27x95 Toshiba T2150CDS/CDT (T2150) + FCh BBh ** V1.30 01/25x95 Toshiba T2100/CS/CT + FCh BBh ** V5.00 07/27x95 Toshiba T2100/CS/CT + FCh BCh V1.20 12/05x94 Toshiba T2450CT + FCh BCh V5.00 07/28x95 Toshiba T2450CT + FCh BEh V5.00 07/28x95 Toshiba T4850CT + FCh C0h V5.20 05/30x96 Toshiba 420CDS/CDT + FCh C1h V5.20 03/27x96 Toshiba 100CS + FCh C3h V5.60 07/19x96 Toshiba 710CDT / 720CDT + FCh C6h V5.30 11/30x95 Toshiba 410CS/CDT + FCh CAh V5.10 08/18x95 Toshiba 400CS/CDT + FCh CAh V5.40 12/18x95 Toshiba 400CS/CDT + FCh CBh V5.10 09/01x95 Toshiba 610CT + FCh CCh V5.50 06/13x96 Toshiba 700CS/CT + FCh CFh V5.00 08/07x95 Toshiba T4900CT + FCh DCh V5.10 06/17x96 Toshiba 650CT + FCh DCh V5.10 05/10x96 Toshiba 110CS/CT + FCh DDh V5.10 05/10x96 Toshiba 110CS/CT + FCh DFh V5.20 05/27x96 Toshiba 500CS/CDT + FCh ??? V5.??? ../..x.. Toshiba 620CT + FCh ??? V5.??? ../..x.. Toshiba 660CDT + FCh ??? V5.30 11/22/96 Toshiba 730CDT + FCh ??? V6.00 09/20/96 Toshiba 200CDS/CDT + FCh ??? V6.20 11/14/96 Toshiba 430CDS/CDT + FCh ??? V6.40 12/05/96 Toshiba 510CS/CDT +Notes: the 8-bit ASCII graphics character in the "date" column above + has been substituted by "x" if larger than 80h + BIOS version numbers and dates may vary, esp. due to harddisk and + (flash) BIOS upgrades; all BIOS versions 5.xx are flash updates + for Windows95, the product number may indicate the series only + (T21XX) or does no longer contain the exact type suffix (CS/CT) + the most recent versions of the BIOS have stopped including the + product ID code in the BIOS date + [*] These models have monochrome and color versions which can be + distinguished with INT 42/AX=7503h (WD90C24 chipset) + [**] These models have monochrome and color versions which can be + distinguished with INT 10/AX=5F50h (CT655xx chipset) + models not found here like T21x5 are variants differing only in + bundled software +SeeAlso: #00515 +--------B-15C1------------------------------- +INT 15 - SYSTEM - RETURN EXTENDED-BIOS DATA-AREA SEGMENT ADDRESS (PS) + AH = C1h +Return: CF set on error + CF clear if successful + ES = segment of data area (see #M0001,#M0004,#M0005) +SeeAlso: AH=04h"ABIOS",MEM 0040h:000Eh"DATA" +--------M-15C200----------------------------- +INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - ENABLE/DISABLE + AX = C200h + BH = new state + 00h disabled + 01h enabled +Return: CF set on error + AH = status (see #00522) +Note: IBM classifies this function as required +SeeAlso: AX=C201h,AX=C207h,AX=C208h + +(Table 00522) +Values for pointing device function status: + 00h successful + 01h invalid function + 02h invalid input + 03h interface error + 04h need to resend + 05h no device handler installed +--------M-15C201----------------------------- +INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - RESET + AX = C201h +Return: CF set on error + AH = status (see #00522) + CF clear if successful + BH = device ID + BL = value returned by attached device after reset + AAh if device is a mouse +Notes: after successful completion of this call, the pointing device is set + as follows: disabled, sample rate 100 Hz, resolution 4 counts/mm, + scaling 1:1, unchanged data package size + this function should be called before rebooting the system (see + INT 15/AH=4Fh), since otherwise the mouse may behave erratically on + some systems after the boot. Before calling this function, the + caller should check that the INT 15h vector is in fact initialized + (on some very old machines the IVT may contain 0000h:0000h). + IBM classifies this function as required +SeeAlso: INT 33/AX=0000h,AX=C200h,AX=C207h +--------M-15C202----------------------------- +INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET SAMPLING RATE + AX = C202h + BH = sampling rate + 00h 10/second + 01h 20/second + 02h 40/second + 03h 60/second + 04h 80/second + 05h 100/second + 06h 200/second +Return: CF set on error + AH = status (see #00522) +SeeAlso: INT 33/AX=001Ch +--------M-15C203----------------------------- +INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET RESOLUTION + AX = C203h + BH = resolution (see #00523) +Return: CF set on error + AH = status (see #00522) + +(Table 00523) +Values for pointing device resolution: + 00h one count per mm + 01h two counts per mm + 02h four counts per mm + 03h eight counts per mm +--------M-15C204----------------------------- +INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - GET TYPE + AX = C204h +Return: CF set on error + AH = status (see #00522) + CF clear if successful + BH = device ID +--------M-15C205----------------------------- +INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - INITIALIZE + AX = C205h + BH = data package size (1 - 8 bytes) +Return: CF set on error + AH = status (see #00522) +Note: the pointing device is set as follows: disabled, 100 Hz sample rate, + resolution 4 counts/mm, scaling 1:1 +SeeAlso: AX=C201h +--------M-15C206----------------------------- +INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - EXTENDED COMMANDS + AX = C206h + BH = subfunction + 00h return device status + Return: BL = pointing device status (see #00524) + CL = resolution (see #00523) + DL = sample rate, reports per second + 01h set scaling at 1:1 + 02h set scaling at 2:1 +Return: CF set on error + AH = status (see #00522) + +Bitfields for pointing device status: +Bit(s) Description (Table 00524) + 0 right button pressed + 1 reserved + 2 left button pressed + 3 reserved + 4 0 if 1:1 scaling, 1 if 2:1 scaling + 5 device enabled + 6 0 if stream mode, 1 if remote mode + 7 reserved +--------M-15C207----------------------------- +INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET DEVICE HANDLER ADDR + AX = C207h + ES:BX -> FAR user device handler or 0000h:0000h to cancel +Return: CF set on error + AH = status (see #00522) +Note: when the subroutine is called, it is passed the following values on + the stack; the handler should return with a FAR return without + popping the stack: + WORD 1: status (see #00525) + WORD 2: X data (high byte = 00h) + WORD 3: Y data (high byte = 00h) + WORD 4: 0000h +SeeAlso: INT 33/AX=000Ch + +Bitfields for pointing device status: +Bit(s) Description (Table 00525) + 15-8 reserved (0) + 7 Y data overflowed + 6 X data overflowed + 5 Y data is negative + 4 X data is negative + 3 reserved (1) + 2 reserved (0) + 1 right button pressed + 0 left button pressed +--------M-15C208----------------------------- +INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE - WRITE TO POINTER PORT + AX = C208h + BL = byte to be sent to the pointing device +Note: IBM classifies this function as optional +SeeAlso: AX=C200h,AX=C209h +--------M-15C209----------------------------- +INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE - READ FROM POINTER PORT + AX = C209h +Return: BL = first byte read from pointing device + CL = second byte read + DL = third byte read +Note: IBM classifies this function as optional +SeeAlso: AX=C200h,AX=C208h +--------M-15C2------------------------------- +INT 15 - IBM SurePath BIOS - Officially "Private" Function + AH = C2h + AL = 10h-23h +SeeAlso: AH=07h"IBM",AH=3Eh"IBM" +--------B-15C3------------------------------ +INT 15 - SYSTEM - ENABLE/DISABLE WATCHDOG TIMEOUT (PS50+) + AH = C3h + AL = function + 00h disable PS/2 watchdog timer + 01h enable PS/2 watchdog timer + BX = timer counter (0001h-00FFh) + 02h disable Gearbox system + 03h enable Gearbox system +Return: CF set on error + CF clear if successful +Note: the watchdog timer generates an NMI +SeeAlso: INT 21/AH=2Bh/CX=6269h"WDTSR" +--------B-15C4------------------------------- +INT 15 - SYSTEM - PROGRAMMABLE OPTION SELECT (PS50+) + AH = C4h + AL = subfunction + 00h return base POS register address + 01h enable selected slot for setup + BL = slot number (1 to 8) + 02h disable setup for all slots (enable adapter) +Return: CF set on error + DX = base POS register address (if subfunction 00h) +SeeAlso: AH=C6h +--------B-15C5------------------------------- +INT 15 UC - OS HOOK - ROM BIOS TRACING CALLOUT (PS30/286,PS50Z,PS95) + AH = C5h + AL = interrupt being invoked + 01h INT 19 + 02h INT 14 + 03h INT 16 + 04h INT 40 (floppy INT 13) + 05h INT 17 + 06h INT 10 + 07h INT 12 + 08h INT 11 + 09h INT 1A +Return: all registers except AX must be preserved +Notes: called as the very first action of the indicated ROM BIOS interrupt + handlers on the PS/2 Models 30/286, 50Z, and 95 + default handler does nothing and returns CF clear for the above + subfunctions, CF set and AH=86h for all other subfunctions + value of AX passed to the original interrupt handler is pushed on + stack immediately prior to call +--------B-15C6------------------------------- +INT 15 U - later PS/2 models - GET POS DATA + AH = C6h + ??? +Return: ??? +Notes: this function is referenced by name and number in some IBM BIOS manuals + IBM reports that "there are a number of problems with this call" and + does not recommend its use. +SeeAlso: AH=C4h +--------B-15C7------------------------------- +INT 15 - SYSTEM - later PS/2s - RETURN MEMORY-MAP INFORMATION + AH = C7h + DS:SI -> user supplied memory map table (see #00526) +Return: CF set on error + CF clear if successful +Notes: call AH=C0h and examine bit 4 of feature byte 2 to check if this + function is supported + IBM classifies this function as optional + Windows95 OSR2 reportedly does not support this function even though + INT 15/AH=C0h indicates that it is available (observed on several + different systems) +SeeAlso: AH=C0h,AH=C9h,AH=D1h,AX=E820h + +Format of memory-map table structure: +Offset Size Description (Table 00526) + 00h WORD length of table (excluding this word) + 02h DWORD local memory between 1M and 16M, in 1K blocks + 06h DWORD local memory between 16M and 4G, in 1K blocks + 0Ah DWORD system memory between 1M and 16M, in 1K blocks + 0Eh DWORD system memory between 16M and 4G, in 1K blocks + 12h DWORD cacheable memory between 1M and 16M, in 1K blocks + 16h DWORD cacheable memory between 16M and 4G, in 1K blocks + 1Ah DWORD 1K blocks before start of non-system memory between 1M and 16M + 1Eh DWORD 1K blocks before start of non-system memory between 16M and 4G + 22h WORD start segment of largest free block from C0000h-DFFFFh + 24h WORD size of largest free block + 26h DWORD reserved +--------B-15C8------------------------------- +INT 15 - SYSTEM - ENABLE/DISABLE PROCESSOR FUNCTIONS + AH = C8h + AL = function + 00h disable L1 cache + 01h enable L1 cache + ---models 90 and 95 only--- + 02h disable L2 cache + 03h enable L2 cache + 04h disable both caches + 05h enable both caches + 06h return status of both caches + 07h-FFh Reserved +Return: CF set on error + CF clear if successful + AH = status (see #00527) + For subfunction 06h only: + BL = status of L1 cache + 00h enabled + 01h disabled or not installed + 02h disabled due to test error (can not be enabled) + BH = status of L2 cache (same codes as BL) +Notes: supported by at least PS/2 70, 70/486, 80-A21, 90, 95 + call AH=C0h and examine bit 3 of feature byte 2 to check if this + function is supported. + on a 486 system, any external caches must be disabled when the + on-chip cache (L1) is disabled. +SeeAlso: AH=C0h + +(Table 00527) +Values for status: + 00h operation successful + 01h function choice (in AL) is invalid + 02h NVRAM data is invalid + 03h cache test error + 04h (90 and 95 only) cannot perform operation requested due to state of + other cache (also see note above) + 05h no L2 cache is present + 07h invalid input values + 09h CPU in protected mode +--------B-15C9------------------------------- +INT 15 - newer PS/2; various BIOSes - GET CPU TYPE AND MASK REVISION + AH = C9h + AL = 10h (may be required on some non-PS BIOSes) +Return: CF clear if successful + AH = 00h + CH = CPU type (see #00528) + CL = mask revision (stepping level) (see #00529) + CF set on error + AH = status (80h,86h = function not supported) +Notes: the BIOS must save DX at startup in order to be able to support this + call; PS/2 Models 56, 57, 90, and 95 are known to support it + the PS/2 BIOS merely reads CMOS locations 190h (type) and 191h (rev) + IBM classifies this function as optional +SeeAlso: AX=D100h,AX=DA92h,MEM 0040h:00BCh + +(Table 00528) +Values for CPU type: + 03h 80386DX or clone + 04h 80486 + 05h Pentium + 23h 80386SX or clone + 33h Intel i376 + 43h 80386SL or clone + A3h IBM 386SLC + A4h IBM 486SLC + +(Table 00529) +Values for stepping level: +---i376 (type code 33h)--- + 05h A0 + 08h B +---80386/80386DX (type code 03h)--- + 03h Intel B1 to B10, Am386DX/DXL step A + 05h Intel D0 + 08h Intel D1/D2/E1, Am386DX/DXL step B +---80386SL (type code 43h)--- + 05h A + 1xh B +---80386SX (type code 23h)--- + 04h Intel A0 + 05h Intel B, Am386SX/SXL step A1 + 08h Intel C/D1, Am386SX/SXL step B + 09h Intel 386CX/386EX/386SXstatic step A +---80486DX (type code 04h)--- + 00h Intel A0/A1 + 01h Intel B2 to B6 + 02h Intel C0 + 03h Intel C1 + 04h Intel D0 + 10h Intel cA2/cA3, Cx486SLC step A + 11h Intel cB0/cB1 +---486DX2 (type code 04h)--- + 02h Am486DX2 (unknown stepping) + 32h Intel DX2/Overdrive steps A0 to A2 + 33h Intel DX2/Overdrive step B1 +---486SX (type code 04h)--- + 20h Intel A0 + 22h Intel B0 + 27h Intel cA0 + 28h Intel cB0 +---486SL (type code 04h)--- + 40h Intel A +---IntelSX2 (type code 04h)--- + 5xh Intel A +---IntelDX4 (type code 04h)--- + 8xh Intel A +---487SX (type code 04h)--- + 20h Intel A0 + 21h Intel B0 +---Pentium (type code 05h)--- + 0xh Intel P5 steps Ax (1993) + 1xh Intel P5 steps Bx (1994) + 2xh Intel P54C step A +---RapidCAD (type code 03h)--- + 40h A +--------B-15CA------------------------------- +INT 15 U - PS/2 Model 95 - READ/WRITE CMOS MEMORY + AH = CAh + AL = function + 00h read CMOS + Return: CL = value of CMOS location + 01h write CMOS + CL = new value for CMOS location + BL = CMOS location (0Eh-3Fh) +Return: CF clear if successful + AH = 00h + CF set on error + AH = error code (see #00530) +Note: writes do not update the CMOS checksum + +(Table 00530) +Values for CMOS read/write error code: + 01h CMOS lost power or has invalid checksum + 03h specified location out of range (too high) + 04h specified location out of range (too low) + 80h unsupported function (PC) + 86h unsupported function (XT) +--------B-15CB------------------------------- +INT 15 U - PS/2 Model 95 - RESERVED + AH = CBh + ??? +Return: ??? +--------B-15CC------------------------------- +INT 15 U - PS/2 Model 95 - RESERVED + AH = CCh + ??? +Return: ??? +--------V-15CCCC----------------------------- +INT 15 U - Toshiba laptops - VCHAD.EXE - INSTALLATION CHECK + AX = CCCCh +Return: AX = ABCDh if installed +Note: supported by Toshiba VGA change display utility VCHAD.EXE ver 2.90+ + older versions have the string "VCHAD" 2 bytes after the address of + the INT 15 handler which is hooked by all versions for the SysReq key +SeeAlso: AH=85h +--------B-15CD------------------------------- +INT 15 U - PS/2 Model 95 - RESERVED + AH = CDh + ??? +Return: ??? +--------B-15CE--BL00------------------------- +INT 15 - later PS/2s - ALLOCATE DMA ARBITRATION LEVEL + AH = CEh + BL = 00h-0Eh arbitration level to be allocated + 0Fh-FFh reserved + AL = option byte + bit 7-1: reserved (0) + bit 0: 0 = need DMA channel for arbitration level requested + 1 = no channel required for arbitration level +Return: CF set on error + AH = status (80h,86h = function not supported) + CF clear on success + AL = channel number + 00h-07h channel number allocated for the arbiration level + 08h-FEh reserved + FFh no channel requested for arbitration level + AH = status (see #00531) +Notes: arbitration level 00h has the highest priority, 0Eh the lowest + to perform a DMA transfer operation, be sure to call this function + first, and call AH=CFh afterward. Failure to use this function + can cause unpredictable results. +SeeAlso: AH=CFh + +(Table 00531) +Values for DMA arbitration status: + 00h success + 01h arbitration level not available + 02h channel not available + 03h invalid arbitration level passed +--------B-15CF------------------------------- +INT 15 - later PS/2s - DEALLOCATE DMA ARBITRATION LEVEL + AH = CFh + BL = arbitration level to be deallocated (see AH=CEh) +Return: CF set on error + AH = status (80h,86h = function not supported) + CF clear on success + AH = status + 00h success + 04h arbitration level not allocated +SeeAlso: AH=CEh +--------B-15D0------------------------------- +INT 15 - later PS/2s - RESERVED + AH = D0h + ??? +Return: ??? +----------15D042BL00------------------------- +INT 15 R - Intel Pentium Pro BIOS UPDATE - INSTALLATION CHECK + AX = D042h + BL = 00h +Return: CF clear if successful + CF set on error + AH = status + 00h successful + EBX:ECX = signature "INTELPEP" + EDX = BIOS update loader version + SI = number of 2K update blocks which can be recorded in NVRAM + 86h not implemented + AL = OEM error (if AH is not 00h or 86h, otherwise undefined) + 00h successful +Program: the Pentium Pro BIOS update allows the system BIOS or other software + to install a microcode patch into the Pentium Pro processor +Notes: this API must be called from actual real mode, not V86 mode + at least 32K stack space must be available when this function is called +SeeAlso: AX=D042h/BL=01h,AX=D042h/BL=02h,AX=D042h/BL=03h +SeeAlso: @xxxxh:xxxxh"Intel BIOS Upgrade",MSR 00000079h +----------15D042BL01------------------------- +INT 15 R - Intel Pentium Pro BIOS UPDATE - WRITE BIOS UPDATE AREA + AX = D042h + BL = 01h + ES:DI -> microcode update block (see #00533) + CX,DX,SI = segments of three 64K scratchpad areas for BIOS use +Return: CF clear if successful + CF set on error + AH = status (see #00532) + AL = OEM error (if AH is not 00h or 86h, otherwise undefined) + 00h successful +Notes: a microcode update may also be initiated by a WRMSR instruction + with ECX=0079h, EDX=00000000h, and EAX=linear address of update + block (see #00533) + at least 32K stack space must be available when this function is called +SeeAlso: AX=D042h/BL=00h,AX=D042h/BL=02h,AX=D042h/BL=03h,MSR 00000079h + +(Table 00532) +Values for Pentium Pro BIOS update status: + 00h successful + 86h not implemented + 90h unable to erase NVRAM device + 91h unable to write to NVRAM device + 92h unable to read storage + 93h NVRAM is full + 94h specified processor stepping is not present in system + 95h invalid header or loader version + 96h wrong checksum in header + 97h processor rejected the update + 98h the same or a more recent update is already stored + 99h update block number was out of range + +Format of Pentium Pro microcode update block: +Offset Size Description (Table 00533) + 00h DWORD update header version number (currently 00000001h) + FFFFFFFFh = unused block + 04h DWORD revision number of this microcode update + 08h DWORD update creation date, as BCD mmddyyyy (month,day,year) + 0Ch DWORD family/model/stepping of processor to which update applied + (same value as returned by CPUID instruction) + 10h DWORD checksum (used to force sum of all 512 DWORDs of the update + block to 00000000h) + 14h DWORD revision number of loader needed to install update + (currently 00000001h) + 18h 24 BYTEs reserved for future expansion + 30h 2000 BYTEs encrypted microcode data +SeeAlso: MSR 00000079h,OPCODE "CPUID" +----------15D042BL02------------------------- +INT 15 R - Intel Pentium Pro BIOS UPDATE - BIOS UPDATE CONTROL + AX = D042h + BL = 02h + BH = function + 01h enable update loading at initialization time + 02h check whether update loading is enabled + CX,DX,SI = segments of three 64K scratchpad areas for BIOS use +Return: CF clear if successful + CF set on error + AH = status (see #00532) + 00h successful + BL = enabled/disabled flag + 86h not implemented + AL = OEM error (if AH is not 00h or 86h, otherwise undefined) + 00h successful +Notes: this API must be called from actual real mode, not V86 mode + at least 32K stack space must be available when this function is called + there is no call to disable update loading due to security risks; the + BIOS setup can disable loading +SeeAlso: AX=D042h/BL=00h,AX=D042h/BL=02h,AX=D042h/BL=03h +----------15D042BL03------------------------- +INT 15 R - Intel Pentium Pro BIOS UPDATE - READ BIOS UPDATE AREA + AX = D042h + BL = 03h + ES:DI -> buffer for microcode update block (see #00533) + ECX = two real-mode 64K scratchpad segments (upper and lower words) + DX = segment of 64K scratchpad area for BIOS use + SI = zero-based index number of update block to retrieve +Return: CF clear if successful + CF set on error + AH = status + 00h successful + ES:DI buffer filled with 2048-byte update block + 86h not implemented + AL = OEM error (if AH is not 00h or 86h, otherwise undefined) + 00h successful +Program: the Pentium Pro BIOS update allows the system BIOS or other software + to install a microcode patch into the Pentium Pro processor +Notes: this API must be called from actual real mode, not V86 mode + at least 32K stack space must be available when this function is called +SeeAlso: AX=D042h/BL=00h,AX=D042h/BL=01h,AX=D042h/BL=03h +--------B-15D100DX0000----------------------- +INT 15 - later PS/2s - GET NUMBER OF DEVICE DESCRIPTOR TABLE (DDT) ENTRIES + AX = D100h + DX = 0000h (reserved, must set to 0) +Return: BL = size of one DDT entry, in bytes + CX = number of DDT entries + AH = return code (see #00534) + CF set on error + CF clear on success +SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D101h,AX=D102h,AX=D103h,AX=D104h + +(Table 00534) +Values for return code: + 00h success + 01h requested DDT entry not found + 02h DDT data not valid + 86h function not supported +--------B-15D101----------------------------- +INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY NUMBER + AX = D101h + BX = number of requested entry (starting with 1) + DX = 0000h (reserved, must be set to 0) + ES:DI -> buffer to contain DDT entry (see #00535) +Return: AH = return code (see #00534) + CF set on error + CF clear on success + ES:DI buffer filled with DDT entry +SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D102h,AX=D104h + +Format of Device Descriptor Table (DDT): +Offset Size Description (Table 00535) + 00h BYTE bits 7-4: reserved (set to 0) + bits 3-0: slot of device (0 = system board) + 01h BYTE bits 7-4: second interrupt for this device (0 = none) + bits 3-0: first interrupt for this device (0 = none) + 02h BYTE bits 7-4: second arbitration level for this device + bits 3-0: first arbitration level for this device + 03h WORD DDT indicators (see #00536) + 05h BYTE reserved (0) + 06h WORD device ID (0 = none) + 08h WORD starting address of first I/O block (0 = none) + 0Ah WORD starting address of second I/O block (0 = none) + OCh WORD starting address of third I/O block (0 = none) + OEh DWORD start of first non-system memory block (0 = none) + 12h WORD size of first non-system memory block (in kilobytes) + 14h DWORD start of second non-system memory block (0 = none) + 18h WORD size of second non-system memory block (in kilobytes) + 1Ah BYTE implementation identifier of the device + 1Bh BYTE implementation revision level of the device +Note: I/O block addresses and non-system memory addresses are listed in + ascending order in each DDT entry. + +Bitfields for DDT indicators: +Bit(s) Description (Table 00536) + 15 reserved (0) + 14 second arbitration level exists + 13 first arbitration level exists + 12 serial interface is RS-422 + 11 not address limited + 10 DMA channel used + 9 second arbitration level can be shared + 8 first arbitration level can be shared + 7-0 reserved (0) +--------B-15D102----------------------------- +INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY I/O ADDRSS + AX = D102h + BX = entry number at which to start searching + CX = requested I/O port address + DX = 0000h (reserved, must be set to 0) + ES:DI -> buffer to contain DDT entry (see #00535) +Return: AH = return code (see #00534) + BX = DDT entry number where I/O port was found, or total entries + plus 1 if port was not found. + CF set on error + CF clear on success + ES:DI buffer filled with DDT entry +Desc: the DDT is searched from the specified entry for the I/O port in CX, + and the first entry in which it is found is returned +SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D101h,AX=D103h,AX=D104h +--------B-15D103DX0000----------------------- +INT 15 - later PS/2s - RETURN ENTIRE DDT + AX = D103h + DX = 0000h (reserved, must be set to 0) + ES:DI -> buffer to contain DDT entry (see #00535) +Return: AH = return code (see #00534) + CF set on error + CF clear on success + ES:DI buffer filled with DDT entry +SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D104h +--------B-15D104----------------------------- +INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY DEVICE ID + AX = D104h + BX = entry number at which to start searching + CX = requested device ID + DX = 0000h (reserved, must be set to 0) + ES:DI -> buffer to contain DDT entry (see #00535) +Return: AH = return code (see #00534) + BX = DDT entry number where device ID was found, or total entries + plus 1 if port was not found. + CF set on error + CF clear on success + ES:DI buffer filled with DDT entry +Desc: the DDT is searched from the specified entry for the device ID in CX, + and the first entry in which it is found is returned. +SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D101h,AX=D103h +--------B-15D2------------------------------- +INT 15 - later PS/2s - RESERVED + AH = D2h + ??? +Return: ??? +--------B-15D3------------------------------- +INT 15 - later PS/2s - RESERVED + AH = D3h + ??? +Return: ??? +--------B-15D4------------------------------- +INT 15 - later PS/2s - GET PHYSICAL FIXED DISK DRIVE NUMBER (SELECTABLE BOOT) + AH = D4h + DL = logical fixed disk drive number +Return: AH = return code (see #00537) + CF set on error + CF clear on success + AL = physical fixed disk drive number + +(Table 00537) +Values for return code: + 00h success + 01h specified logical drive number is invalid + 80h function not supported (on PCjr and PC) + 86h function not supported +--------B-15D5------------------------------- +INT 15 - later PS/2s - RESERVED + AH = D5h + ??? +Return: ??? +--------B-15D600BL00------------------------- +INT 15 - later PS/2s - READ BOOT DEVICE ID + AX = D600h + BL = 00h + DX = device ID +Return: CF clear if successful + AH = 00h + CF set on error + AH = status (86h for function not supported) +SeeAlso: AX=D600h/BL=01h,AX=D601h/BL=00h,AX=D602h +--------B-15D600BL01------------------------- +INT 15 - later PS/2s - WRITE BOOT DEVICE ID + AX = D600h + BL = 01h + DX = device ID +Return: CF clear on success + AH = 00h + CF set on error + AH = status (86h for function not supported) +SeeAlso: AX=D600h/BL=00h,AX=D601h/BL=01h +--------B-15D601BL00------------------------- +INT 15 - later PS/2s - READ BOOT DEVICE KEY + AX = D601h + BL = 00h + DX = device ID +Return: CF clear on success + AH = 00h + CF set on error + AH = status (86h for function not supported) +SeeAlso: AX=D600h/BL=00h,AX=D601h/BL=01h,AX=D602h +--------B-15D601BL01------------------------- +INT 15 - later PS/2s - WRITE BOOT DEVICE KEY + AX = D601h + BL = 01h + DX = device ID +Return: CF clear on success + AH = 00h + CF set on error + AH = status (86h for function not supported) +SeeAlso: AX=D600h/BL=01h,AX=D601h/BL=00h +--------B-15D602----------------------------- +INT 15 - later PS/2s - QUERY BOOT REFERENCE PARTITION + AX = D602h +Return: CF clear on success + AH = 00h + AL = status of reference-partition boot request + 00h boot not requested + 01h boot requested + CF set on error + AH = status (86h for function not supported) +SeeAlso: AX=D601h/BL=00h +--------X-15D800----------------------------- +INT 15 - EISA SYSTEM ROM - READ SLOT CONFIGURATION INFORMATION + AX = D800h + CL = slot number (including embedded and virtual) +Return: CF clear if successful + AH = 00h + CF set on error + AH = error code (80h,82h,83h,86h,87h)(see #00539) + AL = bit flags (see #00538) + BH = major revision level of configuration utility + BL = minor revision level of configuration utility + CX = checksum of configuration file + DH = number of device functions + DL = combined function information byte (see #00540) + SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3) +Note: call with AL=80h if using 32-bit CS addressing mode instead of 16-bit +SeeAlso: AX=D801h,AX=D804h + +Bitfields for EISA AL bit flags: +Bit(s) Description (Table 00538) + 7 set if duplicate IDs + 6 set if product ID readable + 4,5 slot type (00=expansion, 01=embedded, 10=virtual device) + 0-3 duplicate ID number if bit 7 set +SeeAlso: #00540 + +(Table 00539) +Values for EISA error code: + 80h invalid slot number + 81h invalid function number + 82h EISA CMOS corrupt + 83h empty slot + 84h error clearing CMOS + 85h EISA CMOS is full + 86h invalid BIOS-FW function call + 87h invalid system configuration + 88h config utility version not supported + +Bitfields for EISA combined function information byte: +Bit(s) Description (Table 00540) + 7 reserved + 6 slot has free-form data entries + 5 slot has port initialization entries + 4 slot has port-range entries + 3 slot has DMA entries + 2 slot has IRQ entries + 1 slot has memory entries + 0 slot has function type entries +SeeAlso: #00538 +--------X-15D801----------------------------- +INT 15 - EISA SYSTEM ROM - READ FUNCTION CONFIGURATION INFORMATION + AX = D801h + CH = function number to read + CL = slot number (including embedded and virtual) + DS:SI -> 320-byte buffer for standard configuration data block +Return: CF clear if successful + AH = 00h + DS:SI buffer filled + CF set on error + AH = error code (80h-83h,86h,87h) (see #00539) + BX destroyed +Note: call with AL=81h if using 32-bit CS addressing mode instead of 16-bit + this function is also supported by the Compaq SystemPro 486, but it + uses more than 1297 bytes of stack. +BUG: some implementations appear to destroy the DF direction flag; + the Novell DOS 7+ memory managers explicitly clear it afterwards. +--------X-15D802----------------------------- +INT 15 - EISA SYSTEM ROM - CLEAR NONVOLATILE MEMORY (EISA CMOS) + AX = D802h + BH = EISA config utility major revision level + BL = EISA config utility minor revision level +Return: CF clear if successful + AH = 00h + CF set on error + AH = error code (84h,86h,88h) (see #00539) +Note: call with AL=82h if using 32-bit CS addressing mode instead of 16-bit +SeeAlso: AX=D803h +--------X-15D803----------------------------- +INT 15 - EISA SYSTEM ROM - WRITE NONVOLATILE MEMORY + AX = D803h + CX = length of data structure (0000h = empty slot) + includes two bytes for config file checksum + DS:SI -> configuration data +Return: CF clear if successful + AH = 00h + CF set on error + AH = error code (84h-86h) (see #00539) +Note: call with AL=83h if using 32-bit CS addressing mode instead of 16-bit +SeeAlso: AX=D802h +--------X-15D804----------------------------- +INT 15 - EISA SYSTEM ROM - READ PHYSICAL SLOT + AX = D804h + CL = slot number (including embedded and virtual) +Return: CF clear if successful + AH = 00h + CF set on error + AH = error code (80h,83h,86h) (see #00539) + SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3) +Note: call with AL=84h if using 32-bit CS addressing mode instead of 16-bit +SeeAlso: AX=D800h +--------b-15D820----------------------------- +INT 15 - Compaq LTE Lite - GET ??? + AX = D820h + DS:SI -> 17-byte buffer for ??? +Return: DS:SI buffer filled (first byte is length of remaining data, unless + it is greater than 10h, in which case the second byte is 00h and no + other data is returned) +Note: this function is also supported by Compaq's EISA System ROM, Contura + 486/486c/486cx and recent DESKPRO/i ROMs +SeeAlso: AX=D821h +--------b-15D821----------------------------- +INT 15 - Compaq LTE Lite - SET ??? + AX = D821h + DS:SI -> counted string (should not be more than 16 bytes) +Return: AH = 00h +Note: this function is also supported by Compaq's EISA System ROM, Contura + 486/486c/486cx and recent DESKPRO/i ROMs +SeeAlso: AX=D820h +--------b-15D822BL00------------------------- +INT 15 - Compaq EISA System ROM 04/08/93 - GET ??? + AX = D822h + BL = 00h + CX = size of buffer or 0000h to retrieve required buffer size + DS:SI -> buffer for ??? (if CX nonzero) +Return: CF clear if successful + AH = 00h + DH = 08h + CX = required buffer size to retrieve all data (if CX=0 on entry) + DS:SI buffer filled (if CX nonzero on entry) + CF set on error (BL nonzero) + AH = 86h +--------b-15D823----------------------------- +INT 15 - Compaq EISA System ROM 04/08/93 - ??? + AX = D823h + BL = subfunction??? (00h or 80h) + BH = ??? + DS:SI -> buffer for ??? (see #00541) +Return: CF clear if successful + AH = 00h + DH = 08h + DL = ??? + CF set on error + AH = error code + 86h BL neither 00h nor 80h + 87h ??? + +Format of Compaq EISA buffer: +Offset Size Description (Table 00541) + 00h BYTE ??? + 01h WORD ??? + 03h BYTE ??? + 04h WORD ??? + 06h WORD ??? + ??? +----------15D824----------------------------- +INT 15 - Compaq EISA System ROM 04/08/93 - ??? + AX = D824h + CX = ??? + DS:SI -> ASCIZ string containing ??? +Return: CF clear if successful + AH = 00h + CX = ??? + CF set on error + AH = error code + 87h ??? failed + 88h ??? +Note: these functions are only available if ??? from keyboard controller + command C0h +----------15D825----------------------------- +INT 15 - Compaq EISA System ROM 04/08/93 - ??? + AX = D825h + CX = ??? + SI = ??? + DI = ??? + ??? +Return: CF clear if successful + AH = 00h + CX = ??? + CF set on error + AH = error code + 87h ??? failed + 88h ??? + CX = ??? +Note: these functions are only available if ??? from keyboard controller + command C0h +----------15D826----------------------------- +INT 15 - Compaq EISA System ROM 04/08/93 - ??? + AX = D826h + BX = ??? + CX = size of buffer in bytes + DS:SI -> buffer for ??? + ??? +Return: CF clear if successful + AH = 00h + CX = ??? + CF set on error + AH = error code + 87h ??? failed + 88h ??? +Note: these functions are only available if ??? from keyboard controller + command C0h +--------X-15D8------------------------------- +INT 15 - EISA SYSTEM ROM - 32-bit CS ADDRESSING MODE CALLS + AH = D8h + AL = 80h to 84h + other registers as appropriate for AL=00h to 04h +Return: as appropriate for AL=00h to 04h +Note: these functions are identical to AX=D800h to D804h, except that they + should be called when using 32-bit CS addressing mode (pointers use + ESI rather than SI as offset) instead of 16-bit addressing mode +SeeAlso: AX=D800h,AX=D801h,AX=D802h,AX=D803h,AX=D804h +--------b-15D8------------------------------- +INT 15 - Compaq EISA System ROM 04/08/93 - 32-bit CS ADDRESSING MODE CALLS + AH = D8h + AL = A0h to A6h + other registers as appropriate for AL=20h to 26h +Return: as appropriate for AL=20h to 26h +Note: these functions are identical to AX=D820h to D826h, except that they + should be called when using 32-bit CS addressing mode +----------15DA------------------------------- +INT 15 U - AMI PCI BIOS v1.00.05.AX1 - ??? + AH = DAh + AL = function (00h-08h,12h,14h,15h,19h,88h-8Eh,92h,99h) + other registers vary by function +Return: CF clear if successful + varies by function + CF set on error + AH = error code (86h unsupported [sub]function) +Note: functions not listed above always return CF set and AH=86h; in the + examined BIOS, functions 02h-04h,06h-07h,89h-8Bh, and 8Dh also + always return CF set and AH=86h +SeeAlso: AX=DA00h,AX=DA01h,AX=DA88h,AX=DA99h,AX=DB00h +--------b-15DA00----------------------------- +INT 15 U - AMI PCI BIOS - ??? + AX = DA00h + CL = subfunction + 00h ??? + 01h ??? + 02h get ??? + ??? +Return: CF clear if successful + ??? + CF set on error + AH = error code (86h unsupported subfunction) +Note: in the v1.00.05.AX1 BIOS, subfunctions 00h and 01h always return + failure +SeeAlso: AX=DA01h +--------b-15DA01----------------------------- +INT 15 U - AMI PCI BIOS - CPU SPEED CONTROL + AX = DA01h + CL = subfunction (00h-02h) + 00h set low CPU speed + 01h set high CPU speed + 02h get current CPU speed +Return: CF clear if successful + AH = current/new CPU speed (00h low, 01h high) + AL = ??? (00h) + CF set on error + AH = error code (86h unsupported subfunction) +Notes: in the v1.00.05.AX1 BIOS, subfunctions 00h and 01h are NOPs in both + protected and V86 modes due to a test of MSW bit 0 + setting the CPU speed also generates the same audible signals generated + when manually switching speeds with Ctrl-Alt-Gray- and Ctrl-Alt-Gray+ +BUG: the BIOS apparently intends to return CF set if ???, but fails to use + a different exit path in that case, resulting in CF clear +----------15DA05----------------------------- +INT 15 U - AMI PCI BIOS - GET ??? AND BIOS REVISION STRINGS + AX = DA05h + ES:SI -> 8-byte buffer for ??? and BIOS revision strings +Return: CF clear + ES:SI buffer filled + AL = 00h + CX = ??? (0000h) +Notes: for BIOS v1.00.05.AX1, the ??? string is "IDNO" and the BIOS revision + string is "AX1 " +SeeAlso: AX=DA15h,AX=DB04h +----------15DA08----------------------------- +INT 15 U - AMI PCI BIOS - ??? + AX = DA08h + ??? +Return: CF clear if successful + ??? + CF set on error + AH = error code (86h unsupported subfunction) +Note: in the examined v1.00.05.AX1 BIOS, this call always returns failure +----------15DA12----------------------------- +INT 15 U - AMI PCI BIOS - v1.00.05.AX1 - ??? + AX = DA12h + CL = subfunction + 00h ??? + 01h ??? + 02h get ??? + 03h ??? + 04h ??? + ??? +Return: CF clear if successful + ??? + CF set on error + AH = error code (86h unsupported subfunction) +Desc: ??? performs various manipulations on system chipset registers +Notes: subfunctions 00h and 01h are NOPs in protected and V86 modes due to + a test of MSW bit 0 + subfunctions 00h-02h always return success +----------15DA14----------------------------- +INT 15 U - AMI PCI BIOS - GET/SET ??? + AX = DA14h + CL = subfunction + 00h read + 01h write + DH = new value for ??? (00h-02h) + DL = index of ??? (00h-03h, but not range-checked) + ??? +Return: CF clear if successful + DH = current value of ??? if reading + CF set on error + AH = error code (86h unsupported subfunction) +Note: the values for indexes 00h and 01h are stored in CMOS RAM location 19h, + and the values for 02h and 03h are stored in location 36h +BUG: the v1.00.05.AX1 BIOS range-checks DH on subfunction 00h instead of + subfunction 01h, even though DH is never used by subfunction 00h +----------15DA15----------------------------- +INT 15 U - AMI PCI BIOS - GET ??? AND BIOS REVISION STRINGS + AX = DA15h + ES:DI -> 8-byte buffer for ??? and BIOS revision strings +Return: CF clear + ES:DI buffer filled + AL = 00h +Note: for BIOS v1.00.05.AX1, the ??? string is "IDNO" and the BIOS revision + string is "AX1 " +SeeAlso: AX=DA05h,AX=DB04h +----------15DA19----------------------------- +INT 15 U - AMI PCI BIOS - GET/SET ??? + AX = DA19h + CL = subfunction + 00h get first ??? + 01h get second ??? + 02h set first ??? + BX = ??? + DX = ??? + 03h set second ??? + BX = ??? + DX = ??? +Return: CF clear if successful + AX = 0000h + BX,DX = ??? (subfunctions 00h and 01h only) + CF set on error + AH = error code (86h unsupported subfunction) +Note: the first ??? is stored in CMOS RAM locations 1Bh-1Eh, the second in + locations 1Fh-22h in the v1.00.05.AX1 BIOS +--------b-15DA20----------------------------- +INT 15 U - AMI PCI BIOS v1.00.12.AX1T - CMOS RAM BITFIELD MANIPULATION + AX = DA20h + BL = subfunction + 00h set CMOS data field + BH = CMOS data field number (00h-4Dh) + CH = new value for bitfield (in lowest bits of register) + 01h read CMOS data field + BH = CMOS data field number (00h-4Dh) + Return: CH = value of bitfield + CL = mask of valid bits + Note: both CL/CH shifted to move valid bits into lowest pos + 02h set CMOS byte + CL = CMOS RAM address (00h-7Fh) + CH = new value for CMOS byte + 03h get CMOS byte + CL = CMOS RAM address (00h-7Fh) + Return: CH = value of CMOS byte + 04h update CMOS checksums + Note: sets 2Eh/2Fh to checksum of 10h-2Dh and 7Eh/7Fh to + checksum of 48h-7Dh + 05h verify CMOS checksums + Return: CF clear if checksums OK + AH = 00h + CF set if checksum mismatch + AH = 01h +Return: CF clear if successful + AH = 00h + CF set on error + AH = error code (86h unsupported function/data field) +Notes: this function was not supported by the v1.00.05.AX1 BIOS, but had been + added by 1.00.12.AX1T + after using subfunctions 00h or 02h, the application must call + subfunction 04h to update the checksums to prevent an error the next + time the system is booted + +(Table 00542) +Values for AMI BIOS v1.00.12.AX1T CMOS bitfield identifier: + ID address bit(s) contents + 00h 1Ah 7-6 + 01h 1Dh 7-6 + 02h 6Eh 1 + 03h 77h 0 + 04h 77h 1 + 05h 77h 2 + 06h 77h 3 + 07h 77h 5 + 08h 77h 6 + 09h 77h 7 + 0Ah 78h 7 power management enabled??? + 0Bh 78h 6 + 0Ch 10h 7-4 first floppy drive type + 0Dh 10h 3-0 second floppy drive type + 0Eh 11h 7 + 0Fh 20h 4-0 selected language for error messages/setup utility + 10h 11h 2-1 + 11h 11h 4 + 12h 11h 0 + 13h 11h 3 + 14h 13h 7 + 15h 13h 6-5 + 16h 13h 4-2 + 17h 19h 7 + 18h 19h 6 + 19h 19h 5 + 1Ah 19h 4 + 1Bh 1Eh 2-0 + 1Ch 1Bh 7-6 + 1Dh 1Ch 7 + 1Eh 1Ch 3 + 1Fh 1Ah 5-4 + 20h 1Dh 5-4 + 21h 1Bh 5-4 + 22h 1Ch 6 + 23h 1Ch 2 + 24h 1Ah 3-2 + 25h 1Dh 3-2 + 26h 1Bh 3-2 + 27h 1Ch 5 + 28h 1Ch 1 + 29h 1Ah 1-0 + 2Ah 1Dh 1-0 + 2Bh 1Bh 1-0 + 2Ch 1Ch 4 + 2Dh 1Ch 0 + 2Eh 50h 7-0 + 2Fh 51h 7-0 + 30h 52h 7-0 + 31h 53h 7-0 + 32h 60h 0 + 33h 60h 0 + 34h 60h 0 + 35h 60h 0 + 36h 60h 0 + 37h 60h 0 + 38h 60h 1 + 39h 61h 7 + 3Ah 60h 2 + 3Bh 61h 6-4 + 3Ch 61h 2-0 + 3Dh 60h 7-6 + 3Eh 60h 5-4 + 3Fh 78h 5-4 + 40h 6Eh 5 + 41h 1Eh 3 + 42h 6Eh 0 + 43h 6Eh 2 + 44h 6Fh 1-0 + 45h 6Fh 1-0 + 46h 28h 4-2 + 47h 28h 7-5 + 48h 6Eh 4 + 49h 6Eh 3 + 4Ah 76h 7-0 + 4Bh 77h 4 + 4Ch 11h 6 + 4Dh 1Fh 7-0 +----------15DA88----------------------------- +INT 15 U - AMI PCI BIOS - GET EXTENDED MEMORY SIZE + AX = DA88h +Return: CF clear (successful) + AX = 0000h + CL:BX = extended memory size in KBytes +SeeAlso: AH=88h +----------15DA8C----------------------------- +INT 15 U - AMI PCI BIOS - GET BIOS AND CHIPSET IDENTIFICATION + AX = DA8Ch + CL = subfunction + 00h get BIOS version string + ES:DI -> 12-byte buffer for version string + 01h get chipset identification + BL = what to retrieve + (00h host/PCI bridge,01h motherboard chipset) + ES:DI -> 12-byte buffer for chipset identification (see #00543) +Return: CF clear if successful + ES:DI buffer filled + CF set on error + AH = error code (86h unsupported subfunction) +Notes: the v1.00.05.AX1 BIOS returns "1.00.05.AX1 " as its version string + subfunction 01h returns the five bytes read from the PCI configuration + registers 00h-05h (see #00878), padded to 12 bytes with NULs +SeeAlso: AX=DB04h,PORT C000h"Neptune" + +Format of AMI PCI BIOS chipset identification: +Offset Size Description (Table 00543) + 00h WORD vendor ID (see #00732 at AX=B102h) + 8086h = Intel + 02h WORD device ID + 0484h (BL=01h) + 04A3h (BL=00h) + 04h BYTE low byte of PCI Command Register + 05h 7 BYTEs unused (00h) +----------15DA8E----------------------------- +INT 15 U - AMI PCI BIOS - ??? + AX = DA8Eh + ??? +Return: CF clear if successful + ??? + CF set on error + AH = error code (86h unsupported subfunction) +Note: in the v1.00.05.AX1 BIOS, this call always returns failure +----------15DA92----------------------------- +INT 15 U - AMI PCI BIOS - GET CPU TYPE AND SPEED + AX = DA92h +Return: CF clear (successful) + AL = CPU stepping (see also #00529 at INT 15/AH=C9h) + AH = CPU model + BL = CPU family (05h = Pentium, etc.) + CX = external clock speed in MHz (BCD) + (0040h,0050h,0060h,0066h are possible return values on my + Pentium with the Intel "Neptune" chipset) + EAX high word destroyed +Note: 90 MHz and faster Pentium CPUs can be configured to run at varying + multiples of the external clock speed, i.e. a typical 90 MHz Pentium + system will run the motherboard at 60 MHz (my 90 MHz Pentium returns + 0060h in CX) +SeeAlso: AH=C9h +----------15DA99----------------------------- +INT 15 U - AMI PCI BIOS - GET/SET ??? FLAG + AX = DA99h + CL = subfunction + 00h check if ??? + 01h set ??? flag + 02h clear ??? flag +Return: CF clear if successful + AH = ??? (00h,01h) + AL = 00h + CF set on error + AH = error code (86h unsupported subfunction) +Note: the flag is stored in bit 0 of CMOS RAM location 2Ch for BIOS + v1.00.05.AX1 +--------b-15DB00----------------------------- +INT 15 U - AMI BIOS - Flash ROM - READ FLASH BIOS + AX = DB00h + DS:SI -> parameter block (see #00544) + ES:DI -> buffer for copied information +Return: CF clear if successful + CF set on error + AH = status (86h if not implemented) + DS,ES destroyed, possibly other registers +Note: used by FMUP.EXE, Intel's Flash Memory Update utility +SeeAlso: AH=DAh,AX=DB01h,AX=DB04h + +Format of AMI BIOS Flash ROM parameter block: +Offset Size Description (Table 00544) + 00h 32 BYTEs ASCIZ description of the file's contents + 20h BYTE Logical area type (see #00545) + 21h DWORD logical area size (overall size of area) + 25h BYTE flag: load from file (FF=yes, 00=no) + 26h BYTE flag: reboot after update (FF=yes, 00=no) + 27h BYTE flag: update entire image (FF=yes, 00=no) + 28h 24 BYTEs ASCIZ logical area name (cooresponds to offset 20) + "System BIOS" + "Logo Data Area", etc. + 40h 15 BYTEs ASCIZ time stamp string: MM/DD/YY-HH:MM + 4Fh BYTE checksum for this header (sum of all bytes except this one) + if checksum would be 00h,01h, or FFh, it is set to 2Ah + 50h DWORD this file's starting address (offset in image) + 54h DWORD size of image chunk in this file + 58h BYTE logical area type - same as offset 20h + 59h BYTE flag: last file in chain (FF=yes, 00=no) + 5Ah 6 BYTEs ASCIZ signature "FLASH" + 60h 16 BYTEs ASCIZ filename of next file in chain + 70h 16 BYTEs ASCIZ BIOS reserved string (usually version #) +Notes: this block is identical in format to the 128-byte header on an AMI + BIOS Update file + for AX=DB00h, the following fields must be specified: 50h,54h,58h; + the fields at offset 20h and 5Ah should also be set if possible + the fields at offsets 40h and 70h will be set on return, if available +SeeAlso: #00546 +--------b-15DB01----------------------------- +INT 15 U - AMI BIOS - Flash ROM - GET BIOS SUBSYSTEM INFORMATION + AX = DB01h + CL = BIOS subsystem information identifier (see #00545) +Return: CF clear if successful + AX = 0000h + ES:DI -> 56-byte record describing subsystem (see #00546) + CF set on error + AH = status + 01h nonexistent subsystem + 86h function not supported + AL = 00h +Note: used by FMUP.EXE, Intel's Flash Memory Update utility +SeeAlso: AX=DB00h,AX=DB02h + +(Table 00545) +Values for AMI BIOS subsystem identifier: + 00h recovery code + 01h system BIOS + 02h PCI configuration data + 03h OEM logo data area (see #00547) + 04h system BIOS/Language Set (one system) + configuration utility (another system) +SeeAlso: #00546 + +Format of AMI BIOS subsystem information: +Offset Size Description (Table 00546) + 00h BYTE subsystem identifier/logical area type (see #00545) + 01h DWORD subsystem (FlashROM page) size in bytes + 05h BYTE flag: loadable from file (FFh=yes) + 06h BYTE flag: reboot after update (FFh=yes) + 07h BYTE flag: update entire image (FFh=yes) + 08h 24 BYTEs subsystem/logical area name + 20h BYTE subsystem identifier??? + 21h BYTE flag: reprogrammable if FFh + 22h BYTE ??? (01h,02h seen) + 23h 5 BYTEs ??? (apparently always 00h) + 28h 16 BYTEs BIOS reserved string (usually version number) +SeeAlso: #00544 + +Format of AMI OEM Logo data area: +Offset Size Description (Table 00547) + 00h 8 BYTEs signature + "TEXTLOGO" if text-mode OEM logo + 8 DUP (FFh) if unused + 08h WORD offset of logo font definition table + 0Ah WORD offset of logo data + 0Ch WORD size of logo font table in words + 0Eh WORD offset of upper left corner of logo in video page + 10h WORD width of logo + 12h WORD height of logo + 14h BYTE reserved??? + var var logo font definition (16 bytes per character) + var var logo data as character/attribute pairs +Note: the attribute for the logo characters specifies which font will be used + for that character. If bit 3 is cleared, the normal system font is + used; if bit 3 is set, the logo font is used, with screen colors + adjusted to match the corresponding non-bright attribute for the + system font +SeeAlso: #00545,#00546 +--------b-15DB02----------------------------- +INT 15 U - AMI BIOS - Flash ROM - GET SIZE OF FLASH ROM PROGRAMMING CODE + AX = DB02h +Return: CF clear + AX = 0000h + BX = size of ROM programming code in bytes +Note: used by FMUP.EXE, Intel's Flash Memory Update utility +SeeAlso: AX=DB00h,AX=DB03h +--------b-15DB03----------------------------- +INT 15 U - AMI BIOS - Flash ROM - GET FLASH ROM PROGRAMMING CODE + AX = DB03h + DS:SI -> ??? + ES:DI -> buffer for Flash ROM programming code + BX = ??? + DX = ??? +Return: CF clear if successful + AH = ??? + BX = ??? + DX = ??? + CF set on error + AH = error code +Notes: the entry point for the copied code (which is fully relocatable) is + the very first byte (see #00548) + used by FMUP.EXE, Intel's Flash Memory Update utility +SeeAlso: AX=DB00h,AX=DB02h + +(Table 00548) +Call AMI BIOS ??? code with: + AL = function + 00h erase Flash ROM block + CX = ??? + bit 8: address line A16 inverted + ??? + 01h program new data into Flash ROM + ??? + 02h perform cold reboot + DS:SI -> ??? (see #00549) + ES:DI -> ??? +Return: AH = status + 00h successful + 01h invalid function + 02h ??? + 03h ??? + 04h ??? +Note: DS:SI and ES:DI are ignored for function 02h + +Format of AMI BIOS Flash ROM programming parameters: +Offset Size Description (Table 00549) + 00h 32 BYTEs ??? + 20h BYTE BIOS section number + 21h DWORD length of BIOS code/data in bytes + 25h 43 BYTEs ??? + 50h DWORD ??? + 54h 44 BYTEs ??? +SeeAlso: #00548 +--------b-15DB04----------------------------- +INT 15 U - AMI BIOS - Flash ROM - GET BIOS REVISION + AX = DB04h +Return: CF clear if supported + BL:BH:DL:DH = BIOS revision string + (e.g. 'AX1 ' for v1.00.05.AX1, 'AV0M' for v1.00.03.AV0M) + CL = flag: DH valid? + 00h ignore DH; ignore DL as well if 20h (space) + 01h ignore DH if 20h (space) + CH = BIOS status + 00h normal mode + 01h ROM recovery mode + AL = ??? (02h) +Note: used by FMUP.EXE, Intel's Flash Memory Update utility +SeeAlso: AX=DA05h,AX=DA15h,AX=DA8Ch,AX=DB00h,AX=DB03h +--------Q-15DE00----------------------------- +INT 15 - DESQview - GET PROGRAM NAME + AX = DE00h +Return: AX = offset into DESQVIEW.DVO of program most recently selected from + the "Switch Windows" menu (see #00550) +Note: always returns AX=0000h under DESQview/X +SeeAlso: AX=DE07h + +Format of program entry in DESQVIEW.DVO: +Offset Size Description (Table 00550) + 00h BYTE length of name (FFh if end of file) + 01h N BYTEs name + 2 BYTEs keys to invoke program (second = 00h if only one key used) + BYTE program type + 00h normal program + 04h divider + 80h Delete a Program + 81h Change a Program + WORD ??? apparently always 0000h +--------Q-15DE01----------------------------- +INT 15 - DESQview - UPDATE "OPEN WINDOW" MENU + AX = DE01h +Return: nothing +Notes: reads DESQVIEW.DVO, disables Open menu if file not in current directory + NOP for DESQview/X +--------Q-15DE02----------------------------- +INT 15 - DESQview 1.x only - SET ??? FLAG FOR CURRENT WINDOW + AX = DE02h +Return: nothing +Note: this call is a NOP in DV 2.x +SeeAlso: AX=DE03h +--------Q-15DE03----------------------------- +INT 15 - DESQview 1.x only - GET ??? FOR CURRENT WINDOW + AX = DE03h +Return: AX = ??? for current window + BX = ??? for current window +Note: this call is a NOP in DV 2.x +SeeAlso: AX=DE02h +--------Q-15DE04----------------------------- +INT 15 - DESQview - GET AVAILABLE COMMON MEMORY + AX = DE04h +Return: BX = bytes of common memory available + CX = largest block available + DX = total common memory in bytes +SeeAlso: AX=DE05h,AX=DE06h +--------Q-15DE05----------------------------- +INT 15 - DESQview - GET AVAILABLE CONVENTIONAL MEMORY + AX = DE05h +Return: BX = KB of memory available + CX = largest block available + DX = total conventional memory in KB +SeeAlso: AX=DE04h,AX=DE06h +--------Q-15DE06----------------------------- +INT 15 - DESQview - GET AVAILABLE EXPANDED MEMORY + AX = DE06h +Return: BX = KB of expanded memory available + CX = largest block available + DX = total expanded memory in KB +SeeAlso: AX=DE04h,AX=DE05h +--------Q-15DE07----------------------------- +INT 15 - DESQview - "APPNUM" - GET CURRENT PROGRAM'S NUMBER + AX = DE07h +Return: AX = number of program as it appears on the "Switch Windows" menu +Note: this API call may be made from a hardware interrupt handler +SeeAlso: AX=DE00h +--------Q-15DE08----------------------------- +INT 15 - DESQview - GET ??? + AX = DE08h +Return: AX = 0000h if ??? is not set to the current task + 0001h if ??? is set to the current task +--------Q-15DE09----------------------------- +INT 15 - DESQview - UNIMPLEMENTED + AX = DE09h +Return: nothing (NOP in DV 1.x and 2.x) +--------Q-15DE0A----------------------------- +INT 15 - DESQview v2.00+ - "DBGPOKE" - DISPLAY CHARACTER ON STATUS LINE + AX = DE0Ah + BL = character +Return: character displayed, next call will display in next position (which + wraps back to the start of the line if off the right edge of screen) +Notes: displays character on bottom line of *physical* screen, regardless + of current size of window (even entirely hidden) + does not know about graphics display modes, just pokes the characters + into display memory + this API call may be made from a hardware interrupt handler +SeeAlso: AX=1003h +--------Q-15DE0B----------------------------- +INT 15 - DESQview v2.00+ - "APILEVEL" - DEFINE MINIMUM API LEVEL REQUIRED + AX = DE0Bh + BL = API level minor version number + BH = API level major version number +Return: AX = maximum API level (AH = major, AL = minor) +Notes: if the requested API level is greater than the version of DESQview, a + "You need a newer version" error window is popped up + the API level defaults to 1.00, and is inherited by child tasks +--------Q-15DE0C----------------------------- +INT 15 - DESQview v2.00+ - "GETMEM" - ALLOCATE "SYSTEM" MEMORY + AX = DE0Ch + BX = number of bytes +Return: ES:DI -> allocated block or 0000h:0000h (DV 2.26+) +Note: use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient + system memory +SeeAlso: AX=1001h,AX=102Eh,AX=DE0Dh,AX=DE15h,AX=DE19h +--------Q-15DE0D----------------------------- +INT 15 - DESQview v2.00+ - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY + AX = DE0Dh + ES:DI -> previously allocated block +Return: nothing +SeeAlso: AX=1002h,AX=DE0Ch +--------Q-15DE0E----------------------------- +INT 15 - DESQview v2.00+ - "FINDMAIL" - FIND MAILBOX BY NAME + AX = DE0Eh + ES:DI -> name to find (see #00551) + CX = length of name +Return: BX = 0000h not found + 0001h found + DS:SI = object handle +SeeAlso: AH=12h/BH=11h,AH=12h/BH=12h"GETNAME" + +(Table 00551) +Values for special DESQview mailbox names: + "COM1" ... "COM4" RBcomm using COM1 ... COM4 + "DESQview/X Help Engine" + "DESQview/X Network Server" Network Manager + "DESQview X Server0" X-Windows server + "DESQview X Server7" X-Windows printing service + "INBOX" DESQview/X LPD requests + "OUTBOX" DESQview/X LPD responses + "WAITBOX" semaphore to synchronize DESQview/X LPD communications + "_DVNM_" DV/X v1.10 network manager +--------Q-15DE0F----------------------------- +INT 15 - DESQview v2.00+ - ENABLE DESQview EXTENSIONS + AX = DE0Fh +Return: AX and BX destroyed (seems to be bug, weren't saved&restored) +Notes: sends a manager stream with opcodes AEh, BDh, and BFh to task's window + enables an additional mouse mode +--------Q-15DE10----------------------------- +INT 15 - DESQview v2.00+ - "PUSHKEY" - PUT KEY INTO KEYBOARD INPUT STREAM + AX = DE10h + BH = scan code + BL = character +Return: nothing +Notes: a later read will get the keystroke as if it had been typed by the user + multiple pushes are read last-in first-out + if a script exists for the pushed key in the current application, the + script will be executed + early copies of DV 2.00 destroy AX, BX, ES, and DI +SeeAlso: INT 16/AH=05h +--------Q-15DE11BL00------------------------- +INT 15 - DESQview v2.00+ - "JUSTIFY" - EN/DISABLE AUTOM. WINDOW JUSTIFICATION + AX = DE11h + BL = 00h viewport will not move automatically + nonzero viewport will move to keep cursor visible (default) +Return: nothing +--------Q-15DE12BX0000----------------------- +INT 15 - DESQview v2.01+ - "CSTYLE" - SET "C"-COMPATIBLE CONTROL CHAR INTERPRET + AX = DE12h + BX = 0000h select normal style (linefeed only moves down) + nonzero select C style (linefeed moves to start of next line) +Return: nothing +Note: set on a per-task basis, and inherited from the parent task +--------Q-15DE13----------------------------- +INT 15 - DESQview v2.20+ - "GETCRIT" - GET CRITICAL NESTING COUNT + AX = DE13h +Return: BX = number of calls to BEGINC or ENTERC + (see INT 15/AX=101Bh,INT 15/AX=DE1Ch) without matching ENDC + (see INT 15/AX=101Ch) +Note: this API call may be made from within a hardware interrupt handler +SeeAlso: AX=101Bh,AX=101Ch,AX=DE1Bh,AX=DE1Ch +--------Q-15DE14----------------------------- +INT 15 - DESQview v2.20+ - GET OBJECT TYPE + AX = DE14h + ES:DI -> object +Return: BL = 00h not an object + 08h window or task + 09h mailbox + 0Ah keyboard + 0Bh timer + 0Ch objectq + 0Fh pointer + 10h panel +SeeAlso: AX=1016h +--------Q-15DE15----------------------------- +INT 15 - DESQview v2.20+ - SET ERROR HANDLING + AX = DE15h + BL = error handling mode + 00h post system error on all error conditions + 01h return carry flag set on calls to ADDTO, SUBFROM, and WRITE + messages sent to mailboxes which fail due to lack of system + or common memory + 02h (v2.26+) same as 01h, but also return null pointer for GETMEM + calls which fail due to lack of system memory +Return: nothing +SeeAlso: AX=DE0Ch,AX=DE16h +--------Q-15DE16----------------------------- +INT 15 - DESQview v2.20+ - GET ERROR HANDLING + AX = DE16h +Return: BL = current mode + 00h always post system error + 01h return carry flag set on failed mailbox writes + 02h return CF set on failed mailbox writes and NULL on failed + GETMEM calls +SeeAlso: AX=DE15h +--------Q-15DE17----------------------------- +INT 15 - DESQview v2.20-2.25 - reserved + AX = DE17h +Return: pops up "Programming error" window +Note: AX = 1117h is NOT identical to this call under DESQview 2.20 thru 2.25 +SeeAlso: AX=1117h +--------Q-15DE17----------------------------- +INT 15 - DESQview v2.26+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT + AX = DE17h + BX = function + 0000h get current mapping context without setting + nonzero set new mapping context to BX +Return: BX = mapping context in effect before call +Notes: mapping contexts determine conventional-memory addressability; setting + a mapping context ensures that the associated program and data areas + are in memory for access. Usable by drivers, TSRs and shared + programs. + caller need not be running under DESQview + this API call may be made from a hardware interrupt handler +SeeAlso: AX=1016h,AX=1117h,AX=DE21h,INT 2F/AX=1685h +--------Q-15DE18----------------------------- +INT 15 - DESQview v2.20+ - internal - ??? + AX = DE18h + BP = function number + high byte must be 10h + low byte is function + 00h set ??? + BL = ??? (00h-10h, video mode???) + BH = value to store + 03h set ??? + BL = ??? (stored in driver) + 0Ah get ??? + ES:DI -> 18-byte buffer to hold ??? +Note: calls video driver (NOP for Hercules driver,probably CGA and MCGA also) +--------Q-15DE19----------------------------- +INT 15 - DESQview v2.23+ - "GETCOMMON" - ALLOCATE "COMMON" MEMORY + AX = DE19h + BX = number of bytes to allocate +Return: AX = 0000h successful + ES:DI -> allocated block + nonzero insufficient memory +Note: this API call may be made from within a hardware interrupt handler +SeeAlso: AX=DE0Ch,AX=DE15h,AX=DE1Ah +--------Q-15DE1A----------------------------- +INT 15 - DESQview v2.23+ - "PUTCOMMON" - DEALLOCATE "COMMON" MEMORY + AX = DE1Ah + ES:DI -> previously allocated block +Return: AX = 0000h (successful) +Note: this function may be called from within a hardware interrupt handler +SeeAlso: AX=DE0Dh,AX=DE19h +--------Q-15DE1B----------------------------- +INT 15 - DESQview v2.23+ internal - DECREMENT CRITICAL NESTING COUNT + AX = DE1Bh +Return: nothing +SeeAlso: AX=101Ch,AX=DE13h,AX=DE1Ch +--------Q-15DE1C----------------------------- +INT 15 - DESQview v2.23+ - "ENTERC" - INCREMENT CRITICAL NESTING COUNT + AX = DE1Ch +Return: nothing +Notes: similar to AX=101Bh, but begins the critical region without ensuring + that DOS is free + the official documentation states that this call should be paired with + "ENDC" (AX=101Ch); no mention is made of AX=DE1Bh + this API call may be made from within a hardware interrupt handler +SeeAlso: AX=101Bh,AX=101Ch,AX=DE13h,AX=DE1Bh +--------Q-15DE1D----------------------------- +INT 15 - DESQview v2.23+ - "PUTKEY" - FAKE USER KEYSTROKES + AX = DE1Dh + DX = segment of handle for task to receive keystroke + BL = character + BH = scan code +Return: AX = 0000h if successful + nonzero if receiver's keyboard buffer was full +Notes: the key is treated as though the user had pressed it, ignoring any + script which may be bound to the key, and using the current field + table if the keyboard object is in field processing mode + multiple PUTKEYs are seen in the order in which they are executed +SeeAlso: AX=DE10h +--------Q-15DE1E----------------------------- +INT 15 - DESQview v2.23+ - "SCRNINFO" - GET TRUE VIDEO PARAMETERS + AX = DE1Eh +Return: CL = actual number of rows on screen + CH = actual number of columns on screen + BL = actual video mode (may differ from INT 10/AH=0Fh return) (v2.26+) +Note: this API call may be made from a hardware interrupt handler +SeeAlso: INT 10/AH=0Fh +--------Q-15DE1F----------------------------- +INT 15 - DESQview v2.23+ - "DOSUSER" - GET HANDLE OF TASK CURRENTLY USING DOS + AX = DE1Fh +Return: BX = segment of task handle or 0000h if no tasks are using DOS +Note: this API call may be made from within a hardware interrupt handler +SeeAlso: AX=DE13h,INT 21/AH=34h +--------Q-15DE20----------------------------- +INT 15 - DESQview v2.26+ - "DISPATCHINT" - INTERRUPT ANOTHER TASK + AX = DE20h + BX = segment of handle of task to interupt + DX:CX -> FAR interrupt routine + BP,SI,DI,DS,ES as required by interrupt routine +Return: nothing +Notes: unlike "PGMINT" (AX=1021h), DISPATCHINT may be applied to the task + making the DISPATCHINT call + multiple "DISPATCHINT" calls are processed in the order in which they + were executed + the FAR routine is entered with the current ES, DS, SI, DI, and BP + values, using the task's internal stack (see AX=101Ah); only SS:SP + needs to be preserved + this API call may be made from within a hardware interrupt handler +SeeAlso: AX=1021h,AX=DE2Ah +--------Q-15DE21----------------------------- +INT 15 - DESQview v2.26+ - "ASSERTVIR" - CONTROL 386 SCREEN VIRTUALIZATION + AX = DE21h + BX = new state + 0000h turn off + nonzero turn on +Return: BX = old state of virtualization +Notes: this API call may be made from within a hardware interrupt handler + under DV 2.40 and 2.42, this call appears to have no effect and always + returns a nonzero value in BX which appears to be the offset within + the DV common memory segment of the caller's task object; it may + only have an effect within a hardware interrupt handler +SeeAlso: AX=1117h,AX=DE17h +--------Q-15DE22----------------------------- +INT 15 - DESQview v2.26+ - "PROCESSMEM" - GET TASK MEMORY STATUS + AX = DE22h + DX = segment of task handle +Return: DX = total amount of memory in paragraphs + BX = amount of system memory in paragraphs + CX = largest block of system memory available in paragraphs + AX = memory flags (see #00552) +Notes: if the task handle is a child task, the returned values will be for the + process containing the task, rather than the task itself + if the process's system memory is swapped out, BX,CX,DX remain + unchanged, because the memory usage cannot be determined +SeeAlso: AX=DE04h,AX=DE05h,AX=DE06h + +Bitfields for DESQview process memory flags: +Bit(s) Description (Table 00552) + 0 system memory resides in shared memory + 1 process's memory is swapped out + 2 process's system memory is swapped out +--------Q-15DE23----------------------------- +INT 15 U - DESQview v2.31+ - ??? + AX = DE23h + BX = ??? IRQ number on first PIC? + CX = ??? IRQ number on second PIC? +Return: ??? +Note: called by QEMM 6.00+ +--------Q-15DE24----------------------------- +INT 15 - DESQview v2.40+ - "XNEWPROC" - START NEW APPLICATION + AX = DE24h + BX = length of .DVP data + CX = length of ??? string + DS:SI -> ??? string + ES:DI -> .DVP data (see #00427 at AX=102Ch) +Return: BX = segment of task handle??? or 0000h on error +Note: this call is similar to AX=102Ch except that it can interpret the + extended DVP data +SeeAlso: AX=102Ch +--------Q-15DE25----------------------------- +INT 15 - DESQview v2.40+ - "GETDVPATH" - GET DESQview DIRECTORY + AX = DE25h + ES:DI -> 67-byte buffer for ASCIZ directory name +Return: ES:DI buffer filled with directory from which DESQview was started +BUG: DV 2.42 does not place a terminating NUL at the end of the directory + name, so if the buffer is not cleared to zeros before the call, + there is no way to tell where the directory name ends. This bug + has been fixed in DV 2.52 (DV/X 1.02) +SeeAlso: AX=DE2Eh,INT 21/AH=47h +--------Q-15DE26----------------------------- +INT 15 - DESQview v2.40+ - "GETFOREGROUND" - GET KEYBOARD FOCUS + AX = DE26h +Return: BX = segment of handle for task with keyboard focus +Note: under DESQview/X, the X server always has the keyboard focus unless a + "direct" window is active +SeeAlso: AX=DE2Fh,INT 2F/AX=DE0Ah +--------Q-15DE27----------------------------- +INT 15 - DESQview v2.50+ - "ADDINSTANCEDATA" - ADD PER-TASK SAVE/RESTORE AREA + AX = DE27h + BX = type + 0000h process + 0001h task + ES:DI -> list of Instance Item Structures (see #00553) +Return: CF clear if successful + AX = ??? + BX = ??? + CF set on error + AX = error code??? + 0004h invalid BX value +Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. +SeeAlso: INT 2F/AX=DE08h,INT 2F/AX=DE09h + +Format of DESQview Instance Item Structure [one element of list]: +Offset Size Description (Table 00553) + 00h WORD length of data area DESQview should save and restore on context + switches (0000h = end of list) + 02h DWORD pointer to area to be saved/restored +--------Q-15DE28----------------------------- +INT 15 U - DESQview v2.50+ - ??? + AX = DE28h + BX = segment of ??? or 0000h for default + ??? +Return: ??? +Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. +SeeAlso: AX=DE2Ah +--------Q-15DE29BX0000----------------------- +INT 15 U - DESQview/X - ??? + AX = DE29h + BX = 0000h + ??? +Return: CF clear if successful + ??? + CF set on error +Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. + under DESQview 2.60, this function and all other subfunctions of + AX=DE29h always return CF set, as they are unique to DESQview/X +--------Q-15DE29BX0001----------------------- +INT 15 U - DESQview/X - ??? + AX = DE29h + BX = 0001h + DX = segment of window handle +Return: CF clear if successful + AX = ??? + DX = ??? + CF set on error +Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. +--------Q-15DE29BX0002----------------------- +INT 15 U - DESQview/X - ??? + AX = DE29h + BX = 0002h + DX = segment of window handle +Return: CF clear if successful + AX = ??? + DX = ??? + CF set on error +Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. +--------Q-15DE29BX0003----------------------- +INT 15 U - DESQview/X - ??? + AX = DE29h + BX = 0003h + DX = segment of window handle +Return: CF clear if successful + ??? + CF set on error +Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. +--------Q-15DE29BX0004----------------------- +INT 15 U - DESQview/X - GET DISPLAY NAME + AX = DE29h + BX = 0004h + CX = size of buffer in bytes + DX = segment of window handle + ES:DI -> buffer for display name +Return: CF clear if successful + buffer filled with ASCIZ display name (truncated if necessary) or + null string if no display + CF set on error +Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. + the name ":0" refers to the local display +--------Q-15DE29BX0005----------------------- +INT 15 U - DESQview/X - ??? + AX = DE29h + BX = 0005h + ??? +Return: CF clear if successful + ??? + CF set on error +Note: under DESQview 2.60, this function and all other subfunctions of + AX=DE29h always return CF set, as they are unique to DESQview/X +--------Q-15DE2A----------------------------- +INT 15 - DESQview v2.50+ - "DISPATCHINTAFTERDOS" - INTERRUPT ANOTHER TASK + AX = DE2Ah + BX = segment of handle for task to interrupt or 0000h for caller + DX:CX -> interrupt routine + BP,SI,DI,DS,ES as required by interrupt routine +Return: nothing +Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. + this call is the same as AX=DE20h except that it will delay + interrupting the specified task until after it has exited DOS +SeeAlso: AX=1021h,AX=DE20h +--------Q-15DE2B----------------------------- +INT 15 - DESQview v2.50+ - "OBJNEXT" - TRAVERSE OBJECT LIST + AX = DE2Bh + ES:DI -> starting object + 0000h:0000h for first object in list??? +Return: AX = status + 0000h successful + ES:DI -> next object of same type (window/non-window) + 0001h failed (ES:DI was not a valid handle) +Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. + there are two separate lists, one for window/task objects and one + for all other objects +SeeAlso: AX=1016h,AX=DE2Ah,AX=DE2Ch +--------Q-15DE2C----------------------------- +INT 15 - DESQview v2.50+ - "WININFO" - GET WINDOW INFORMATION + AX = DE2Ch + DX = window information format version (0100h for DESQview 2.5x) + BX = segment of window handle or 0000h for default + ES:DI -> buffer for window information (see #00554) +Return: AX = status + 0000h successful +Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. +SeeAlso: AX=1000h,AX=1016h,AX=DE01h,AX=DE2Bh + +Format of DESQview window information: +Offset Size Description (Table 00554) + 00h BYTE task flag: 00h window, 01h task + 01h BYTE process number if owner task + 00h if non-owner task + 02h WORD segment of owner's handle, 0000h if orphaned + 04h WORD mapping context (see #00416 at AX=1016h) + 06h BYTE task status (see #00555) + 07h BYTE unused + 08h WORD status bits (see #00556) + 0Ah BYTE 01h if foreground-only window + +(Table 00555) +Values for DESQview task status: + 00h "Waiting" waiting for input + 01h "Idle" keyboard poll limit reached + 03h same as 01h + 04h "Pausing" INT 15/AX=1000h pause called + 04h DV/X direct: user did something to allow task switch + 05h "ModeChg" video mode about to be changed + 06h "ModeNtf" notify that video mode changed + 07h "MoniCh" requested change to other monitor + 08h "StartPgm" control relinquished to start new process + 09h "MgrCan" made window manager CANCEL command + 0Ah "Slicing" time slice expired + 0Bh "Exit DOS" notify on DOS calls + 0Ch "Enter DOS" process is re-entering DOS + 0Dh "Terminate" INT 21/AH=4Ch or task freed + 0Eh "BrkNxt" Control-Break pressed + 0Fh "MgrCol" keyboard focus taken away + 10h "PgmInt" interrupted by API call from another task + 11h "BldOpen" call to INT 15/AX=DE01h + +Bitfields for DESQview task status bits: +Bit(s) Description (Table 00556) + 6 task is freeing another task + 5 process is being created + 4 user suspended process + 3 process suspended itself + 2 process is resized direct window (suspended) + 1 process swapped out + 0 DESQview process +--------Q-15DE2D----------------------------- +INT 15 U - DESQview v2.50+ - GET/SET SOCKET HANDLER + AX = DE2Dh + CX = direction + FFFFh set socket handler + DX:BX -> FAR function for socket interface + must be of the format described under INT 63"DESQview" + at #03515 + other get socket handler + Return: DX:BX -> socket handler (see #03515) +Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. + the "set" subfunction is normally called only by SOCKET.DVR +SeeAlso: AX=DE2Eh,INT 63"DESQview",#03515 +--------Q-15DE2E----------------------------- +INT 15 U - DESQview v2.50+ - SOCKET API + AX = DE2Eh + DX:BX -> socket record (see #00558) + 0000h:0000h to create a new socket record +Return: CX = size of socket record in bytes + DX:BX -> socket record which was used +Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x. + socket records are allocated from common memory + for Unix compatibility, each socket and connection on a socket is + allocated a DOS file handle (referencing an SFT for NUL) which is + used on various calls to specify which of possibly multiple + connections is to be operated upon +SeeAlso: AX=DE2Dh,INT 61/AX=0001h/SF=0001h"VINES",INT 63"DESQview" + +(Table 00557) +Values for DESQview/X socket API function number: + 0000h initialize socket??? + 0001h "gethostname" + 0002h "ioctl" check for input + 0003h "sleep" delay for specified period + 0004h "htons" convert word to network (big-endian) byte order + 0005h "select" + 0006h "bsd_close"/"so_close" close socket + 0007h NOP + 0008h "connect" initiate connection on socket + 0009h "recv"/"recvfrom" read from socket + 000Ah "socket" + 000Bh ??? + 000Ch "gethostbyname" + 000Dh "send"/"sendto" write to socket + 000Eh ??? (does something to all connections for process) + 000Fh "getpid" get process identifier + 0010h "gettimeofday" + 0011h "bind" assign name to socket + 0012h "listen" listen for connections on socket + 0013h "accept" accept connection on socket + 0014h connect to X server + 0015h "gethostbyaddr" get host information for an address + 0016h "getprotobyname" + 0017h "getprotobynumber" + 0018h "getservbyname" + 0019h "getservbyport" + 001Ah "getsockname" determine name bound to socket + 001Bh "getpeername" get name of connected peer + 001Ch "getsockopt"/"setsockopt" + 001Dh "so_exit" close all sockets for calling process + 001Eh "issock" determine whether file handle references socket + 001Fh "so_attach" reattach previously detached socket + 0020h "so_detach" temporarily detach socket + 0021h "dvpath" get DESQview directory (see also AX=DE24h) + 0022h "NewProc" start new application (see also AX=102Ch) + 0023h "so_linkup" + 0024h "CanonicalPath" canonicalize filename (see also INT 21/AH=60h) + 0025h indirect INT 15h call + 0026h Network Manager interface + 0027h "so_unlink" close connection from "so_linkup" + 0028h "raisepriority" + 0029h "lowerpriority" + 002Ah "so_private" ??? + FFFFh "NetExit" (appears to be a NOP) + +Format of DESQview/X socket record: +Offset Size Description (Table 00558) + 00h WORD signature F0ADh + 02h WORD function number (see #00557) + 04h WORD returned error code (see #00578) + 06h WORD maximum message size??? (usually 0400h) + 08h WORD PSP segment to use or 0000h if socket not valid + 0Ah WORD scratch space (JFT size) + 0Ch DWORD scratch space (JFT address) + 10h DWORD mailbox handle (initialized by function 0000h) + 14h DWORD timer object handle (initialized by function 0000h) +---function 0000h--- + 18h WORD (ret) ??? +---function 0001h--- + 18h WORD (ret) status??? + 1Ah 128 BYTEs (ret) ASCIZ hostname (empty string if not on network) + 9Ah WORD maximum length of hostname to return +---function 0002h--- + 18h WORD (ret) status + 1Ah WORD socket's file handle + 1Ch WORD IOCTL function + 05h "FIONREAD" determine available input + 06h "FIONBIO" set blocking state of socket + 1Eh WORD (return, subfn 05h) number of bytes available for reading + (call, subfn 06h) 0000h blocking, nonzero nonblocking +---function 0003h--- + 18h 2 BYTEs unused + 1Ah WORD delay time in seconds +---function 0004h--- + 18h WORD (ret) result in network (big-endian) byte order + 1Ah WORD value to convert to network byte order +---function 0005h--- + 18h WORD (ret) number of handles meeting the specified conditions??? + 1Ah WORD number of file handles in each bitset + 1Ch DWORD bitset of socket handles to check for readability + 20h DWORD bitset of socket handles to check for writability + 24h DWORD bitset of socket handles to check for errors + 28h WORD timeout in ??? or 0000h to block until some socket ready + 2Ah DWORD ??? + 2Eh DWORD ??? +---function 0006h--- + 18h WORD (ret) status: 0000h if successful, FFFFh on error + 1Ah WORD socket's file handle +---function 0008h--- + 18h WORD (ret) status: 0000h if successful, FFFFh on error + 1Ah WORD socket's file handle + 1Ch WORD 0001h if socket name specified, 0000h if not + 1Eh WORD length of socket name + 20h N BYTEs name of socket to which to connect +---function 0009h--- + 18h WORD (ret) number of bytes actually read, 0000h if connection + closed, or FFFFh on error + 1Ah WORD socket's file handle + 1Ch WORD number of bytes to read + 1Eh WORD flags + 20h WORD 0000h if no source address desired + 0001h if source address is to be stored (datagram sockets) + 22h WORD length of source address + 24h 110 BYTEs source address + 92h 1K BYTEs buffer for data to be read +---function 000Ah--- + 18h WORD (ret) socket's file handle or FFFFh on error + 1Ah WORD address family (0001h,0002h) + 1Ch WORD socket type + 1Eh WORD protocol +---function 000Bh--- + 18h WORD (ret) 0001h if ??? or FFFFh on error + 1Ah WORD socket's file handle + 1Eh WORD (call) ??? +---function 000Ch--- + 18h 128 BYTEs ASCIZ hostname (special case if empty string or "unix") + 98h ??? (ret) packed 'hostent' structure + A2h ??? (ret) ??? +---function 000Dh--- + 18h WORD (ret) number of bytes actually written or FFFFh on error + 1Ah WORD socket's file handle + 1Ch WORD number of bytes to write + 1Eh WORD number of bytes to follow in subsequent writes??? + 20h WORD flags + 22h WORD 0000h if no destination specified, 0001h if destination present + 24h WORD 0001h if broadcast message???, 0000h if not + (ignored if no destination specified) + 26h WORD length of destination address + 28h 110 BYTEs destination address + 96h 1K BYTEs buffer containing data to be written +---function 000Eh--- + no additional fields +---function 000Fh--- + 18h DWORD (ret) DESQview task handle of calling process +---function 0010h--- + 18h DWORD (ret) current time + 1Ch DWORD (ret) ??? +---function 0011h--- + 18h WORD (ret) status: 0000h if successful, FFFFh on error + 1Ah WORD socket's file handle + 1Ch WORD length of name + 1Eh N BYTEs buffer for socket name +---function 0012h--- + 18h WORD (ret) status: 0000h if successful, FFFFh on error + 1Ah WORD socket's file handle + 1Ch WORD maximum backlog of pending connections allowed on socket +---function 0013h--- + 18h WORD (ret) file handle for new connection or FFFFh on error + 1Ah WORD listen()ing socket's file handle + 1Ch WORD (call) length of buffer for connecting entity's address + (ret) actual length of address + 1Eh N BYTEs buffer for connecting entity's address (110 bytes???) +---function 0014h--- + 18h WORD (ret) socket's file handle or FFFFh on error + 1Ah 4 BYTEs (ret) ??? + 1Eh WORD (ret) ??? + 20h WORD (ret) ??? + 22h 256 BYTEs ASCIZ X display name +122h ??? +---function 0015h--- + 18h WORD (call) type of address??? (test for 0001h seen) + 1Ah WORD (call) length of buffer for host address + 1Ch 110 BYTEs buffer containing ASCIZ host address + 8Ah WORD (ret) offset of official host name + 8Ch WORD (ret) offset of alias list??? + 8Eh WORD (ret) address type??? + 90h WORD (ret) length of an address in bytes??? + 92h WORD (ret) offset of address??? + 9Ah N BYTEs (ret) buffer for hostname, alias list, and host address +---function 0016h--- + 18h ??? buffer for ASCIZ protocol name + 98h ??? +---function 0017h--- + 18h WORD (call) protocol number + 1Ah WORD (ret) ??? or 0001h +---function 0018h--- + 18h 128 BYTEs buffer containing ASCIZ ??? + 98h 128 BYTEs buffer containing ASCIZ ??? +118h WORD (ret) ??? +---function 0019h--- + 18h WORD port number + 1Ah 128 BYTEs (call) ASCIZ host name + (ret) packed servent strctures??? + 9Ah WORD (ret) ??? +---function 001Ah--- + 18h WORD (ret) 0000h if successful, FFFFh on error + 1Ah WORD socket's file handle + 1Ch WORD (call) length of buffer for socket name + (ret) actual length of socket name + 1Eh N BYTEs buffer for socket name +---function 001Bh--- + 18h WORD (ret) status: 0000h if successful, FFFFh on error + 1Ah WORD socket's file handle + 1Ch WORD (call) size of buffer for name + (ret) actual size of name + 1Eh N BYTEs buffer for peer's name +---function 001Ch--- + 18h WORD (ret) status: 0000h if successful, FFFFh on error + 1Ah WORD direction: 0000h to get, 0001h to set + 1Ch WORD socket's file handle + 1Eh WORD option level + 20h WORD option name + 22h WORD (call) length of buffer for option value + (ret) actual length of option value + 24h N BYTEs buffer for option value +---function 001Dh--- + no additional fields +---function 001Eh--- + 18h WORD (ret) status: 0000h ??? or 0001h ??? + 1Ah WORD file handle which may or may not be a socket +---function 001Fh--- + 18h WORD (ret) file handle or FFFFh on error + 1Ah DWORD (call) pointer to Socket Context Record (see #00579) of a + previously detached socket +---function 0020h--- + 18h WORD (ret) status: 0000h if successful or FFFFh on error + 1Ah WORD socket's file handle + 1Ch DWORD (ret) pointer to Socket Context Record (see #00579) for + the file handle +---function 0021h--- + 18h 64 BYTEs buffer for DESQview startup directory (see AX=DE25h) +---function 0022h--- + 18h DWORD (ret) task handle of new application + 1Ch WORD size of .DVP data + 1Eh 129 BYTEs ASCIZ ??? + 9Fh N BYTEs .DVP data (see #00427 at AX=102Ch) +---function 0023h--- + 18h WORD (ret) ??? or FFFFh on error + 1Ah WORD socket's file handle??? +---function 0024h--- + 18h WORD (ret) DOS error code (see #01680 at INT 21/AH=59h/BX=0000h) + 0000h if successful + 1Ah 129 BYTEs ASCIZ filename/pathname +11Bh 129 BYTEs ASCIZ canonicalized filename/pathname (see INT 21/AH=60h) +---function 0025h--- + 18h WORD value of AX + 1Ah WORD value of BX + 1Ch WORD (call) value of CX for call if AH value other than 12h + (call) number of stack parameters if AH value is 12h + (ret) returned CX for calls other than INT 15/AH=12h + 1Eh WORD value of DX + 20h WORD value of DI + 22h WORD value of SI + 24h WORD value of DS + 26h WORD value of ES + 28h WORD (ret) value of FLAGS after call + 2Ah N DWORDs (call) stack parameters for INT 15/AH=12h call + (ret) stack results from INT 15/AH=12h call +---function 0026h--- + 18h WORD (call) Network Manager subfunction (see #00559) + (ret) status??? (0000h on error) + 1Ah WORD (call) size of parameter data + (ret) size of returned data + 1Ch N BYTEs (call) parameter data required by call (see #00560,#00561,#00577) + (ret) result data (see #00570,#00571,#00576) +---function 0027h--- + 18h WORD (ret) status: 0000h if successful, FFFFh on error + 1Ah WORD socket's file handle +---functions 0028h,0029h--- + 18h WORD (call) file handle for which to set priority low/high + FFFFh to change calling task's priority +---function 002Ah--- + no additional fields + +(Table 00559) +Values for DESQview/X Network Manager subfunction: + 0004h "so_exit"??? + 0005h "gethostbyname" + 0006h "gethostname" + 0009h "socket" + 000Dh "gethostbyaddr" + 000Fh "getprotobyname" + 0010h get protocol name for protocol number + 0011h "getservbyname" + 0012h "getservbyport" (see #00563) + 0013h "getsockname"??? (see #00564) + 0016h "shutdown" (see #00565) + 0017h kill Network Manager + 0018h "getpeername"??? (see #00566) + 0019h ??? (called by socket function 0000h) (see #00567) + 001Ah ??? (see #00568) + 001Bh "so_linkup" (see #00569) + 001Dh "getnetstatus" get network services (see #00570) + 001Fh "getpwuid" + 0020h "getpwnam" + 0021h "getpwvar" + 0022h "crypt" + 0023h "so_unlink" + 0024h "getlogin" (see #00571) + 0028h "sethostent" + 0029h "gethostent" + 002Ah "soaddhost" + 002Bh "soupdatehost" + 002Ch "sodeletehost" + 002Dh "setservent" + 002Eh "getservent" + 002Fh "setpwent" + 0030h "getpwent" (see #00572) + 0031h "sethostpath" (see #00573) + 0032h "endservent" + 0033h "endhostent" + 0034h "getnettype" get IP network number (see #00574) + 0035h ??? (pops up Network Manager window) + 0037h "getnettimeout" (see #00575) + 0038h get machine name and IP address (see #00576) + 0039h "getuid" (see #00577) +---DV/X v2.0+ --- + 0041h "deletepwnam" + 0045h "renamepw" + +Format of Function 0026h/Subfunction 000Fh data: +Offset Size Description (Table 00560) + 00h 8 BYTEs (ret) ??? + +Format of Function 0026h/Subfunction 0010h data: +Offset Size Description (Table 00561) + 00h 2 BYTEs (ret) ??? + 02h WORD (ret) protocol number + 04h WORD (call) protocol number for which to get name + 06h WORD (ret) ??? + 08h var (ret) ASCIZ protocol name + N var (ret) ASCIZ protocol name + +Format of Function 0026h/Subfunction 0011h data: +Offset Size Description (Table 00562) + 00h 8 BYTEs ??? + 08h var (ret) ASCIZ protocol name + var (ret) ASCIZ ??? name + var (ret) ASCIZ ??? name + +Format of Function 0026h/Subfunction 0012h data: +Offset Size Description (Table 00563) + 00h 8 BYTEs (ret) ??? + +Format of Function 0026h/Subfunction 0013h data: +Offset Size Description (Table 00564) + 00h 116 BYTEs (ret) ??? + +Format of Function 0026h/Subfunction 0016h ("shutdown") data: +Offset Size Description (Table 00565) + 00h WORD (ret) shutdown status (0000h successful, FFFFh error) + 02h 4 BYTEs (ret) ??? + 04h WORD (call) socket handle + 06*h WORD (call) what (0 = receives, 1 = sends, 2 = both) + +Format of Function 0026h/Subfunction 0018h data: +Offset Size Description (Table 00566) + 00h 116 BYTEs (ret) ??? + +Format of Function 0026h/Subfunction 0019h data: +Offset Size Description (Table 00567) + 00h 4 BYTEs (ret) ??? + 04h DWORD (ret) task handle of ??? + +Format of Function 0026h/Subfunction 001Ah data: +Offset Size Description (Table 00568) + 00h 38 BYTEs (ret) ??? + +Format of Function 0026h/Subfunction 001Bh data: +Offset Size Description (Table 00569) + 00h 10 BYTEs (ret) ??? + +Format of Function 0026h/Subfunction 001Dh return data [array]: +Offset Size Description (Table 00570) + 00h WORD ??? or FFFFh if end of array + 02h 7 BYTEs ??? + 09h 27 BYTEs ASCIZ name of service + +Format of Function 0026h/Subfunction 0024h return data: +Offset Size Description (Table 00571) + 00h var ASCIZ username + +Format of Function 0026h/Subfunction 0030h data: +Offset Size Description (Table 00572) + 00h WORD (call) UID or 0000h for current user + (ret) ??? + 02h WORD (ret) UID + 04h 6 BYTEs (ret) ??? + 0Ah var (ret) ASCIZ username + var (ret) ASCIZ encrypted password + var (ret) ASCIZ initial ("home") directory + +Format of Function 0026h/Subfunction 0031h ("sethostpath") data: +Offset Size Description (Table 00573) + 00h 4 BYTEs ??? + 04h 144 BYTEs ASCIZ ??? + +Format of Function 0026h/Subfunction 0034h data: +Offset Size Description (Table 00574) + 00h 1-3 BYTEs IP network number of caller's machine (low byte first) + +Format of Function 0026h/Subfunction 0037h ("getnettimeout") return data: +Offset Size Description (Table 00575) + 00h WORD (ret) timeout + 02h 2 BYTEs (ret) ??? + +Format of Function 0026h/Subfunction 0038h return data: +Offset Size Description (Table 00576) + 00h BYTE ??? + 01h 4 BYTEs IP address + 05h var ASCIZ machine name + ??? + +Format of Function 0026h/Subfunction 0039h ("getuid") return data: +Offset Size Description (Table 00577) + 00h WORD user ID + 02h 2 BYTEs ??? +SeeAlso: #00573,#00576 + +(Table 00578) +Values for DESQview/X socket error code: + 0000h successful + 0009h "BADF" bad file handle + 000Ch "ENOMEM" out of memory + 000Eh "EFAULT" bad address + 0016h "EINVAL" invalid argument + 0018h "EMFILE" too many open files + 0020h "EPIPE" ??? broken pipe + 0023h "EWOULDBLOCK" operation cannot be completed at this time + 0024h "EINPROGRESS" operation now in progress + 0026h "ENOTSOCK" socket invalid + 0028h "EMSGSIZE" message too long to send atomically + 002Ch "ESOCKTNOSUPPORT" socket type not supported + 002Fh "EAFNOSUPPORT" address family not supp. by protocol fam. + 0031h "EDOM" argument too large + 0038h "EISCONN" socket is already connected + 0039h "ENOTCONN" socket is not connected + +Format of DESQview/X Socket Context Record: +Offset Size Description (Table 00579) + 00h DWORD pointer to next Socket Context Record, 0000h:0000h if last + 04h WORD SFT index for socket, 00FFh if not connected, FFFFh if detached + 06h WORD PSP segment of owner or 0000h + 08h WORD mapping context of owning window (see #00416 at AX=1016h) + 0Ah 2 BYTEs ??? + 0Ch WORD address family + 0Eh WORD socket type + 10h WORD protocol + 12h WORD socket state + 0001h created + 0002h bound + 0003h listening??? + 0005h connected + 14h DWORD timer object handle + 18h DWORD object handle (mailbox???) + 1Ch DWORD object handle of parent of above object or 0000h:0000h + 20h DWORD pointer to ??? or 0000h + 24h 6 BYTEs ??? + 2Ah WORD file handle for socket or FFFFh + 2Ch 2 BYTEs ??? + 2Eh WORD nonzero if socket nonblocking +---network connections only--- + 30h 2 BYTEs ??? + 32h WORD ??? + 34h 4 BYTEs (big-endian) IP address of remote + 38h 6 BYTEs ??? +--------Q-15DE2F----------------------------- +INT 15 - DESQview v2.50+ - "VIDEONOTIFY" - HAS DIRECT WINDOW BEEN ACTIVE? + AX = DE2Fh +Return: BX = status + 0001h keyboard focus has been given to a direct window since the + last call + 0000h if not +Notes: DESQview 2.50-2.53 are distributed as part of DESQview/X v1.00-1.10. + Quarterdeck stated that this call would not be available under future + versions of DESQview Classic, but it is still present in v2.60 +--------Q-15DE30----------------------------- +INT 15 - DESQview v2.50+ - "GETDVXVERSION" - GET DESQview/X VERSION + AX = DE30h +Return: BX = version (BH=major, BL=minor) or 0000h if not DESQview/X +Notes: DESQview 2.50-2.53 are distributed as part of DESQview/X v1.00-1.10. + you must first check the DESQview version to verify that it is 2.50 or + greater +SeeAlso: INT 21/AH=2Bh/CX=4445h +--------Q-15DE31----------------------------- +INT 15 - DESQview/X v1.10 - ??? + AX = DE31h + CX = ??? + 0000h ??? + nonzero ??? + ??? +Return: ??? +--------b-15DF------------------------------- +INT 15 - Juko UNIQUE UX BIOS - TURBO MODE CONTROL + AH = DFh + AL = function + 00h turn on Turbo mode + 01h turn off Turbo mode + 02h set Turbo mode according to hardware switch +SeeAlso: INT 13/AX=FFFFh +--------b-15E00F----------------------------- +INT 15 - Compaq Systempro - MULTIPROCESSOR DISPATCH + AX = E00Fh + ES:BX -> start of 2nd processor's execution +Return: AL = status + 0Fh successful + 00h failure +SeeAlso: AX=E10Eh,AX=E200h +--------b-15E10E----------------------------- +INT 15 - Compaq Systempro - MULTIPROCESSOR END-OF-DISPATCH + AX = E10Eh + ES:BX -> start of 2nd processor's execution +Return: AL = status + 0Fh successful (halted) + 00h failure (not halted) +SeeAlso: AX=E00Fh,AX=E200h +--------b-15E200----------------------------- +INT 15 - Compaq Systempro - MULTIPROCESSOR AVAILABLE + AX = E200h +Return: AX bit 15 set if 2nd processor available +SeeAlso: AX=E00Fh,AX=E10Eh +--------b-15E4------------------------------- +INT 15 - Tandy??? - ??? + AH = E4h + AL = subfunction + 21h, 89h, 8Ah, 8Bh called by 386MAX v6.01 + DL = ??? +Return: DL = 00h if successful??? +Note: the section of code in 386MAX which calls these functions also checks + whether the ROM BIOS has both Tandy and Phoenix Technologies + signatures if these calls fail; the Tandy 1000SL/TL BIOS does not + support this function, however, returning the usual CF set/AH=86h for + "unsupported function". +--------b-15E4------------------------------- +INT 15 - Compaq ROM BIOS 1993/08/03 and newer - ??? + AH = E4h + AL = subfunction + 00h get advanced system info + Return: CF clear + AH = 00h + CX = 0000h + BX = advanced system info flags (read from [XBDA:0094h]) + bit 4: "mode 2" (dual harddisk controller) enabled + 01h,02h unsupported by this ROM version + Return: CF set, AH = 86h + 80h set advanced system info + BX = advanced system info flags + bit 4: enable "mode 2" (dual harddisk controller) + ??? + Return: ??? + Note: On Compaq machines with "COMPAQ" signature at + F000h:FFEAh (see also MEM F000h:FFE0h), MS-DOS/PC DOS + IO.SYS/IBMBIO.COM use this function to set bit 4 + before calling INT 13h/AH=08h to retrieve the number + of hard disks installed (DL). + 90h,A0h,B0h,C0h,D0h,E0h,F0h set ??? + Return: CF clear + AH = 00h + CX = 0000h + BX = ??? + 81h,91h,A1h,B1h,C1h,D1h,E1h,F1h unsupported by 3/8/93&4/8/93 ROMs + Return: CF set, AH = 86h +Notes: functions 80h/90h/etc. are not supported by the 4/8/93 EISA System ROM + these functions are not supported by the 7/26/93 LTE Lite 386 ROM +--------!---Section-------------------------- diff --git a/floppy/doc/INTERRUP.D b/floppy/doc/INTERRUP.D new file mode 100644 index 0000000..0520299 --- /dev/null +++ b/floppy/doc/INTERRUP.D @@ -0,0 +1,7948 @@ +Interrupt List, part 4 of 18 +Copyright (c) 1989-1999,2000 Ralf Brown +--------b-15E800----------------------------- +INT 15 - Compaq Contura - GET ??? + AX = E800h +Return: AX = 0000h + BH = 00h + BL = ??? (read from port 0C7Ch) + CH = ??? + CL = ??? + DX = 0000h +Note: also supported by 3/8/93 DESKPRO/i and 7/26/93 LTE Lite 386 ROM BIOS +--------b-15E800----------------------------- +INT 15 - Compaq Contura Aero, Contura 400 - GET SYSTEM MODEL CODE??? + AX = E800h + BX = ??? (0000h) +Return: CF clear if successful + BH = 02h + BL = submodel??? (0Ch,0Dh,34h,38h,40h,44h,48h,64h,68h) + CF set on error + others??? +Notes: used by Compaq's SOFTPAQ number 0937 EPPBIOS.SYS to determine whether + the Enhanced Parallel Port expected by that driver is available + used by Compaq's SOFTPAW number 0856 VOLCTRL.EXE to determine whether + volume control hardware expected by that driver is available +--------b-15E800----------------------------- +INT 15 - Compaq Prolinea - GET ??? + AX = E800h + BX = ??? (1369h) +Return: BH = 01h + BL = ??? + others??? +Note: used by Compaq's SOFTPAQ number 0718 INT10_04.SYS to determine whether + the fix that driver applies is required (will not install if BX on + return is other than 010Eh or 010Fh) +SeeAlso: AX=E802h +--------b-15E801----------------------------- +INT 15 - Phoenix BIOS v4.0 - GET MEMORY SIZE FOR >64M CONFIGURATIONS + AX = E801h +Return: CF clear if successful + AX = extended memory between 1M and 16M, in K (max 3C00h = 15MB) + BX = extended memory above 16M, in 64K blocks + CX = configured memory 1M to 16M, in K + DX = configured memory above 16M, in 64K blocks + CF set on error +Notes: supported by the A03 level (6/14/94) and later XPS P90 BIOSes, as well + as the Compaq Contura, 3/8/93 DESKPRO/i, and 7/26/93 LTE Lite 386 ROM + BIOS + supported by AMI BIOSes dated 8/23/94 or later + on some systems, the BIOS returns AX=BX=0000h; in this case, use CX + and DX instead of AX and BX + this interface is used by Windows NT 3.1, OS/2 v2.11/2.20, and is + used as a fall-back by newer versions if AX=E820h is not supported + this function is not used by MS-DOS 6.0 HIMEM.SYS when an EISA machine + (for example with parameter /EISA) (see also MEM F000h:FFD9h), or no + Compaq machine was detected, or parameter /NOABOVE16 was given. +SeeAlso: AH=8Ah"Phoenix",AX=E802h,AX=E820h,AX=E881h"Phoenix" +--------b-15E802----------------------------- +INT 15 - Compaq Contura - GET ??? + AX = E802h +Return: CF clear + AX = 0000h + BX = ??? + CX = 0000h +Note: this function is also supported by the LTE Lite 25c, 25E, and 486; not + supported by LTE Lite 20 and 25. +SeeAlso: AX=E801h"Phoenix" +--------b-15E820----------------------------- +INT 15 - newer BIOSes - GET SYSTEM MEMORY MAP + AX = E820h + EAX = 0000E820h + EDX = 534D4150h ('SMAP') + EBX = continuation value or 00000000h to start at beginning of map + ECX = size of buffer for result, in bytes (should be >= 20 bytes) + ES:DI -> buffer for result (see #00581) +Return: CF clear if successful + EAX = 534D4150h ('SMAP') + ES:DI buffer filled + EBX = next offset from which to copy or 00000000h if all done + ECX = actual length returned in bytes + CF set on error + AH = error code (86h) (see #00496 at INT 15/AH=80h) +Notes: originally introduced with the Phoenix BIOS v4.0, this function is + now supported by most newer BIOSes, since various versions of Windows + call it to find out about the system memory + a maximum of 20 bytes will be transferred at one time, even if ECX is + higher; some BIOSes (e.g. Award Modular BIOS v4.50PG) ignore the + value of ECX on entry, and always copy 20 bytes + some BIOSes expect the high word of EAX to be clear on entry, i.e. + EAX=0000E820h + if this function is not supported, an application should fall back + to AX=E802h, AX=E801h, and then AH=88h + the BIOS is permitted to return a nonzero continuation value in EBX + and indicate that the end of the list has already been reached by + returning with CF set on the next iteration + this function will return base memory and ISA/PCI memory contiguous + with base memory as normal memory ranges; it will indicate + chipset-defined address holes which are not in use and motherboard + memory-mapped devices, and all occurrences of the system BIOS as + reserved; standard PC address ranges will not be reported +SeeAlso: AH=C7h,AX=E801h"Phoenix",AX=E881h,MEM xxxxh:xxx0h"ACPI" + +Format of Phoenix BIOS system memory map address range descriptor: +Offset Size Description (Table 00580) + 00h QWORD base address + 08h QWORD length in bytes + 10h DWORD type of address range (see #00581) + +(Table 00581) +Values for System Memory Map address type: + 01h memory, available to OS + 02h reserved, not available (e.g. system ROM, memory-mapped device) + 03h ACPI Reclaim Memory (usable by OS after reading ACPI tables) + 04h ACPI NVS Memory (OS is required to save this memory between NVS + sessions) + other not defined yet -- treat as Reserved +SeeAlso: #00580 +--------b-15E881----------------------------- +INT 15 - Phoenix BIOS v4.0 - GET MEMORY SIZE FOR >64M CONFIGURATIONS (32-bit) + AX = E881h +Return: CF clear if successful + EAX = extended memory between 1M and 16M, in K (max 3C00h = 15MB) + EBX = extended memory above 16M, in 64K blocks + ECX = configured memory 1M to 16M, in K + EDX = configured memory above 16M, in 64K blocks + CF set on error +Notes: supported by AMI BIOSes dated 8/23/94 or later + this interface is used by Windows NT 3.1, OS/2 v2.11/2.20, and is + used as a fall-back by newer versions if AX=E820h is not supported +SeeAlso: AX=E801h"Phoenix",AX=E820h"Phoenix" +----------15E900----------------------------- +INT 15 - PhysTechSoft PTS ROM-DOS - RESET WATCHDOG TIMER + AX = E900h +Return: nothing +----------15E901----------------------------- +INT 15 - PhysTechSoft PTS ROM-DOS - WRITE DIAGNOSTIC CONTROL POINT CODE + AX = E901h + CX = control point code (codes 000h-1FFh system backup) +Return: nothing +Note: Provided by PhysTechSoft's PTS ROM-DOS and displayed by SETUP.COM. +SeeAlso: AX=E902h,INT 14/AH=05h"PTS ROM-DOS",INT 14/AH=06h"PTS ROM-DOS" + +(Table 04093) +Values for PhysTechSoft PTS ROM-DOS control point code: + ??? LOADER: Stack loaded + LOADER: IVT initialized + LOADER: Channel initialized + LOADER: Local loading + LOADER: Flash tested + LOADER: Load from ROM + LOADER: Load ROM comp. + LOADER: Load from Flash + LOADER: Load Flash co. + BIOS: Chipset initialized + BIOS: CPU tested + BIOS: Stack tested + BIOS: CRC tested + BIOS: IVT initialized + BIOS: Vars initialized + BIOS: Resident init + BIOS: Channel initialized + BIOS: Memory tested + BIOS: SRAM tested + BIOS: EMS tested + BIOS: PIC initialized + BIOS: PPI initialized + BIOS: DMA initialized + BIOS: Timer initialized + BIOS: Disks initialized + BIOS: Boot loaded + BIOS: Failed boot + DOS: Job point: (up to 25???) +SeeAlso: #04091 +----------15E902----------------------------- +INT 15 - PhysTechSoft PTS ROM-DOS - SET DIAGNOSTIC DOS ERROR FLAG + AX = E902h + CX = diagnostic flag mask (see #04091,#04092) +Return: nothing +Note: Provided by PhysTechSoft's PTS ROM-DOS and displayed by SETUP.COM. + DOS error flags can be assigned by application software. +SeeAlso: AX=E901h,INT 14/AH=05h"PTS ROM-DOS", INT 14/AH=06h"PTS ROM-DOS" + +Bitfields for PhysTechSoft PTS ROM-DOS BIOS error flags: +Bit(s) Description (Table 04091) + ??? Processor test failed. + Stack test failed. + BIOS code damaged. + Conventional memory test failed. + SRAM test failed. + EMS test failed. + Boot-sector damaged. + Boot-sector read error. + Loader setup damaged. + BIOS setup damaged. +SeeAlso: #04092,#04093 + +Bitfields for PhysTechSoft PTS ROM-DOS LOADER error flags:: +Bit(s) Description (Table 04092) + ??? Processor test failed. + Loader code damaged. + Loader code in RAM damaged. + Loader setup in flash-memory damaged. + BIOS setup in flash-memory damaged. + BIOS offset in flash-memory field damaged. + BIOS size in flash-memory field damaged. + BIOS in flash-memory damaged. + BIOS in ROM damaged. + Last operation field damaged. + Channel error. + Setup in flash-memory damaged. + Loading BIOS from control channel failed. + Loading DOS from control channel failed. +SeeAlso: #04091 +----------15E903----------------------------- +INT 15 - PhysTechSoft PTS ROM-DOS - WRITE-ENABLE FLASH-DISK + AX = E903h +Return: nothing +Note: Enabling writing on Flash disk can lead to corruption of EMS disk info. +SeeAlso: AX=E904h,AX=E905h +----------15E904----------------------------- +INT 15 - PhysTechSoft PTS ROM-DOS - WRITE-PROTECT FLASH-DISK + AX = E904h +Return: nothing +SeeAlso: AX=E903h,AX=E905h +----------15E905----------------------------- +INT 15 - PhysTechSoft PTS ROM-DOS - WRITE IMAGE OF BIOS TO FLASH-MEMORY + AX = E905h + DS:SI -> buffer +Return: nothing +SeeAlso: AX=E903h,INT 14/AH=05h"PTS ROM-DOS",INT 14/AH=06h"PTS ROM-DOS" +----------15E906----------------------------- +INT 15 - PhysTechSoft PTS ROM-DOS - READ SETUP INFORMATION FROM FLASH-DISK + AX = E906h + DS:SI -> buffer +Return: AL = error code (00h = no error, 01h = setup information not found) +SeeAlso: AX=E907h,INT 14/AH=05h"PTS ROM-DOS",INT 14/AH=06h"PTS ROM-DOS" +----------15E907----------------------------- +INT 15 - PhysTechSoft PTS ROM-DOS - WRITE SETUP INFORMATION ON FLASH-DISK + AX = E907h + DS:SI -> buffer +Return: nothing +SeeAlso: AX=E906h +----------15E908----------------------------- +INT 15 - PhysTechSoft PTS ROM-DOS - SET BREAKPOINT + AX = E908h + CL = flags + bit 1: =0 operate in one-fold mode + =1 operate in many-fold mode + bit 0: =0 send debug information to control channel + =1 activate handler + ES:SI = breakpoint address + DX:DI = handler address +Return: AH = error code + 00h no error + 01h incorrect parameter + 02h no room in breakpoint table +SeeAlso: AX=E909h,INT 14/AH=05h"PTS ROM-DOS",INT 14/AH=06h"PTS ROM-DOS" +----------15E909----------------------------- +INT 15 - PhysTechSoft PTS ROM-DOS - REMOVE BREAKPOINT + AX = E909h + ES:SI = breakpoint address +Return: AH = error code + 00h no error + 01h incorrect parameter +SeeAlso: AX=E908h,INT 14/AH=05h"PTS ROM-DOS",INT 14/AH=06h"PTS ROM-DOS" +--------m-15F200CX454D----------------------- +INT 15 - Tandon memory mapper - Tandon MAPPER HARDWARE INITIALIZATION CHECK ??? + AX = F200h + CX = 454Dh +Return: CF clear if hardware already initialised + BX = upper RAM areas in use + bit 0: C000-C3FF + bit 1: C400-C7FF + ... + bit 11: EC00-EFFF + CF set if hardware not initialised yet +--------B-1600------------------------------- +INT 16 - KEYBOARD - GET KEYSTROKE + AH = 00h +Return: AH = BIOS scan code + AL = ASCII character +Notes: on extended keyboards, this function discards any extended keystrokes, + returning only when a non-extended keystroke is available + the BIOS scan code is usually, but not always, the same as the hardware + scan code processed by INT 09. It is the same for ASCII keystrokes + and most unshifted special keys (F-keys, arrow keys, etc.), but + differs for shifted special keys + some (older) clone BIOSes do not discard extended keystrokes and manage + function AH=00h and AH=10h the same + the K3PLUS v6.00+ INT 16 BIOS replacement doesn't discard extended + keystrokes (same as with functions 10h and 20h), but will always + translate prefix E0h to 00h. This allows old programs to use extended + keystrokes and should not cause compatibility problems +SeeAlso: AH=01h,AH=05h,AH=10h,AH=20h,AX=AF4Dh"K3PLUS",INT 18/AH=00h +SeeAlso: INT 09,INT 15/AH=4Fh +--------B-1601------------------------------- +INT 16 - KEYBOARD - CHECK FOR KEYSTROKE + AH = 01h +Return: ZF set if no keystroke available + ZF clear if keystroke available + AH = BIOS scan code + AL = ASCII character +Note: if a keystroke is present, it is not removed from the keyboard buffer; + however, any extended keystrokes which are not compatible with 83/84- + key keyboards are removed by IBM and most fully-compatible BIOSes in + the process of checking whether a non-extended keystroke is available + some (older) clone BIOSes do not discard extended keystrokes and manage + function AH=00h and AH=10h the same + the K3PLUS v6.00+ INT 16 BIOS replacement doesn't discard extended + keystrokes (same as with functions 10h and 20h), but will always + translate prefix E0h to 00h. This allows old programs to use extended + keystrokes and should not cause compatibility problems +SeeAlso: AH=00h,AH=11h,AH=21h,INT 18/AH=01h,INT 09,INT 15/AH=4Fh +--------B-1602------------------------------- +INT 16 - KEYBOARD - GET SHIFT FLAGS + AH = 02h +Return: AL = shift flags (see #00582) + AH destroyed by many BIOSes +SeeAlso: AH=12h,AH=22h,INT 17/AH=0Dh,INT 18/AH=02h,MEM 0040h:0017h + +Bitfields for keyboard shift flags: +Bit(s) Description (Table 00582) + 7 Insert active + 6 CapsLock active + 5 NumLock active + 4 ScrollLock active + 3 Alt key pressed (either Alt on 101/102-key keyboards) + 2 Ctrl key pressed (either Ctrl on 101/102-key keyboards) + 1 left shift key pressed + 0 right shift key pressed +SeeAlso: #00587,#03743,MEM 0040h:0017h,#M0010 +--------B-1603------------------------------- +INT 16 - KEYBOARD - SET TYPEMATIC RATE AND DELAY + AH = 03h + AL = subfunction + 00h set default delay and rate (PCjr and some PS/2) + 01h increase delay before repeat (PCjr) + 02h decrease repeat rate by factor of 2 (PCjr) + 03h increase delay and decrease repeat rate (PCjr) + 04h turn off typematic repeat (PCjr and some PS/2) + 05h set repeat rate and delay (AT,PS) + BH = delay value (00h = 250ms to 03h = 1000ms) + BL = repeat rate (00h=30/sec to 0Ch=10/sec [def] to 1Fh=2/sec) + 06h get current typematic rate and delay (newer PS/2s) + Return: BL = repeat rate (above) + BH = delay (above) +Return: AH destroyed by many BIOSes +Note: use INT 16/AH=09h to determine whether some of the subfunctions are + supported +SeeAlso: INT 16/AH=09h,AH=29h"HUNTER",AH=2Ah"HUNTER" +--------B-1604------------------------------- +INT 16 - KEYBOARD - SET KEYCLICK (PCjr only) + AH = 04h + AL = keyclick state + 00h off + 01h on +Return: AH destroyed by many BIOSes +SeeAlso: AH=03h,AH=04h"K3PLUS" +--------b-1604------------------------------- +INT 16 - Tandy 2000 - KEYBOARD - FLUSH KEYBOARD BUFFER + AH = 04h +Note: this interrupt is identical to INT 51 on the Tandy 2000 +SeeAlso: INT 16/AH=00h,INT 16/AH=02h,INT 16/AH=05h"Tandy 2000" +SeeAlso: INT 51"Tandy 2000" +--------K-1604------------------------------- +INT 16 - K3PLUS v6.22+ - SET KEYCLICK + AH = 04h + AL = keyclick state + 00h keyclick off, leave loudness setting unchanged + 01h keyclick on, leave loudness setting unchanged + else + bit 0: keyclick enabled if set + bits 7-1: new keyclick loudness (non-zero) +Return: AH destroyed by many BIOSes +Note: Applications which try to set a new loudness, but are unsure of the + results of other INT 16/AH=04h implementations, should set the new + loudness first, and then call this function again with AL=01h or + AL=00h +SeeAlso: AH=03h,AH=04h"KEYBOARD",AX=AF4Dh +--------B-1605------------------------------- +INT 16 - KEYBOARD - STORE KEYSTROKE IN KEYBOARD BUFFER (AT/PS w enh keybd only) + AH = 05h + CH = BIOS scan code + CL = ASCII character +Return: AL = status + 00h if successful + 01h if keyboard buffer full + AH destroyed by many BIOSes +Notes: under DESQview, a number of "keystrokes" invoke specific + DESQview-related actions when they are read from the keyboard + buffer (see #00583) + similarly, some "keystrokes" invoke special functions on the HP 100LX + and HP 200LX (see #00584) +SeeAlso: AH=00h,AH=25h"K3",AH=71h,AX=AF4Dh,AH=FFh,INT 15/AX=DE10h +SeeAlso: MEM 0040h:001Eh + +(Table 00583) +Values for pseudo-keystrokes for DESQview: + 38FBh or FB00h switch to next window (only if main menu already popped up) + 38FCh or FC00h pop up DESQview main menu + 38FEh or FE00h close the current window + 38FFh or FF00h pop up DESQview learn menu + +(Table 00584) +Values for pseudo-keystrokes for HP 100LX/200LX: + EE00h pop up topcard display and set other system manager applications + into sleep mode +--------B-1605------------------------------- +INT 16 - KEYBOARD - SELECT KEYBOARD LAYOUT (PCjr only) + AH = 05h + AL = function + 01h set keyboard layout to French + 02h set keyboard layout to German + 03h set keyboard layout to Italian + 04h set keyboard layout to Spanish + 05h set keyboard layout to UK + 80h check if function supported + Return: AL <> 80h if supported +Return: ??? + AH destroyed by many BIOSes +Note: this function is called by the DOS 3.2 KEYBxx.COM +SeeAlso: AH=92h,AH=A2h,AX=AF4Dh +--------b-1605------------------------------- +INT 16 - Tandy 2000 - KEYBOARD - RESET KEYBOARD + AH = 05h +Desc: reset the keyboard and flush the keyboard buffer +Note: this interrupt is identical to INT 51 on the Tandy 2000 +SeeAlso: INT 16/AH=00h,INT 16/AH=02h,INT 16/AH=03h,INT 51"Tandy 2000" +----------160600----------------------------- +INT 16 - AAKEYS - GET NEXT KEYBOARD EVENT + AX = 0600h +Return: CF clear if successful + AL = next keyboard event in event buffer, FFh if buffer overflowed + CF set on error + AL = 00h buffer empty + BX destroyed +Program: AAKEYS is a TSR by Anthony Appleyard which records keyboard scan + codes in a 256-byte buffer in addition to any normal processing which + takes place +Note: the installation check consists of calling INT 16/AX=06xxh (where 'xx' + is any subfunction other than those listed here) and testing whether + AX=BEEFh on return +SeeAlso: AX=0601h,AX=0602h,AX=0603h,AX=0604h +----------160601----------------------------- +INT 16 - AAKEYS - EMPTY KEY-EVENT BUFFER + AX = 0601h +Return: nothing +SeeAlso: AX=0600h,AX=0602h,AX=0603h,AX=0604h +----------160602----------------------------- +INT 16 - AAKEYS - DISABLE AAKEYS + AX = 0602h +Return: AX,DX destroyed +Desc: restores INT 09 and INT 16 and clears the TSRs signature byte +SeeAlso: AX=0600h,AX=0601h,AX=0603h,AX=0604h +----------160603----------------------------- +INT 16 - AAKEYS - GET KEY-EVENT BUFFER + AX = 0603h +Return: ES:BX -> 256-byte circular key-event buffer + ES:[AX] = offset of head of buffer + ES:[AX+1] = offset of tail of buffer +SeeAlso: AX=0600h,AX=0601h,AX=0602h,AX=0604h +----------160604----------------------------- +INT 16 - AAKEYS - EMPTY BIOS KEYBOARD BUFFER + AX = 0604h +Return: AX destroyed +SeeAlso: AX=0600h,AX=0601h,AX=0602h,AX=0603h +--------B-1609------------------------------- +INT 16 - KEYBOARD - GET KEYBOARD FUNCTIONALITY + AH = 09h +Return: AL = supported keyboard functions (see #00585) + AH destroyed by many BIOSes +Note: this function is only available if bit 6 of the second feature byte + returned by INT 15/AH=C0h is set (see #00509) +SeeAlso: AH=03h,AH=0Ah,AH=10h,AH=11h,AH=12h,AH=20h,AH=21h,AH=22h,INT 15/AH=C0h + +Bitfields for supported keyboard functions: +Bit(s) Description (Table 00585) + 7 reserved + 6 INT 16/AH=20h-22h supported (122-key keyboard support) + 5 INT 16/AH=10h-12h supported (enhanced keyboard support) + 4 INT 16/AH=0Ah supported + 3 INT 16/AX=0306h supported + 2 INT 16/AX=0305h supported + 1 INT 16/AX=0304h supported + 0 INT 16/AX=0300h supported +SeeAlso: #00511 +--------K-160A------------------------------- +INT 16 - KEYBOARD - GET KEYBOARD ID + AH = 0Ah +Return: BX = keyboard ID (see #00586) + AH destroyed by many BIOSes +Notes: check return value from AH=09h to determine whether this function is + supported + this function is also supported by the K3PLUS v6.00+ INT 16 BIOS + replacement +SeeAlso: AH=09h,AX=AF4Dh,MEM 0040h:00C2h"AMI" + +(Table 00586) +Values for keyboard ID: + 0000h no keyboard attached + 41ABh Japanese "G" keyboard (translate mode) + MF2 Keyboard (usually in translate mode) + 54ABh Japanese "P" keyboard (translate mode) + 83ABh Japanese "G" keyboard (pass-through mode) + MF2 Keyboard (pass-through mode) + 84ABh Japanese "P" keyboard (pass-through mode) + 86ABh 122-key keyboard + 90ABh old Japanese "G" keyboard + 91ABh old Japanese "P" keyboard + 92ABh old Japanese "A" keyboard +--------B-1610------------------------------- +INT 16 - KEYBOARD - GET ENHANCED KEYSTROKE (enhanced kbd support only) + AH = 10h +Return: AH = BIOS scan code + AL = ASCII character +Notes: if no keystroke is available, this function waits until one is placed + in the keyboard buffer + the BIOS scan code is usually, but not always, the same as the hardware + scan code processed by INT 09. It is the same for ASCII keystrokes + and most unshifted special keys (F-keys, arrow keys, etc.), but + differs for shifted special keys. + unlike AH=00h, this function does not discard extended keystrokes + INT 16/AH=09h can be used to determine whether this function is + supported, but only on later model PS/2s +SeeAlso: AH=00h,AH=09h,AH=11h,AH=20h,MEM 0040h:0019h,MEM 0040h:001Eh +--------B-1611------------------------------- +INT 16 - KEYBOARD - CHECK FOR ENHANCED KEYSTROKE (enh kbd support only) + AH = 11h +Return: ZF set if no keystroke available + ZF clear if keystroke available + AH = BIOS scan code + AL = ASCII character +Notes: if a keystroke is available, it is not removed from the keyboard buffer + unlike AH=01h, this function does not discard extended keystrokes + some versions of the IBM BIOS Technical Reference erroneously report + that CF is returned instead of ZF + INT 16/AH=09h can be used to determine whether this function is + supported, but only on later model PS/2s +SeeAlso: AH=01h,AH=09h,AH=10h,AH=21h,INT 09,INT 15/AH=4Fh +--------B-1612------------------------------- +INT 16 - KEYBOARD - GET EXTENDED SHIFT STATES (enh kbd support only) + AH = 12h +Return: AL = shift flags 1 (same as returned by AH=02h) (see #00587) + AH = shift flags 2 (see #00588) +Notes: AL bit 3 set only for left Alt key on many machines + AH bits 7 through 4 always clear on a Compaq SLT/286 + INT 16/AH=09h can be used to determine whether this function is + supported, but only on later model PS/2s + many BIOSes (including at least some versions of Phoenix and AMI) will + destroy AH on return from functions higher than AH=12h, returning + 12h less than was in AH on entry (due to a chain of DEC/JZ + instructions) +SeeAlso: AH=02h,AH=09h,AH=22h,AH=51h,INT 17/AH=0Dh,MEM 0040h:0017h + +Bitfields for keyboard shift flags 1: +Bit(s) Description (Table 00587) + 7 Insert active + 6 CapsLock active + 5 NumLock active + 4 ScrollLock active + 3 Alt key pressed (either Alt on 101/102-key keyboards) + 2 Ctrl key pressed (either Ctrl on 101/102-key keyboards) + 1 left shift key pressed + 0 right shift key pressed +SeeAlso: #00582,#00588,MEM 0040h:0017h,#M0010 + +Bitfields for keyboard shift flags 2: +Bit(s) Description (Table 00588) + 7 SysReq key pressed (SysReq is often labeled SysRq) + 6 CapsLock pressed + 5 NumLock pressed + 4 ScrollLock pressed + 3 right Alt key pressed + 2 right Ctrl key pressed + 1 left Alt key pressed + 0 left Ctrl key pressed +SeeAlso: #00587,MEM 0040h:0018h,#M0011 +--------J-1613------------------------------- +INT 16 - DOS/V - DOUBLE-BYTE CHARACTER SET SHIFT CONTROL + AH = 13h + AL = function + 00h set shift status + DX = shift status (see #00589), must preserve internal status + bits + 01h get shift status + Return: DX = current shift status (see #00589) +Note: these functions are supplied by the Japanese Front-End Processor +SeeAlso: AH=14h,INT 21/AX=6301h + +Bitfields for DOS/V shift status: +Bit(s) Description (Table 00589) + 0 full-size rather than half-size + 2-1 character input mode + 00 alphanumeric, 01 Katakana, 10 Hiragana, 11 unused + 5-3 internal status + 6 Romaji enabled + 7 Katakana to Kanji conversion enabled + 15-8 internal status +--------J-1614------------------------------- +INT 16 - DOS/V - SHIFT STATUS DISPLAY CONTROL + AH = 14h + AL = function + 00h enable display + 01h disable display + 02h get display state + Return: AL = current state (00h enabled, 01h disabled) +Desc: control the screen-bottom shift status row(s) for the Japanese + Front-End Processor +SeeAlso: AH=13h,INT 10/AH=19h,INT 10/AH=1Dh +--------B-1620------------------------------- +INT 16 - KEYBOARD - GET 122-KEY KEYSTROKE (122-key kbd support only) + AH = 20h +Return: AH = BIOS scan code (see AH=10h) + AL = ASCII character +Note: use AH=09h to determine whether this function is supported +SeeAlso: AH=00h,AH=09h,AH=10h,AH=21h,AH=22h +--------b-1620------------------------------------ +INT 16 - HUNTER 16 - SET TEMPORARY SHIFT + AH = 20h + AL = shift status (see #00590) +Notes: the Husky Hunter 16 is an 8088-based ruggedized laptop. Other family + members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk. + the user can override the specified settings by pressing the keys + +Bitfields for HUNTER 16 shift status: +Bit(s) Description (Table 00590) + 4 Scroll Lock on + 5 Num Lock on + 6 Caps Lock on +--------K-1620------------------------------- +INT 16 O - K3 v1.5x, K3PLUS v5.xx - GET EXTENDED BUFFER STATE + AH = 20h +Return: AX = K3 version + ES:BX -> extended keyboard buffer start + ES:DX -> extended keyboard buffer end + ES:SI -> next keystroke + ES:DI -> last keystroke in buffer + CX = number of keystrokes in buffer +Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C. + Frinke, originally based on the K3 extended German keyboard driver + by Martin Gerdes published in c't magazine in 1988 +Note: this function was normally unsupported under K3PLUS v6.00-v6.22 and + is no longer supported by v6.30+; use AX=AF20h instead +SeeAlso: AH=25h"K3",AX=AF20h,INT 2F/AX=D44Fh/BX=0000h,INT 2F/AX=ED58h +--------B-1621------------------------------- +INT 16 - KEYBOARD - CHECK FOR 122-KEY KEYSTROKE (122-key kbd support only) + AH = 21h +Return: ZF set if no keystroke available + ZF clear if keystroke available + AH = BIOS scan code + AL = ASCII character +Notes: use AH=09h to determine whether this function is supported + some versions of the IBM BIOS Technical Reference erroneously report + that CF is returned instead of ZF + K3PLUS v6.00+ supports this function as an alias of AH=11h +SeeAlso: AH=01h,AH=09h,AH=11h,AH=20h,AH=21h +--------b-1621------------------------------------ +INT 16 - HUNTER 16 - CONTROL SHIFT KEYS + AH = 21h + AL = shift keys to control (see #00582) + BL = shift state for disabled keys +Note: If a bit in AL is set the key is disabled and set to the state of the + corresponding bit in BL +SeeAlso: AH=20h"HUNTER",AH=22h"HUNTER" +--------B-1622------------------------------- +INT 16 - KEYBOARD - GET 122-KEY SHIFT STATUS (122-key kbd support only) + AH = 22h +Return: AL = shift flags 1 (see #00587) + AH = shift flags 2 (see #00588) +Notes: use AH=09h to determine whether this function is supported + K3PLUS v6.00+ supports this function as an alias of AH=12h +SeeAlso: AH=02h,AH=09h,AH=12h,AH=20h,AH=21h +--------b-1622------------------------------------ +INT 16 - HUNTER 16 - CONTROL CTRL-ALT-DEL + AH = 22h + AL = new Ctrl-Alt-Del state (00h enabled, nonzero disabled) + BX = 0708h + CX = 0910h + DX = 1112h +Return: AL = 00h if successful +SeeAlso: AH=21h"HUNTER",AH=23h"HUNTER",AH=2Ah +--------b-1623------------------------------------ +INT 16 - HUNTER 16 - CONTROL EMERGENCY BREAKOUT + AH = 23h + AL = new state of breakout (00h enabled, nonzero disabled) + BX = 0708h + CX = 0910h + DX = 1112h +Return: AL = 00h if successful +Desc: Enables or disables the emergency breakout feature, where the + Hunter 16 at power on checks whether the X and P keys are pressed. + If so the machine will boot rather than continue the running program +SeeAlso: AH=22h"HUNTER" +--------b-1624------------------------------------ +INT 16 - HUNTER 16 - REDEFINE KEY CODES + AH = 24h + AL = Matrix Code (see #00591) + BL = new Key code +Return: AL = status (00h successful, nonzero failed) +SeeAlso: AH=2Bh,AH=2Ch + +(Table 00591) +Values for HUNTER 16 Matrix Code: + Code Key Code Key Code Key + 00h Esc key 1Eh Space 3Bh L + 01h 1 21h 0 3Ch , + 02h Q 22h - 3Eh Right shift + 03h Tab 23h ' 42h 8 + 04h Num Lock 24h Keypad 4 43h 7 + 05h \ 25h Enter 44h U + 08h LShift 26h Keypad 7 45h I + 09h Ctrl 27h . 46h J + 0Ah "Paw" key 28h Keypad 1 47h K + 0Bh 2 29h Keypad 0 48h M + 0Ch W 2Ch = 49h N + 0Dh A 2Dh Backspace 4Ah / + 0Eh S 2Eh Keypad 8 4Dh 6 + 0Fh Z 2Fh Keypad 9 4Eh 5 + 11h Alt 30h Keypad 5 4Fh T + 16h 4 31h Keypad 6 50h Y + 17h 3 32h Keypad 2 51h G + 18h E 33h Keypad 3 52h H + 19h R 34h Keypad . 53h B + 1Ah D 37h 9 54h V + 1Bh F 38h O 55h # + 1Ch X 39h P 58h Pwr + 1Dh C 3Ah ; 59h Shift Pwr +--------b-1625------------------------------------ +INT 16 - HUNTER 16 - RESET KEYBOARD + AH = 25h +Return: AL = 00h +Desc: restores the standard keyboard layout after any remapping +SeeAlso: AH=24h,AH=2Bh,AH=2Ch +--------K-1625------------------------------- +INT 16 O - K3 v1.5x, K3PLUS v5.xx - COPY INTO EXTENDED BUFFER + AH = 25h + CX = number of keystrokes to copy + ES:SI -> buffer containing keystrokes +Return: CF clear if successful + CF set on error (i.e. buffer full) + CX = number of keystrokes NOT transferred + ES:SI -> first keystroke not transferred +Note: this function was normally unsupported under K3PLUS v6.00-v6.22 and + is no longer supported by v6.30+; use AX=AF25h instead +SeeAlso: AH=05h,AH=20h"K3",AX=AF25h,INT 2F/AX=D44Fh/BX=0001h +--------b-1626------------------------------------ +INT 16 - HUNTER 16 - CONTROL KEYCLICK + AH = 26h + AL = new state of keyclicks (00h disabled, 01h enabled) +Return: AL = 00h +SeeAlso: AH=2Ah +--------b-1627------------------------------------ +INT 16 - HUNTER 16 - CONTROL SCREEN DUMP AREA + AH = 27h + AL = what to dump + 00h whole (virtual) window + 01h LCD window only +Return: AL = 00h +Desc: control whether printscren dumps the whole 80x25 screen or only the + part displayed in the LCD window +Note: the Hunter 16 has a 240x64 LCD display which serves as a window into + a 640x200 virtual screen +--------b-1629------------------------------------ +INT 16 - HUNTER 16 - GET KEY REPEAT + AH = 29h +Return: BL = Typematic rate (characters per second) (see #00592) + BH = delay (00h = 250ms, 01h = 500ms, 02h = 750ms, 03h = 1s) +SeeAlso: AH=03h,AH=2Ah + +(Table 00592) +Values for HUNTER 16 Typematic rate: + 00h 30.0 08h 15.0 10h 7.5 18h 3.7 + 01h 26.7 09h 13.3 11h 6.7 19h 3.3 + 02h 24.0 0Ah 12.0 12h 6.0 1Ah 3.0 + 03h 21.8 0Bh 10.9 13h 5.5 1Bh 2.7 + 04h 20.0 0Ch 10.0 14h 5.0 1Ch 2.5 + 05h 18.5 0Dh 9.2 15h 4.6 1Dh 2.3 + 06h 17.1 0Eh 8.6 16h 4.3 1Eh 2.1 + 07h 16.0 0Fh 8.0 17h 4.0 1Fh 2.0 +SeeAlso: AH=2Ah +--------b-162A------------------------------------ +INT 16 - HUNTER 16 - CONTROL KEY REPEAT + AH = 2Ah + AL = new state of keyboard autorepeat (00h disabled, 01h enabled) +SeeAlso: AH=03h,AH=26h,AH=29h,AH=2Bh +--------b-162B------------------------------------ +INT 16 - HUNTER 16 - REDEFINE KEY SCAN CODES + AH = 2Bh + AL = which key table to redefine + 00h unshifted + 01h shifted + 02h Numlock + BH = standard scan code of key (00h-80h) + BL = new scan code +Desc: redefine the generated scan code from BH to BL +SeeAlso: AH=24h,AH=2Ah,AH=2Ch +--------b-162C------------------------------------ +INT 16 - HUNTER 16 - REDEFINE RAW KEY CODES + AH = 2Ch + AL = Matrix code of key (see AH=29h) + BL = new key code +Return: AL = status (00h success, nonzero failed) +Desc: redefine the key code generated by holding the PAW key down and + pressing the key in AL +SeeAlso: AH=24h,AH=2Bh +--------b-162D------------------------------------ +INT 16 - HUNTER 16 - CONTROL BREAK KEYS + AH = 2Dh + AL = enabled break keys + bit 0 Ctrl-C + bit 1 Ctrl-Break + BX = 0708h + CX = 0910h + DX = 1112h +Return: AL = status (00h success, FFh failed) +SeeAlso: AH=21h"HUNTER" +--------U-163577----------------------------- +INT 16 U - TextWare TWTSR - API + AX = 3577h + CX = function + 00CBh ??? + Return: AX = 0000h + BX = 0000h + DX:CX -> ??? + 00CCh uninstall + Return: AX = status + 0000h successful + FFFDh unable to unload because vectors taken + 00CDh ??? + Return: AX = 0000h + BX = 0000h + DX:CX -> ??? + other + Return: AX = 5345h ('SE') +Program: TWTSR is a TSR which allows the TextWare hypertext browser to be + popped up via hotkey +SeeAlso: AX=D724h +--------U-164252----------------------------- +INT 16 - TEXTCAP 2.0 - INSTALLATION CHECK + AX = 4252h +Return: AX = 5242h if installed +Program: TEXTCAP 2.0 is a heavily modified (by Gisbert W. Selke) version of + the PC Magazine utility CAPTURE written by Tom Kihlken +SeeAlso: AX=4253h,AX=4254h +--------U-164253----------------------------- +INT 16 - TEXTCAP 2.0 - UNINSTALL + AX = 4253h +Return: AX = segment of resident code +Notes: the uninstall code does not check whether interrupt vectors have been + chained by other programs + the caller must free the main memory block (using the returned segment) +SeeAlso: AX=4252h,AX=4254h +--------U-164254----------------------------- +INT 16 - TEXTCAP 2.0 - DUMP TEXT SCREEN TO FILE + AX = 4254h +Return: AX = status + 4254h if screen dump will be written as soon as disk becomes idle + 5442h if screen dump written +SeeAlso: AX=4252h,AX=4253h +--------e-164500----------------------------- +INT 16 - Shamrock Software EMAIL - GET STATUS + AX = 4500h + DL = port number (01h = COM1) + ES:BX -> 13-byte buffer for ASCIZ name +Return: AX = 4D00h if EMAIL installed on specified port + ES:BX -> "" if no connection + -> "*" if connection but caller has not identified name + -> name otherwise + CX = version (CH = major, CL = minor) + DL = privilege level of user (00h = guest) + DH = chosen language (00h German, 01h English) +SeeAlso: AX=4501h,AX=4502h +--------e-164501----------------------------- +INT 16 - Shamrock Software EMAIL - GET ELAPSED ONLINE TIME AND MAXIMUM TIME + AX = 4501h + DL = port number (01h = COM1) +Return: AX = 4D00h if EMAIL installed on specified port + BX = maximum connect time in clock ticks + CX = maximum connect time for guests (without name) in clock ticks + DX = elapsed connect time of current user in clock ticks +SeeAlso: AX=4500h +--------e-164502----------------------------- +INT 16 - Shamrock Software EMAIL - GET CURRENT COMMUNICATIONS PARAMETERS + AX = 4502h + DL = port number (01h = COM1) +Return: AX = 4D00h if EMAIL installed on specified port + BL = current value of serial port's Line Control Register + BH = flags (see #00593) + CX = selected country code (33 = France, 49 = Germany, etc) + DX = baudrate divisor (115200/DX = baudrate) +SeeAlso: AX=4500h + +Bitfields for Shamrock Software EMAIL flags: +Bit(s) Description (Table 00593) + 0 ISO code + 1 pause + 2 linefeed + 3 ANSI sequences +--------e-164503----------------------------- +INT 16 - Shamrock Software EMAIL - SPECIFY COMMAND-WORD FOR USER FUNCTION + AX = 4503h + DL = port number (01h = COM1) + DH = maximum execution time in clock ticks (00h = 5 seconds) + ES:BX -> ASCIZ string with new user command-word +Return: AX = 4D00h if EMAIL installed on specified port +Notes: a single user command (consisting of only uppercase letters and digits) + may be defined, and remains valid until it is overwritten or the + EMAIL program terminates; the user command must be activated by + calling AX=4504h at least once. + an existing command word may be redefined with this function +SeeAlso: AX=4504h,AX=4505h +--------e-164504----------------------------- +INT 16 - Shamrock Software EMAIL - CHECK FOR USER FUNCTION COMMAND-WORD + AX = 4504h + DL = port number (01h = COM1) + ES:BX -> 80-byte buffer for ASCIZ user input line +Return: AX = 4D00h if EMAIL installed on specified port + DL = flags + bit 0: user function supported (always set) + bit 1: user entered user-function command word + if DL bit 1 set, + ES:BX buffer contains line entered by user which begins with + the defined command word and has been converted to all + caps +Note: caller must process the returned commandline and invoke AX=4505h + within five seconds with the result of that processing +SeeAlso: AX=4503h,AX=4505h +--------e-164505----------------------------- +INT 16 - Shamrock Software EMAIL - SEND RESULT OF USER FUNCTION + AX = 4505h + DL = port number (01h = COM1) + DH = error flag + bit 3: set on error + ES:BX -> ASCIZ text to return to user, max 1024 bytes +Return: AH = 4Dh if EMAIL installed on specified port + AL = status + 00h successful + 02h unable to perform function (timeout, prev call not complete) + other error +Notes: if the error flag in DH is set, the string is not sent and an error + message is generated instead; if this function is not called within + five seconds of AX=4504h, EMAIL automatically generates an error + message + the string is copied into an internal buffer, allowing this function's + caller to continue immediately +SeeAlso: AX=4503h,AX=4504h,INT 17/AX=2400h +--------e-164506----------------------------- +INT 16 - Shamrock Software EMAIL - MONITOR XMODEM DOWNLOAD + AX = 4506h + DL = port number (01h = COM1) + ES:BX -> 13-byte buffer for ASCIZ filename +Return: AX = 4D00h if EMAIL installed on specified port + DH = Xmodem status + 00h no XGET command given + 01h XGET in progress + 02h XGET completed successfully + ES:BX buffer filled with last filename given to XGET command + (without path) +Note: DH=02h will only be returned once per XGET; subsequent calls will + return DH=00h +SeeAlso: AX=4500h,INT 17/AX=2408h +--------K-164B------------------------------- +INT 16 - Frank Klemm Keyboard Driver v2.0 - API + AH = 4Bh + CX = code or action + 0000h-FEFFh key code + FF00h-FFFFh action (see #00594) + BL = scan code (normal keys) or scan code + 60h (enhanced keys) + BH = shift state (see #00595) +Return: CX = previous code or action + +(Table 00594) +Values for Frank Klemm Keyboard Driver action code: + FF00h no action + FF01h hardcopy + FF02h left shift + FF03h right shift + FF04h left Ctrl + FF05h right Ctrl + FF06h left Alt + FF07h right Alt / AltGr + FF08h CapsLock + FF09h NumLock + FF0Ah ScrlLock + FF0Bh Insert (returns code 5200h or 52E0h) + FF0Ch Pause + FF0Dh Ctrl-Break function + FF0Eh warm boot via far jump to F000h:FFF0h + FF0Fh terminate current program + FF10h key for entering keys via Alt-numpad (read-only) + FF11h clear keyboard buffer + FF12h reset (warmboot on XT) + FF13h mouse sensitivity (read-only) + FF14h keyjobs (read-only) + FF15h SysRq + FF16h turn on CPU cache (486+) + FF17h turn off CPU cache (486+) +SeeAlso: #00595 + +(Table 00595) +Values for Frank Klemm Keyboard Driver shift state: + 00h no shift keys + 01h either Shift + 02h either Ctrl + 03h left Alt + 04h Ctrl + Alt +---standard keyboard--- + 05h right Alt / AltGr +---Russian keyboard--- + 05h Russian + no shift keys + 06h Russian + either Shift +SeeAlso: #00594 +--------K-164D4F----------------------------- +INT 16 - M16_KBD.COM v5.6 - INSTALLATION CHECK + AX = 4D4Fh +Return: AX = 6F6Dh if installed + ES = segment of resident code +Program: M16_KBD is a shareware Cyrillic keyboard driver by I.V. Morozov +SeeAlso: INT 10/AX=1130h/BX=4D4Fh +--------J-165000----------------------------- +INT 16 - KEYBOARD - AX PC - SET KEYBOARD COUNTRY CODE + AX = 5000h + BX = country code + 0001h USA (English), 0051h Japan +Return: AL = status + 00h successful + 01h bad country code + 02h other error +Notes: This function is called with BX=0051h by Japanese versions of + MS-DOS/PC DOS/DR DOS IO.SYS/IBMBIO.COM at initialization time. + the K3PLUS v6.00+ INT 16 BIOS replacement will switch between the + supported country specific layout (e.g. BX=0031h Germany, BX=001Fh + Netherlands, BX=0020h Belgium, BX=0022h Spain) (as with + + +) and K3PLUS' transparent mode (as with ++). + In transparent mode (BX=0001h), K3PLUS chains to the underlying + driver (normally the BIOS driver with US-layout). K3PLUS beeps on + mode changes +SeeAlso: AX=5001h,AX=AF4Dh,INT 10/AX=5000h,INT 17/AX=5000h +--------J-165001----------------------------- +INT 16 - KEYBOARD - AX PC - GET KEYBOARD COUNTRY CODE + AX = 5001h +Return: AL = status + 00h successful + BX = country code + 02h error +Note: also supported by K3PLUS v6.00+ +SeeAlso: AX=5000h,INT 10/AX=5001h,INT 17/AX=5001h +--------J-1651------------------------------- +INT 16 - KEYBOARD - AX PC - READ SHIFT KEY STATUS + AH = 51h +Return: AL = standard shift key states (see #00582,#00587) + AH = Kana lock (00h off, 01h on) +Note: also supported by K3PLUS v6.00+, but K3PLUS always returns AH=00h +SeeAlso: AH=02h,AH=12h,AH=22h +--------t-165453BX5242----------------------- +INT 16 - TSRBONES - INSTALLATION CHECK + AX = 5453h ('TS') + BX = 5242h ('RB') + CX = 4F4Eh ('ON') + DX = 4553h ('ES') +Return: AX = 4553h if installed + BX = 4F4Eh if installed + CX = 5242h if installed + DX = 5453h if installed +Program: TSRBONES is a skeletal TSR framework by Robert Curtis Davis +Note: these values are the default as the TSRBONES package is distributed, + but will normally be changed when implementing an actual TSR with + the TSRBONES skeleton +SeeAlso: INT 2D/AL=00h"AMIS" +--------K-165472BX4C54----------------------- +INT 16 - TrLit - API + AX = 5472h ('Tr') + BX = 4C54h ('Lt') + CL = function + 00h installation check + Return: DX = 1234h if installed + AX = 100*version (binary, 00E9h = v2.33) + CX = resident code segment + 01h get original INT 09 vector + Return: ES:BX -> previous handler + 02h get original INT 16 vector + Return: ES:BX -> previous handler + else chained + CH = 00h (for backward compatibility with versions before 2.30) +Program: TrLit is a Russian keyboard transliterator by Rostislav Krasny +Index: installation check;TrLit +--------A-165500----------------------------- +INT 16 C - Microsoft Word internal - MICROSOFT WORD COOPERATION WITH TSR + AX = 5500h +Return: AX = 4D53h ('MS') if keyboard TSR present +Notes: during startup, Microsoft Word tries to communicate with any TSRs + that are present through this call. + if the return is not 4D53h, Word installs its own INT 09 and INT 16 + handlers; otherwise it assumes that the TSR will handle the keyboard +SeeAlso: AX=55FFh,INT 1A/AX=3601h +--------A-1655FE----------------------------- +INT 16 CU - Microsoft QBASIC internal - MICROSOFT COOPERATION WITH TSR + AX = 55FEh + DX = function + 0000h initialize + ES:BX -> ??? function + ES:CX -> ??? structure + FFFFh shutdown/reset +Return: AX = result + 4D4Bh only the INT 1B handler will be installed. + other: handlers for INT 08, INT 09, INT 16, INT 1B, and INT 1C + are installed +Notes: The pointer in ES:CX seems to point at a structure defining a callback + function when new keyboard keys are pressed. If a TSR returns + AX=4D4Bh, QBASIC will stop (with IRQ's and interrupts enabled). + these calls are also made by MS-DOS 6.0's DOSSHELL at startup, exit, + and before/after shelling out + since EDIT.COM and HELP.COM merely invoke QBASIC, those two programs + will also cause this interface to be invoked + K3PLUS v6.07+ supports this function, but will never invoke the + callback function +SeeAlso: AX=5500h,AX=AF4Dh,INT 1A/AX=3601h +--------U-1655FF----------------------------- +INT 16 C - Microsoft Word - TSR COOPERATION??? + AX = 55FFh + BX >= 0004h (version of Microsoft Word [BL = major] ???) + CX = function + 0000h set ??? flag + other clear ??? flag +Notes: hooks intercepting this call are present in SWAPSH and SWAPDT v1.77j, + distributed with PC Tools v7, as well as the Trusted Access + SCRNBLNK.COM; this may be part of the standard TesSeRact library + known to be called by the German edition of Microsoft Word 5.0 +SeeAlso: AX=5500h,INT 2F/AX=5453h +--------c-165758BX4858----------------------- +INT 16 U - Netroom CACHECLK - INSTALLATION CHECK + AX = 5758h + BX = 4858h ('HX') + DX = 4443h ('DC') + CX <> 5758h +Return: BX = 6878h if installed + CX = 6463h if installed + AX = code segment of TSR + CX = internal version??? (v3.00 returns 0100h) +Program: CACHECLK is a "cloaked" disk cache included with Netroom +Notes: if CX=5758h on entry, CACHECLK returns with all registers unchanged + the cache statistics are located early in the segment pointed at by + AX on return +SeeAlso: INT 2F/AX=5758h +--------m-165758BX5754----------------------- +INT 16 U - Netroom ??? - ??? + AX = 5758h + BX = 5754h + ??? +Return: ??? +--------m-165758BX5755----------------------- +INT 16 U - Netroom ??? - ??? + AX = 5758h + BX = 5755h + DS:SI -> ??? +Return: ??? +--------m-165758BX5756----------------------- +INT 16 U - Netroom ??? - INSTALLATION CHECK + AX = 5758h + BX = 5756h +Return: BX <> 5756h if installed +--------m-165758BX5858----------------------- +INT 16 U - Netroom PRENET - GET OLD INTERRUPT VECTORS + AX = 5758h + BX = 5858h +Return: CF clear + DX:BX -> saved copy of interrupt vector table +InstallCheck: call this function and compare BX against 5858h on return; if + it has changed, PRENET is installed +SeeAlso: AX=5758h/BX=5859h +Index: installation check;Netroom PRENET +--------m-165758BX5859----------------------- +INT 16 U - Netroom POSTNET - GET OLD INTERRUPT VECTORS + AX = 5758h + BX = 5859h +Return: CF clear + DX:BX -> saved copy of interrupt vector table +InstallCheck: call this function and compare BX against 5859h on return; if + it has changed, POSTNET is installed +SeeAlso: AX=5758h/BX=5858h +Index: installation check;Netroom POSTNET +----------1667------------------------------- +INT 16 - Doorway v2.x+ - INSTALLATION CHECK / REDIRECTION CONTROLa + AH = 67h + AL = Doorway mode + 00h turn off DOS redirection + 01h turn on DOS redirection +Return: AH = 80h if Doorway is actively redirecting output + AL = 80h if Doorway was already in requested mode +Program: Doorway is a program by Marshall Dudley which allows most DOS programs + to run as a BBS door without modification +Note: to perform an installation check without changing the redirection + state, if is necessary to restore the original mode if AL was not + 80h on return +SeeAlso: INT 10/AH=BBh"Doorway" +--------U-166969BX6968----------------------- +INT 16 - PC Tools v5.1+ BACKTALK - UNHOOK + AX = 6969h + BX = 6968h +Return: resident code unhooked, but not removed from memory +Index: uninstall;BACKTALK +--------U-166969BX6969----------------------- +INT 16 - PC Tools v5.1+ BACKTALK - INSTALLATION CHECK + AX = 6969h + BX = 6969h + DX = 0000h +Return: DX nonzero if installed + BX = CS of resident code + DX = PSP segment of resident code + DS:SI -> ASCIZ identification string "CPoint Talk" +--------i-166A6B----------------------------- +INT 16 U - FastJuice - DISABLE/UNLOAD??? + AX = 6A6Bh +Return: ??? +Program: FastJuice is a resident battery-power monitor by SeaSide Software +SeeAlso: AX=7463h +Index: uninstall;FastJuice +--------G-166C63----------------------------- +INT 16 U - TMED v1.6a - INSTALLATION CHECK + AX = 6C63h ('lc') +Return: AX = 4C43h ('LC') if installed +Program: TMED is a freeware resident memory editor by Liang Chen +--------U-166D74----------------------------- +INT 16 - MTRTSR - INSTALLATION CHECK + AX = 6D74h ('mt') +Return: AX = 4D54h ('MT') if installed +Program: MTRTSR is a part of the shareware MTR package by Mechon Mamre which + permits searching the large corpus of classical Hebrew texts in the + package +SeeAlso: INT 10/AX=6D74h"MTRFONTS" +--------b-166F00----------------------------- +INT 16 - HP Vectra EX-BIOS - "F16_INQUIRE" - Extended BIOS INSTALLATION CHECK + AX = 6F00h + BX <> 4850h (usually set to 0000h for simplicity) +Return: BX = 4850h ("HP") if present +Notes: called by recent MS Mouse drivers looking for an HP-HIL mouse + supported by the original HP Vectra AT and ES/QS/RS series HP Vectras +SeeAlso: AX=6F01h,AX=6F04h,AX=6F07h,AX=6F09h,AX=6F0Dh,AX=6F11h,AX=6F12h +SeeAlso: INT 14/AX=6F00h,INT 17/AX=6F00h,INT 33/AX=6F00h +SeeAlso: INT 6F/AH=00h"HP Vectra" +--------b-166F01----------------------------- +INT 16 - HP Vectra EX-BIOS - "F16_DEF_ATTR" - GET DEFAULT TYPEMATIC VALUES + AX = 6F01h +Return: AH = 00h (successful) + CX = 0004h (size of returned buffer) + ES:SI -> buffer for typematic info (see #00596) +Note: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras +SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h,AX=6F04h + +Format of HP Vectra EX-BIOS typematic info: +Offset Size Description (Table 00596) + 00h BYTE delay before repeat for all non-Cursor Control Pad keys + (see #00597) + 01h BYTE typematic rate for all non-Cursor Control Pad keys (see #00598) + 02h BYTE delay before repeat for Cursor Control Pad keys (see #00599) + 03h BYTE typematic rate for Cursor Control Pad keys (see #00598) + +(Table 00597) +Values for HP Vectra EX-BIOS non-CCP delay time: + 00h 17 ms + 01h 150 ms + 02h 283 ms + 03h 417 ms + 04h 550 ms + 05h 683 ms + 06h 817 ms + 07h 950 ms + 08h 1083 ms + 09h 1217 ms + 0Ah 1350 ms + 0Bh 1483 ms + 0Ch 1617 ms + 0Dh 1750 ms + 0Eh 1883 ms + 0Fh 2017 ms +Note: the above values assume that the key repeat rate has been set to 60 Hz; + double the times if set to 30 Hz +SeeAlso: #00596,#00598,#00599 + +(Table 00598) +Values for HP Vectra EX-BIOS typematic rate: + 00h 60 / sec + 01h 30 / sec + 02h 20 + 03h 15 + 04h 12 + 05h 10 + 06h 8.57 + 07h 7.5 + 08h 6.66 + 09h 6 / sec + 0Ah 5.45 + 0Bh 5 + 0Ch 4.62 + 0Dh 4.28 + 0Eh 4 / sec + 0Fh typematic disabled +Note: the above values assume that the key repeat rate has been set to 60 Hz; + halve the rates if set to 30 Hz +SeeAlso: #00597,#00599 + +(Table 00599) +Values for HP Vectra EX-BIOS CCP delay time: + 00h 17 ms + 01h 83 ms + 02h 150 ms + 03h 217 ms + 04h 283 ms + 05h 350 ms + 06h 417 ms + 07h 483 ms + 08h 550 ms + 09h 617 ms + 0Ah 683 ms + 0Bh 750 ms + 0Ch 817 ms + 0Dh 883 ms + 0Eh 950 ms + 0Fh 1017 ms +Note: the above values assume that the key repeat rate has been set to 60 Hz; + double the times if set to 30 Hz +SeeAlso: #00597,#00598 +--------b-166F02----------------------------- +INT 16 - HP Vectra EX-BIOS - "F16_GET_ATTR" - GET CURRENT TYPEMATIC VALUES + AX = 6F02h +Return: AH = 00h (successful) + CX = 0004h (size of returned buffer) + ES:SI -> buffer for typematic info (see #00596) +Note: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras +SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h,AX=6F04h +SeeAlso: AX=6F00h,AX=6F01h,AX=6F03h +--------b-166F03----------------------------- +INT 16 - HP Vectra EX-BIOS - "F16_SET_ATTR" - SET TYPEMATIC VALUES + AX = 6F03h + ES:SI -> buffer containing typematic info (see #00596) +Return: AH = 00h (successful) +Note: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras +SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h,AX=6F04h +SeeAlso: AX=6F00h,AX=6F01h,AX=6F02h +--------b-166F04----------------------------- +INT 16 - HP Vectra EX-BIOS - "F16_DEF_MAPPING" - GET DEFAULT KEY MAPPINGS + AX = 6F04h + ES:SI -> mapping buffer (see #00600) +Return: AH = 00h (successful) + CX = 001Eh (number of bytes in buffer) + ES:SI buffer filled +Notes: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras + the HIL input system translates the HIL keyboard events to simulate + an IBM-compatible keyboard; the translation can be altered + dynamically by applications +SeeAlso: AX=6F00h,AX=6F05h,AX=6F06h + +Format of HP Vectra EX-BIOS keyboard mapping info: +Offset Size Description (Table 00600) + 00h 3 WORDs entry for V_QWERTY driver (IP, CS, DS) + 06h 3 WORDs entry for V_SOFTKEY driver (IP, CS, DS) + 0Ch 3 WORDs entry for V_FUNCTION driver + 12h 3 WORDs entry for V_NUMPAD driver + 18h 3 WORDs entry for V_CCP driver +--------b-166F05----------------------------- +INT 16 - HP Vectra EX-BIOS - "F16_GET_MAPPING" - GET CURRENT KEY MAPPINGS + AX = 6F05h + ES:SI -> mapping buffer (see #00600) +Return: AH = 00h (successful) + CX = 001Eh (number of bytes in buffer) + ES:SI buffer filled +Note: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras +SeeAlso: AX=6F04h,AX=6F06h +--------b-166F06----------------------------- +INT 16 - HP Vectra EX-BIOS - "F16_SET_MAPPING" - SET KEY MAPPINGS + AX = 6F06h + CX = number of bytes in buffer (001Eh) + ES:SI -> mapping buffer (see #00600) +Return: AH = 00h (successful) +Notes: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras + any application which modifies the key mappings should restore them + before terminating + drivers installed with this function are assured of 32 bytes of stack + space when they are invoked +SeeAlso: AX=6F04h,AX=6F05h,AX=6F07h +--------b-166F07----------------------------- +INT 16 - HP Vectra EX-BIOS - "F16_SET_XLATORS" - SET CCP AND SOFTKEY PADS + AX = 6F07h + BL = translation to set (see #00601) +Return: AH = 00h (successful) +Notes: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras + this function may no longer work properly if the application has + modified the key mappings with AX=6F06h +SeeAlso: AX=6F06h,AX=6F09h + +(Table 00601) +Values for HP Vectra keyboard translation specifier: + 00h map V_CCP to V_CCPCUR, forcing the cursor pad to return cursor keys + 01h map V_CCP to V_CCPNUM, forcing the cursor pad to always return numbers + 02h map V_CCP to V_OFF, disabling the cursor pad + 03h map V_CCP to V_CCPGID, converting cursor pad keys to GID data + 04h map V_CCP to V_RAW, passing cursor pad data untranslated to INT 09 + 05h map V_SOFTKEY to V_SKEY2KFEY, translating into standard function keys + 06h map V_SOFTKEY to V_RAW, passing Softkey scancodes direct to INT 09 + 07h map V_SOFTKEY to V_OFF, disabling HP Softkeys +SeeAlso: #00602 + +(Table 00602) +Values for HP Vectra scancodes and BIOS keycodes for V_RAW translator: + INT 09 INT 16 keycode + Key scan code Default Shifted Ctrl Alt + * (NumPd) 37h 2Ah (Prt Sc) 00/72h 00/37H + Sysreq 54h -- -- -- -- + CCP-Up 60h 00/D9h 00/BFh 00/A5h 00/8BH + CCP-Left 61h 00/DAh 00/C0h 00/A6h 00/8CH + CCP-Down 62h 00/DBh 00/C1h 00/A7h 00/8DH + CCP-Right 63h 00/DCh 00/C2h 00/A8h 00/8EH + CCP-Home 64h 00/DDh 00/C3h 00/A9h 00/8FH + CCP-PgUp 65h 00/DEh 00/C4h 00/AAh 00/90H + CCP-End 66h 00/DFh 00/C5h 00/ABh 00/91H + CCP-PgDn 67h 00/E0h 00/C6h 00/ACh 00/92H + CCP-Ins 68h 00/E1h 00/C7h 00/ADh 00/93H + CCP-Del 69h 00/E2h 00/C8h 00/AEh 00/94H + CCP-CNTR 6Ah 00/E3h 00/C9h 00/AFh 00/95H + f1 70h 00/E9h 00/CFh 00/B5h 00/9BH + f2 71h 00/EAh 00/D0h 00/B6h 00/9CH + f3 72h 00/EBh 00/D1h 00/B7h 00/9DH + f4 73h 00/ECh 00/D2h 00/B8h 00/9EH + f5 74h 00/EDh 00/D3h 00/B9h 00/9FH + f6 75h 00/EEh 00/D4h 00/BAh 00/A0H + f7 76h 00/EFh 00/D5h 00/BBh 00/A1H + f8 77h 00/F0h 00/D6h 00/BCh 00/A2H +Note: only HP-specific codes are listed in this table; see INT 09 for a full + list of standard scan codes +SeeAlso: #00006,#00601 +--------b-166F08----------------------------- +INT 16 - HP Vectra EX-BIOS - "F16_KBD" - GET KEYBOARD INFORMATION + AX = 6F08h +Return: AH = status + 00h successful + 02h unsupported (non-HIL, i.e. standard, keyboard) + BH = HP-HIL address (HP Vectra AT only???) + BL = HP-HIL ID (HP Vectra AT only???) + BL = keyboard language (ES/QS/RS only???) (see #00603) +Notes: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras + the driver's address in the HP_VECTOR_TABLE (see INT 6F/AH=00h) may + be computed as (BH-1)*6 + N, where N is the address of the first + HP-HIL device driver (see INT 6F/AH=0Ah"F_INQUIRE_FIRST") +SeeAlso: AX=6F05h,AX=6F09h,INT 6F/AH=0Ah"F_INQUIRE_FIRST" + +(Table 00603) +Values for HP HIL keyboard language code: + 00h reserved + 01h Arabic-French + 02h Kanji + 03h Swiss-French + 04h Portugese + 05h Arabic + 06h Hebrew + 07h Canadian-English + 08h Turkish + 09h Greek + 0Ah Thai + 0Bh Italian + 0Ch Hangul (Korean) + 0Dh Dutch + 0Eh Swedish + 0Fh German + 10h Chinese (PRC) + 11h Chinese (Taiwan) + 12h Swiss (French ii) + 13h Spanish + 14h Swiss (German ii) + 15h Belgian (Flemish) + 16h Finnish + 17h United Kingdom + 18h French-Canadian + 19h French-German + 1Ah Norwegian + 1Bh French + 1Ch Danish + 1Dh Katakana + 1Eh Latin American Spanish + 1Fh United States-American + 20h-FEh reserved + FFh non-HP keyboard (IBM AT keyboard and IBM Enhanced keyboard) +--------b-166F09----------------------------- +INT 16 - HP Vectra EX-BIOS - "F16_KBD_RESET" - RESET KEYBOARD TO DEFAULTS + AX = 6F09h +Return: AH = 00h (successful) +Desc: reset all keyboard mappings to their default translators, and reset + typematic values to their defaults +Note: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras +SeeAlso: AX=6F04h,AX=6F07h,AX=6F08h +--------b-166F0A----------------------------- +INT 16 - HP Vectra ES/QS/RS EX-BIOS - READ PROCESSOR SPEED + AX = 6F0Ah +Return: AH = 00h (successful) + BX = speed code + 0Bh for low speed (see #00604) + 12h for medium speed (see #00604) + 0Ch for high speed (see #00604) +Note: supported by ES, QS, and RS series of HP Vectras +SeeAlso: AX=6F00h + +(Table 00604) +Values for HP Vetra CPU speed: + Vectra Low Medium High + ES 8 MHz - 8 MHz + ES/12 8 MHz - 12 MHz + QS/16, RS/16 8 MHz - 16 MHz + QS/16S 8 MHz - 16 MHz + QS/20, RS/20 8 MHz - 20 MHz + RS/20C 5 MHz 10 MHz 20 MHz + RS/25C 5 MHz 12.5 MHz 25 MHz +--------b-166F0B----------------------------- +INT 16 - HP Vectra ES/QS/RS EX-BIOS - SET PROCESSOR SPEED TO LOW + AX = 6F0Bh +Return: AH = 00h (successful) +Notes: see AX=6F0Ah for speed definitions + supported by ES, QS, and RS series of HP Vectras +SeeAlso: AX=6F00h,AX=6F0Ah +--------b-166F0C----------------------------- +INT 16 - HP Vectra ES/QS/RS EX-BIOS - SET PROCESSOR SPEED TO HIGH + AX = 6F0Ch +Return: AH = 00h (successful) +Notes: see AX=6F0Ah for speed definitions + supported by ES, QS, and RS series of HP Vectras +SeeAlso: AX=6F00h,AX=6F0Ah +--------b-166F0D----------------------------- +INT 16 - HP Vectra ES/QS/RS EX-BIOS - GET HIL Extended BIOS INTERRUPT NUMBER + AX = 6F0Dh +Return: AH = interrupt number (default 6Fh, 02h means 6Fh as well) +Notes: supported by ES, QS, and RS series of HP Vectras + called by MS Windows HPSYSTEM.DRV and HPEBIOS.386 to support the HP-HIL + input system +SeeAlso: AX=6F00h,AX=6F0Eh,INT 6F/AH=00h"HP Vectra",INT 6F/AH=0Ah"HP" +--------b-166F0E----------------------------- +INT 16 - HP Vectra ES/QS/RS EX-BIOS - SET HIL Extended BIOS INTERRUPT NUMBER + AX = 6F0Eh + BL = new interrupt number (60h-6Fh,78h-7Fh) +Return: AH = status (00h = successful) +Desc: allows the HIL Extended BIOS software to use a non-default interrupt + number in case of an interrupt conflict with another application +Notes: supported by ES, QS, and RS series of HP Vectras + called by MS Windows HPSYSTEM.DRV and HPEBIOS.386 to support the HP-HIL + input system +SeeAlso: AX=6F00h,AX=6F0Dh,INT 6F/AH=00h"HP",INT 6F/AH=0Ah"HP" +--------b-166F0F----------------------------- +INT 16 - HP Vectras RS/20C and RS/25C - ENABLE MEMORY CACHING + AX = 6F0Fh +Return: AH = status + 00h successful + FEh cache subsystem is bad +SeeAlso: AX=6F00h,AX=6F10h,AX=6F11h +--------b-166F10----------------------------- +INT 16 - HP Vectras RS/20C and RS/25C - DISABLE MEMORY CACHING + AX = 6F10h +Return: AH = 00h (successful) +SeeAlso: AX=6F00h,AX=6F0Fh,AX=6F11h +--------b-166F11----------------------------- +INT 16 - HP Vectras RS/20C and RS/25C - GET MEMORY CACHING STATE + AX = 6F11h +Return: AH = 00h (successful) + AL bit 0 = cache state + 0 cache disabled + 1 cache enabled +SeeAlso: AX=6F00h,AX=6F0Fh,AX=6F10h +--------b-166F12----------------------------- +INT 16 - HP Vectras RS/20C and RS/25C - SET PROCESSOR SPEED TO MEDIUM + AX = 6F12h +Return: AH = 00h (successful) +Note: see AX=6F0Ah for speed definitions +SeeAlso: AX=6F00h,AX=6F0Ah +--------K-1670------------------------------- +INT 16 - FAKEY.COM - INSTALLATION CHECK + AH = 70h +Return: AX = 1954h if installed +Program: FAKEY is a keystroke faking utility by System Enhancement Associates +--------K-1671------------------------------- +INT 16 - FAKEY.COM - PUSH KEYSTROKES + AH = 71h + CX = number of keystrokes + DS:SI -> array of words containing keystrokes to be returned by AH=00h +Program: FAKEY is a keystroke faking utility by System Enhancement Associates +SeeAlso: AH=05h,AH=72h +--------K-1672------------------------------- +INT 16 - FAKEY.COM - CLEAR FAKED KEYSTROKES + AH = 72h +Program: FAKEY is a keystroke faking utility by System Enhancement Associates +SeeAlso: AH=71h +--------K-1673------------------------------- +INT 16 - FAKEY.COM - PLAY TONES + AH = 73h + CX = number of tones to play + DS:SI -> array of tones (see #00605) +Program: FAKEY is a keystroke faking utility by System Enhancement Associates +SeeAlso: INT 15/AX=1019h + +Format of FAKEY.COM tone array entries: +Offset Size Description (Table 00605) + 00h WORD divisor for timer channel 2 + 02h WORD duration in clock ticks +--------i-167463----------------------------- +INT 16 U - FastJuice - INSTALLATION CHECK + AX = 7463h ("tc") +Return: AX = 5443h ("TC") if installed +Program: FastJuice is a resident battery-power monitor by SeaSide Software +SeeAlso: AX=6A6Bh +--------R-1675------------------------------- +INT 16 - pcANYWHERE III - SET TICK COUNT FOR SCANNING + AH = 75h + AL = number of ticks between checks for new screen changes +--------R-1676------------------------------- +INT 16 - pcANYWHERE III - SET ERROR CHECKING TYPE + AH = 76h + AL = error checking type + 00h none + 01h fast + 02h slow +--------R-1677------------------------------- +INT 16 - pcANYWHERE III - LOG OFF + AH = 77h + AL = mode + 00h wait for another call + 01h leave in Memory Resident Mode + 02h leave in Automatic Mode + FFh leave in current operating mode +--------U-167761----------------------------- +INT 16 - WATCH.COM v2.x-v3.0 - INSTALLATION CHECK + AX = 7761h ('wa') +Return: AX = 5741h ('WA') if installed +Note: WATCH.COM is part of the "TSR" package by Kim Kokkonen +SeeAlso: INT 21/AX=7761h +--------U-167788BX7789----------------------- +INT 16 - PC Magazine PUSHDIR.COM - INSTALLATION CHECK + AX = 7788h + BX = 7789h + DS:SI -> signature "PUSHDIR VERSION 1.0" +Return: AX = 7789h if installed and signature correct + BX = 7788h + SI destroyed +--------R-1679------------------------------- +INT 16 - pcANYWHERE III - CHECK STATUS + AH = 79h +Return: AX = status + FFFFh if resident and active + FFFEh if resident but not active + FFFDh if in Memory Resident mode + FFFCh if in Automatic mode + other value if not resident +SeeAlso: AX=7B00h,INT 21/AX=2B44h +--------R-167A------------------------------- +INT 16 - pcANYWHERE III - CANCEL SESSION + AH = 7Ah +--------R-167B00----------------------------- +INT 16 - pcANYWHERE III - SUSPEND + AX = 7B00h +SeeAlso: AH=79h,AX=7B01h +--------R-167B01----------------------------- +INT 16 - pcANYWHERE III - RESUME + AX = 7B01h +SeeAlso: AH=79h,AX=7B00h +--------R-167C------------------------------- +INT 16 - pcANYWHERE III - GET PORT CONFIGURATION + AH = 7Ch +Return: AH = port number + AL = baud rate (see #00606) +SeeAlso: AX=7B00h,AH=7Eh + +(Table 00606) +Values for pcANYWHERE III baud rate: + 00h 50 baud + 01h 75 baud + 02h 110 baud + 03h 134.5 baud + 04h 150 baud + 05h 300 baud + 06h 600 baud + 07h 1200 baud + 08h 1800 baud + 09h 2000 baud + 0Ah 2400 baud + 0Bh 4800 baud + 0Ch 7200 baud + 0Dh 9600 baud + 0Eh 19200 baud +SeeAlso: #00309 +--------R-167D------------------------------- +INT 16 - pcANYWHERE III - GET/SET TERMINAL PARAMETERS + AH = 7Dh + AL = subfunction + 00h set terminal parameters + 01h get terminal parameters + 02h get configuration header and terminal parameters + DS:CX -> terminal parameter block +SeeAlso: AH=7Ch,AH=7Eh +--------R-167E------------------------------- +INT 16 - pcANYWHERE III - COMMUNICATIONS I/O THROUGH PORT + AH = 7Eh + AL = subfunction + 01h port input status + Return AX = 0 if no characer ready, + AX = 1 if character ready + 02h port input character + Return AL = received character + 03h port output character in CX + 11h hang up phone +SeeAlso: AH=7Ch +--------R-167F------------------------------- +INT 16 - pcANYWHERE III - SET KEYBOARD/SCREEN MODE + AH = 7Fh + AL = subfunction + 00h enable remote keyboard only + 01h enable host keyboard only + 02h enable both keyboards + 08h display top 24 lines + 09h display bottom 24 lines + 10h Hayes modem + 11h other modem + 12h direct connect +--------U-1680------------------------------- +INT 16 - MAKEY.COM - INSTALLATION CHECK + AH = 80h +Return: AX = 1954h if installed +Program: MAKEY is a utility by System Enhancement Associates +--------K-1687------------------------------- +INT 16 - DK.COM v1.03 - INSTALLATION CHECK + AH = 87h +Return: AX = 4A57h ('JW') if installed +Program: DK.COM is the resident part of a small keyboard macro utility + by Digital Mechanics. +--------U-168765BX4321----------------------- +INT 16 - AT.COM version 8/26/87 - API + AX = 8765h + BX = 4321h + CX = ??? or FFFFh + if CX = FFFFh + DX = number of event to remove or FFFFh +Return: ES:BX -> event record array (see #00607) +Program: AT.COM is a resident scheduler by Bill Frolik + +Format of AT.COM event record: +Offset Size Description (Table 00607) + 00h BYTE in-use flag (00h free, 01h in use, FFh end of array) + 01h BYTE day of date on which to trigger + 02h BYTE month of date on which to trigger + 03h BYTE trigger time, minute + 04h BYTE trigger time, hour + 05h WORD offset of command to be executed +--------K-1692------------------------------- +INT 16 - KEYB.COM KEYBOARD CAPABILITIES CHECK (not an actual function!) + AH = 92h +Return: AH <= 80h if enhanced keyboard functions (AH=10h-12h) supported +Desc: this function is called by the DOS 3.2 KEYBxx.COM and DOS 5+ KEYB.COM + to determine the highest supported keyboard function +Note: many BIOSes (including at least some versions of Phoenix and AMI) will + destroy AH on return from functions higher than AH=12h, returning + 12h less than was in AH on entry (due to a chain of DEC/JZ + instructions) +SeeAlso: AH=05h"PCjr",AH=A2h,INT 2F/AX=AD80h +--------U-1699------------------------------- +INT 16 - SCOUT v5.4 - GET ??? + AH = 99h +Return: AX = ABCDh + BX:CX -> ??? (appears to be start of PSP for resident portion) +Program: Scout is a memory-resident file manager by New-Ware +SeeAlso: AH=9Eh +--------U-169E------------------------------- +INT 16 - SCOUT v5.4 - INSTALLATION CHECK + AH = 9Eh +Return: AX = ABCDh if installed +Program: Scout is a memory-resident file manager by New-Ware +SeeAlso: AH=99h +--------K-16A2------------------------------- +INT 16 - KEYB.COM KEYBOARD CAPABILITIES CHECK (not an actual function!) + AH = A2h +Return: AH <= 80h if 122-key keyboard functions (AH=20h-22h) supported +Desc: this function is called by the DOS 3.2 KEYBxx.COM and DOS 5+ KEYB.COM + to determine the highest supported keyboard function +Note: many BIOSes (including at least some versions of Phoenix and AMI) will + destroy AH on return from functions higher than AH=12h, returning + 12h less than was in AH on entry (due to a chain of DEC/JZ + instructions) +SeeAlso: AH=05h"PCjr",AH=92h,INT 2F/AX=AD80h +--------V-16AA------------------------------- +INT 16 - PTxxx.COM - (xxx=CGA,EGA,VGA,HER...) CALL GATE FOR GRAPHICS + AH = AAh + Various registers set up by high level language. +Return: Graphics performed +Note: PT stands for Paint Tools which is a graphics library for Turbo Pascal, + Modula 2 and others from DataBiten in Sweden. The library is + installed as a memory resident driver. +--------U-16AABBBXEEFF----------------------- +INT 16 U - JORJ v4.3 - INSTALLATION CHECK + AX = AABBh + BX = EEFFh +Return: AX = EEFFh if installed + BX = AABBh if installed + CL = hotkey name (default 6Ah 'j' for Alt-J) +Program: JORJ is a shareware dictionary with phonetic lookup by Jorj Software + Co. +Index: hotkeys;JORJ +--------K-16AF20BX4B33----------------------- +INT 16 - K3PLUS v6.00+ (API v2.0+) - GET EXTENDED BUFFER STATE + AX = AF20h + BX = 4B33h ('K3') +Return: AX = K3 version (same as returned in BX by AX=AF4Dh) + ES:BX -> extended keyboard buffer start + ES:DX -> extended keyboard buffer end + ES:SI -> next keystroke + ES:DI -> last keystroke in buffer + CX = number of keystrokes in buffer +Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C. + Frinke, originally based on the K3 extended German keyboard driver + by Martin Gerdes published in c't magazine in 1988 +Note: this function replaces the identical function AH=20h"K3" +SeeAlso: AH=20h"K3",AX=AF25h,AX=AF4Dh,AX=AF50h,INT 2F/AX=ED58h +--------K-16AF25BX4B33----------------------- +INT 16 - K3PLUS v6.00+ (API v2.0+) - COPY INTO EXTENDED BUFFER + AX = AF25h + BX = 4B33h ('K3') + CX = number of keystrokes to copy + ES:SI -> buffer containing keystrokes +Return: CF clear if successful + CF set on error (i.e. buffer full) + CX = number of keystrokes NOT transferred + ES:SI -> first keystroke not transferred +Note: this function replaces the identical function AH=25h"K3" +SeeAlso: AH=25h"K3",AX=AF20h,AX=AF4Dh,AX=AF50h,INT 2F/AX=D44Fh/BX=0001h +--------K-16AF4DBX4B33----------------------- +INT 16 - K3PLUS v6.00+ (API v2.0+) - GET VERSION INFORMATION + AX = AF4Dh + BX = 4B33h ('K3') +Return: AL = 50h if installed + BX = K3 version + DX = API version + ES:CX -> K3 structure (version-dependent) (see #00608) +Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C. + Frinke, originally based on the K3 extended German keyboard driver + by Martin Gerdes published in c't magazine in 1988 +SeeAlso: AX=AF20h,AX=AF50h,AX=AF80h,AX=AF82h/BX=4B33h,INT 2F/AX=D44Fh/BX=0000h +SeeAlso: INT 2F/AX=ED58h +Index: installation check;K3PLUS + +Format of internal K3 structure: +Offset Size Description (Table 00608) + 00h 3 BYTEs signature "K3$" + 03h BYTE length of structure, including this byte and signature + 04h WORD compiler switch option flags A (see #00609) + 06h WORD compiler switch option flags B (see #00610) + 08h BYTE internal flags A (see #00611) + 09h BYTE internal flags B (see #00612) + 0Ah WORD DOS version recorded at startup + 0Ch WORD "ActTypeSpeed" + 0Eh WORD last Keyboard-ID sent + 41ABh translated, 83ABh native (pass-through) + 10h WORD offset of K3TAB Special + 12h WORD offset of K3TAB German + 14h WORD offset of K3TAB Alt + 16h WORD offset of K3TAB AltGr + 18h WORD offset of K3TAB Ctrl + 1Ah WORD offset of K3TAB NPad + 1Ch WORD offset of K3TAB CtrlNPad + 1Eh WORD offset of K3TAB AltNPad + 20h WORD offset of K3TAB ApoTbl or 0000h + 22h WORD offset of K3TAB UmlautTbl or 0000h + 24h WORD offset of K3TAB UmlautTblExp or 0000h + 26h WORD length of video mode table + 28h WORD offset of VidMdTbl or 0000h + 2Ah BYTE '$' end marker + +Bitfields for K3PLUS compiler switch option flags A: +Bit(s) Description (Table 00609) + 15 GuINT16Fct2 (general use of INT 16 function 2) + 14 Int15df (INT 15 has to be predefined) + 13 GuAltNP (general use of Alt Numpad) + 12 SupAT (ATs+ supported) + 11 GuINT16Fct3 (general use of INT 16 function 3) + 10 GuINT16Ret (general use of INT16 bad function return) + 9-8 Layout (0-2, 3 reserved; 0=PC, 1=AT, 2=MF) + 7 ForceMF (force MF decode without read-ID) + 6 KXlate (translate keys for special keyboard) + 5 UmlautX (umlaut translation capability included) + 4 ApoX (translate apostrophe) + 3 DoINT16 (INT 16 handler included) + 2 UseCC (CopyCursor included) + 1-0 UseEB + 0=no extended keystroke buffer, 1=reserve mem, 2=use PSP, 3=reserved + +Bitfields for K3 compiler switch option flags B: +Bit(s) Description (Table 00610) + 15-11 reserved (0) + 10 CtrlSeq (Ctrl macro capability included) + 9-8 SupINT16fct55FE + 6 DoInstallCheck (check for double installation) + 5 SupINT16fct5PcJr (INT 16/AH=05h"PCjr" supported) + 4 SendOut (sound and message output supported) + 3 SupInt16fct5500 (INT 16/AX=5500h supported) + 2 GuINT15Fct4F (calls to INT 15/AH=4Fh supported) + 1-0 UseBufferStart (0=use standard area, 1=set standard area, + 2=use internal indexes, 3=reserved) + +Bitfields for K3 internal flags A: +Bit(s) Description (Table 00611) + 7 DoingUmlautExp + 6 CallINT15fct4F + 5 Beep1 (requires SendOut set in option flags B) + 4 ATflag (set for AT, 386, PS/2 Models 50-80) + 3 XTflag (set for PC, PC/XT, Micromint PC, Pencock PC, PS/2 Model 30) + 2 KeyClick + 1 UmlautExp + 0 UmlautTrans + +Bitfields for K3 internal flags B: +Bit(s) Description (Table 00612) + 7-5 reserved + 4 TranslateE0 enabled + 3 Boot enabled + 2 PrintScreen enabled + 1 Break enabled + 0 ApoPendingBeep +--------K-16AF50BX4B33----------------------- +INT 16 - K3PLUS v6.00+ (API v2.0+) - CHECK IF FUNCTION SUPPORTED + AX = AF50h + BX = 4B33h ('K3') + CH = function + 00h get function flags + CL = 00h + Return: CX = supported function flags (see #00613) + nonzero reserved for extensions +SeeAlso: AX=AF20h,AX=AF4Dh,AX=AF51h,AX=AF80h + +Bitfields for K3PLUS supported function list: +Bit(s) Description (Table 00613) + 0 function 4Dh supported + 1 function 50h supported + 2-3 reserved (0) + 4 function 20h supported + 5 function 25h supported + 6 function 51h supported + 7 reserved (0) + 8 function 80h supported + 9 function 81h supported + 10 function 82h supported + 11-15 reserved (0) +--------K-16AF51BX4B33----------------------- +INT 16 - K3PLUS v6.00+ (API v2.00+) - SET OPTIONS + AX = AF51h + BX = 4B33h ('K3') + CX = switches +Return: AL = status + 00h done + CX = previous switch settings + 01h switch not supported + FFh other error +SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h +--------K-16AF80BX4B33----------------------- +INT 16 - K3PLUS v6.00+ (API v2.00+) - GET ORIGINAL INT 09h VECTOR + AX = AF80h + BX = 4B33h ('K3') +Return: AL = status + 00h not supported + 81h if successful + ES:CX -> original INT 09 handler +SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF81h,AX=AF82h +--------K-16AF81BX4B33----------------------- +INT 16 - K3PLUS v6.00+ (API v2.00+) - GET ORIGINAL INT 16h HANDLER + AX = AF81h + BX = 4B33h ('K3') +Return: AL = status + 00h not supported + 82h if successful + ES:CX -> original INT 16 handler +SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h,AX=AF82h +--------K-16AF82BX4B33----------------------- +INT 16 - K3PLUS v6.00+ (API v2.00+) - GET ORIGINAL INT 10h HANDLER + AX = AF82h + BX = 4B33h ('K3') +Return: AL = status + 00h not supported + 83h if successful + ES:CX -> original INT 10 handler +Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C. + Frinke, originally based on the K3 extended German keyboard driver + by Martin Gerdes published in c't magazine in 1988 +SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h,AX=AF81h,INT 2F/AX=ED58h +--------m-16B0B1----------------------------- +INT 16 - VGARAM v1.00 - INSTALLATION CHECK + AX = B0B1h + ES:DI -> 6 byte signature "VGARAM" +Return: AX = B1B0h if installed, + DS:BX -> VGARAM Status byte: 0 = OFF, 1 = ON +Program: VGARAM is a utility by Brett Warthen which makes VGA memory which is + not used in text modes available for DOS +--------K-16CA--BX736B----------------------- +INT 16 - CtrlAlt Associates STACKEY.COM v3.00 - API + AH = CAh + BX = 736Bh ("sk") + CX = 736Bh + AL = function + 00h installation check + Return: DX = words available in keyboard buffer + 01h place keystroke in buffer + DX = keystroke (DH = scan code, DL = ASCII character) + Return: DX = words available in keyboard buffer + FFFFh on error + 02h flush STACKEY and BIOS keyboard buffers +Return: AX = CAFFh if installed + BX = segment of resident code + CX = STACKEY version (CH = major, CL = minor) +Program: STACKEY is a shareware keyboard-input faking TSR +Index: installation check;STACKEY +--------V-16CA00BX6570----------------------- +INT 16 - CtrlAlt Associates EGAPAL.COM v1.00 - INSTALLATION CHECK + AX = CA00h + BX = 6570h ("ep") + CX = 6570h +Return: AX = CAFFh if installed + BX = segment of resident code + CX = ??? (0090h) +Program: EGAPAL is a TSR supplied with STACKEY which makes EGA palette + settings permanent across mode switches +SeeAlso: AX=CA00h/BX=7670h +--------V-16CA00BX7670----------------------- +INT 16 - CtrlAlt Associates VGAPAL.COM v1.00 - INSTALLATION CHECK + AX = CA00h + BX = 7670h ("vp") + CX = 7670h +Return: AX = CAFFh if installed + BX = segment of resident code + CX = ??? (0090h) +Program: VGAPAL is a TSR supplied with STACKEY which makes VGA palette + settings permanent across mode switches +SeeAlso: AX=CA00h/BX=6570h +--------U-16CB00----------------------------- +INT 16 - PUPClip v1.12+ - INSTALLATION CHECK + AX = CB00h +Return: BX = 4342h if installed + AX = version (AH = major version, AL = BCD minor version) +Program: PUPClip is the freeware PopUP Clipboard for DOS and Windows DOS + sessions by SkullC0DEr +SeeAlso: AX=CB01h,AX=CB02h,AX=CB03h,AX=CB04h,AX=CB05h,AX=CB06h,AX=CB08h +SeeAlso: INT 2F/AX=1701h +--------U-16CB01----------------------------- +INT 16 - PUPClip v1.12+ - GET CLIPBOARD CURSOR POSITION + AX = CB01h +Return: BL = column (0-79) + BH = row (0-49) +SeeAlso: AX=CB00h,AX=CB02h,AX=CB03h +--------U-16CB02----------------------------- +INT 16 - PUPClip v1.12+ - SET CLIPBOARD CURSOR POSITION + AX = CB02h + BL = column (0-79) + BH = row (0-49) +Return: CF clear if successful + CF set on error (invalid position) +SeeAlso: AX=CB00h,AX=CB01h,AX=CB04h +--------U-16CB03----------------------------- +INT 16 - PUPClip v1.12+ - GET CHARACTER FROM CURRENT CLIPBOARD CURSOR POSITION + AX = CB03h +Return: BL = ASCII character at current position +SeeAlso: AX=CB00h,AX=CB02h,AX=CB04h,INT 2F/AX=1705h +--------U-16CB04----------------------------- +INT 16 - PUPClip v1.12+ - WRITE CHARACTER TO CURRENT CLIPBOARD CURSOR POSITION + AX = CB04h + BL = ASCII character to store +SeeAlso: AX=CB00h,AX=CB02h,AX=CB03h,AX=CB05h,INT 2F/AX=1703h +--------U-16CB05----------------------------- +INT 16 - PUPClip v1.12+ - CLEAR CLIPBOARD CONTENTS + AX = CB05h +Return: nothing +SeeAlso: AX=CB00h,AX=CB04h,AX=CB06h,AX=CB07h,INT 2F/AX=1702h +--------U-16CB06----------------------------- +INT 16 - PUPClip v1.12+ - SCROLL UP CLIPBOARD CONTENTS + AX = CB06h +Return: nothing +SeeAlso: AX=CB00h,AX=CB05h,AX=CB07h +--------U-16CB07----------------------------- +INT 16 - PUPClip v1.12+ - SCROLL DOWN CLIPBOARD CONTENTS + AX = CB07h +Return: nothing +SeeAlso: AX=CB00h,AX=CB05h,AX=CB06h +--------U-16CB08----------------------------- +INT 16 - PUPClip v1.12+ - POP UP + AX = CB08h +Return: CF clear if successful + CF set on error (unsupported video mode) +SeeAlso: AX=CB00h +--------U-16D724CX00CB----------------------- +INT 16 U - APCAL v3.20 - GET ??? + AX = D724h + CX = 00CBh +Return: AX = 0000h + BX = 0000h + DX:CX -> ??? or 0000h:0000h +Program: APCAL is an optionally-resident shareware appointment calendar by + Gamma Software +SeeAlso: AX=3577h,AX=D724h/CX=00CCh,AX=D724h/CX=00CDh +--------U-16D724CX00CC----------------------- +INT 16 U - APCAL v3.20 - GET ??? + AX = D724h + CX = 00CCh +Return: AX = 0000h + BX = 0000h + DX:CX -> ??? (apparently an internal data area) +SeeAlso: AX=D724h/CX=00CBh,AX=D724h/CX=00CDh +--------U-16D724CX00CD----------------------- +INT 16 U - APCAL v3.20 - GET ??? + AX = D724h + CX = 00CDh +Return: AX = ??? (5345h seen) +SeeAlso: AX=D724h/CX=00CBh,AX=D724h/CX=00CCh +--------v-16DD-------------------------- +INT 16 - VIRUS - "Frumble" - INSTALLATION CHECK + AH = DDh +Return: AL = DDh if resident +SeeAlso: INT 13/AX=FD50h,INT 21/AX=010Fh,INT 21/AX=0B56h +--------s-16DFDF----------------------------- +INT 16 U - Corel PowerSCSI - FDAUDIO.COM - INSTALLATION CHECK + AX = DFDFh +Return: ES:DI -> ASCII signature "FDAUDIO/CD" followed by ASCII date, i.e. + "06/18/93" if installed +--------b-16E000----------------------------- +INT 16 - AMI BIOS - BIOS-FLASH Interface - GET VERSION NUMBER + AX = E000h +Return: CF clear if successful + AL = FAh + BX = version number (BCD) (0200h = v2.00) + CF set on error (not implemented) +Notes: this interface is available on AMI BIOSes built from AMI core version + 8/8/93 (HiFlex BIOS) or 11/15/93 (WinBIOS) or later + the "Meningitis" virus uses this API when attacking a system equipped + with an AMI BIOS; it is supposedly able to write itself into the + Flash ROM and thus make itself part of the BIOS +SeeAlso: AX=E001h,AX=E004h,AX=E006h,AX=E008h,AX=E00Ah,AX=E00Bh,AX=E0FFh +--------b-16E001----------------------------- +INT 16 - AMI BIOS - BIOS-FLASH Interface - GET CHIPSET SAVE/RESTORE SIZE + AX = E001h +Return: CF clear if successful + AL = FAh + BX = number of bytes required to save chipset configuration + CF set on error +SeeAlso: AX=E000h,AX=E002h,AX=E003h +--------b-16E002----------------------------- +INT 16 - AMI BIOS - BIOS-FLASH Interface - SAVE CHIPSET STATUS & PREPARE CHPSET + AX = E002h + ES:DI -> buffer for storing chipset status +Return: CF clear if successful + AL = FAh + CF set on error +SeeAlso: AX=E000h,AX=E001h,AX=E003h +--------b-16E003----------------------------- +INT 16 - AMI BIOS - BIOS-FLASH Interface - RESTORE CHIPSET STATUS + AX = E003h + ES:DI -> buffer in which chipset status was previously stored +Return: CF clear if successful + AL = FAh + CF set on error +SeeAlso: AX=E000h,AX=E001h,AX=E002h +--------b-16E004----------------------------- +INT 16 - AMI BIOS - BIOS-FLASH Interface - LOWER PROGRAMMING VOLTAGE Vpp + AX = E004h +Return: CF clear if successful + AL = FAh + CF set on error +Note: this function does not return until the voltage level stabilizes +SeeAlso: AX=E000h,AX=E005h,AX=E006h +--------b-16E005----------------------------- +INT 16 - AMI BIOS - BIOS-FLASH Interface - RAISE PROGRAMMING VOLTAGE Vpp + AX = E005h +Return: CF clear if successful + AL = FAh + CF set on error +Note: this function does not return until the voltage level stabilizes +SeeAlso: AX=E000h,AX=E004h,AX=E007h +--------b-16E006----------------------------- +INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH WRITE PROTECT + AX = E006h +Return: CF clear if successful + AL = FAh + CF set on error +Note: this function performs any delay required to allow the Flash ROM to + stabilize in the write-protected state +SeeAlso: AX=E000h,AX=E004h,AX=E007h +--------b-16E007----------------------------- +INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH WRITE ENABLE + AX = E007h +Return: CF clear if successful + AL = FAh + CF set on error +Note: this function performs any delay required to allow the Flash ROM to + stabilize in the write-enabled state +SeeAlso: AX=E000h,AX=E005h,AX=E006h,AX=E008h +--------b-16E008----------------------------- +INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH SELECT + AX = E008h +Return: CF clear if successful + AL = FAh + CF set on error +Desc: select the Flash ROM if the system contains both EPROM and Flash ROM +Note: this function performs any delay required to allow the Flash ROM to + stabilize in the selected state; if no EPROM is present, this + function always returns successfully +SeeAlso: AX=E000h,AX=E007h,AX=E009h +--------b-16E009----------------------------- +INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH DE-SELECT + AX = E009h +Return: CF clear if successful + AL = FAh + CF set on error +Desc: select the EPROM if the system contains both EPROM and Flash ROM +Note: this function performs any delay required to allow the Flash ROM to + stabilize in the de-selected state; if no EPROM is present, this + function always returns successfully +SeeAlso: AX=E000h,AX=E006h,AX=E008h +--------b-16E00A----------------------------- +INT 16 - AMI BIOS - BIOS-FLASH Interface - VERIFY ALLOCATED MEMORY + AX = E00Ah + BX = number of paragraphs + ES = starting segment of memory +Return: CF clear if successful + AL = FAh + CF set on error +Desc: determine whether the specified memory may be used for flash + programming +Note: always returns error if BX is zero on entry +SeeAlso: AX=E000h,AX=E00Bh +--------b-16E00B----------------------------- +INT 16 - AMI BIOS - BIOS-FLASH Interface - SAVE INTERNAL CACHE STATUS + AX = E00Bh + ES:DI -> buffer for internal cache status (minimum 4Kbytes) +Return: CF clear if successful + AL = FAh + CF set on error +Note: always returns error if the hardware does not contain internal + cache or this call is made in protected mode +SeeAlso: AX=E000h,AX=E00Ah,AX=E00Ch +--------b-16E00C----------------------------- +INT 16 - AMI BIOS - BIOS-FLASH Interface - RESTORE INTERNAL CACHE STATUS + AX = E00Ch + ES:DI -> buffer containing internal cache status (minimum 4Kbytes) +Return: CF clear if successful + AL = FAh + CF set on error +Note: always returns error if the hardware does not contain internal + cache or this call is made in protected mode +SeeAlso: AX=E000h,AX=E00Bh +--------t-16E0E0----------------------------- +INT 16 - TurboPower TSRs - ALTERNATE INSTALLATION CHECK + AX = E0E0h +Return: AX = 1F1Fh if installed + DWORD 0040h:00F0h -> last data block in TSR list (see #00615) +Note: the returned TSR list provides support for communication among TSRs + built with TurboPower's Turbo Professional and Object Professional + libraries for Turbo Pascal +SeeAlso: AX=F0F0h +--------b-16E0FF----------------------------- +INT 16 - AMI BIOS - BIOS-FLASH Interface - GENERATE CPU RESET + AX = E0FFh +Return: never +SeeAlso: AX=E000h,INT 14/AH=17h"FOSSIL" +--------U-16ED--BHED------------------------- +INT 16 - BORLAND TURBO LIGHTNING - API + AH = EDh + BH = EDh + BL = function + 00h installation check + Return: AX = 5205h + CH = major version + CL = minor version + 01h identical to function 00h??? + 02h get resident data segment + Return: AX = data segment of resident portion + 03h get resident ??? + Return: AX = offset of some buffer in resident code seg + 04h redefine auxiliary dictionary + DS:SI -> counted filename string + Return: AL = result code + 05h select active environment + AL = environment (00h to 0Ch) + Return: AX = status + 0000h if OK + 0001h if out of range + 06h toggle AutoProof??? + AL = state (00h off, 01h on) + 07h ??? + 08h ??? + AL = char??? + CX = ??? + DX = ??? + Return: AX = 0, 1 or 2 + 09h ??? + 0Ah ??? + CX = ??? + DX = ??? + Return: AX = ??? + 0Bh check dictionary integrity??? + DS:SI -> counted dictionary filename string + Return: AX = 0, 40h, 80h + 0Ch spellcheck string (disk dictionary, possibly RAM dict as well) + DS:SI -> counted string to check + Return: AH = 0 + AL = result code + 00h string found in dictionary + 20h string begins more than one word + 40h string not found + 0Dh set ??? + (sets an internal flag) + 0Eh spellcheck string (RAM dictionary only) + DS:SI -> counted string to check + Return: AH = 00h + AL = result code + 00h string found in dictionary + 01h string not found + 02h ??? + 0Fh ??? + 10h ??? +Notes: AX in general returns an error code from most functions. +Index: installation check;Turbo Lightning +--------U-16EF------------------------------- +INT 16 - CALCULATOR - INSTALLATION CHECK + AH = EFh +Return: AX = 0088h if installed +Program: CALCULATOR is a shareware popup calculator by Andrzej Brzezinski and + Marek Kosznik +--------b-16F0------------------------------- +INT 16 - Compaq 386 and newer - SET CPU SPEED + AH = F0h + AL = speed code (see #00614) + if AL=09h, + CX = speed value, 1 (slowest) to 50 (full), 3 ~= 8088 +Note: also supported by some versions of AMI BIOS dated June 1992 or later; + speed codes 0 or 1 are used for Low Speed, 2 for High Speed +SeeAlso: AH=F1h,AH=F3h + +(Table 00614) +Values for speed code: + 00h equivalent to 6 MHz 80286 (COMMON) + 01h equivalent to 8 MHz 80286 (FAST) + 02h full 16 MHz (HIGH) + 03h toggles between 8 MHz-equivalent and speed set by system board switch + (AUTO or HIGH) + 08h full 16 MHz except 8 MHz-equivalent during floppy disk access + 09h specify speed directly +--------t-16F0F0----------------------------- +INT 16 - TurboPower TSRs - INSTALLATION CHECK + AX = F0F0h +Return: AX = 0F0Fh if installed + ES:DI -> last data block in TSR list (see #00615) +Note: the returned TSR list provides support for communication among TSRs + built with TurboPower's Turbo Professional and Object Professional + libraries for Turbo Pascal +SeeAlso: AX=E0E0h + +Format of TurboPower TSR data block: +Offset Size Description (Table 00615) + 00h DWORD pointer to program tag (counted ASCII string) + 04h WORD interface version number (0400h) + 06h DWORD pointer to command entry point + 0Ah DWORD pointer to previous data block (0000h:0000h if none) + 0Eh DWORD pointer to next data block (0000h:0000h if none) +---swappable TSRs only--- + 12h DWORD pointer to swapping data + 16h DWORD pointer to user data + more??? +--------b-16F1------------------------------- +INT 16 - Compaq 386 and newer - READ CURRENT CPU SPEED + AH = F1h +Return: AL = speed code (see #00614) + if AL = 09h, CX = speed code +Note: also supported by some versions of AMI BIOS dated June 1992 or later +SeeAlso: AH=F0h,AH=F3h +--------b-16F2------------------------------- +INT 16 - Compaq 386 and newer - DETERMINE ATTACHED KEYBOARD TYPE + AH = F2h +Return: AL = type + 00h if 11-bit AT keyboard is in use + 01h if 9-bit PC keyboard is in use + AH = 00h (04/08/93 system ROM) +SeeAlso: MEM 0040h:00C2h +--------b-16F3------------------------------- +INT 16 - Compaq 80286s - SET CPU SPEED LIMIT (OVERRIDE JUMPER) + AH = F3h + AL = new limit + 00h limit is 6 Mhz + 01h limit is 8 Mhz/6 Mhz +SeeAlso: AH=F0h,AH=F1h +--------U-16F398----------------------------- +INT 16 U - NORTON GUIDES - INSTALLATION CHECK + AX = F398h +Return: AX = 6A73h ("js") + BH = BIOS scan code of current hot key + BL = ASCII code of current hot key +Note: NG.EXE was written by John Socha +--------b-16F400----------------------------- +INT 16 - Compaq Systempro and higher - CACHE CONTROLLER STATUS + AX = F400h +Return: AH = E2h (*) + AL = status + 00h not present + 01h enabled + 02h disabled + CX = cache memory size + bit 15: cache size information is NOT valid + bits 14-0: cache memory size in kilobytes + DH = cache write technology + bit 7: cache write information is NOT valid + bits 6-1: reserved (0) + bit 0: 0 = Write-through caching + 1 = Write-back caching + DL = cache type + bit 7: cache type information is NOT valid + bits 6-1: reserved (0) + bit 0: 0 = Direct mapped + 1 = Two-way set-associative +Notes: also supported by some versions of AMI BIOS dated June 1992 or later + many (most) BIOSes return a modified AH when called for an unsupported + or non-keyboard function (typically, the highest supported keyboard + function [normally 12h] is subtracted from the original AH) +SeeAlso: AX=F401h,AX=F402h +--------b-16F401----------------------------- +INT 16 - Compaq Systempro and higher - ENABLE CACHE CONTROLLER + AX = F401h +Return: AX = E201h +Notes: also supported by some versions of AMI BIOS dated June 1992 or later + many (most) BIOSes return a modified AH when called for an unsupported + or non-keyboard function (typically, the highest supported keyboard + function [normally 12h] is subtracted from the original AH) +SeeAlso: AX=F400h,AX=F402h +--------b-16F402----------------------------- +INT 16 - Compaq Systempro and higher - DISABLE CACHE CONTROLLER + AX = F402h +Return: AX = E202h +Notes: also supported by some versions of AMI BIOS dated June 1992 or later + many (most) BIOSes return a modified AH when called for an unsupported + or non-keyboard function (typically, the highest supported keyboard + function [normally 12h] is subtracted from the original AH) +SeeAlso: AX=F400h,AX=F401h +--------v-16FA00DX5945----------------------- +INT 16 U - PC Tools v8+ VSAFE, VWATCH - INSTALLATION CHECK + AX = FA00h + DX = 5945h +Return: CF clear + DI = 4559h + BX = BIOS hotkey scancode (default 2F00h) (VSAFE only) + FFFFh if disabled +Note: MS-DOS 6.0 bundles VSAFE and VWATCH as part of its virus protection +SeeAlso: AX=FA05h,INT 13/AH=FAh,INT 21/AH=FAh"VDEFEND",INT 2F/AX=6282h +--------v-16FA01DX5945----------------------- +INT 16 U - PC Tools v8+ VSAFE, VWATCH - UNINSTALL + AX = FA01h + DX = 5945h +Return: CF clear if successful + DI = 4559h +SeeAlso: AX=FA00h +--------v-16FA02DX5945----------------------- +INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET/SET OPTIONS + AX = FA02h + DX = 5945h + BL = new parameter flags (see #00616) +Return: CF clear + DI = 4559h + CL = old value of parameter flags + +Bitfields for VSAFE/VWATCH parameter flags: +Bit(s) Description (Table 00616) + 7 Protect executable files + 6 Protect FD boot sector + 5 Protect HD boot sector + 4 Boot sector viruses + 3 Check executable files + 2 General write protect + 1 Resident + 0 HD Low level format +--------v-16FA03DX5945----------------------- +INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET ??? + AX = FA03h + DX = 5945h +Return: CF clear + DI = 4559h + AX = 0002h +--------v-16FA04DX5945----------------------- +INT 16 U - PC Tools v8+ VSAFE - GET HOTKEY DISABLE FLAG + AX = FA04h + DX = 5945h +Return: CF clear + DI = 4559h + BL = hotkey disable flag (nonzero if hotkey disabled) +Note: this function is a NOP under VWATCH, merely returning CF clear/DI=4559h +SeeAlso: AX=FA00h,AX=FA05h +--------v-16FA05DX5945----------------------- +INT 16 U - PC Tools v8+ VSAFE - SET HOTKEY DISABLE FLAG + AX = FA05h + DX = 5945h + BL = new value of hotkey disable flag (nonzero to disable hotkey) +Return: CF clear + DI = 4559h +Note: this function is a NOP under VWATCH, merely returning CF clear/DI=4559h +SeeAlso: AX=FA00h,AX=FA04h +--------v-16FA06DX5945----------------------- +INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET NETWORK DRIVES TEST FLAG + AX = FA06h + DX = 5945h +Return: CF clear + DI = 4559h + BL = test status + 00h don't monitor network drives (default for VWATCH v2.1) + FFh monitor network drives (default for VSAFE v2.0) + CL = ??? (only VSAFE 2.0) +SeeAlso: AX=FA07h +--------v-16FA07DX5945----------------------- +INT 16 U - PC Tools v8+ VSAFE, VWATCH - SET NETWORK DRIVES TEST FLAG + AX = FA07h + DX = 5945h + BL = new state + 00h don't monitor + 01h monitor network drives +Return: CF clear + DI = 4559h +Note: VWATCH v2.1 (from PC Tools 9.0) returns CF set instead +SeeAlso: AX=FA00h,AX=FA06h +--------v-16FA08DX5945----------------------- +INT 16 U - PC Tools v9+ VWATCH v2.1 - ??? + AX = FA08h + DX = 5945h +Return: CF clear + DI = 4559h + AX = ??? (0002h) + BX = version (BH=major, BL=two-digit minor) +Note: this function is not supported by the PC Tools 9.0 VSAFE v2.0 +SeeAlso: AX=FA00h,AX=FA06h +--------U-16FE55----------------------------- +INT 16 U - PC Tools v8+ programs - GET ??? + AX = FE55h + CX = segment of resident program or 0000h for last loaded + DX = 0000h +Return: DX = resident code segment (unchanged if CX=0000h on entry) + AX = ??? or 0000h +Note: this call is supported by CPSCHED, CPTASK, DATAMON, DPROTECT, DRIVEMAP, + and DSKLIGHT beginning in PC Tools v8.0; programs other than CPTASK + seem to hook it merely to return the same AX as the CPTASK loaded + prior to them returned +--------U-16FEA4----------------------------- +INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - RESET ??? + AX = FEA4h +Return: nothing +Note: this function is identical to AX=FFA4h, and is implemented by the same + code in DESKTOP +SeeAlso: AX=FFA4h +--------U-16FEC6----------------------------- +INT 16 U - PC Tools v7+ CPSCHED - ENABLE/DISABLE CPSCHED API + AX = FEC6h + BL = new state (00h enabled, nonzero disabled) +Return: nothing +Desc: specify whether CPSCHED API calls other than this one and AX=FE55h will + be honored +--------U-16FED3----------------------------- +INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - ??? + AX = FED3h + DS:SI -> 92-byte data record for ??? +Return: ??? +Note: this function is identical to AX=FFD3h, and is implemented by the same + code in DESKTOP +SeeAlso: AX=FFD3h +--------U-16FEDC----------------------------- +INT 16 U - PC Tools v7+ CPSCHED - UNHOOK INTERRUPTS + AX = FEDCh +Return: AX,DX destroyed +Index: uninstall;CPSCHED +--------U-16FEEFCX0000----------------------- +INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - INSTALLATION CHECK + AX = FEEFh + CX = 0000h +Return: CX = ABCDh if PC Tools scheduler (CPSCHED or DESKTOP) installed + BX = segment of resident portion + DX = (CPSCHED v8.0) resident CS +Note: this function is identical to AX=FFD3h, and is implemented by the same + code in DESKTOP +SeeAlso: AX=FFEFh +--------U-16FEF1----------------------------- +INT 16 U - PC Tools v7 only CPSCHED/DESKTOP - ALTERNATE INSTALLATION CHECK + AX = FEF1h + BX = ??? +Return: CX = 5555h if PC Tools scheduler (CPSCHED or DESKTOP) installed + DX = 5555h +Note: this function is identical to AX=FFD3h, and is implemented by the same + code in DESKTOP +SeeAlso: AX=FFF1h +--------K-16FF------------------------------- +INT 16 - KEYBOARD - KBUF extensions - ADD KEY TO TAIL OF KEYBOARD BUFFER + AH = FFh + DX = scan code +Return: AL = status + 00h success + 01h failure +Program: KBUF is a keyboard buffer expander by Mark Adler +SeeAlso: AH=05h +--------V-16FF------------------------------- +INT 16 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - QUERY ZOOM INTERRUPT + AH = FFh +Return: AL = interrupt number to which BIOS keyboard handler has been relocated + AL+1 = Zoom interrupt number + BX = hotkey +Notes: the default interrupts are 60h for keyboard and 61h for Zoom interrupt; + the default hot key is F10 + not all vendors include the Tseng TSR which supports these functions +SeeAlso: INT 61/AX=0000h"OPTIMA",INT 61/AX=0005h"OPTIMA" +Index: hotkeys;OPTIMA 1024 VGA +----------16FF--BH00------------------------- +INT 16 - FREEZE.COM - INSTALLATION CHECK + AH = FFh + BH = 00h +Return: BH = FFh if installed +Program: FREEZE is a PC Magazine utility +--------d-16FF70BX0000----------------------- +INT 16 U - PC Tools v8+ DRIVEMAP - INSTALLATION CHECK + AX = FF70h + BX = 0000h + CX = 4C69h ('Li') + DX = 6E6Bh ('nk') +Return: AX = 0000h + CX = 4350h ('CP') + DH = major version + DL = minor version +Program: DRIVEMAP is a redirector which allows drives on computers connected + over the parallel or serial ports to appear as local drives +SeeAlso: AX=FF70h/BX=0001h,AX=FF70h/BX=0002h +--------d-16FF70BX0001----------------------- +INT 16 U - PC Tools v8+ DRIVEMAP - ??? + AX = FF70h + BX = 0001h + DL = ??? +Return: AX = ??? + DH = ??? +SeeAlso: AX=FF70h/BX=0000h,AX=FF70h/BX=0002h +--------d-16FF70BX0002----------------------- +INT 16 U - PC Tools v8+ DRIVEMAP - ??? + AX = FF70h + BX = 0002h + CX = ??? + DX = ??? +Return: AX = ??? or FFFEh/FFFFh on error + DL = ??? +BUG: DRIVEMAP will branch to random locations for BX values other than + those listed above for v8.0-9.0 because a) the incorrect register is + range-tested, resulting in BX=0003h-5CD6h being accepted as valid + function numbers, and b) the conditional which branches on invalid + function numbers jumps to the following instruction, becoming a NOP +SeeAlso: INT 2F/AX=9203h"DRIVEMAP" +Index: installation check;DRIVEMAP +--------T-16FF80BX0000----------------------- +INT 16 U - PC Tools v8+ CPTASK - INSTALLATION CHECK + AX = FF80h + BX = 0000h + CX = 0000h + DX = 0000h +Return: CX = 5555h if installed +Program: CPTASK is a task switcher by Central Point Software +--------T-16FF80BX0001----------------------- +INT 16 U - PC Tools v8+ CPTASK - GET ??? + AX = FF80h + BX = 0001h + ??? +Return: DX:SI -> task list??? (ten entries of 70h bytes in v9.0) + BX = ??? (PSP segment of resident code???) +--------T-16FF80BX0002----------------------- +INT 16 U - PC Tools v8+ CPTASK - GET ??? + AX = FF80h + BX = 0002h +Return: DX:SI -> ??? +--------T-16FF80BX0003----------------------- +INT 16 U - PC Tools v8+ CPTASK - GET ??? FLAGS + AX = FF80h + BX = 0003h +Return: AX = flags (see #00617) +SeeAlso: AX=FF80h/BX=0004h,AX=FF80h/BX=0006h + +Bitfields for CPTASK flags: +Bit(s) Description (Table 00617) + 10 ??? + 13 ??? + 14 ??? + 15 ??? +--------T-16FF80BX0004----------------------- +INT 16 U - PC Tools v8+ CPTASK - SET ??? + AX = FF80h + BX = 0004h + CX = new value of ??? +Return: ??? +Note: this function also sets bit 14 of the flags word returned by + AX=FF80h/BX=0003h +--------T-16FF80BX0005----------------------- +INT 16 U - PC Tools v8+ CPTASK - GET NUMBER OF ACTIVE TASKS??? + AX = FF80h + BX = 0005h +Return: AX = number of active tasks??? +--------T-16FF80BX0006----------------------- +INT 16 U - PC Tools v8+ CPTASK - GET AND CLEAR ??? FLAG + AX = FF80h + BX = 0006h +Return: AX = old state (0000h clear, 0001h set) +Note: the tested flag is bit 13 of the flags returned by AX=FF80h/BX=0003h +--------T-16FF80BX0007----------------------- +INT 16 U - PC Tools v8+ CPTASK - ??? + AX = FF80h + BX = 0007h + ES:DI -> ??? + ??? +Return: ??? +--------T-16FF80BX0008----------------------- +INT 16 U - PC Tools v8+ CPTASK - ??? + AX = FF80h + BX = 0008h + ??? +Return: ??? +--------T-16FF80BX0009----------------------- +INT 16 U - PC Tools v8+ CPTASK - GET ??? + AX = FF80h + BX = 0009h +Return: CL = ??? + CH = ??? (01h or 02h) +--------T-16FF80BX000A----------------------- +INT 16 U - PC Tools v9+ CPTASK - SET ??? + AX = FF80h + BX = 000Ah + DS:SI -> 128-byte buffer containing ??? +--------T-16FF80BX000B----------------------- +INT 16 U - PC Tools v9+ CPTASK - SET ??? + AX = FF80h + BX = 000Bh + DX = index of ??? task (1-10) +--------T-16FF80BX000C----------------------- +INT 16 U - PC Tools v9+ CPTASK - SET IDLE??? DELAY + AX = FF80h + BX = 000Ch + CX = new delay time in minutes +--------T-16FF80BX4350----------------------- +INT 16 U - PC Tools v8+ CPTASK - UNINSTALL + AX = FF80h + BX = 4350h ('CP') + CX = 5354h ('ST') +Return: never returns; terminates all tasks and exits to program originally + calling CPTASK +--------U-16FF90----------------------------- +INT 16 U - PC Tools v8+ DESKTOP - ??? + AX = FF90h + ??? +Return: ??? +Note: available only when popped up +--------U-16FF91----------------------------- +INT 16 U - PC Tools v7+ DESKTOP - ??? + AX = FF91h + ??? +Return: AX = 0000h +Note: calls AX=FFFDh after ??? +SeeAlso: AX=FF92h,AX=FFFDh +--------U-16FF92----------------------------- +INT 16 U - PC Tools v7+ DESKTOP - ??? + AX = FF92h + ??? +Return: AX = 0000h +Note: like AX=FF91h, but temporarily sets ??? to 3 +SeeAlso: AX=FF91h,AX=FFFDh +--------U-16FF93----------------------------- +INT 16 U - PC Tools v7+ DESKTOP - SET ??? FLAG + AX = FF93h +--------U-16FF94----------------------------- +INT 16 U - PC Tools v7+ DESKTOP - SET ??? + AX = FF94h + CX = ??? (default 0017h) +--------U-16FF95----------------------------- +INT 16 U - PC Tools v7+ DESKTOP - SET ??? + AX = FF95h + BX = ??? +--------U-16FF96----------------------------- +INT 16 U - PC Tools v7+ DESKTOP - ??? + AX = FF96h + CL = ??? +Return: AX = ??? +--------U-16FF97----------------------------- +INT 16 U - PC Tools v7+ DESKTOP - ??? + AX = FF97h + DS:DX -> buffer for ??? (see #00618) +Return: ??? + +Format of PC Tools DESKTOP buffer: +Offset Size Description (Table 00618) + 00h 48 BYTEs ??? + 30h 128 BYTEs ??? +--------U-16FF98----------------------------- +INT 16 U - PC Tools v7+ DESKTOP - OPEN \DESK.OVL FILE AND SEEK TO OVERLAY + AX = FF98h + DX = byte offset in file of overlay header (see #00619) +Return: BX = file handle for DESK.OVL file +Desc: open the DESK.OVL file, seek to the specified offset, read in the + overlay header, and seek to the offset specified by the header + +Format of PC Tools DESKTOP overlay header: +Offset Size Description (Table 00619) + 00h 12 BYTEs NUL-padded ASCII overlay filename + 0Ch DWORD offset within DESK.OVL file of actual overlay +--------U-16FF99----------------------------- +INT 16 U - PC Tools v7+ DESKTOP - ??? + AX = FF99h + ??? +Return: ??? +--------U-16FF9A----------------------------- +INT 16 U - PC Tools v7+ DESKTOP - GET NAME OF COLOR SCHEME + AX = FF9Ah +Return: ES:BX -> name of current color scheme +Note: available even if not popped up +--------U-16FF9B----------------------------- +INT 16 U - PC Tools v7+ DESKTOP - UNUSED + AX = FF9Bh +Return: ??? +Note: sounds triple-length beep +--------T-16FF9C----------------------------- +INT 16 U - PC Tools v8+ CPTASK - SET/CLEAR ??? POINTER + AX = FF9Ch + BL = function + 00h set ??? pointer + DS:SI -> ??? + 01h clear pointer to 0000h:0000h +----------16FF9D----------------------------- +INT 16 U - PC Tools v8+ CPTASK, VSAFE - ??? + AX = FF9Dh + ES:BX -> ??? word +Return: ??? +Note: if ES is non-zero, the word pointed at by ES:BX determines whether the + ??? flag is cleared (word = 0000h) or set (word is nonzero). The + flag is always cleared if ES=0000h. +--------U-16FF9E----------------------------- +INT 16 U - PC Tools v7+ DESKTOP - ??? + AX = FF9Eh + DL = ??? + bit 7: ??? + bits 6-0: function number??? (00h,01h,other) + ??? +Return: ??? +--------U-16FFA1----------------------------- +INT 16 U - PC Tools v7+ DESKTOP - ??? + AX = FFA1h + ??? +Return: ??? +Note: same as AX=FFA2h, except ??? set to FFh +SeeAlso: AX=FFA2h +--------U-16FFA2----------------------------- +INT 16 U - PC Tools v7+ DESKTOP - ??? + AX = FFA2h + ??? +Return: ??? +Note: calls AX=FFC7h (remove window) and AX=FFFDh +SeeAlso: AX=FFA1h,AX=FFC7h,AX=FFFDh +--------y-16FFA3BX0000----------------------- +INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - INSTALLATION CHECK + AX = FFA3h + BX = 0000h + CX = 0000h +Return: AX = segment of resident code + BX = 5555h + CX = 5555h +Note: also supported by DOS 6 UNDELETE which is licensed from PC Tools +SeeAlso: INT 21/AH=3Fh"NB.SYS",INT 21/AX=4101h,INT 2F/AX=6284h +--------y-16FFA3BX0001----------------------- +INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ??? + AX = FFA3h + BX = 0001h + CX = 0001h +Return: AX:BX -> ??? + CX = BX +--------y-16FFA3BX0002----------------------- +INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ??? + AX = FFA3h + BX = 0002h + CX = 0002h +Return: AX = ??? (0 or 1) + CX = BX = AX +--------y-16FFA3BX0003----------------------- +INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ??? + AX = FFA3h + BX = 0003h + CX = 0003h +Return: AX = ??? (0 or 1) + CX = BX = AX +--------y-16FFA3BX0004----------------------- +INT 16 U - PC Tools v7+ DATAMON - SET ??? FLAG + AX = FFA3h + BX = 0004h + CX = 0004h +SeeAlso: AX=FFA3h/BX=0005h +--------y-16FFA3BX0005----------------------- +INT 16 U - PC Tools v7+ DATAMON - CLEAR ??? FLAG + AX = FFA3h + BX = 0005h + CX = 0005h +SeeAlso: AX=FFA3h/BX=0004h +--------y-16FFA3BX0006----------------------- +INT 16 U - PC Tools v7+ DATAMON - SET PSP SEGMENT ??? + AX = FFA3h + BX = 0006h + CX = 0006h + DX = current PSP segment as known to DOS??? or 0000h +--------d-16FFA3BXFFA3----------------------- +INT 16 U - PC Tools v9 DSKLIGHT - INSTALLATION CHECK + AX = FFA3h + BX = FFA3h + CX = FFA3h +Return: BX = CX = 5555h if installed + AX = resident code segment +Program: DSKLIGHT is a TSR included with PC Tools v9+ which displays a disk- + access indicator on the screen; in v7 and v8, this function was + provided by DATAMON +Note: DSKLIGHT chains to the previous handler if BX or CX is not FFA3h +--------U-16FFA4----------------------------- +INT 16 U - PC Tools v7-8 DESKTOP - ??? + AX = FFA4h +Return: ??? +Notes: available even when not popped up + sets unknown flag if ??? conditions met +SeeAlso: AX=FEA4h +--------c-16FFA5CX1111----------------------- +INT 16 - PC-Cache v6+ - INSTALLATION CHECK + AX = FFA5h + CX = 1111h +Return: CH = 00h if installed + ES:DI -> internal data (see #00620) + CL = cache state + 01h enabled + 02h disabled +SeeAlso: INT 13/AH=27h,INT 13/AH=A0h,INT 21/AH=2Bh/CX=4358h + +Format of PC-Cache internal data: +Offset Size Description (Table 00620) +-1Ch 20 BYTEs cached drive list, one byte per drive A: to T: + each byte is either blank (20h) or drive letter (41h-54h) + -8 BYTE ??? + -7 WORD number of physical transfers (scaled down to 0000h-7FFFh) + -5 WORD number of saved transfers (scaled down to 0000h-7FFFh) + -3 3 BYTEs ??? +--------c-16FFA5CXAAAA----------------------- +INT 16 - PC-Cache v6+ - ENABLE DELAYED WRITES + AX = FFA5h + CX = AAAAh +Return: AX = ??? (apparently either 0000h or sectors_in_cache - 5) +SeeAlso: AX=FFA5h/CX=CCCCh +--------c-16FFA5CXCCCC----------------------- +INT 16 - PC-Cache v6+ - FLUSH CACHE AND DISABLE DELAYED WRITES + AX = FFA5h + CX = CCCCh +Return: AX = ??? (apparently either 0000h or sectors_in_cache - 5) +Note: delayed writes are automatically disabled on EXECing + (see INT 21/AH=4Bh) a program named either WIN.CO? or DV.E??; + however, delayed writes are not automatically reenabled upon the + program's termination in v6. +SeeAlso: AX=FFA5h/CX=AAAAh,AX=FFA5h/CX=FFFFh +--------c-16FFA5CXDDDD----------------------- +INT 16 - PC-Cache v6+ - FLUSH AND DISABLE CACHE + AX = FFA5h + CX = DDDDh +SeeAlso: AX=FFA5h/CX=EEEEh,AX=FFA5h/CX=FFFFh +--------c-16FFA5CXEEEE----------------------- +INT 16 - PC-Cache v6+ - ENABLE CACHE + AX = FFA5h + CX = EEEEh +SeeAlso: AX=FFA5h/CX=DDDDh +--------c-16FFA5CXFFFF----------------------- +INT 16 - PC-Cache v6+ - FLUSH CACHE + AX = FFA5h + CX = FFFFh +SeeAlso: AX=FFA5h/CX=CCCCh,AX=FFA5h/CX=DDDDh,INT 13/AH=A1h +--------U-16FFA6----------------------------- +INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ??? + AX = FFA6h +Return: DS:SI -> ??? +Note: available only when popped up +--------U-16FFA7----------------------------- +INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ??? PATH + AX = FFA7h +Return: DS:SI -> ASCIZ path (directory from which PCTools was run???) +--------U-16FFA8----------------------------- +INT 16 U - PC Tools v6.0-8.0 DESKTOP - ??? + AX = FFA8h + DS:SI -> three consecutive ASCIZ strings for ??? (max 256 bytes total) + ??? +Return: ??? +Notes: available only when popped up + strings copied into internal buffer, among other actions +--------U-16FFA9----------------------------- +INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET VERSION STRING + AX = FFA9h +Return: DS:SI -> version string +--------U-16FFAA----------------------------- +INT 16 U - PC Tools v6.0-8.0 DESKTOP - ??? + AX = FFAAh + ??? +Return: ??? +Note: available only when popped up +--------U-16FFAB----------------------------- +INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET EDITOR SETTINGS??? + AX = FFABh +Return: DS:SI -> editor setting strings??? +--------U-16FFAC----------------------------- +INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ??? + AX = FFACh + DL = ??? +Note: available only when popped up +--------U-16FFAD----------------------------- +INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ??? + AX = FFADh + DL = ??? +--------U-16FFAE----------------------------- +INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ??? + AX = FFAEh +Return: AL = ??? +--------U-16FFAF----------------------------- +INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ??? + AX = FFAFh + DL = ??? +--------U-16FFB0----------------------------- +INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ??? + AX = FFB0h + BL = ??? +--------U-16FFB1----------------------------- +INT 16 U - PC Tools v6.0-8.0 DESKTOP - ??? + AX = FFB1h + ??? +Return: ??? +--------U-16FFB2----------------------------- +INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET ??? + AX = FFB2h +Return: DS:SI -> ??? +--------U-16FFB3----------------------------- +INT 16 U - PC Tools v5.5-8.0 DESKTOP - ??? + AX = FFB3h + ??? +Return: ??? +Note: available only when popped up +--------U-16FFB4----------------------------- +INT 16 U - PC Tools v5.5-8.0 DESKTOP - SET ??? FLAG + AX = FFB4h +Note: available only when popped up +SeeAlso: AX=FFBBh +--------U-16FFB5----------------------------- +INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET/SET WINDOW PARAMETERS + AX = FFB5h + BX = window specifier (000Fh to 0019h) (see #00621) + DX = 0000h get, nonzero = set + ES:DI -> window parameter buffer (see #00622) +SeeAlso: AX=FFCBh + +(Table 00621) +Values for PC Tools DESKTOP window specifier: + 000Fh comm/FAX + 0014h hotkey selection + 0015h ASCII table + 0016h system colors menu + +Format of PC Tools DESKTOP window parameters: +Offset Size Description (Table 00622) + 00h BYTE rows in window, not counting frame + 01h BYTE columns in window, not counting frame + 02h BYTE row number of top of window + 03h BYTE 2*column number of left of window + 04h BYTE character attribute for ??? + 05h BYTE character attribute for background/border + 06h BYTE character attribute for ??? + 07h DWORD pointer to ??? on screen + 0Bh 4 BYTEs ??? + 0Fh BYTE nonzero if window may be resized +Note: if running in monochrome mode, character attributes at offsets 04h to + 06h are stored unchanged, but attributes other than 07h, 0Fh, or 70h + are changed to 07h on reading +--------U-16FFB6----------------------------- +INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET ??? + AX = FFB6h +Return: AH = ??? + AL = ??? +--------U-16FFB7----------------------------- +INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET/SET ??? + AX = FFB7h + BX = direction + 0000h copy to buffer + else copy from buffer + DS:SI -> 70-byte buffer with ??? +Return: data copied +Note: available only when popped up under v6.0+ +--------U-16FFB8----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET/SET??? + AX = FFB8h + BH = subfunction + 00h get + Return: BL = old value of ??? + CL = old value of ??? (v6.0+) + CH = old value of ??? (v6.0+) + nonzero set + BL = new value for ??? + CL = new value for ??? (v6.0+) + CH = new value for ??? (v6.0+) + DH = ??? + Return: AL = old value replaced by CL (v6.0+) + AH = old value replaced by CH (v6.0+) +--------U-16FFB9----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? + AX = FFB9h + ??? +Return: AX = ??? + CX = ??? + DS:SI -> ??? + ES:DI -> ??? +--------U-16FFBA----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? + AX = FFBAh + ??? +Return: AX = ??? +Note: available only when popped up +--------U-16FFBB----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - CLEAR ??? FLAG + AX = FFBBh +Note: available only when popped up +SeeAlso: AX=FFB4h +--------U-16FFBC----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - RESTORE ORIGINAL SCREEN??? + AX = FFBCh +--------U-16FFBD----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? DATABASE INDEXING MESSAGES + AX = FFBDh + ??? +Return: ??? +--------U-16FFBE----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? + AX = FFBEh + ??? +Return: ??? +Note: available only when popped up +--------U-16FFBF----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? + AX = FFBFh + BX = DOS file handle to write on + ??? +Return: ??? +Note: available only when popped up +--------U-16FFC0----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? + AX = FFC0h + ??? +Return: AX = 0000h if successful + AX = FFFFh on error +Note: available only when popped up +--------U-16FFC1----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? + AX = FFC1h + BL = ??? + ES:DI -> data structure (see #00623) + ??? +Return: AX = ??? +Note: available only when popped up +SeeAlso: AX=FFC2h,AX=FFC3h + +Format of PC Tools DESKTOP data structure: +Offset Size Description (Table 00623) + 00h WORD ??? + 02h WORD ??? + 04h WORD ??? + 06h WORD ??? + 08h WORD ??? + 0Ah BYTE ??? + 0Bh BYTE ??? (zero/nonzero) +---v7.1--- + 0Ch WORD ??? + 0Eh BYTE ??? + 0Fh WORD ??? + 11h WORD ??? + ??? +--------U-16FFC2----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? + AX = FFC2h + BL = ??? + ES:DI -> data structure (see #00623) + ??? +Return: AH = ??? + CX = ??? + DH = ??? + DL = ??? +Note: available only when popped up +SeeAlso: AX=FFC1h,AX=FFC3h +--------U-16FFC3----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? + AX = FFC3h + BL = ??? + ES:DI -> data structure (see #00623) + ??? +Return: AH = ??? + CX = ??? + DH = ??? + DL = ??? +Note: available only when popped up +SeeAlso: AX=FFC1h,AX=FFC2h +--------U-16FFC4----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ??? + AX = FFC4h +Return: AL = ??? + BX = segment of scratch space??? + CX = segment of stored screen data (section covered by window???) + DX = segment of window parameters for ??? + ES:BP -> ??? +Note: available only when popped up in versions prior to 6.0 +--------U-16FFC5----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - CHECK WHETHER DESKTOP LOADED RESIDENT + AX = FFC5h +Return: BL = Desktop state + 00h if nonresident + nonzero if loaded resident +Note: available only when popped up; should call AX=FFEFh first to ensure + that DESKTOP is active +SeeAlso: AX=FFEFh,AX=FFF3h +--------U-16FFC6----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ??? + AX = FFC6h + BL = new value for ??? +--------U-16FFC7----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - REMOVE WINDOW + AX = FFC7h + ??? +Return: ??? +--------U-16FFC8----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ??? + AX = FFC8h +Return: DS:SI -> ??? +Note: valid only while popped up +--------U-16FFC9----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - COPY DATA TO CLIPBOARD + AX = FFC9h + DS:SI -> characters to store in clipboard + CX = size in bytes +Return: CF set on error +Notes: available only when popped up + while copying, bytes of 00h and 0Ah are skipped +--------U-16FFCA----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ??? + AX = FFCAh + DX = ??? +Return: AX destroyed +Note: available only when popped up +--------U-16FFCB----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - SELECT WINDOW PARAMETERS??? + AX = FFCBh + DX = window specifier??? +Return: AX destroyed +Note: available only when popped up +SeeAlso: AX=FFB5h +--------U-16FFCC----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY ASCIZ STRING CENTERED IN WINDOW + AX = FFCCh + DS:SI -> ASCIZ string +Return: AX = ??? + CX = ??? + ES:DI -> address past last character displayed (v5.1/5.5) + -> ??? on menu bar (v6.0) +--------U-16FFCD----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? + AX = FFCDh + DS:DX -> ??? +Return: ??? +Note: available only when popped up +--------U-16FFCE----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ??? DELAYS + AX = FFCEh + CX = ??? +Return: nothing??? +--------U-16FFCF----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - CLOSE PRINTER/PRINT FILE + AX = FFCFh +Note: available only when popped up +--------U-16FFD0----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - PREPARE TO PRINT??? + AX = FFD0h + ??? +Return: ??? +Note: available only when popped up +--------U-16FFD1----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY PRINT OPTIONS MENU + AX = FFD1h +Return: BX = number of copies + DX = destination + 00h cancel + 01h LPT1 + 02h LPT2 + 03h LPT3 + 04h COM1 + 05h COM2 + 06h disk file +Note: available only when popped up +--------U-16FFD2----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? + AX = FFD2h + BX = ??? +Return: BL = ??? +Note: available only when popped up +--------U-16FFD3----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? + AX = FFD3h + DS:SI -> 92-byte data record for ??? +Return: ??? +SeeAlso: AX=FED3h +--------U-16FFD4BH3C------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - CREATE/OPEN/DELETE FILE + AX = FFD4h + BH = 3Ch create file (with no attributes) + 3Dh open file + 41h delete file + BL = access mode + 00h read only + 01h write only + 02h read/write + DS:SI -> ASCIZ filename +Return: BX = file handle + 0000h on error +Note: operation is attempted in (in order) the directory from which the + desktop was started/run???, the directory specified with the + filename, X:\PCTOOLS\, and X:\ +--------U-16FFD5----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? + AX = FFD5h + ??? +Return: ??? +Note: available only when popped up +--------U-16FFD6----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? + AX = FFD6h + BX = ??? + CX = ??? + DX = offset in ??? + ??? +Return: ??? +Note: available only when popped up +--------U-16FFD7----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? + AX = FFD7h + ??? +Return: BL = ??? +Note: available only when popped up +--------U-16FFD8----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - SAFE CREATE FILE + AX = FFD8h + DS:BX -> ASCIZ filename +Return: BX = file handle + 0000h on error +Note: pops up confirmation menu if file already exists + only available when popped up??? +--------U-16FFD9----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ??? + AX = FFD9h +Return: AX = ??? +Note: available only when popped up +--------U-16FFDA----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET NAME OF LAST FILE OPENED + AX = FFDAh + DS:SI -> ??? (v5.1/5.5 only) +Return: DS:SI -> filename +--------U-16FFDB----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ??? + AX = FFDBh + BL = ??? +Note: available only when popped up +--------U-16FFDC----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - UNHOOK + AX = FFDCh +Return: interrupt vectors 09h, 10h (v6.0+), 16h, 1Ch, and 21h restored to + original values +Index: uninstall;PC Tools DESKTOP +--------U-16FFDDBX0000----------------------- +INT 16 U - PC Tools v5.1+ PCShell API - INSTALLATION CHECK + AX = FFDDh + BX = 0000h +Return: CX = 5555h + DX = 5555h if PCShell installed in resident mode +--------U-16FFDDBX0001----------------------- +INT 16 U - PC Tools v5.1+ PCShell API - REQUEST POP-UP + AX = FFDDh + BX = 0001h +Return: CF clear if request successful (PCShell will pop up) + CF set on error +SeeAlso: AX=FFDDh/BX=0003h +--------U-16FFDDBX0002----------------------- +INT 16 U - PC Tools v5.1-5.5 PCShell API - GET ??? + AX = FFDDh + BX = 0002h +Return: AL = + 00h ??? + 01h ??? +Note: PCShell v6.0+ displays the error message "Incorrect PCRUN version", + awaits a keystroke, and aborts the current process +--------U-16FFDDBX0003----------------------- +INT 16 U - PC Tools v5.1+ PCShell API - REQUEST POP-UP + AX = FFDDh + BX = 0003h +SeeAlso: AX=FFDDh/BX=0001h +--------U-16FFDDBX0004----------------------- +INT 16 U - PC Tools v5.1+ PCShell API - GET ??? + AX = FFDDh + BX = 0004h +Return: CF clear if successful + DS:SI -> ??? +--------U-16FFDDBX0005----------------------- +INT 16 U - PC Tools v5.1+ PCShell API - ??? + AX = FFDDh + BX = 0005h + ??? +Return: ??? +Note: resets various variables if certain conditions are met +--------U-16FFDDBX0006----------------------- +INT 16 U - PC Tools v5.1+ PCShell API - ??? + AX = FFDDh + BX = 0006h + ??? +Return: ??? +Note: resets various variables if certain conditions are met +--------U-16FFDDBX0007----------------------- +INT 16 U - PC Tools v5.1+ PCShell API - SET ??? FLAG + AX = FFDDh + BX = 0007h +Return: CF clear if successful +SeeAlso: AX=FFDDh/BX=0008h +--------U-16FFDDBX0008----------------------- +INT 16 U - PC Tools v5.1+ PCShell API - CLEAR ??? FLAG + AX = FFDDh + BX = 0008h +Return: CF undefined +SeeAlso: AX=FFDDh/BX=0007h +--------U-16FFDDBX0009----------------------- +INT 16 U - PC Tools v6.0+ PCShell API - GET PCRUN PARAMETERS + AX = FFDDh + BX = 0009h +Return: CF clear if successful + DS:SI -> list of pointers (see #00624) + +Format of PC Tools PCShell returned pointer list: +Offset Size Description (Table 00624) + 00h WORD offset of WORD containing ??? + 02h WORD offset of name of program to execute + 04h WORD offset of 80-byte buffer for ??? + 06h WORD offset of buffer for ??? (length in WORD preceding buffer) + 08h WORD offset of buffer for ??? (length in WORD preceding buffer) +--------U-16FFDDBX000A----------------------- +INT 16 U - PC Tools v6.0+ PCRUN API - INSTALLATION CHECK + AX = FFDDh + BX = 000Ah +Return: CX = 5555h if running + DX = 5555h +Note: also sets a flag +--------U-16FFDDBX000B----------------------- +INT 16 U - PC Tools v6.0+ PCRUN API - ??? + AX = FFDDh + BX = 000Bh + ??? +Return: CX = 5555h if PCRUN active + DX = 5555h +Note: also clears flag set by AX=FFDDh/BX=000Ah +--------U-16FFDE----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY POPUP MENU + AX = FFDEh + DS:DX -> menu description (must be on a paragraph boundary) +Return: AX = ??? + AL seems to be the number of the selected button +Note: available only when popped up +SeeAlso: AX=FFEEh +--------U-16FFDF----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? + AX = FFDFh + ??? +Return: ??? +--------U-16FFE0----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? + AX = FFE0h + CX = ??? + DX = ??? +Note: available only when popped up +--------U-16FFE1----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - BEEP + AX = FFE1h +--------U-16FFE2----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? + AX = FFE2h + DX = ??? +Return: ??? +Note: available only when popped up +--------U-16FFE3----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - PRINT CHARACTER + AX = FFE3h + BL = character to print to currently open printer or print file +Return: CF set on error +Note: available only when popped up +SeeAlso: INT 17/AH=00h +--------U-16FFE4----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? + AX = FFE4h + DX = segment of ??? +Return: ??? +Note: available only when popped up +--------U-16FFE5----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - POP UP FILE SELECTION MENU + AX = FFE5h + DS:SI -> ASCIZ wildcard filespec followed by ASCIZ menu title + DX = segment of window parameters??? +Return: AX = DOS file handle for file + DS:DX -> filename??? + FFFFh if function cancelled by user +Note: available only when popped up +SeeAlso: AX=FFDAh +--------U-16FFE6----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - CHECK FOR AND GET KEYSTROKE + AX = FFE6h +Return: AX = 0000h if no key available + else BIOS keycode +Notes: available only when popped up + invokes INT 28 idle interrupt before checking for key +--------U-16FFE7----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? + AX = FFE7h + BX = segment of ??? +Return: ??? +Note: available only when popped up +--------U-16FFE8----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY NUMBER + AX = FFE8h + CX = number + DH = attribute + DS:SI -> destination for ASCII number +Return: DS:SI buffer filled in with alternating characters and attributes +--------U-16FFE9----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET FILE LIST??? + AX = FFE9h +Return: BX = segment of file/directory list (14 bytes per file, NUL-padded) +Note: available only when popped up +--------U-16FFEA----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY COUNTED STRING + AX = FFEAh + DS:SI -> counted string (count byte followed by string) +Return: ??? +Note: available only when popped up +--------U-16FFEB----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? + AX = FFEBh + ??? +Return: ??? +--------U-16FFEC----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET KEY + AX = FFECh + DS:SI -> FAR routine to ??? + BX = ??? + ??? +Return: AX = keystroke + FFFFh if F10 pressed to go to menu +Notes: available only when popped up + invokes INT 28 while waiting for keystroke + F10 is hotkey to Desktop menu +Index: hotkeys;PC Tools DESKTOP +--------U-16FFED----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ??? + AX = FFEDh +Return: AX = ??? +Note: available only when popped up +--------U-16FFEE----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE PULLDOWN MENUS + AX = FFEEh + DS:SI -> pulldown menu system description (see #00625) +Return: AX destroyed +Notes: available only when popped up + if the accessory does not need any menu items of its own, it should + call AX=FFFAh instead +SeeAlso: AX=FFF7h,AX=FFFAh + +Format of PC Tools DESKTOP pulldown menu system description: +Offset Size Description (Table 00625) + 00h WORD offset of menu bar contents (counted string) + 02h WORD number of items on menu bar + 04h 10 BYTEs scan codes for hotkeying to each of up to ten menu items + 0Eh 10 BYTEs which character to highlight in each menu item (01h=first) + 18h WORD offset of first menu definition (see #00626) + 1Ah WORD offset of second menu definition + ... + +Format of PC Tools DESKTOP menu definition: +Offset Size Description (Table 00626) + 00h WORD offset of menu contents (see #00627) + 02h WORD number of entries in menu + 04h for each entry: + Offset Size Description + 00h BYTE scancode of Alt-key to invoke entry + 01h BYTE character to highlight (01h=first, etc) + 02h WORD offset of FAR routine to handle selection + +Format of PC Tools DESKTOP menu contents: +Offset Size Description (Table 00627) + 00h BYTE number of lines in menu + 01h BYTE width of menu + 02h N BYTEs counted strings, one for each line in menu +--------U-16FFEFCX0000----------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - INSTALLATION CHECK + AX = FFEFh + CX = 0000h +Return: CX = ABCDh if PC Tools DESKTOP.EXE installed + BX = segment of resident portion + AX = ??? (v5.1/5.5 only) +SeeAlso: AX=FEEFh,AX=FFC5h,AX=FFF3h +--------U-16FFF0----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ??? + AX = FFF0h + DX = ??? +Return: AX destroyed +Note: available only when popped up +--------U-16FFF1BX0000----------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - ALTERNATE INSTALLATION CHECK + AX = FFF1h + BX = 0000h leave ??? flag as is + nonzero set ??? flag +Return: CX = 5555h if installed + DX = 5555h +--------U-16FFF2----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY HELP LINE + AX = FFF2h + DS:SI -> ASCIZ function key label string (each label preceded by '[') + or help text +Return: AX destroyed +Notes: available only when popped up + if the specified string does not start with '[', it is displayed + centered on the bottom line, else the function key labels are shown +--------U-16FFF3----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - PREPARE TO UNLOAD RESIDENT DESKTOP + AX = FFF3h +Note: releases any EMS being used; restores video mode, page, and cursor + shape; and restores interrupt vectors +SeeAlso: AX=FFC5h,AX=FFEFh +Index: uninstall;PC Tools DESKTOP +--------U-16FFF4----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? + AX = FFF4h + ??? +Return: ??? +Note: available only when popped up +SeeAlso: AX=FFF6h +--------U-16FFF5----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET SCREEN ATTRIBUTE ARRAY + AX = FFF5h +Return: ES:BX -> screen attributes data structure (see #00628) + AL = ??? (v6.0+) + +Format of PC Tools DESKTOP attribute data structure: +Offset Size Description (Table 00628) + -1 BYTE attribute for desktop background + 00h BYTE attribute for normal characters on desktop menu + 01h BYTE attribute for highlighted characters on desktop menu + 02h 5 BYTEs ??? + 07h BYTE attribute for dialog boxes + 08h 15 BYTEs ??? + 17h BYTE attribute for message boxes +--------U-16FFF6----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - INVOKE NOTEPAD EDITOR + AX = FFF6h + DS = segment of editor buffer structure (see #00629) + BX = ??? + DX = segment of window parameters structure (see #00622) +Return: ??? +Note: available only when popped up +SeeAlso: AX=FFF4h + +Format of PC Tools DESKTOP editor buffer structure: +Offset Size Description (Table 00629) + 00h WORD offset of current cursor position in buffer segment + 02h 2 BYTEs ??? + 04h WORD offset of beginning of file data in buffer segment + 06h 10 BYTEs ??? + 10h N BYTEs ASCIZ name of file being edited +--------U-16FFF7----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - PROCESS MENU BAR ENTRY??? + AX = FFF7h + DS:SI -> ??? + ??? +Return: ??? +Notes: available only when popped up + performs input processing on the menu bar set up with AX=FFEEh +SeeAlso: AX=FFEEh,AX=FFFBh +--------U-16FFF8----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - DRAW EMPTY WINDOW + AX = FFF8h + DS:0000h -> window parameters structure (see #00622) + DS:BX -> DWORD to store address of ??? on screen +Return: ??? +--------U-16FFF9----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE SCREEN REFRESH ROUTINE + AX = FFF9h + ES:BX -> FAR routine to redisplay the utility's window +Note: available only when popped up +--------U-16FFFA----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE STANDARD PULLDOWN MENUS + AX = FFFAh +Notes: available only when popped up + adds the "Window" option to the "Desktop" option which is the only one + available when no accessories are active. Unlike AX=FFEEh, no + additional menu items are added between "Desktop" and "Window" +SeeAlso: AX=FFEEh,AX=FFFBh +--------U-16FFFB----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - PROCESS STANDARD MENU BAR + AX = FFFBh +Return: ??? +Notes: available only when popped up + performs input processing on the standard menu bar set up with AX=FFFAh +SeeAlso: AX=FFF7h +--------U-16FFFC----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET HOTKEYS AND KEYBOARD VECTOR + AX = FFFCh +Return: ES:BX -> hotkey table (see #00630) + DS:DX = original INT 09 vector + +Format of PC Tools DESKTOP hotkey table: +Offset Size Description (Table 00630) + 00h 2 BYTEs scancode/shift state for desktop hotkey + 02h 2 BYTEs scancode/shift state for clipboard paste key + 04h 2 BYTEs scancode/shift state for clipboard copy key + 06h 2 BYTEs scancode/shift state for screen autodial key +--------U-16FFFD----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - COPY ??? + AX = FFFDh +Return: AX destroyed +Note: copies 4000 bytes from ??? to ??? under certain circumstances +SeeAlso: AX=FF91h,AX=FF92h +--------M-16FFFE----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - SHOW MOUSE CURSOR + AX = FFFEh +SeeAlso: AX=FFFFh,INT 33/AX=0001h +--------M-16FFFF----------------------------- +INT 16 U - PC Tools v5.1-8.0 DESKTOP - HIDE MOUSE CURSOR + AX = FFFFh +SeeAlso: AX=FFFEh,INT 33/AX=0002h +--------P-17----DX0ABC----------------------- +INT 17 - PRINTER - LPTx v5.x INSTALLATION CHECK + DX = 0ABCh +Return: AX = AAAAh + DX = BAAAh + ES = code segment of resident portion +--------P-17----DX0B90----------------------- +INT 17 - PRINTER - LPTx v6.x INSTALLATION CHECK + DX = 0B90h +Return: DX = ABBBh + ES = code segment of resident portion +--------P-17----DX0B91----------------------- +INT 17 - PRINTER - LPTx v7.x INSTALLATION CHECK + DX = 0B91h +Return: DX = ABCBh + ES = code segment of resident portion +--------P-17----DX0F5F----------------------- +INT 17 - PRINTER - LPTx v4.x INSTALLATION CHECK + DX = 0F5Fh +Return: AX = AAAAh + DX = F555h + ES = code segment of resident portion +--------B-1700------------------------------- +INT 17 - PRINTER - WRITE CHARACTER + AH = 00h + AL = character to write + DX = printer number (00h-02h) +Return: AH = printer status (see #00631) +Note: Under PhysTechSoft's PTS ROM-DOS the parallel port can also be + accessed as COM5. +BUGS: Some print spoolers trash the BX register on return. + Some original IBM BIOSes set more than one printer status bits at + a time, while only one of them is correct. +SeeAlso: AH=02h,AH=84h"AX",AX=6F02h,AH=F1h,INT 16/AX=FFE3h,INT 1A/AH=11h"NEC" +SeeAlso: INT 4B/AH=00h,PORT 0278h"PRINTER",MEM 0040h:0008h,MEM 0040h:0078h + +Bitfields for printer status: +Bit(s) Description (Table 00631) + 7 not busy + 6 acknowledge + 5 out of paper + 4 selected + 3 I/O error + 2-1 unused + 0 timeout +Notes: If both, bit 5 "out of paper" and 4 "selected" are set, the MS-DOS/ + PC DOS kernel assumes that no printer is attached. + for Tandy 2000, bit 7 indicates printer-busy when set rather than clear +--------B-1701------------------------------- +INT 17 - PRINTER - INITIALIZE PORT + AH = 01h + DX = printer number (00h-02h) +Return: AH = printer status (see #00631) +Note: some printers report that they are ready immediately after + initialization when they actually are not; a more reliable result may + be obtained by calling AH=02h after a brief delay +SeeAlso: AH=02h,AH=FFh"PC-MOS",INT 1A/AH=10h"NEC",INT 4B/AH=01h +--------B-1702------------------------------- +INT 17 - PRINTER - GET STATUS + AH = 02h + DX = printer number (00h-02h) +Return: AH = printer status (see #00631) +Note: PRINTFIX from MS-DOS 5.0 hooks this function and always returns AH=90h +SeeAlso: AH=01h,AH=F2h,INT 1A/AH=12h"NEC",INT 4B/AH=02h +--------P-1702--DX0000----------------------- +INT 17 - INSET - INSTALLATION CHECK + AH = 02h + DX = 0000h + CX = 07C3h (1987d) +Return: CX = 07C2h (1986d) if installed +Program: INSET is a text/graphics integration program +--------b-170200BX5050----------------------- +INT 17 - Enhanced Parallel Port (EPP) BIOS - INSTALLATION CHECK + AX = 0200h + BX = 5050h ('PP') + CH = 45h ('E') + DX = printer port number (00h-02h) +Return: AH = status + 00h if installed and port is an enhanced parallel port + CX:AL = installed BIOS type + 5050h:45h ('PPE') if EPP v3.0+ BIOS installed + 4550h:50h ('EPP') if EPP v1.0 BIOS installed + ---EPP 1.0, 3.0--- + DX:BX -> far entry point to Advanced BIOS (see #00632) + ---EPP Revision 7--- + DX = EPP I/O base address + ES:BX -> far entry point to EPP BIOS (see #00632,#00633) + 03h if installed but specified port not supported + CF set +Program: The Enhanced Parallel Port BIOS provides support for parallel + port peripherals using the enhanced modes of the IEEE 1284. +SeeAlso: AH=E0h,MEM 0040h:0008h,MEM 0040h:00DCh + +(Table 00632) +Call EPP BIOS entry point with: + DL = port number (v1.0,v3.0) + DX = (Revision 7) EPP port I/O base address + AH = function + 00h Query Configuration + Return: AH = 00h if successful + AL = IRQ number used by port or FFh if no IRQ + BH = EPP BIOS revision (major in high nybble, + minor in low nybble) + BL = I/O capabilities (see #00635) + ES:DI -> ASCIZ driver information/version text + ---v1.0,v3.0--- + CX = I/O port base address for parallel port + ---Revision 7--- + CL = EPP chipset code (see #00636) + CH = hardware manufacturer's product code + 01h Set Mode + AL = mode bits (see #00637) + Return: AX,BX destroyed + 02h Get Mode + Return: AL = mode bits (see also #00637) + bit 7: EPP port interrupts enabled + AH = 00h + CF clear + BX destroyed + 03h Interrupt Control + AL = subfunction + 00h enable parallel port interrupts + 01h disable parallel port interrupts + Return: AH = status (00h,05h,06h) (see also #00634) + 04h EPP Reset + Return: AH = 00h if successful + AL destroyed + 05h perform Address-Write/Device-Select I/O cycle + AL = device address + Return: AH = status + AL destroyed + 06h perform Address-Read I/O cycle + Return: AL = returned address/device data + AH = status + 07h write byte + AL = data byte to write + Return: AH = status + 08h output block of data + DS:SI -> block of data to be sent to parallel port + CX = number of bytes to output + Return: AH = status (see #00634) + CX = number of unsent bytes + 09h read byte of data + Return: AH = status (see #00634) + AL = byte read from parallel port + 0Ah read block of data + ES:DI -> buffer for received data + CX = number of bytes to read from paralle port + Return: AH = status (see #00634) + ES:DI buffer filled if successful + CX = number of bytes not transferred + 0Bh Address/Byte-Read + AL = device address + Return: AH = status (see #00634) + AL = byte read if successful + 0Ch Address/Byte-Write + AL = device address + DH = data byte (v1.0,v3.0) + CL = data byte (Revision 7) + Return: AH = status (see #00634) + 0Dh Address/Block-Read + AL = device address + ES:DI -> buffer for received data + CX = number of bytes to read + Return: AH = status (see #00634) + CX = number of bytes NOT transferred + 0Eh Address/Block-Write + AL = device address + ES:DI -> data to be sent (v1.0,v3.0) + DS:SI -> data to be send (Revision 7) + CX = number of bytes to write + Return: AH = status (see #00634) + CX = number of bytes NOT transferred + 0Fh Lock Port + AL = multiplexor port number + bits 7-4: daisy chain port number (1-8) + bits 3-0: mux device port number (1-8, 0 if no mux) + Return: AH = status (00h,03h,05h) (see #00634) + 10h Unlock Port + AL = multiplexor port number + bits 7-4: daisy chain port number (1-8) + bits 3-0: mux device port number (1-8, 0 if no mux) + Return: AH = status (00h,03h,05h) (see #00634) + 11h Device Interrupt + BL = multiplexor port number + 00h if no multiplexor, else mux device port (01h-08h) + AL = subfunction + 00h disable device interrupts + 01h enable device interrupt + ES:DI -> interrupt event handler + Return: AH = status (00h,03h,05h,06h) (see #00634) + Note: AMI BIOS v1.00.12.AX1T ignores the multiplexor port + number; it also always sets INT 0F to the address + specified in ES:DI + 12h Real-Time Mode + AL = subfunction + 00h check whether any real-time devices present + 01h add (advertise) real-time device + 02h remove real-time device + Return: AH = status (00h,05h,06h,07h) (see #00634) + AL = real-time devices present? (00h no, 01h yes) + Note: unlike all other functions, this one does not use DL/DX +Return: AH = status (see #00634) + CF clear if successful + CF set on error + BX destroyed +SeeAlso: #00633 + +(Table 00633) +Call EPP BIOS (Revision 7) entry point multiplexor functions with: + DX = EPP port base I/O address + AH = function + 40h Query Mux + Return: AH = status (see #00634) + AL = currently-selected port + CH = status flags + bit 0: channel locked + bit 1: interrupt pending + BH destroyed + Note: the PhoenixBIOS v4.0 documentation lists BL as the + currently-selected port and AL as the status flags + 41h Query Device Port + AL = EPP multiplex device port (1-8) + Return: AH = status (see #00634) + CH = status flags (see #00638) + BX = EPP product/device ID (0000h if undefined) + Note: the PhoenixBIOS v4.0 documentation lists AL as the + status flags and CX as the device ID + 42h Set Product ID + AL = EPP multiplex device port (1-8) + CX = EPP product ID + Return: AH = status (see #00634) + BX destroyed + 50h Query Daisy Chain + AL = EPP multiplexor device port (1-8) + Return: AH = status (see #00634) + CH = status flags + bit 0: channel locked + bit 1: interrupt pending + BL = currently-selected device + BH = EPP daisy chain revision (high nybble = major) + CL = daisy-chain depth (00h if no daisy chain) + ES:DI -> ASCIZ driver vendor identification string + Note: the PhoenixBIOS v4.0 documentation lists AH=51h as + "Query Daisy Chain" and BL as the multiplexor port; + it also lists AL as status flags on return + 51h Rescan Daisy Chain (dynamically reassign port numbers) + AL = EPP multiplexor device port (1-8) + Return: AH = status (see #00634) + BX destroyed + Note: the PhoenixBIOS v4.0 documentation lists AH=50h as + "Rescan Daisy Chain" and BL as the multiplexor port +Notes: these functions are only valid if a port multiplexor or daisy chain + is present + PhoenixBIOS 4.0 documents function 50h as "Rescan" and 51h as + "Query Daisy Chain" +SeeAlso: #00632,INT 2D/AL=DCh + +(Table 00634) +Values for EPP BIOS function status: + 00h successful + 02h unsupported command/feature + 03h unsupported parallel port + 05h unsupported in current mode + 06h invalid subfunction + 07h already ??? + 20h multiplexor not present (AMI) + 40h multiplexor not present + 41h multiplexor currently locked + 80h I/O timeout + FFh invalid/unsupported function +SeeAlso: #00632,#00633 + +Bitfields for EPP (v3.0, Revision 7) I/O capabilities: +Bit(s) Description (Table 00635) + 0 multiplexor present + 1 PS/2 bi-directional capable + 2 daisy chain present + 3 ECP capable + 4 EPP software emulation supported + 5 EPP capable + 6 fast Centronics supported + 7 standard EPP I/O map +SeeAlso: #00632 + +(Table 00636) +Values for EPP (Revision 7) chipset code: + 00h Intel SL + 01h FarPoint Communications + 02h SMC + 03h Chips&Technologies + 04h Western Digital + 05h National Semiconductor +SeeAlso: #00632 + +Bitfields for EPP BIOS mode bits: +Bit(s) Description (Table 00637) + 0 set compatibility mode + 1 set bi-directional mode + 2 set EPP mode +---Revision 7,v3.0--- + 3 set ECP mode + 4 set EPP software emulation + 5 set fast Centronics mode + 6-7 reserved (0) +SeeAlso: #00632,#M0053 + +Bitfields for EPP BIOS multiplex status flags: +Bit(s) Description (Table 00638) + 0 port is selected + 1 port is locked + 2 interrupts are enabled + 3 interrupt pending +SeeAlso: #00633 +--------P-1703------------------------------- +INT 17 U - Emulaser ELTSR - INSTALL INTERRUPT HANDLERS + AH = 03h +Return: BX = ??? + CX = ??? +Program: ELTSR is the resident portion of the Emulaser PostScript emulator by + Vertisoft Systems, Inc. +SeeAlso: AH=04h"Emulaser",AH=0Eh,INT 1A/AH=E5h +----------1703------------------------------- +INT 17 - IBM SurePath BIOS - Officially "Private" Function + AH = 03h +SeeAlso: AH=04h"IBM",AH=05h"IBM" +--------c-1703------------------------------- +INT 17 - PC-MOS/386 v5.01 - PRINT SPOOLER - PRINT STRING + AH = 03h + DX = printer port number + CX = number of characters to print + DS:SI -> string +Return: AH = printer status (see #00631) + CX = number of characters actually printed +Desc: send an entire string of chars to the print spooler with a single call +Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible + operating system by The Software Link, Inc. +SeeAlso: AH=00h,AH=01h,AH=02h,AH=FFh"PC-MOS" +--------c-1703--BX5A00----------------------- +INT 17 - DMP Print Spooler v2.03 - INSTALLATION CHECK + AH = 03h + BX = 5A00h +Return: AX = 5ACBh + DI = 0000h + ES = DMP code segment (also data segment) +Program: DMP is a Printer driver/spooler, by DMP (USA), available on the + PCTODAY disk, volume 10, March 1991 +--------N-170300----------------------------- +INT 17 - DOSISODE to WATTCP TSR Interface - "socket" + AX = 0300h + CX = type of socket from socket( domain, type, protocol ) + DX = local identifier of socket (0 - 31) +Return: AX = 0000h success + CX = segment of 4500 byte transfer buffer + DX = offset of 4500 byte transfer buffer + = FFFFH failure + CX = error code + ENFILE 23 +Program: DOSISODE is the ISO developers environment which has been ported to + DOS and will run with the Waterloo TCP turned into a resident TSR. + Currently it allows a maximum of 6 open sockets. +Note: this function will initialize the interface the first time it is + called +SeeAlso: AX=0400h"DOSISODE",AX=0600h"DOSISODE",AX=0800h"DOSISODE" +SeeAlso: AX=0A00h"DOSISODE",AX=0C00h"DOSISODE",AX=0E00h"DOSISODE" +--------P-1704------------------------------- +INT 17 U - Emulaser ELTSR - BEGIN CAPTURING OUTPUT + AH = 04h +Note: has no effect unless ELTSR is deactivated (see AX=0503h) +SeeAlso: AH=03h"Emulaser",AX=0503h,INT 1A/AH=E5h +----------1704------------------------------- +INT 17 - IBM SurePath BIOS - Officially "Private" Function + AH = 04h +SeeAlso: AH=03h"IBM",AH=05h"IBM" +--------N-170400----------------------------- +INT 17 - DOSISODE to WATTCP TSR Interface - "bind" + AX = 0400h +Note: this function just returns +SeeAlso: AX=0300h"DOSISODE",AX=0500h"DOSISODE",AX=0C00h"DOSISODE" +----------1705------------------------------- +INT 17 - IBM SurePath BIOS - Officially "Private" Function + AH = 05h +SeeAlso: AH=03h"IBM",AH=04h"IBM" +--------P-170500----------------------------- +INT 17 U - Emulaser ELTSR - ??? + AX = 0500h + ??? +Return: AX = unload status (0001h safe to unload, 0002h not safe) + BX = ??? + CX = PSP segment of ELTSR + DX = activity flag (0000h disabled, 0001h capturing, 0002h ???printing) + SI = ??? + DI = ??? +SeeAlso: AH=04h,INT 1A/AH=E5h +--------N-170500----------------------------- +INT 17 - DOSISODE to WATTCP TSR Interface - "connect" + AX = 0500h +SeeAlso: AX=0400h"DOSISODE",AX=0700h"DOSISODE",AX=0C00h"DOSISODE" +--------P-170501----------------------------- +INT 17 U - Emulaser ELTSR - UNHOOK INTERRUPTS + AX = 0501h +Return: (see AX=0500h) +Note: restores interrupt vectors without checking whether they have been + hooked by later programs; should only be called if ELTSR reports + that it is safe to unload +SeeAlso: AH=04h,AX=0500h,AX=0503h,INT 1A/AH=E5h +Index: uninstall;Emulaser ELTSR +--------P-170502----------------------------- +INT 17 U - Emulaser ELTSR - SET ??? + AX = 0502h + BL = Emulaser port (31h = LPT1, 32h = LPT2, 33h = LPT3) + CL = ??? + DL = ??? +Return: (see AX=0500h) +SeeAlso: AH=04h,AX=0500h,INT 1A/AH=E5h +--------P-170503----------------------------- +INT 17 U - Emulaser ELTSR - DEACTIVATE??? + AX = 0503h +Return: (see AX=0500h) +SeeAlso: AH=04h,AX=0500h,AX=0501h,INT 1A/AH=E5h +--------P-1706------------------------------- +INT 17 U - Emulaser ELTSR - ??? + AH = 06h + ??? +Return: ??? +SeeAlso: AX=0500h,AX=0503h,AH=07h"ELTSR",INT 1A/AH=E5h +--------N-170600----------------------------- +INT 17 - DOSISODE to WATTCP TSR Interface - "listen" + AX = 0600h +Note: this function just returns +SeeAlso: AX=0300h"DOSISODE",AX=0700h"DOSISODE",AX=0C00h"DOSISODE" +SeeAlso: AX=0E00h"DOSISODE" +--------P-1707------------------------------- +INT 17 U - Emulaser ELTSR - OPEN CAPTURE FILE + AH = 07h + ES:DX -> ASCIZ filename to be opened +Return: ??? +Note: new output will be appended to the specified file +SeeAlso: AH=08h,INT 1A/AH=E5h +--------N-170700----------------------------- +INT 17 - DOSISODE to WATTCP TSR Interface - "accept" + AX = 0700h +Note: this function just returns +SeeAlso: AX=0600h"DOSISODE",AX=0800h"DOSISODE",AX=0C00h"DOSISODE" +--------P-1708------------------------------- +INT 17 U - Emulaser ELTSR - CLOSE CAPTURE FILE + AH = 08h + ??? +Return: ??? +Desc: close the file previously opened by function 07h +SeeAlso: AH=07h,INT 1A/AH=E5h +--------N-170800----------------------------- +INT 17 - DOSISODE to WATTCP TSR Interface - "recvfrom" + AX = 0800h +SeeAlso: AX=0500h"DOSISODE",AX=0900h"DOSISODE",AX=0A00h"DOSISODE" +--------P-1709------------------------------- +INT 17 U - Emulaser ELTSR - PRINT CAPTURE FILE??? + AH = 09h + BX = ??? + CX = ??? + DX = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2) +Return: AX = status + 00h successful + FFh failed +Program: ELTSR is the resident portion of the Emulaser PostScript emulator by + Vertisoft Systems, Inc. +Note: this function calls through to INT 1A/AX=E401h, and thus requires + that either ELSPL or Disk Spool II be installed +SeeAlso: AH=0Ah,INT 1A/AX=E401h,INT 1A/AH=E5h +--------N-170900----------------------------- +INT 17 - DOSISODE to WATTCP TSR Interface - "sendto" + AX = 0900h +SeeAlso: AX=0700h"DOSISODE",AX=0800h"DOSISODE",AX=0A00h"DOSISODE" +--------P-170A------------------------------- +INT 17 U - Emulaser ELTSR - SET ??? FILENAME + AH = 0Ah + ES:BX -> ??? buffer + CX = length of ??? buffer +Return: ??? +Note: copies the specified name into the buffer passed to ELSPL as the + filename by AH=09h +SeeAlso: AH=09h,INT 1A/AH=E5h +--------N-170A00----------------------------- +INT 17 - DOSISODE to WATTCP TSR Interface - "select" + AX = 0A00h +SeeAlso: AX=0800h"DOSISODE",AX=0B00h"DOSISODE",AX=0E00h"DOSISODE" +--------P-170B------------------------------- +INT 17 U - Emulaser ELTSR - GET ??? + AH = 0Bh +Return: AX:BX -> ??? +SeeAlso: AH=0Ah,INT 1A/AH=E5h +----------170B------------------------------- +INT 17 - IBM SurePath BIOS - Officially "Private" Function + AH = 0Bh +SeeAlso: AH=03h"IBM",AH=0Ch"IBM" +--------N-170B00----------------------------- +INT 17 - DOSISODE to WATTCP TSR Interface - "ioctl" + AX = 0B00h + DX = local identifier of socket (0 - 31) +Note: this function sets the socket into non_block mode +SeeAlso: AX=0A00h"DOSISODE",AX=0C00h"DOSISODE",AX=0E00h"DOSISODE" +--------P-170C------------------------------- +INT 17 U - Emulaser ELTSR - SET ??? FLAG + AH = 0Ch + ??? +Return: ??? +SeeAlso: AH=0Bh,INT 1A/AH=E5h +----------170C------------------------------- +INT 17 - IBM SurePath BIOS - Officially "Private" Function + AH = 0Ch +SeeAlso: AH=0Bh"IBM",AH=0Dh"IBM" +--------N-170C00----------------------------- +INT 17 - DOSISODE to WATTCP TSR Interface - "close" + AX = 0C00h +SeeAlso: AX=0300h"DOSISODE",AX=0500h"DOSISODE",AX=0D00h"DOSISODE" +--------P-170D------------------------------- +INT 17 U - Emulaser ELTSR - GET TRUE ScrlLk STATE + AH = 0Dh +Return: AX = state (0000h off, 0010h on) +Desc: determine the actual state of ScrlLk even when Emulaser is controlling + the ScrlLk light as its activity indicator +SeeAlso: AH=0Ch,INT 16/AH=02h,INT 1A/AH=E5h +----------170D------------------------------- +INT 17 - IBM SurePath BIOS - Officially "Private" Function + AH = 0Dh +SeeAlso: AH=0Ch"IBM",AH=0Eh"IBM" +--------N-170D00----------------------------- +INT 17 - DOSISODE to WATTCP TSR Interface - "shutdown" - SHUTDOWN INTERFACE + AX = 0D00h +Note: this function is used to shutdown the interface +SeeAlso: AX=0C00h"DOSISODE",AX=0E00h"DOSISODE" +--------P-170E------------------------------- +INT 17 U - Emulaser ELTSR - BACKGROUND PROCESSING + AH = 0Eh +Program: ELTSR is the resident portion of the Emulaser PostScript emulator by + Vertisoft Systems, Inc. +Note: this function is called by ELTSR on every INT 08 to allow data to be + processed in the background, but may also be called by applications + to give Emulaser additional CPU time +SeeAlso: AH=0Dh,INT 1A/AH=E5h +----------170E------------------------------- +INT 17 - IBM SurePath BIOS - Officially "Private" Function + AH = 0Eh +SeeAlso: AH=03h"IBM",AH=0Dh"IBM",AH=80h"IBM" +--------N-170E00----------------------------- +INT 17 - DOSISODE to WATTCP TSR Interface - INSTALLATION CHECK + AX = 0E00h +Return: CX = 1234h if installed +Program: DOSISODE is the ISO developers environment which has been ported to + DOS and will run with the Waterloo TCP turned into a resident TSR. + Currently it allows a maximum of 6 open sockets. +Note: this function is used to check if the interface is loaded +SeeAlso: AX=0300h"DOSISODE",AX=0A00h"DOSISODE" +--------P-172000----------------------------- +INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - INSTALLATION CHECK + AX = 2000h + BL = printer number??? +Return: AX = status (see #00639) + BX = driver version number (BH=major,BL=minor) + CH = ??? (00h) + CL = ??? + DX = ??? (0100h) +Note: also enables the remaining printer driver functions (2001h-2007h) +SeeAlso: AX=2001h,AX=2002h,AX=2003h,AX=2004h,AX=2005h,AX=2006h,AX=2007h + +(Table 00639) +Values for PC Paint function status: + 0000h successful + 0001h invalid printer??? + 0002h ??? + 0003h invalid subfunction + 0005h driver disabled, must call function 00h first + 0009h unknown printer error + 000Bh printer not selected + 000Ch printer out of paper + 000Eh error while writing to serial printer + 000Fh ??? + 0010h invalid function number + 0011h value out of range +--------P-172001----------------------------- +INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - SET ??? FLAG + AX = 2001h + BL = printer number??? +Return: AX = status (see #00639) +--------P-172002----------------------------- +INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - GET INFORMATION + AX = 2002h + BL = printer number??? + CL = desired information + 00h printer type + Return: ES:DI -> ASCIZ printer name + 01h paper size + DX = size index + Return: ES:DI -> ASCIZ paper size description + 02h ??? + Return: BX = ??? + 03h printer information??? + DX = ??? + ES:BX -> buffer for ??? (min 134 bytes) +Return: AX = status (see #00639) +SeeAlso: AX=2000h,AX=2004h +--------P-172003----------------------------- +INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ??? + AX = 2003h + ES:BX -> ??? +Return: AX = status (see #00639) +SeeAlso: AX=2000h,AX=2004h +--------P-172004----------------------------- +INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - GET ??? + AX = 2004h + BL = printer number??? +Return: AX = status (see #00639) + ES:DI -> ??? +SeeAlso: AX=2000h,AX=2003h +--------P-172005----------------------------- +INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ADVANCE PRINTER TO NEXT PAGE + AX = 2005h + BL = printer number??? +Return: AX = status (see #00639) +Note: this function also clears the flag set by AX=2001h +SeeAlso: AX=2000h,AX=2001h,AX=2006h +--------P-172006----------------------------- +INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ADVANCE TO NEXT PAGE & SHUT DOWN + AX = 2006h + BL = printer number??? +Return: AX = status (see #00639) +Note: this function also clears the flag set by AX=2001h and disables + functions other than AX=2000h +SeeAlso: AX=2000h,AX=2001h,AX=2005h +--------P-172007----------------------------- +INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - UNIMPLEMENTED + AX = 2007h +Return: AX unchanged +SeeAlso: AX=2000h +--------N-172400----------------------------- +INT 17 - Shamrock Software NET.24 v3.11+ - ENABLE/DISABLE API FUNCTIONS + AX = 2400h + DL = new state + 00h disabled + 01h enabled +Return: DL = 24h if installed + DH = minor version number + CX = network address of this machine + AL = status (see #00640) +SeeAlso: AX=2403h,INT 16/AX=4500h + +(Table 00640) +Values for NET.24 function status: + 00h successful + 01h timeout + 02h header error + 03h data error + 04h busy + 05h invalid parameters +--------N-172401----------------------------- +INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE BLOCK, NO HANDSHAKE + AX = 2401h + BL = timeout in clock ticks +Return: AL = status (see #00640) + DX:BX -> receive buffer +SeeAlso: AX=2402h,AX=2404h,AX=2408h +--------N-172402----------------------------- +INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT BLOCK, NO HANDSHAKE + AX = 2402h + transmit buffer filled (see AX=2403h) +Return: AL = status (see #00640) +SeeAlso: AX=2401h,AX=2403h,AX=2404h,AX=2409h +--------N-172403----------------------------- +INT 17 - Shamrock Software NET.24 v3.11+ - GET STATUS AND TRANSMISSION BUFFER + AX = 2403h +Return: AL = status (see #00640) + CX = number of characters in receive ring buffer + DX:BX -> transmit buffer +SeeAlso: AX=2400h,AX=2402h +--------N-172404----------------------------- +INT 17 - Shamrock Software NET.24 v3.11+ - SEND ACK BLOCK + AX = 2404h + BX = target address +Return: AL = status (see #00640) +SeeAlso: AX=2402h,AX=2405h +--------N-172405----------------------------- +INT 17 - Shamrock Software NET.24 v3.11+ - SEND NAK BLOCK + AX = 2405h + BX = target address +Return: AL = status (see #00640) +SeeAlso: AX=2402h,AX=2404h +--------N-172406----------------------------- +INT 17 - Shamrock Software NET.24 v3.11+ - PREPARE CHARACTER-ORIENTED RECEIVE + AX = 2406h +Return: AL = status (see #00640) +SeeAlso: AX=2407h,AX=240Ah +--------N-172407----------------------------- +INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE CHARACTER FROM REMOTE + AX = 2407h +Return: AL = status (see also #00640) + 06h end of data + DL = received character +SeeAlso: AX=2406h +--------N-172408----------------------------- +INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE BLOCK, WITH HANDSHAKE + AX = 2408h +Return: AL = status (see also #00640) + 06h end of data + CX = number of bytes in receive buffer + DX:SI -> receive buffer +SeeAlso: AX=2401h,AX=2405h,AX=2409h +--------N-172409----------------------------- +INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT COMMAND, WITH HANDSHAKE + AX = 2409h + BX = target address + CX = number of data bytes + DL = command code to send + DS:SI -> data bytes for command +Return: AL = status (see also #00640) + 03h no response + 06h remote currently unable to perform command +SeeAlso: AX=2405h,AX=2408h +--------N-17240A----------------------------- +INT 17 - Shamrock Software NET.24 v3.11+ - PREPARE CHARACTER-ORIENTED TRANSMIT + AX = 240Ah +Return: AL = status (see #00640) +SeeAlso: AX=2406h,AX=240Bh,AX=240Ch +--------N-17240B----------------------------- +INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT SINGLE CHARACTER TO REMOTE + AX = 240Bh + DL = character to send +Return: AL = status (see also AX=2400h) + 03h transmission error + 06h write error +SeeAlso: AX=2407h,AX=240Ah,AX=240Ch +--------N-17240C----------------------------- +INT 17 - Shamrock Software NET.24 v3.11+ - END CHARACTER-ORIENTED TRANSMIT + AX = 240Ch +Return: AL = status (see also AX=2400h) + 03h transmission error + 06h remote breaks connection +SeeAlso: AX=240Ah,AX=240Bh +--------p-174B00----------------------------- +INT 17 - Brother P-Touch - INSTALLATION CHECK + AX = 4B00h +Return: AX = 4249h ('BI' = Brother International) if installed + BX = program ID + 4550h ('EP') for "Epson FX-80 Emulator" + 5047h ('PG') for "Printer to Disk Utility" + CX = numbero of parallel port being emulated or intercepted +SeeAlso: AX=4B01h +--------p-174B01----------------------------- +INT 17 - Brother P-Touch - UNINSTALL + AX = 4B01h +Return: AX = segment of resident program or 0000h if unable to uninstall +Note: the calling program must manually free both the indicated segment + and the environment segment for the TSR with INT 21/AH=49h + (the environment is pointed at by the WORD at AX:002Ch) +SeeAlso: AX=4B00h,INT 21/AH=49h +--------J-175000----------------------------- +INT 17 - AX (Japanese AT) PRINTER - SET PRINTER COUNTRY CODE + AX = 5000h + BX = country code + 0001h USA (English), 0051h Japan +Return: AL = status + 00h successful + 01h bad country code + 02h other error +SeeAlso: AX=5001h,AH=51h,INT 10/AX=5000h,INT 16/AX=5000h +--------J-175001----------------------------- +INT 17 - AX (Japanese AT) PRINTER - GET PRINTER COUNTRY CODE + AX = 5001h +Return: AL = status + 00h successful + BX = country code + 02h error +SeeAlso: AX=5000h,AH=51h,INT 10/AX=5001h,INT 16/AX=5001h +--------J-1751------------------------------- +INT 17 - AX (Japanese AT) PRINTER - JIS to Shift-JIS CONVERSION + AH = 51h + DX = 2-byte JIS code +Return: DX = shift-JIS value or 0000h on error +Note: one of AH=51h and AH=52h converts from JIS (Japanese Industry Standard) + characters to Shift-JIS characters, and the other performs the + opposite conversion +SeeAlso: AX=5000h,AH=52h +--------J-1752------------------------------- +INT 17 - AX (Japanese AT) PRINTER - Shift-JIS to JIS CONVERSION + AH = 52h + DX = 2-byte shift-JIS code +Return: DX = JIS code or 0000h on error +Note: one of AH=51h and AH=52h converts from JIS (Japanese Industry Standard) + characters to Shift-JIS characters, and the other performs the + opposite conversion +SeeAlso: AH=51h +--------P-175555BXAAAA----------------------- +INT 17 - LR - SET CONFIGURATION + AX = 5555h + BX = AAAAh + CL = configuration flags (see #04117) + DX = LPT number +Return: AX = A55Ah + BX = BBBBh +Program: LR_xxxx.COM files are a set of printer-hardware dependent printer + drivers found in the LIR DOS/Windows 3.xx codepage support package + develoved by LABAS u.a.b. LIR supports several different screen and + printer codepages and various keyboard layouts used in Lithuania. + Download at: ftp://ftp.labas.com/pub/drivers/language/lir422.zip +SeeAlso: AX=5555h/BX=BBBBh,INT 10/AX=5555h/BX=AAAAh + +Bitfields for LR_xxxx.COM configuration flags: +Bit(s) Description (Table 04117) + 7 ESC sequence??? + 6 ESC sequence??? + 5-3 printer code page + 2 Lithuanian alphabet??? + 1 Russian alphabet??? + 0 ??? +--------P-175555BXBBBB----------------------- +INT 17 - LR - GET CONFIGURATION + AX = 5555h + BX = BBBBh + DX = LPT number +Return: AX = A55Ah + BX = CCCCh + CL = configuration flags (see #04117) +SeeAlso: AX=5555h/BX=AAAAh,INT 10/AX=5555h/BX=BBBBh +--------V-1760------------------------------- +INT 17 - FLASHUP.COM - INSTALLATION CHECK + AH = 60h +Return: AL = 60h + DX = CS of resident code +Notes: FLASHUP.COM is part of Flash-Up Windows by The Software Bottling Co. + FLASHUP also hooks INT 10 and receives commands via INT 10/AH=09h,0Ah + consisting of an 80h followed by the actual command +SeeAlso: INT 10/AH=09h,INT 10/AH=0Ah +--------V-1761------------------------------- +INT 17 - SPEEDSCR.COM - INSTALLATION CHECK + AH = 61h +Return: AL = 61h + DX = CS of resident code +Note: SPEEDSCR.COM is by The Software Bottling Co. +--------P-1762------------------------------- +INT 17 U - T2PS v1.0 - UNINSTALL + AH = 62h +Return: nothing +SeeAlso: AH=63h,AH=64h,INT 05/AX=554Eh +--------P-1763------------------------------- +INT 17 U - T2PS v1.0 - SET PARAMETERS + AH = 63h + ES:SI -> settings (see #00641) +Program: T2PS is a shareware ASCII-to-PostScript converter by A.N.D. + Technologies +SeeAlso: AH=62h,AH=64h,INT 05/AX=4E57h + +Format of T2PS settings: +Offset Size Description (Table 00641) + 00h WORD LPT port number (0=LPT1, etc.) + 02h WORD page heigh in points + 04h WORD page width in points + 06h WORD top margin in points + 08h WORD bottom margin in points + 0Ah WORD left margin in points + 0Ch WORD right margin in points + 0Eh WORD font size in points + 10h WORD tab size + 12h WORD timeout in clock ticks +--------P-1764------------------------------- +INT 17 U - T2PS v1.0 - GET PARAMETERS + AH = 64h + ES:SI -> buffer for settings (see #00641) +Return: ES:SI buffer filled +SeeAlso: AH=62h,AH=63h,INT 05/AX=5053h +--------b-176F00BX0000----------------------- +INT 17 - HP Vectra - EXTENDED BIOS - "F17_INQUIRE" - INSTALLATION CHECK + AX = 6F00h + BX = 0000h +Return: BX = 4850h ("HP") if HP Extended BIOS printer extensions available +SeeAlso: AX=6F02h,INT 14/AX=6F00h,INT 10/AX=6F00h,INT 14/AX=6F00h +SeeAlso: INT 33/AX=6F00h,INT 6F/AH=00h"HP Vectra" +--------b-176F02----------------------------- +INT 17 - HP Vectra - EXTENDED BIOS - "F17_PUT_BUFFER" - PRINT BUFFER + AX = 6F02h + CX = size of buffer in bytes + DX = port number (0-3) + ES:DI -> buffer containing characters to be printed +Return: AH = printer status (see #00631) + CX = number of bytes successfully printed + ---on error (AH bit 0 set)--- + ES:DI -> next byte to be sent + ---if successful--- + ES:DI unchanged +SeeAlso: AH=00h,AX=6F00h,INT 14/AX=6F02h +----------1780------------------------------- +INT 17 - IBM SurePath BIOS - Officially "Private" Function + AH = 80h +SeeAlso: AH=03h"IBM",AH=0Bh"IBM" +--------N-1781------------------------------- +INT 17 - Alloy NTNX, MW386 - CANCEL JOBS FOR CURRENT USER + AH = 81h + AL = 00h (NTNX compatibility mode) + CL = number of jobs to cancel +Return: AL = status (see #00642) +Note: this function cancels the last CL printouts for the current task +SeeAlso: AH=82h + +(Table 00642) +Values for Alloy status: + 00h success + 01h-7Fh warning + 80h general failure + 81h host overloaded (NTNX only) + 82h module busy (NTNX only) + 83h host busy (NTNX only) + 84h re-entry flag set + 85h invalid request + 86h invalid printer + 87h invalid process ID + 89h access denied + 8Ah option not available for given port type + 8Bh option not available for given task type + 91h printer busy + C2h file not found + C3h path not found + C4h file access failure +--------N-1782------------------------------- +INT 17 - Alloy NTNX, MW386 - CANCEL ALL JOBS FOR CURRENT USER + AH = 82h + AL = 00h (NTNX compatibility mode) +Return: AL = status (see #00642) +SeeAlso: AH=81h +--------N-1783------------------------------- +INT 17 - Alloy NTNX, MW386 - SET NUMBER OF COPIES + AH = 83h + AL = mode + 00h NTNX compatibility + CL = number of copies (max 99, default 1) + 02h MW386 v2+ + BX = logical device number + 00h-03h = LPT1-LPT4 + 04h-07h = COM1-COM4 + CX = number of copies +Return: AL = status (see #00642) +Note: in NTNX compatibility mode, this function only affects LPT1 +--------N-1784------------------------------- +INT 17 - Alloy NTNX, MW386 - GENERATE PRINT BREAK + AH = 84h + AL = mode + 00h NTNX compatibility + 02h MW386 v2+ + BX = logical device number + 00h-03h = LPT1-LPT4 + 04h-07h = COM1-COM4 +Note: closes spool file and tells spooler to queue the print job (LPT1 only + under MW386 in NTNX compatibility mode) +--------J-1784------------------------------- +INT 17 - AX (Japanese AT) PRINTER - OUTPUT CHARACTER WITHOUT CONVERSION + AH = 84h + AL = character + DX = printer number +Return: AH = printer status (see #00631) +SeeAlso: AH=00h,AH=85h +--------J-1785------------------------------- +INT 17 - AX (Japanese AT) PRINTER - ENABLE/DISABLE CHARACTER CONVERSION + AH = 85h + AL = new state (00h enabled, 01h disabled) +SeeAlso: AH=84h"AX" +--------N-1787------------------------------- +INT 17 - Alloy NTNX - SET INDOS POINTER + AH = 87h + AL = 00h + CX:BX -> buffer for user-written printer drivers +Return: BX,CX destroyed +Note: must be executed before the printer is enabled +SeeAlso: AH=8Ah +--------N-1788------------------------------- +INT 17 - Alloy NTNX, MW386 - REMOVE PRINTER FROM SPOOLER + AH = 88h + AL = mode + 00h NTNX compatibility + DX = NTNX printer number (see #00643) + 01h MW386 + DX = MW386 printer number +Return: AH = status (see #00642) +Note: removes specified printer from the spooler's list of printers +SeeAlso: AH=89h,AH=8Bh + +(Table 00643) +Values for Alloy NTNX printer number: + 00h host LPT1 + 01h host LPT2 + 02h host LPT3 + 03h host LPT4 + 04h host COM1 + 05h host COM2 + 06h user's logical COM2 + 07h user's terminal AUX port + 08h user's logical COM1 (MW386 only) +--------N-1789------------------------------- +INT 17 - Alloy NTNX, MW386 - ADD PRINTER TO SPOOLER + AH = 89h + AL = mode + 00h NTNX compatibility + DX = NTNX printer number (see #00643) + 01h MW386 + DX = MW386 printer number +Return: AL = status (see #00642) +Note: the specified printer is added to the spooler's list of available + printers +SeeAlso: AH=88h,AH=8Bh +--------N-178A------------------------------- +INT 17 - Alloy NTNX - ACTIVATE USER-WRITTEN PRINTER DRIVER + AH = 8Ah + ??? +SeeAlso: AH=92h +--------N-178B------------------------------- +INT 17 - Alloy MW386 - GET PHYSICAL DEVICE NUMBER FROM NAME + AH = 8Bh + DS:DX -> ASCIZ printer name +Return: AL = status (see also AH=81h) + 00h successful + DX = physical device number +SeeAlso: AH=89h,AH=8Ch,INT 14/AH=20h"Alloy" +--------N-178C------------------------------- +INT 17 - Alloy MW386 - GET DEVICE NAME FROM PHYSICAL DEVICE NUMBER + AH = 8Ch + DX = physical device number + ES:DI -> 17-byte buffer for ASCIZ device name +Return: AL = status (see also AH=81h) + 00h successful + ES:DI buffer filled +SeeAlso: AH=88h,AH=8Bh +--------N-178D------------------------------- +INT 17 - Alloy NTNX,MW386 - RESET SPOOLER + AH = 8Dh + AL = 00h +Return: AL = status (see #00642) +Notes: clears all buffers and resets spooler to boot-up values + MW386 supports this function for compatibility only; it is a NOP +--------N-178E------------------------------- +INT 17 - Alloy NTNX - GET INT 28 ENTRY POINT + AH = 8Eh + AL = 00h +Return: CX:BX -> INT 28 entry point +SeeAlso: AH=8Fh +--------N-178F------------------------------- +INT 17 - Alloy NTNX - GET DOS INTERCEPT ENTRY POINT + AH = 8Fh + AL = 00h +Return: CX:BX -> DOS intercept routine +SeeAlso: AH=8Eh +--------N-1790------------------------------- +INT 17 - Alloy NTNX, MW386 - SPOOL FILE BY NAME + AH = 90h + AL = mode + 00h NTNX compatibility + DL = printer code (FFh=current) (NTNX, MW386 v1.x only) + DH = number of copies (FFh=current) (NTNX, MW386 v1.x only) + 02h MW386 v2+ + BX = logical device number + 00h-03h = LPT1-LPT4 + 04h-07h = COM1-COM4 + CX:SI -> ASCIZ pathname +Return: AL = status (see #00642) +Note: in mode 00h, the file is always sent to logical LPT1 +SeeAlso: AH=A0h +--------N-1791------------------------------- +INT 17 - Alloy NTNX, MW386 - GET USER NUMBER AND CURRENT PRINTER + AH = 91h + AL = mode + 00h NTNX compatibility + Return: CX = user number (00h = host) + DX = currently selected printer number (00h-08h) + 01h MW386 + Return: CX = user number + DX = physical dev number of currently selected printer + 02h MW386 v2+ + BX = logical device number + 00h-03h = LPT1-LPT4 + 04h-07h = COM1-COM4 + Return: CX = user number + DX = physical device number +Return: AL = status (see #00642) +SeeAlso: AH=8Ch +--------N-1792------------------------------- +INT 17 - Alloy NTNX - CHECK PRINTER DRIVER + AH = 92h + AL = 00h + CL = 00h +Return: CL = driver state + 01h initialized + 80h not initialized + AX = status (see #00642) +SeeAlso: AH=8Ah +--------N-1794------------------------------- +INT 17 - Alloy NTNX, MW386 - SELECT PRINTER + AH = 94h + AL = mode + 00h NTNX compatibility + DX = NTNX printer number (see #00643) + 01h MW386 + DX = MW386 printer number + 02h MW386 v2+ + BX = logical printer number + DX = MW386 printer number +Return: AL = status (see #00642) +Note: modes 00h and 01h affect only logical LPT1 +SeeAlso: AH=8Bh,AH=95h +--------N-1795------------------------------- +INT 17 - Alloy NTNX, MW386 - GET CURRENT PRINTER + AH = 95h + AL = mode + 00h NTNX compatibility + Return: DX = NTNX printer number (see #00643) + (FFFFh if current printer not compatible with NTNX) + 01h MW386 + Return: DX = MW386 printer number + 02h MW386 v2+ + BX = logical device number + 00h-03h = LPT1-LPT4 + 04h-07h = COM1-COM4 + Return: DX = MW386 printer number (FFFFh = none) +Return: AL = status (see #00642) +Note: modes 00h and 01h return the printer number of logical LPT1 only +SeeAlso: AH=94h +--------N-1796------------------------------- +INT 17 - Alloy NTNX - SET SERIAL PORT PARAMETERS + AH = 96h + AL = 00h +Note: documentation states that this is a NOP, doing only XOR AX,AX before + returning +SeeAlso: INT 14/AH=24h +--------N-1797------------------------------- +INT 17 - Alloy NTNX, MW386 - SET DATA DRIVEN PRINT BREAK + AH = 97h + AL = mode + 00h NTNX compatibility + 02h MW386 v2+ + BX = logical device number + 00h-03h = LPT1-LPT4 + 04h-07h = COM1-COM4 + CH,CL,DH = three character break sequence + DL = subfunction + 00h set break string + else reset break +Return: AL = status (see #00642) +Notes: mode 00h affects only logical LPT1 + when the break string is encountered, the spool file will be closed and + queued for printing automatically + the break string is not permanently saved, and will be reset each time + MW386 or the user is rebooted +SeeAlso: AH=9Bh +--------N-1798------------------------------- +INT 17 - Alloy NTNX,MW386 - RESTART PRINTER + AH = 98h + AL = 00h + DL = printer number (FFh=current) +Return: AL = status + 00h successful + 01h incorrect printer + 02h task not found +Note: MW386 supports this function for compatibility only; it is a NOP +--------N-1799------------------------------- +INT 17 - Alloy NTNX, MW386 - GET/SET PRINTER MODE + AH = 99h + AL = mode + 00h NTNX compatibility + DL = NTNX printer number (see #00643) + (FFh = task's current logical LPT1) + DH = mode (see #00644) + 01h MW386 + DX = MW386 printer number + CL = mode (as for DH above) +Return: AL = status (see #00642) + DH = mode (bits 1 and 2 set as above) + DL = printer owner's user number if not spooled + +Bitfields for Alloy printer mode: + 0 get mode if 1, set mode if 0 (Table 00644) + 1 private ("attached") + 2 direct instead of spooled + 3-7 reserved (0) +--------N-179A------------------------------- +INT 17 - Alloy NTNX,MW386 - SET TAB EXPANSION + AH = 9Ah + AL = mode + 00h NTNX compatibility + DX = NTNX printer number (see #00643) + (FFFFh = current logical LPT1) + 01h MW386 + DX = MW386 printer number + CL = tab length (00h = no expansion, 01h-63h = spaces per tab) +Return: AL = status (see #00642) +Note: beginning with MW386 v2.0, tab expansion is set on a per-printer basis + rather than a per-user basis; NTNX and MW386 v1.x ignore DX +SeeAlso: AH=A4h +--------N-179B------------------------------- +INT 17 - Alloy NTNX,MW386 - SET PRINT BREAK TIMEOUT + AH = 9Bh + AL = mode + 00h NTNX compatibility + CX = timeout value in clock ticks (1/18 sec) (00h = never) + 01h MW386 + CX = timeout value in seconds (00h = never) + 02h MW386 v2+ + BX = logical device number + 00h-03h = LPT1-LPT4 + 04h-07h = COM1-COM4 + CX = timeout value in seconds (00h = never) +Return: AL = status (see #00642) +Notes: modes 00h and 01h affect only the current logical LPT1 + if no data is sent to a printer for the specified amount of time, the + spool file will be closed and queued for printing automatically +SeeAlso: AH=97h +--------N-17A0------------------------------- +INT 17 - Alloy MW386 - SPOOL COPY OF FILE + AH = A0h + AL = mode + 00h NTNX compatibility + DX = ??? (NTNX, MW386 v1.x only) + 02h MW386 v2+ + BX = logical device number + 00h-03h = LPT1-LPT4 + 04h-07h = COM1-COM4 + CX:SI -> ASCIZ pathname +Return: AL = status (see #00642) +Notes: makes a copy of the specified file in the spooler's directory, allowing + the original file to be modified or deleted while the copy is printed + in mode 00h, the file is printed on logical LPT1 +SeeAlso: AH=90h +--------N-17A4------------------------------- +INT 17 - Alloy MW386 - ENABLE/DISABLE FORM FEED + AH = A4h + AL = new state + 00h form feed after end of print job disabled + 01h form feed enabled +Return: AL = status (see #00642) +Note: only affects the current logical LPT1 +SeeAlso: AH=9Ah,AH=A6h,INT 7F/AH=05h"NTNX (Host)" +--------N-17A6------------------------------- +INT 17 - Alloy MW386 - ENABLE/DISABLE BANNER PAGE + AH = A6h + AL = new state + 00h banner page before print job disabled + 01h banner page enabled +Return: AL = status (see #00642) +Note: only affects the current logical LPT1 +SeeAlso: AH=A4h +--------N-17A7------------------------------- +INT 17 - Alloy MW386 v2+ - GET/SET SPOOL FLAGS + AH = A7h + AL = spool flags (see #00645) + BX = logical device number + 00h-03h = LPT1-LPT4 + 04h-07h = COM1-COM4 +Return: AL = status (see #00642) +Note: the documentation does not state which register contains the result of + a GET +SeeAlso: AH=A4h,AH=A6h + +Bitfields for Alloy spool flags: +Bit(s) Description (Table 00645) + 0 banner page enabled (see AH=A6h) + 1 form feed enabled (see AH=A4h) + 2-6 reserved (0) + 7 set flags if 1, get flags if 0 +--------N-17A8------------------------------- +INT 17 - Alloy MW386 - DEFINE TEMPORARY FILENAME + AH = A8h + CX:SI -> ASCIZ filename without extension (max 8 chars) +Return: AL = status (see #00642) +Note: allows application to specify banner page filename for spool files + collected from the application's printer output +SeeAlso: AH=A9h +--------N-17A9------------------------------- +INT 17 - Alloy MW386 - CHANGE TEMPORARY SPOOL DRIVE + AH = A9h + AL = new spool drive (2=C:,3=D:,etc) +Return: AL = status (see #00642) +Note: does not remove previous spooling directory since jobs may be pending +SeeAlso: AH=A8h +--------N-17AA------------------------------- +INT 17 - Alloy MW386 v2+ - GET REAL-TIME PRINTER STATUS + AH = AAh + AL = mode + 00h NTNX + DX = NTNX printer number (see #00643) + 01h MW386 + DX = MW386 printer number +Return: AH = instantaneous printer status + 00h printer ready + 01h not ready + 12h off line + 13h out of paper + 14h general device failure + 15h device timeout + 16h bad device number +--------N-17AF------------------------------- +INT 17 - Alloy MW386 - CHECK SPOOLER + AH = AFh +Return: AX = 55AAh if spooler available +--------c-17C0------------------------------- +INT 17 - PC Magazine PCSpool - GET CONTROL BLOCK ADDRESS + AH = C0h + DX = printer port (0-3) +Return: ES:BX -> control block (see #00646) +SeeAlso: AH=C1h + +Format of PCSpool control block: +Offset Size Description (Table 00646) + 00h WORD printer number + 02h WORD address of printer status port + 04h WORD number of first record in queue + 06h WORD number of last record in queue + 08h DWORD characters already printed + 0Ch DWORD number of characters remaining + 10h DWORD pointer to dequeue buffer + 14h DWORD previous count of characters printed + 18h DWORD number of clock ticks taken to print them + 1Ch WORD offset of next character to output + 1Eh WORD offset of next character to print + 20h WORD pointer to spooling queue record + 22h BYTE current spooling status + 23h BYTE current printer status: + 00h OK + 01h not ready + 02h paused with message + 03h paused + 04h initializing + FEh non-existent port + FFh not spooled + 24h BYTE current control record type + 25h WORD observed printer speed + 27h WORD characters to print per service + 29h BYTE 01h if disk write needed + 2Ah BYTE 01h if queued data should be flushed + 2Bh BYTE 01h to update cps status +--------c-17C1-------------------------------- +INT 17 - PC Magazine PCSpool - BUILD PAUSE CONTROL RECORD + AH = C1h + DX = printer port (0-3) + DS:SI -> ASCIZ string to save for display +Note: flushes pending writes +SeeAlso: AH=C0h,AH=C2h +--------c-17C2------------------------------- +INT 17 - PC Magazine PCSpool - FLUSH PENDING WRITES + AH = C2h + DX = printer port (0-3) +SeeAlso: AH=C3h +--------c-17C3------------------------------- +INT 17 - PC Magazine PCSpool - CANCEL PRINTER QUEUE (FLUSH ALL QUEUED OUTPUT) + AH = C3h + DX = printer port (0-3) +SeeAlso: AH=C2h,AH=C7h +--------c-17C4------------------------------- +INT 17 - PC Magazine PCSpool - QUERY SPOOLER ACTIVE + AH = C4h +Return: DI = B0BFh + SI = segment +--------c-17C5------------------------------- +INT 17 - PC Magazine PCSpool - JOB SKIP PRINTER QUEUE + AH = C5h + DX = printer port (0-3) +Note: cancels up to the pause record +--------c-17C6------------------------------- +INT 17 - PC Magazine PCSpool - CHECK PRINTER QUEUE STATUS + AH = C6h + DX = printer port (0-3) +Return: AX = queue status + 0000h printer not active or at pause + 0001h printer busy +--------c-17C7------------------------------- +INT 17 - PC Magazine PCSpool - CLOSE QUEUE + AH = C7h + DX = printer port (0-3) +SeeAlso: AH=C3h +--------P-17CD00----------------------------- +INT 17 - INSET - EXECUTE COMMAND STRING + AX = CD00h + DS:DX -> ASCIZ command string (max 80 bytes) +Return: CX = 07C2h (1986d) +Note: user interface menus pop up after last command, unless that command + exits INSET +--------P-17CD01----------------------------- +INT 17 - INSET - GET IMAGE SIZE + AX = CD01h + DS:DX -> ASCIZ name of image file +Return: AX = height in 1/720th inch + BX = width in 1/720th inch + CX = 07C2h (1986d) +--------P-17CD02----------------------------- +INT 17 - INSET - INITIALIZE + AX = CD02h +Return: CX = 07C2h (1986d) +Note: all open files are closed and the printer is reset +SeeAlso: AX=CD04h +--------P-17CD03----------------------------- +INT 17 - INSET - EXECUTE INSET MENU WITHIN OVERRIDE MODE + AX = CD03h +Return: CX = 07C2h (1986d) +--------P-17CD04----------------------------- +INT 17 - INSET - INITIALIZE LINKED MODE + AX = CD04h + ES:SI -> FAR routine for linked mode (see #00647) +Return: CX = 07C2h +SeeAlso: AX=CD02h,AX=CD08h + +(Table 00647) +Values INSET linked-mode routine is called with: + AL = function + 00h send character to printer + BL = character to send + 01h send string to printer + CX = number of bytes to send + DS:DX -> buffer containing data + 02h move print head to horizontal starting position of image +Return: AX = status + 0000h success + 0001h failure +--------P-17CD05----------------------------- +INT 17 - INSET - START MERGING IMAGE INTO TEXT + AX = CD05h + DS:DX -> ASCIZ name of PIX file + CX = left margin of text in 1/720th inch +Return: AH = printer type + 00h page-oriented (multiple images may be placed side-by-side) + 01h line-oriented (use AX=CD06h for vertical paper movement) + CX = 07C2h (1986d) +SeeAlso: AX=CD07h +--------P-17CD06----------------------------- +INT 17 - INSET - GRAPHICS LINE FEED + AX = CD06h +Return: AH = completion status + 00h image complete + 01h image incomplete + CX = 07C2h (1986d) +SeeAlso: AX=CD09h +--------P-17CD07----------------------------- +INT 17 - INSET - FLUSH GRAPHICS FROM MERGE BUFFER + AX = CD07h +Return: CX = 07C2h +SeeAlso: AX=CD05h +--------P-17CD08----------------------------- +INT 17 - INSET - CANCEL LINK MODE + AX = CD08h +Return: CX = 07C2h +SeeAlso: AX=CD04h +--------P-17CD09----------------------------- +INT 17 - INSET - ALTER TEXT LINE SPACING + AX = CD09h + CX = line spacing in 1/720th inch +Return: CX = 07C2h +Note: not yet implemented, line spacing is currently fixed at 1/6 inch +SeeAlso: AX=CD06h +--------P-17CD0A----------------------------- +INT 17 - INSET - GET SETUP + AX = CD0Ah + DS:DX -> buffer for IN.SET data +Return: CX = 07C2h +--------P-17CD0B----------------------------- +INT 17 - INSET - START GETTING SCALED IMAGE + AX = CD0Bh + DS:SI -> ASCIZ pathname of .PIX file + BX = number of bitplanes + CX = number of rows in output bitmap + DX = number of columns in output bitmap +Return: AX = status + 0000h OK + FFFFh error +Note: image is returned in strips by repeated calls to AX=CD0Ch +--------P-17CD0C----------------------------- +INT 17 - INSET - GET NEXT IMAGE STRIP + AX = CD0Ch +Return: AX = status + 0000h OK but not complete + 0001h OK and image complete + FFFFh error + DS:SI -> buffer (max 4K) for bit map strip + CX = start row + DX = number of rows + BX = offset in bytes between bit planes +Note: buffer may be overwritten by subsequent calls +SeeAlso: AX=CD0Bh +--------P-17E0------------------------------- +INT 17 - EPP BIOS - INSTALLATION CHECK + AH = E0h +Return: ??? (AH <> E0h if installed ???) +SeeAlso: AX=0200h"EPP",AH=E1h,AH=E2h +--------P-17E1------------------------------- +INT 17 - EPP BIOS - DISABLE EPP + AH = E1h + ??? +Return: ??? +SeeAlso: AX=0200h"EPP",AH=E0h,AH=E2h +--------P-17E2------------------------------- +INT 17 - EPP BIOS - ENABLE EPP + AH = E2h + ??? +Return: ??? +SeeAlso: AX=0200h"EPP",AH=E0h,AH=E1h +--------P-17F0------------------------------- +INT 17 - NorthNet Jetstream API - INSTALLATION CHECK + AH = F0h + DX = printer port (0-3) +Return: AX = 0001h Jetstream present + else non-Jetstream port +Note: NorthNet Jetstream is a high-performance DMA-driven parallel card able + to drive printers at up to 80000 characters per second +--------P-17F1------------------------------- +INT 17 - NorthNet Jetstream API - PRINT DATA BUFFER + AH = F1h + CX = data buffer length + DX = printer port (0-3) + DS:SI -> data buffer +Return: AX = status + 0000h printer not ready (see also AH=02h) + other printing started +SeeAlso: AH=00h,AH=F2h,AH=F3h,AH=F5h +--------P-17F2------------------------------- +INT 17 - NorthNet Jetstream API - GET PRINT PROGRESS STATUS + AH = F2h + DX = printer port (0-3) +Return: AX = status + 0000h prior print request finished + other number of characters left to print +SeeAlso: AH=02h,AH=F1h,AH=F3h +--------P-17F3------------------------------- +INT 17 - NorthNet Jetstream API - ABORT PRINT OPERATION + AH = F3h + DX = printer port (0-3) +Return: AX = number of unprinted characters due to abort +SeeAlso: AH=F1h,AH=F4h +--------P-17F4------------------------------- +INT 17 - NorthNet Jetstream API - SET COMPLETION (POST) ADDRESS + AH = F4h + DX = printer port (0-3) + DS:DS -> FAR post address (called with interrupts on) +SeeAlso: AH=F1h,AH=F3h +--------P-17F5------------------------------- +INT 17 - NorthNet Jetstream API - PRINT DATA BUFFER FROM EXTENDED MEMORY + AH = F5h + CX = data buffer length + DX = printer port (0-3) + DS:SI -> data buffer (32-bit physical address) +Return: AX = status + 0000h printer not ready (see also AH=02h) + other printing started +SeeAlso: AH=F1h +--------c-17FF--BX0000----------------------- +INT 17 U - PC-MOS/386 v5.01 - PRINT SPOOLER - CLOSE SPOOL FILE + AH = FFh + BX = 0000h + CX = 0000h + DX = printer port number +Return: AH = printer status (see #00631 at AH=00h) +Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible + operating system by The Software Link, Inc. +Desc: close the spool file immediately instead of waiting for the close time + to elapse +SeeAlso: AH=01h,AH=03h"PC-MOS" +--------B-18--------------------------------- +INT 18 - DISKLESS BOOT HOOK (START CASSETTE BASIC) +Desc: called when there is no bootable disk available to the system +Notes: very few PCs other than those produced by IBM contain BASIC in ROM, so + the action is unpredictable on compatibles; this interrupt often + reboots the system, and often has no effect at all + some PC and XT clones had an optional IBM CASSETTE BASIC stored + in the ROM, too. + most BIOSes will display an error message similar to "NO BASIC", and + either reboot or return to the caller. + PS/2 machines usually pop up a graphical box to the effect that + the user should enter a floppy and press F1. + Some clones display the message "No boot device available, + strike F1 to retry, F2 for setup utility" + network cards with their own BIOS can hook this interrupt to allow + a diskless boot off the network (even when a hard disk is present + if none of the partitions is marked as the boot partition) +SeeAlso: INT 2F/AX=4A06h,INT 86"NetBIOS",INT 2F/AX=4A06h,INT 2F/AX=4A07h +--------J-1800------------------------------- +INT 18 - NEC PC-9800 series - KEYBOARD - GET KEYSTROKE + AH = 00h +Return: AX = keystroke +SeeAlso: AH=01h,AH=02h,INT 16/AH=00h +--------J-1801------------------------------- +INT 18 - NEC PC-9800 series - KEYBOARD - CHECK FOR KEYSTROKE + AH = 01h +Return: BH = status + 00h no keystrokes available + 01h keystroke available + AX = keystroke +SeeAlso: AH=00h,AH=02h,INT 16/AH=01h +--------J-1802------------------------------- +INT 18 - NEC PC-9800 series - KEYBOARD - GET SHIFT STATUS + AH = 02h +Return: AL = shift flags +SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,INT 16/AH=02h +--------J-1803------------------------------- +INT 18 - NEC PC-9800 series - KEYBOARD - INITIALIZE + AH = 03h + ??? +Return: ??? +SeeAlso: AH=00h,AH=04h +--------J-1804------------------------------- +INT 18 - NEC PC-9800 series - KEYBOARD - KEY PRESSED + AH = 04h + ??? +Return: ??? +Note: details are not available at this time +SeeAlso: AH=00h,AH=02h,INT 16/AH=00h,INT 16/AH=01h,INT 16/AH=02h +--------J-18--------------------------------- +INT 18 - NEC PC-9800 series - VIDEO + AH = function + 0Ah set video mode + 0Bh get video mode + 0Ch start text screen display + 0Dh end text screen display + 0Eh set single display area + 0Fh set multiple display area + 10h set cursor shape + 11h display cursor + 12h terminate cursor + 13h set cursor position + 14h read font patter + 16h initialize text video RAM + 1Ah define user character + others + ??? +Return: ??? +Notes: details are not available at this time + text video RAM is located at segments A000h (characters) and A200h + (attributes), graphics video RAM at segment C000h + +Bitfields for NEC PC-9800 series video attributes: +Bit(s) Description (Table 00648) + 0 disable drawing character + 1 blinking + 2 reverse video + 3 underline + 4 vertical line + 7-5 color + (0=black, 1=blue, 2=red, 3=purple, 4=green, 5=cyan, 6=yellow, 7=white) +--------J-180E------------------------------- +INT 18 - NEC PC-9800 series - SET SINGLE DISPLAY AREA + AH = 0Eh + DX = offset of first byte to display??? +Return: ??? +SeeAlso: AH=1Bh,MEM 0050h:0001h +--------J-181B------------------------------- +INT 18 - NEC PC-9800 series - SET DISPLAY MODE + AH = 1Bh + AL = ??? (00h for text mode) +Return: ??? +--------r-185350BX4849----------------------- +INT 18 - SPHINX C-- - WB.COM - API + AX = 5350h ('SP') + BX = 4849h ('HI') + CX = 4E58h ('NX') + DH = function + 01h set ??? + DL = ??? + 02h get ??? + Return: DL = ??? + 03h get ??? + Return: ES:DI -> ??? data buffer + 06h ??? +Return: AX = 7370h ('sp') if installed + BX = 6869h ('hi') if installed + CX = 6E78h ('nx') if installed +Program: SPHINX C-- is a shareware compiler by Peter Cellik for a language + which is a cross between C and assembler; WB.COM is the driver which + launches the WorkBench +--------s-186900----------------------------- +INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET STATUS + AX = 6900h +Return: AX = amount of DRAM on card or 0000h if GUS not available +Program: YEA_GUS is a driver for the Graphics Ultra Sound which hooks INT 18h + and then shells out the the program requiring its services +SeeAlso: AX=6901h,AX=690Ah,AX=690Bh +--------s-186901----------------------------- +INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RESET + AX = 6901h + BX = number of active voices (14-32) +Return: nothing +SeeAlso: AX=6900h +--------s-186902----------------------------- +INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET VOLUME FOR SPECIFIC VOICE + AX = 6902h + BX = voice number (00h-1Fh) + CX = linear volume (0000h-01FFh) +Return: nothing +SeeAlso: AX=6900h,AX=6903h,AX=6904h,AX=6909h,AX=690Ah +--------s-186903----------------------------- +INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET FREQUENCY FOR VOICE + AX = 6903h + BX = voice number (00h-1Fh) + CX = frequency in Hz (0-44100) +Return: nothing +SeeAlso: AX=6902h,AX=6904h +--------s-186904----------------------------- +INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET LEFT/RIGHT BALANCE + AX = 6904h + BX = voice number (00h-1Fh) + CX = balance (0 = left, 7 = even, 15 = right) +Return: nothing +SeeAlso: AX=6902h,AX=6903h +--------s-186905----------------------------- +INT 18 - Gravis Ultra Sound YEA_GUS.EXE - PLAY MUSIC + AX = 6905h + BL = voice number + BH = sample type (0 = 8-bit, 1 = 16-bit) + CL = looping type (0 = none, 1 = forward, 2 = back and forth) + CH:DI = 20-bit starting address for voice data + DL:SI = 20-bit address for loop start + DH:BP = 20-bit address for loop end +SeeAlso: AX=6903h,AX=6906h,AX=690Bh +--------s-186906----------------------------- +INT 18 - Gravis Ultra Sound YEA_GUS.EXE - LOAD SOUND DATA + AX = 6906h + BL = data format (1 = twos-complement, 0 = not) + BH = sample type (0 = 8-bit, 1 = 16-bit) + CX = number of bytes to send + ES:SI -> buffer containing data + DL:DI = 20-bit address of GUS DRAM at which to load sound data +SeeAlso: AX=6900h,AX=6905h,AX=690Ch +--------s-186907----------------------------- +INT 18 - Gravis Ultra Sound YEA_GUS.EXE - STOP VOICE + AX = 6907h + BX = voice number (00h-1Fh) +Return: nothing +SeeAlso: AX=6908h,AX=690Dh +--------s-186908----------------------------- +INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET VOICE END + AX = 6908h + BX = voice number (00h-1Fh) + CL:DX = 20-bit ending address +Return: nothing +SeeAlso: AX=690Bh +--------s-186909----------------------------- +INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RAMP VOLUME + AX = 6909h + BL = voice number (00h-1Fh) + BH = looping type (0 = none, 1 = forward, 2 = back and forth) + CX = starting volume + DX = ending volume + DI:SI = time +Return: nothing +SeeAlso: AX=6902h,AX=690Ah +--------s-18690A----------------------------- +INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET VOLUME + AX = 690Ah + BX = voice number (00h-1Fh) +Return: AX = current non-linear volume for voice +SeeAlso: AX=6902h,AX=6909h +--------s-18690B----------------------------- +INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET POSITION + AX = 690Bh + BX = voice number +Return: BX:AX = 20-bit address at which voice is playing +SeeAlso: AX=6900h,AX=6905h,AX=6908h +--------s-18690C----------------------------- +INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SAVE SOUND DATA + AX = 690Ch + BL = data format (1 = twos-complement, 0 = not) + BH = sample type (0 = 8-bit, 1 = 16-bit) + CX = number of bytes to get + ES:SI -> buffer for retrieved data + DL:DI = 20-bit address in GUS DRAM from which to read voice data +Return: nothing +SeeAlso: AX=6906h +--------s-18690D----------------------------- +INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RESTART VOICE + AX = 690Dh + BX = voice + CX = sample type (0 = 8-bit, 1 = 16-bit) + DX = looping type (0 = none, 1 = forward, 2 = back and forth) +Return: CX = balance value +SeeAlso: AX=6907h,AX=6908h +--------s-188000----------------------------- +INT 18 - Gravis Ultra Sound EURO_MOD.EXE - INITIALIZE + AX = 8000h +Program: EURO_MOD is a .MOD file player for the Gravis Ultra Sound which hooks + INT 18h and then shells out to the program requiring its services +SeeAlso: AX=8001h,AX=8004h +--------s-188001----------------------------- +INT 18 - Gravis Ultra Sound EURO_MOD.EXE - LOAD .MOD FILE + AX = 8001h + BX:CX -> ASCIZ filename +SeeAlso: AX=8000h,AX=8002h +--------s-188002----------------------------- +INT 18 - Gravis Ultra Sound EURO_MOD.EXE - PLAY .MOD FILE + AX = 8002h +SeeAlso: AX=8002h,AX=8003h +--------s-188003----------------------------- +INT 18 - Gravis Ultra Sound EURO_MOD.EXE - STOP PLAYING + AX = 8003h +--------s-188004----------------------------- +INT 18 - Gravis Ultra Sound EURO_MOD.EXE - SHUTDOWN + AX = 8004h +SeeAlso: AX=8000h,AX=8003h +--------B-19--------------------------------- +INT 19 - SYSTEM - BOOTSTRAP LOADER +Desc: This interrupt reboots the system without clearing memory or restoring + interrupt vectors. Because interrupt vectors are preserved, this + interrupt usually causes a system hang if any TSRs have hooked + vectors from 00h through 1Ch, particularly INT 08. +Notes: Usually, the BIOS will try to read sector 1, head 0, track 0 from drive + A: to 0000h:7C00h. If this fails, and a hard disk is installed, the + BIOS will read sector 1, head 0, track 0 of the first hard disk. + This sector should contain a master bootstrap loader and a partition + table (see #00650). After loading the master boot sector at + 0000h:7C00h, the master bootstrap loader is given control + (see #00653). It will scan the partition table for an active + partition, and will then load the operating system's bootstrap + loader (contained in the first sector of the active partition) and + give it control. + true IBM PCs and most clones issue an INT 18 if neither floppy nor hard + disk have a valid boot sector + to accomplish a warm boot equivalent to Ctrl-Alt-Del, store 1234h in + 0040h:0072h and jump to FFFFh:0000h. For a cold boot equivalent to + a reset, store 0000h at 0040h:0072h before jumping. + VDISK.SYS hooks this interrupt to allow applications to find out how + much extended memory has been used by VDISKs (see #00649). DOS 3.3+ + PRINT hooks INT 19 but does not set up a correct VDISK header block + at the beginning of its INT 19 handler segment, thus causing some + programs to overwrite extended memory which is already in use. + the default handler is at F000h:E6F2h for 100% compatible BIOSes + MS-DOS 3.2+ hangs on booting (even from floppy) if the hard disk + contains extended partitions which point at each other in a loop, + since it will never find the end of the linked list of extended + partitions + under Windows Real and Enhanced modes, calling INT 19 will hang the + system in the same was as under bare DOS; under Windows Standard + mode, INT 19 will successfully perform a cold reboot as it appears + to have been redirected to a MOV AL,0FEh/OUT 64h,AL sequence +BUG: when loading the remainder of the DOS system files fails, various + versions of IBMBIO.COM/IO.SYS incorrectly restore INT 1E before + calling INT 19, assuming that the boot sector had stored the + contents of INT 1E at DS:SI instead of on the stack as it actually + does +SeeAlso: INT 14/AH=17h,INT 18"BOOT HOOK",INT 49"Tandy 2000",INT 5B"PC Cluster" +SeeAlso: MEM 0040h:0067h,MEM F000h:FFF0h,CMOS 0Fh + +Format of VDISK header block (at beginning of INT 19 handler's segment): +Offset Size Description (Table 00649) + 00h 18 BYTEs n/a (for VDISK.SYS, the device driver header) + 12h 11 BYTEs signature string "VDISK Vn.m" for VDISK.SYS version n.m + 1Dh 15 BYTEs n/a + 2Ch 3 BYTEs linear address of first byte of available extended memory + +Format of hard disk master boot sector: +Offset Size Description (Table 00650) + 00h 446 BYTEs Master bootstrap loader code +1BEh 16 BYTEs partition record for partition 1 (see #00651) +1CEh 16 BYTEs partition record for partition 2 +1DEh 16 BYTEs partition record for partition 3 +1EEh 16 BYTEs partition record for partition 4 +1FEh WORD signature, AA55h indicates valid boot block + +Format of partition record: +Offset Size Description (Table 00651) + 00h BYTE boot indicator (80h = active partition) + 01h BYTE partition start head + 02h BYTE partition start sector (bits 0-5) + 03h BYTE partition start track (bits 8,9 in bits 6,7 of sector) + 04h BYTE operating system indicator (see #00652) + 05h BYTE partition end head + 06h BYTE partition end sector (bits 0-5) + 07h BYTE partition end track (bits 8,9 in bits 6,7 of sector) + 08h DWORD sectors preceding partition + 0Ch DWORD length of partition in sectors +SeeAlso: #00650 + +(Table 00652) +Values for operating system indicator: + 00h empty partition-table entry + 01h DOS 12-bit FAT + 02h XENIX root file system + 03h XENIX /usr file system (obsolete) + 04h DOS 16-bit FAT (up to 32M) + 05h DOS 3.3+ extended partition + 06h DOS 3.31+ Large File System (16-bit FAT, over 32M) + 07h QNX + 07h OS/2 HPFS + 07h Windows NT NTFS + 07h Advanced Unix + 07h see partition boot record; could be any of the above or others + 08h OS/2 (v1.0-1.3 only) + 08h AIX bootable partition, SplitDrive + 08h Commodore DOS + 08h DELL partition spanning multiple drives + 09h AIX data partition + 09h Coherent filesystem + 0Ah OS/2 Boot Manager + 0Ah OPUS + 0Ah Coherent swap partition + 0Bh Windows95 with 32-bit FAT + 0Ch Windows95 with 32-bit FAT (using LBA-mode INT 13 extensions) + 0Eh logical-block-addressable VFAT (same as 06h but using LBA-mode INT 13) + 0Fh logical-block-addressable VFAT (same as 05h but using LBA-mode INT 13) + 10h OPUS + 11h OS/2 Boot Manager hidden 12-bit FAT partition + 12h Compaq Diagnostics partition + 14h (resulted from using Novell DOS 7.0 FDISK to delete Linux Native part) + 14h OS/2 Boot Manager hidden sub-32M 16-bit FAT partition + 16h OS/2 Boot Manager hidden over-32M 16-bit FAT partition + 17h OS/2 Boot Manager hidden HPFS partition + 17h hidden NTFS partition + 18h AST special Windows swap file ("Zero-Volt Suspend" partition) + 19h Willowtech Photon coS + 1Bh hidden Windows95 FAT32 partition + 1Ch hidden Windows95 FAT32 partition (using LBA-mode INT 13 extensions) + 1Eh hidden LBA VFAT partition + 20h Willowsoft Overture File System (OFS1) + 21h officially listed as reserved + 21h FSo2 + 23h officially listed as reserved + 24h NEC MS-DOS 3.x + 26h officially listed as reserved + 31h officially listed as reserved + 33h officially listed as reserved + 34h officially listed as reserved + 36h officially listed as reserved + 38h Theos + 3Ch PowerQuest PartitionMagic recovery partition + 40h VENIX 80286 + 41h Personal RISC Boot + 41h PowerPC boot partition + 42h SFS (Secure File System) by Peter Gutmann + 45h EUMEL/Elan + 46h EUMEL/Elan + 47h EUMEL/Elan + 48h EUMEL/Elan + 4Fh Oberon boot/data partition + 50h OnTrack Disk Manager, read-only partition + 51h OnTrack Disk Manager, read/write partition + 51h NOVELL + 52h CP/M + 52h Microport System V/386 + 53h OnTrack Disk Manager, write-only partition??? + 54h OnTrack Disk Manager (DDO) + 55h EZ-Drive (see also INT 13/AH=FFh"EZ-Drive") + 56h GoldenBow VFeature + 5Ch Priam EDISK + 61h SpeedStor + 63h Unix SysV/386, 386/ix + 63h Mach, MtXinu BSD 4.3 on Mach + 63h GNU HURD + 64h Novell NetWare 286 + 64h SpeedStore + 65h Novell NetWare (3.11) + 67h Novell + 68h Novell + 69h Novell + 70h DiskSecure Multi-Boot + 71h officially listed as reserved + 73h officially listed as reserved + 74h officially listed as reserved + 75h PC/IX + 76h officially listed as reserved + 7Eh F.I.X. + 80h Minix v1.1 - 1.4a + 81h Minix v1.4b+ + 81h Linux + 81h Mitac Advanced Disk Manager + 82h Linux Swap partition + 82h Prime + 82h Solaris (Unix) + 83h Linux native file system (ext2fs/xiafs) + 84h OS/2-renumbered type 04h partition (related to hiding DOS C: drive) + 85h Linux EXT + 86h FAT16 volume/stripe set (Windows NT) + 87h HPFS Fault-Tolerant mirrored partition + 87h NTFS volume/stripe set + 93h Amoeba file system + 94h Amoeba bad block table + 98h Datalight ROM-DOS SuperBoot + 99h Mylex EISA SCSI + A0h Phoenix NoteBIOS Power Management "Save-to-Disk" partition + A1h officially listed as reserved + A3h officially listed as reserved + A4h officially listed as reserved + A5h FreeBSD, BSD/386 + A6h OpenBSD + A9h NetBSD (http://www.netbsd.org/) + B1h officially listed as reserved + B3h officially listed as reserved + B4h officially listed as reserved + B6h officially listed as reserved + B6h Windows NT mirror set (master), FAT16 file system + B7h BSDI file system (secondarily swap) + B7h Windows NT mirror set (master), NTFS file system + B8h BSDI swap partition (secondarily file system) + BEh Solaris boot partition + C0h DR DOS/DR-DOS/Novell DOS secured partition + C0h CTOS + C1h DR DOS 6.0 LOGIN.EXE-secured 12-bit FAT partition + C4h DR DOS 6.0 LOGIN.EXE-secured 16-bit FAT partition + C6h DR DOS 6.0 LOGIN.EXE-secured Huge partition + C6h corrupted FAT16 volume/stripe set (Windows NT) + C6h Windows NT mirror set (slave), FAT16 file system + C7h Syrinx Boot + C7h corrupted NTFS volume/stripe set + C7h Windows NT mirror set (slave), NTFS file system + CBh Reserved for DR DOS/DR-DOS/OpenDOS secured FAT32 + CCh Reserved for DR DOS/DR-DOS secured FAT32 (LBA) + CEh Reserved for DR DOS/DR-DOS secured FAT16 (LBA) + D0h Multiuser DOS secured FAT12 + D1h Old Multiuser DOS secured FAT12 + D4h Old Multiuser DOS secured FAT16 (<= 32M) + D5h Old Multiuser DOS secured extended partition + D6h Old Multiuser DOS secured FAT16 (> 32M) + D8h CP/M-86 + DBh CP/M, Concurrent CP/M, Concurrent DOS + DBh CTOS (Convergent Technologies OS) + E1h SpeedStor 12-bit FAT extended partition + E2h DOS read-only (Florian Painke's XFDISK 1.0.4) + E3h DOS read-only + E3h Storage Dimensions + E4h SpeedStor 16-bit FAT extended partition + E5h officially listed as reserved + E6h officially listed as reserved + EBh BeOS BFS (BFS1) + F1h Storage Dimensions + F2h DOS 3.3+ secondary partition + F3h officially listed as reserved + F4h SpeedStor + F4h Storage Dimensions + F5h Prologue + F6h officially listed as reserved + FEh LANstep + FEh IBM PS/2 IML (Initial Microcode Load) partition + FFh Xenix bad block table +Note: for partition type 07h, one should inspect the partition boot record + for the actual file system type +SeeAlso: #00651 + +(Table 00653) +Values Bootstrap loader is called with (IBM BIOS): + CS:IP = 0000h:7C00h + DH = access + bits 7-6,4-0: don't care + bit 5: =0 device supported by INT 13 + DL = boot drive + 00h first floppy + 80h first hard disk +--------B-1A00------------------------------- +INT 1A - TIME - GET SYSTEM TIME + AH = 00h +Return: CX:DX = number of clock ticks since midnight + AL = midnight flag, nonzero if midnight passed since time last read +Notes: there are approximately 18.2 clock ticks per second, 1800B0h per 24 hrs + (except on Tandy 2000, where the clock runs at 20 ticks per second) + IBM and many clone BIOSes set the flag for AL rather than incrementing + it, leading to loss of a day if two consecutive midnights pass + without a request for the time (e.g. if the system is on but idle) + since the midnight flag is cleared, if an application calls this + function after midnight before DOS does, DOS will not receive the + midnight flag and will fail to advance the date + Modern releases of MS-DOS/PC DOS (5.0+???) assume that AL is a day + rollover counter rather than a flag, as expected by older releases. + DOS 5 - 7.10 (Windows 98 SE) provide an undocumented CONFIG.SYS + SWITCHES=/T option to force the old behaviour of the day advancing + code, that is using a flag instead of a counter. + DR DOS 3.31 - DR-DOS 7.03 handle AL as a flag. +SeeAlso: AH=01h,AH=02h,INT 21/AH=2Ch,INT 55"Tandy 2000",INT 4E/AH=02h"TI" +SeeAlso: INT 62/AX=0099h,MEM 0040h:006Ch,MEM 0040h:0070h +--------B-1A01------------------------------- +INT 1A - TIME - SET SYSTEM TIME + AH = 01h + CX:DX = number of clock ticks since midnight +Return: nothing +Notes: there are approximately 18.2 clock ticks per second, 1800B0h per 24 hrs + (except on Tandy 2000, where the clock runs at 20 ticks per second) + this call resets the midnight-passed flag +SeeAlso: AH=00h,AH=03h,INT 21/AH=2Dh +--------B-1A02------------------------------- +INT 1A - TIME - GET REAL-TIME CLOCK TIME (AT,XT286,PS) + AH = 02h + CF clear to avoid bug (see below) +Return: CF clear if successful + CH = hour (BCD) + CL = minutes (BCD) + DH = seconds (BCD) + DL = daylight savings flag (00h standard time, 01h daylight time) + CF set on error (i.e. clock not running or in middle of update) +Notes: this function is also supported by the Sperry PC, which predates the + IBM AT; the data is returned in binary rather than BCD on the Sperry, + and DL is always 00h + MS-DOS/PC DOS IO.SYS/IBMBIO.COM use this function to detect if a RTC + is preset by checking if the returned values are non-zero. If they + are, this function is called one more time, before it is assumed + that no RTC is present. +BUG: some BIOSes leave CF unchanged if successful, so CF should be cleared + before calling this function +SeeAlso: AH=00h,AH=03h,AH=04h,INT 21/AH=2Ch +--------b-1A02------------------------------- +INT 1A - Tandy 2000 - TIME - GET DATE AND TIME + AH = 02h +Return: BX = number of days since January 1, 1980 + CH = hours + CL = minutes + DH = seconds + DL = hundredths +SeeAlso: AH=03h"Tandy 2000",INT 55"Tandy 2000" +--------B-1A03------------------------------- +INT 1A - TIME - SET REAL-TIME CLOCK TIME (AT,XT286,PS) + AH = 03h + CH = hour (BCD) + CL = minutes (BCD) + DH = seconds (BCD) + DL = daylight savings flag (00h standard time, 01h daylight time) +Return: nothing +Note: this function is also supported by the Sperry PC, which predates the + IBM AT; the data is specified in binary rather than BCD on the + Sperry, and the value of DL is ignored +SeeAlso: AH=01h,AH=03h,AH=05h,INT 21/AH=2Dh,INT 4B/AH=01h +--------b-1A03------------------------------- +INT 1A - Tandy 2000 - TIME - SET DATE AND TIME + AH = 03h + BX = number of days since January 1, 1980 + CH = hours + CL = minutes + DH = seconds + DL = hundredths +Return: nothing +SeeAlso: AH=02h"Tandy 2000",INT 55"Tandy 2000" +--------B-1A04------------------------------- +INT 1A - TIME - GET REAL-TIME CLOCK DATE (AT,XT286,PS) + AH = 04h + CF clear to avoid bug (see below) +Return: CF clear if successful + CH = century (BCD) + CL = year (BCD) + DH = month (BCD) + DL = day (BCD) + CF set on error +Notes: DR-DOS 7.02 (after 1998-06-06) and 7.03 hook this function and correct + the century to 20xx if the reported year is 1900..1980 to auto-fix + ROM-BIOSes which are not Year 2000 compliant. On a running system, + it would also correct the rollover bug from 1999/12/31 to 2000/01/01. + The latter can be turned off using the new CONFIG.SYS YEAR2000=ON|OFF + command, as hooking INT 1Ah can sometimes cause compatibility + problems with 3rd party software, e.g. NCR/Symbios/LSI Logic-based + SDMS PCI SCSI drivers (including all OEM drivers like from Asus, + Noma, etc.), some Flash-BIOS software like Asus PFLASH, Quarterdeck's + QEMM Stealth and Quick-Boot features. + Using EXCLUDESTEALTHINT=1A, though, will allow QEMM's Stealth features + to coexist with the DR-DOS Year 2000 rollover support. + Actually, the Y2K-fix is provided since OpenDOS 7.02 BETA 2+ + (1997-08-13), but although these older releases corrected the + ROM-BIOS, they didn't pass all Y2K-test suites and had some obscure + and inexplicable PCI problems due to the fact that the original + INT 1Ah was called via indirect means. Newer releases, however, use + a dynamically fixed-up direct jump to avoid these problems. + PC DOS 7 plus Y2K fixes and PC DOS 2000 provide similar, though not + identical means, which cannot be switched off. + MS-DOS and older issues of PC DOS do not provide any such means, and + thus requires extra Y2K-TSRs to be loaded when run on buggy BIOSes. +BUG: some BIOSes, such as the 1998/07/25 system ROM in the Compaq Deskpro + EP/SB, leave CF unchanged if successful, so CF should be cleared + before calling this function +SeeAlso: AH=02h,AH=04h"Sperry",AH=05h,INT 21/AH=2Ah,INT 4B/AH=02h"TI" +--------b-1A04------------------------------- +INT 1A - Sperry PC - GET REAL-TIME CLOCK DATE + AH = 04h +Return: CF clear if successful + CL = year-1980 + DH = month (binary) (01h-0Ch) + DL = day (binary) (01h-1Fh) + CF set on error +SeeAlso: AH=02h,AH=04h,AH=05h"Sperry",INT 21/AH=2Ah,INT 4B/AH=02h"TI" +----------1A04--CX4555----------------------- +INT 1A - CheckIt Year 2000 Fix v2.06 - INSTALLATION CHECK + AH = 04h + CX = 4555h ('EU') + DX = 524Fh ('RO') + BX = 0000h +Return: BX <> 0000h if installed + BX = major/minor/sub version (2068h = version 2.06.8) +Program: CheckIt is a TSR by Eurosoft (UK) Ltd. which corrects some Y2K-related + RTC bugs +--------B-1A05------------------------------- +INT 1A - TIME - SET REAL-TIME CLOCK DATE (AT,XT286,PS) + AH = 05h + CH = century (BCD) + CL = year (BCD) + DH = month (BCD) + DL = day (BCD) +Return: nothing +SeeAlso: AH=04h,INT 21/AH=2Bh"DATE",INT 4B/AH=00h"TI" +--------b-1A05------------------------------- +INT 1A - Sperry PC - SET REAL-TIME CLOCK DATE + AH = 05h + CL = year-1980 + CH = 00h (???) + DH = month (binary) (01h-0Ch) + DL = day (binary) (01h-1Fh) +Return: nothing +SeeAlso: AH=02h,AH=04h"Sperry",AH=05h,INT 21/AH=2Bh"DATE" +--------B-1A06------------------------------- +INT 1A - TIME - SET ALARM (AT,XT286,PS) + AH = 06h + CH = hour (BCD) + CL = minutes (BCD) + DH = seconds (BCD) +Return: CF set on error (alarm already set or clock stopped for update) + CF clear if successful +Notes: the alarm occurs every 24 hours until turned off, invoking INT 4A each + time + the BIOS does not check for invalid values for the time, so the CMOS + clock chip's "don't care" setting (any values between C0h and FFh) + may be used for any or all three parts. For example, to create an + alarm once a minute, every minute, call with CH=FFh, CL=FFh, and + DH=00h. +SeeAlso: AH=07h,AH=0Ch,INT 4A"SYSTEM" +--------B-1A07------------------------------- +INT 1A - TIME - CANCEL ALARM (AT,XT286,PS) + AH = 07h +Return: alarm disabled +Note: does not disable the real-time clock's IRQ +SeeAlso: AH=06h,AH=0Dh,INT 70 +--------B-1A08------------------------------- +INT 1A - TIME - SET RTC ACTIVATED POWER ON MODE (CONVERTIBLE) + AH = 08h + CH = hours in BCD + CL = minutes in BCD + DH = seconds in BCD +SeeAlso: AH=09h +--------B-1A09------------------------------- +INT 1A - TIME - READ RTC ALARM TIME AND STATUS (CONV,PS30) + AH = 09h +Return: CH = hours in BCD + CL = minutes in BCD + DH = seconds in BCD + DL = alarm status + 00h alarm not enabled + 01h alarm enabled but will not power up system + 02h alarm will power up system +SeeAlso: AH=08h +--------B-1A0A------------------------------- +INT 1A - TIME - READ SYSTEM-TIMER DAY COUNTER (XT2,PS) + AH = 0Ah +Return: CF set on error + CF clear if successful + CX = count of days since Jan 1,1980 +SeeAlso: AH=04h,AH=0Bh +--------B-1A0B------------------------------- +INT 1A - TIME - SET SYSTEM-TIMER DAY COUNTER (XT2,PS) + AH = 0Bh + CX = count of days since Jan 1,1980 +Return: CF set on error + CF clear if successful +SeeAlso: AH=05h,AH=0Ah +--------B-1A0C------------------------------- +INT 1A - TIME - SET RTC DATE/TIME ACTIVATED POWER-ON MODE (IBM) + AH = 0Ch + CH = hours (BCD) + CL = minutes (BCD) + DH = seconds (BCD) + DL = day of month (BCD) +Return: CF clear if successful + CF set on error (alarm already set or clock nonfunctional) +Desc: set an automatic power-on for a given time in the future +Note: IBM classifies this function as optional +SeeAlso: AH=06h,AH=0Dh,AH=0Eh,INT 4A +--------B-1A0D------------------------------- +INT 1A - TIME - RESET RTC DATE/TIME ACTIVATED POWER-ON MODE (IBM) + AH = 0Dh +Return: CF clear if successful + CF set on error +Desc: cancel a previously-set power-on alarm +Note: IBM classifies this function as optional +SeeAlso: AH=07h,AH=0Ch,AH=0Eh +--------B-1A0E------------------------------- +INT 1A - TIME - GET RTC DATE/TIME ALARM AND STATUS (IBM) + AH = 0Eh +Return: CF clear if successful + BH = alarm status + 00h disabled + 01h enabled but will not power-up system + 02h enabled, system will power-up on activation + CH = alarm time, hours (BCD) + CL = alarm time, minutes (BCD) + DH = seconds (BCD) + DL = day of month (BCD) + CF set on error +SeeAlso: AH=0Ch,AH=0Dh,AH=0Fh +--------B-1A0F------------------------------- +INT 1A - TIME - INITIALIZE REAL-TIME CLOCK + AH = 0Fh + AL = reserved (0) +Return: CF clear if successful + CF set on error +SeeAlso: AH=0Ch,AH=0Dh,AH=0Eh +--------J-1A10------------------------------- +INT 1A - NEC PC-9800 series - PRINTER - INITIALIZE + AH = 10h + ??? +Return: ??? +SeeAlso: AH=11h,AH=12h,INT 17/AH=01h +--------J-1A1000----------------------------- +INT 1A - NEC PC-9800 series - INSTALLATION CHECK + AX = 1000h +Return: AX <> 1000h if NEC +--------J-1A11------------------------------- +INT 1A - NEC PC-9800 series - PRINTER - OUTPUT CHARACTER + AH = 11h + ??? +Return: ??? +SeeAlso: AH=10h,AH=12h,INT 17/AH=00h +--------J-1A12------------------------------- +INT 1A - NEC PC-9800 series - PRINTER - SENSE STATUS + AH = 12h + ??? +Return: ??? +SeeAlso: AH=10h,AH=11h,INT 17/AH=02h +--------A-1A3601----------------------------- +INT 1A - WORD PERFECT v5.0 Third Party Interface - INSTALLATION CHECK + AX = 3601h +Return: DS:SI = routine to monitor keyboard input, immediately preceded by the + ASCIZ string "WPCORP\0" +Notes: WordPerfect 5.0 will call this interrupt at start up to determine if a + third party product wants to interface with it. The third party + product must intercept this interrupt and return the address of a + keyboard monitor routine. + Before checking for keyboard input, and after every key entered by the + user, Word Perfect will call the routine whose address was provided + in DS:SI with the following parameters: + Entry: AX = key code or 0 + BX = WordPerfect state flag + Exit: AX = 0 or key code + BX = 0 or segment address of buffer with key codes + See the "WordPerfect 5.0 Developer's Toolkit" for further information. +SeeAlso: INT 16/AX=5500h +--------N-1A6108----------------------------- +INT 1A - SNAP.EXE 3.2+ - "SNAP_SENDWITHREPLY" - SEND MSG AND GET REPLY + AX = 6108h + STACK: WORD conversation ID (0000h-0009h) + DWORD pointer to message buffer + WORD length of message + DWORD pointer to reply buffer + WORD length of reply buffer + WORD 0000h (use default "Cparams" structure) +Return: AX = status (see #00654) + STACK unchanged +Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University + which implements the Simple Network Application Protocol +SeeAlso: AX=6205h + +(Table 00654) +Values for SNAP.EXE status: + 0000h successful + F830h "SNAP_ABORTED" + FC04h "SNAP_SERVERDIED" + FC05h "SNAP_RESEND" + FC06h "SNAP_SELECTFAILED" + FC07h "SNAP_WRONGVERSION" + FC08h "SNAP_INVALIDACK" + FC09h "SNAP_TIMEOUT" + FC0Ah "SNAP_SERVERREJECT" + FC0Bh "SNAP_NOREPLYDUE" + FC0Ch "SNAP_NOAUTHENTICATE"/"SNAP_GUARDIAN_ERROR" + FC0Dh "SNAP_NOINIT" + FC0Eh "SNAP_SOCKETERROR" + FC0Fh "SNAP_BUFFERLIMIT" + FC10h "SNAP_INVALIDCID" + FC11h "SNAP_INVALIDOP" + FC12h "SNAP_XMITFAIL" + FC13h "SNAP_NOMORERETRIES" + FC14h "SNAP_BADPARMS" + FC15h "SNAP_NOMEMORY" + FC16h "SNAP_NOMORECONVS" + FFFFh failed (invalid function/parameter) +--------N-1A6205----------------------------- +INT 1A - SNAP.EXE 3.2+ - "SNAP_SENDNOREPLY" - SEND MSG, DON'T AWAIT REPLY + AX = 6205h + STACK: WORD conversation ID (0000h-0009h) + DWORD pointer to message + WORD length of message + WORD 0000h (use default "Cparms" structure) +Return: AX = status (see #00654) + STACK unchanged +SeeAlso: AX=6108h +--------N-1A6308----------------------------- +INT 1A - SNAP.EXE 3.2+ - "SNAP_BEGINCONV" - BEGIN CONVERSATION + AX = 6308h + STACK: WORD offset of ASCIZ "guardian" + WORD offset of ASCIZ hostname + WORD offset of ASCIZ server name + WORD offset of ASCIZ userid + WORD offset of ASCIZ password + WORD offset of password length + WORD offset of password type + WORD offset of "Cparms" structure (see #00655) +Return: ??? + STACK unchanged +Note: all stacked offsets are within the SNAP data segment (use AX=6A01h + to allocate a buffer) +SeeAlso: AX=6405h,AX=7202h + +Format of SNAP.EXE Cparms structure: +Offset Size Description (Table 00655) + 00h WORD retry delay in seconds + 02h WORD timeout delay in seconds + 04h WORD maximum buffer size + 06h WORD encryption level +--------N-1A6405----------------------------- +INT 1A - SNAP.EXE 3.2+ - "SNAP_ENDCONV" - END CONVERSATION + AX = 6405h + STACK: WORD conversation ID (0000h-0009h) + DWORD pointer to message buffer + WORD length of message + WORD 0000h (use default "Cparms" structure) +Return: AX = status (see #00654) + STACK unchanged +Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University + which implements the Simple Network Application Protocol +SeeAlso: AX=6308h +--------N-1A6900----------------------------- +INT 1A - SNAP.EXE 3.2+ - "SNAP_DATASEG" - GET RESIDENT DATA SEGMENT + AX = 6900h +Return: AX = value used for DS by resident code +SeeAlso: AX=6A01h,AX=6F01h +--------N-1A6A01----------------------------- +INT 1A - SNAP.EXE 3.2+ - "SNAP_ALLOC" - ALLOCATE BUFFER IN SNAP DATA SEGMENT + AX = 6A01h + STACK: WORD number of bytes to allocate +Return: AX = offset of allocated buffer or 0000h if out of memory + STACK unchanged +Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University + which implements the Simple Network Application Protocol +SeeAlso: AX=6B01h +--------N-1A6B01----------------------------- +INT 1A - SNAP.EXE 3.2+ - "SNAP_FREE" - DEALLOCATE BUFFER IN SNAP DATA SEGMENT + AX = 6B01h + STACK: WORD offset within SNAP data segment of previously allocated + buffer +Return: STACK unchanged +Note: this call is a NOP if the specified offset is 0000h +SeeAlso: AX=6A01h +--------N-1A6C04----------------------------- +INT 1A - SNAP.EXE 3.2+ - "SNAP_COPYTO" - COPY DATA TO RESIDENT SNAP PACKAGE + AX = 6C04h + STACK: WORD offset within SNAP data segment of dest (nonzero) + WORD segment of source buffer + WORD offset of source buffer + WORD number of bytes to copy +Return: AX = offset of byte after last one copied to destination + STACK unchanged +Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University + which implements the Simple Network Application Protocol +SeeAlso: AX=6D04h +--------N-1A6D04----------------------------- +INT 1A - SNAP.EXE 3.2+ - "SNAP_COPYFROM" - COPY DATA FROM RESIDENT SNAP PACKAGE + AX = 6D04h + STACK: WORD offset within SNAP data segment of source buffer + WORD segment of destination buffer + WORD offset of destination buffer + WORD number of bytes to copy +Return: AX = offset of byte after last one copied from source + buffer filled + STACK unchanged +SeeAlso: AX=6C04h +--------N-1A6E01----------------------------- +INT 1A - SNAP.EXE 3.2+ - "SNAP_SETDEBUG" - SET ??? + AX = 6E01h + STACK: WORD new value for ??? +Return: AX = old value of ??? + STACK unchanged +Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University + which implements the Simple Network Application Protocol +--------N-1A6F01----------------------------- +INT 1A - SNAP.EXE 3.2+ - "SNAP_CHKINSTALL" - INSTALLATION CHECK + AX = 6F01h + STACK: WORD 0000h +Return: AX = status + 0000h SNAP is resident + other SNAP not present + STACK unchanged +Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University + which implements the Simple Network Application Protocol, and is + required by PCVENUS (a network shell). The combination of SNAP and + PCVENUS allows the use of the Andrew File System as one or more + networked drives. +SeeAlso: AX=6900h,AX=7400h +--------N-1A7002----------------------------- +INT 1A - SNAP.EXE 3.2+ - "SNAP_SETANCHOR" + AX = 7002h + STACK: WORD anchor number (0000h-0009h) + WORD new value for the anchor +Return: AX = status + 0000h successful + FFFFh failed (top word on stack not in range 00h-09h) + STACK unchanged +SeeAlso: AX=7101h +--------N-1A7101----------------------------- +INT 1A - SNAP.EXE 3.2+ - "SNAP_GETANCHOR" + AX = 7101h + STACK: WORD anchor number (0000h-0009h) +Return: AX = anchor's value + STACK unchanged +Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University + which implements the Simple Network Application Protocol +SeeAlso: AX=7002h +--------N-1A7202----------------------------- +INT 1A - SNAP.EXE 3.2+ - "SNAP_SETCONVPARMS" - SET CONVERSATION PARAMETERS + AX = 7202h + STACK: WORD conversation ID (0000h-0009h) + WORD offset within resident data segment of "Cparms" + structure (see #00655) +Return: AX = status??? + STACK unchanged +SeeAlso: AX=6308h +--------N-1A7302----------------------------- +INT 1A - SNAP.EXE 3.2+ - "SNAP_CLIENTVERSION" - ??? + AX = 7302h + STACK: WORD conversation ID (0000h-0009h) + WORD offset within resident data segment of ??? +Return: AX = ??? + ??? + STACK unchanged +SeeAlso: AX=7400h +--------N-1A7400----------------------------- +INT 1A - SNAP.EXE 3.2+ - "SNAP_VERSION" - GET VERSION + AX = 7400h +Return: AX = version (AH=major, AL=minor) +Note: this call is only valid if SNAP is installed +SeeAlso: AX=7302h,INT 1A/AX=6F01h +--------N-1A75------------------------------- +INT 1A - SNAP.EXE 3.2+ - "SNAP_NOP" - ??? + AH = 75h + AL = ??? +Return: AX = ??? (0000h) +Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University + which implements the Simple Network Application Protocol +--------N-1A76------------------------------- +INT 1A - SNAP.EXE 3.2+ - "SNAP_802_5" - ??? + AH = 76h + AL = ??? +Return: AX = ??? +--------N-1A77------------------------------- +INT 1A - SNAP.EXE 3.4 - ??? + AH = 77h + AL = ??? (at least 01h) + STACK: WORD ??? + ??? +Return: ??? + STACK unchanged +--------N-1A7802----------------------------- +INT 1A - SNAP.EXE 3.4 - ??? + AX = 7802h + STACK: WORD ??? + WORD ??? +Return: ??? + STACK unchanged +Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University + which implements the Simple Network Application Protocol +--------s-1A7F------------------------------- +INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND??? + AH = 7Fh + ??? +Return: ??? +Note: this function is not supported by the Tandy 1000SL/TL BIOS +SeeAlso: AH=80h,AH=83h,AH=85h +--------s-1A80------------------------------- +INT 1A - PCjr, Tandy 2500???, Tandy 1000SL/TL - SET UP SOUND MULTIPLEXOR + AH = 80h + AL = 00h source is 8253 channel 2 + 01h source is cassette input + 02h source is I/O channel "Audio IN" + 03h source is sound generator chip +Note: although documented in the 1000TL Technical Reference, the 1000TL + BIOS has just an IRET for this call +SeeAlso: AH=7Fh,AH=83h +--------X-1A80------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - GET NUMBER OF ADAPTERS + AH = 80h +Return: CF clear if successful + CX = 5353h ('SS') if Socket Services installed + AL = number of adapters present (0-16) + AH destroyed + CF set on error + AH = error code (see #00656) +SeeAlso: AH=83h"PCMCIA" + +(Table 00656) +Values for PCMCIA error codes: + 01h "BAD_ADAPTER" nonexistent adapter + 02h "BAD_ATTRIBUTE" invalid attribute specified + 03h "BAD_BASE" invalid system memory base address + 04h "BAD_EDC" invalid EDC generator specified + 05h "BAD_INDICATOR" invalid indicator specified + 06h "BAD_IRQ" invalid IRQ channel specified + 07h "BAD_OFFSET" invalid PCMCIA card offset specified + 08h "BAD_PAGE" invalid page specified + 09h "BAD_READ" unable to complete request + 0Ah "BAD_SIZE" invalid window size specified + 0Bh "BAD_SOCKET" nonexistent socket specified + 0Ch "BAD_TECHNOLOGY" unsupported Card Technology for writes + 0Dh "BAD_TYPE" unavailable window type specified + 0Eh "BAD_VCC" invalid Vcc power level index specified + 0Fh "BAD_VPP" invalid Vpp1 or Vpp2 power level index specified + 10h "BAD_WAIT" invalid number of wait states specified + 11h "BAD_WINDOW" nonexistent window specified + 12h "BAD_WRITE" unable to complete request + 13h "NO_ADAPTERS" no adapters installed, but Socket Services is present + 14h "NO_CARD" no card in socket + 15h function not supported + 16h invalid mode + 17h invalid speed + 18h busy +--------X-1A81------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - REGISTER STATUS CHANGE CALLBACK + AH = 81h + DS:DX -> callback routine (see #00657) or 0000h:0000h to disable +Return: CF clear if successful + AH destroyed + CF set on error + AH = error code (see #00656) +Note: the callback will be invoked on any socket changes whose notification + has not been disabled with the status change enable mask; it may be + invoked either while processing a hardware interrupt from the adapter + or while processing the following Socket Services request +SeeAlso: AH=80h"PCMCIA",AH=82h"PCMCIA" + +(Table 00657) +Values PCMCIA callback routine is invoked with: + AL = adapter number + BH = status change interrupt enable mask (see #00658) + BL = socket number + DH = current socket status (see #00659) + DL = current card status (see #00660) +Return: all registers preserved +Notes: the callback may be invoked during a hardware interrupt, and may not + call on Socket Services + the callback will be invoked once for each socket with a status change + +Bitfields for PCMCIA status change interrupt enable mask: +Bit(s) Description (Table 00658) + 7 card detect change + 6 ready change + 5 battery warning change + 4 battery dead change + 3 insertion request + 2 ejection request + 1-0 reserved (0) + +Bitfields for PCMCIA current socket status: +Bit(s) Description (Table 00659) + 7 card changed + 6 reserved (0) + 5 card insertion complete + 4 card ejection complete + 3 card insertion request pending + 2 card ejection request pending + 1 card locked + 0 reserved (0) + +Bitfields for PCMCIA current card status: +Bit(s) Description (Table 00660) + 7 card detect + 6 ready + 5 battery voltage detect 2 (battery warning) + 4 battery voltage detect 1 (battery dead) + 3-1 reserved (0) + 0 write protected +--------s-1A8100----------------------------- +INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND - INSTALLATION CHECK + AX = 8100h +Return: AL > 80h if supported + AX = 00C4h if supported (1000SL/TL) + CF set if sound chip is busy + CF clear if sound chip is free +Note: the value of CF is not definitive; call this function until CF is + clear on return, then call AH=84h"Tandy" +--------s-1A82------------------------------- +INT 1A - Tandy 2500???, Tandy 1000SL/TL - DIGITAL SOUND - RECORD SOUND + AH = 82h + ES:BX -> buffer for sound samples + CX = length of buffer + DX = transfer rate (1-4095, 1 is fastest) +Return: AH = 00h + CF set if sound busy + CF clear if sound chip free +Note: the value in DX should be 1/10 the corresponding value for + INT 1A/AH=83h on the 1000TL, 1/11.5 on the 1000SL. Call + INT 1A/AX=8100h and INT 1A/AH=84h before invoking this function. + The BIOS issues an INT 15/AX=91FBh when the input is complete + DMA across a 64K boundary is masked by the BIOS +--------X-1A82------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - REGISTER CARD TECHNOLOGY CALLBACK + AH = 82h + DS:DX -> callback routine (see #00661) or 0000h:0000h +Return: CF clear if successful + AH destroyed + CF set on error + AH = error code (see #00656) +Note: the callback is invoked on a Write Multiple request with an unsupported + card technology type +SeeAlso: AH=81h"PCMCIA",AH=94h + +(Table 00661) +Values PCMCIA callback routine is invoked with: + ES:AX -> Low-Level Socket Services Routines (see #00663) + BH = socket attributes (see #00662) + CX = number of bytes or words to write + DS:SI -> data buffer to be written + DX:DI -> 26-bit linear card address + BP = card technology type +Return: CF clear if successful + CF set on error + AH = error code (07h,0Ch,12h,14h) (see #00656) + +Bitfields for PCMCIA socket attributes: +Bit(s) Description (Table 00662) + 7-4 reserved (0) + 3 packed buffer + 2 even bytes only (only valid if 1 set) + 1 data width (clear = byte, set = word) + 0 memory type (clear = common, set = attribute) + +Format of PCMCIA Low-Level Socket Services Routines: +Offset Size Description (Table 00663) + 00h WORD offset of Write Many routine (see #00664) + 02h WORD offset of Write One routine (see #00665) + 04h WORD offset of Read One routine (see #00666) + 06h WORD offset of Increment Offset routine (see #00667) + 08h WORD offset of Set Offset routine (see #00668) + 0Ah WORD offset of Get Status routine (see #00669) + +(Table 00664) +Call Write Many routine with: + BH = socket attributes (see #00662) + CX = number of bytes or words to write + DS:SI -> data to be written +Return: CF clear if successful + CF set on error + +(Table 00665) +Call Write One routine with: + AL/AX = data to be written + BH = socket attributes (see #00662) +Return: CF clear if successful + CF set on error + +(Table 00666) +Call Read One routine with: + BH = socket attributes (see #00662) +Return: CF clear if successful + AL/AX = data read + CF set on error + +(Table 00667) +Call Increment Offset routine with: + BH = socket attributes (see #00662) +Return: CF clear if successful + CF set on error + +(Table 00668) +Call Set Offset routine with: + DX:DI = new offset address +Return: CF clear if successful + CF set on error + +(Table 00669) +Call Get Status routine with: + nothing +Return: AL = current card status (see #00660) +--------s-1A83------------------------------- +INT 1A - Tandy 2500, Tandy 1000L series - START PLAYING DIGITAL SOUND + AH = 83h + AL = volume (0=silence, 7=highest) + CX = number of bytes to play + DX = time between sound samples (multiples of 273 nanoseconds) + only bits 11-0 used + ES:BX -> sound data (array of 8-bit unsigned PCM samples) +Return: AH = 00h + CF set if sound is busy + CF clear if sound chip is free +Notes: this call returns immediately while the sound plays in the + background; the sound chip is clocked at 3.57 MHz, with the low 12 + bits of DX specifying the clock divisor + The BIOS appears to call INT 15/AX=91FBh when the sound device + underflows to allow another INT 1A/AH=83h for seamless playing of + long sounds. +SeeAlso: AH=84h"Tandy",INT 15/AH=91h +--------X-1A83------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - GET SOCKET SERVICES VERSION NUMBER + AH = 83h + AL = adapter number +Return: CF clear if successful + AX = Socket Services version (BCD) + BX = implementation version (BCD) + CX = 5353h ("SS") + DS:SI -> ASCIZ implementor description + CF set on error + AH = error code (01h) (see #00656) +Note: the current version (from the Revision A.00 documentation) of Socket + Services is 1.00 (AX=0100h) +SeeAlso: AH=80h"PCMCIA" +--------s-1A84------------------------------- +INT 1A - Tandy 2500, Tandy 1000L series - STOP PLAYING DIGITAL SOUND + AH = 84h +Return: ??? +Note: the BIOS will call INT 15/AX=91FBh when the sound has stopped playing +SeeAlso: AH=83h"Tandy",AH=85h"Tandy" +--------X-1A84------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - INQUIRE ADAPTER + AH = 84h + AL = adapter number +Return: CF clear if successful + AH destroyed + BH = number of windows + BL = number of sockets (1-16) + CX = number of EDCs + DH = capabilities (see #00670) + DL = status change interrupt used (only if DH bit 3 set)(see #00671) + CF set on error + AH = error code (01h) (see #00656) +SeeAlso: AH=80h"PCMCIA",AH=85h"PCMCIA",AH=87h + +Bitfields for PCMCIA capabilities: +Bit(s) Description (Table 00670) + 7-6 reserved (0) + 5 status change interrupt is hardware shareable + 4 status change interrupt is software shareable + 3 status change interrupt + 2 data bus width is per-socket rather than per-window + 1 power management is per-adapter rather than per-socket + 0 indicators are per-adapter rather than per-socket + +(Table 00671) +Values for PCMCIA status change interrupt usage: + 00h-0Fh IRQ level + 10h NMI + 11h I/O check + 12h bus error + 13h vendor specific + 14h-FFh reserved +--------s-1A85------------------------------- +INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND??? + AH = 85h + ??? +Return: ??? +Note: this function is not supported by the Tandy 1000SL/TL BIOS +SeeAlso: AH=7Fh,AH=83h"Tandy" +--------X-1A85------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - GET ADAPTER + AH = 85h + AL = adapter number +Return: CF clear if successful + AH destroyed + DH = adapter attributes (see #00672) + CF set on error + AH = error code (01h) (see #00656) +SeeAlso: AH=84h"PCMCIA",AH=86h + +Bitfields for PCMCIA adapter attributes: +Bit(s) Description (Table 00672) + 7-5 reserved (0) + 4 hardware share status change + 3 software share status change + 2 enable status change interrupts + 1 adapter preserves state information during reduced power consumption + 0 attempting to reduce power consumption +--------X-1A86------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - SET ADAPTER + AH = 86h + AL = adapter number + DH = new adapter attributes (see #00672) +Return: CF clear if successful + AH destroyed + CF set on error + AH = error code (01h) (see #00656) +SeeAlso: AH=84h"PCMCIA",AH=85h"PCMCIA" +--------X-1A87------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - INQUIRE WINDOW + AH = 87h + AL = adapter number + BH = window number +Return: CF clear if successful + AH destroyed + BL = capabilities (see #00673) + CX = bitmap of assignable sockets + DH = EISA A15-A12 address lines (in bits 7-4, bits 3-0 = 0) + DL = supported access speeds (see #00674) + DS:SI -> Memory Window Characteristics table (see #00675) + DS:DI -> I/O Window Characteristics table (see #00676) + CF set on error + AH = error code (01h,11h) (see #00656) +SeeAlso: AH=84h"PCMCIA",AH=88h,AH=89h,AH=8Ch + +Bitfields for PCMCIA window capabilities: +Bit(s) Description (Table 00673) + 7-5 reserved (0) + 4 separate enable for EISA comon space + 3 EISA I/O mappable + 2 I/O space + 1 attribute memory + 0 common memory + +Bitfields for PCMCIA supported access speeds: +Bit(s) Description (Table 00674) + 7 reserved (0) + 6 600 ns + 5 300 ns + 4 250 ns + 3 200 ns + 2 150 ns + 1 100 ns + 0 WAIT line monitoring + +Format of PCMCIA Memory Window Characteristics table: +Offset Size Description (Table 00675) + 00h WORD window capabilities (see #00677) + 02h WORD minimum base address in 4K pages + 04h WORD maximum base address in 4K pages + 06h WORD minimum window size in 4K pages + 08h WORD maximum window size in 4K pages + 0Ah WORD window size granularity (4K units) + 0Ch WORD required base address alignment (4K units) + 0Eh WORD required card offset alignment (4K units) + +Format of PCMCIA I/O Window Characteristics table: +Offset Size Description (Table 00676) + 00h WORD window capabilities (see #00677) + 02h WORD minimum base address in bytes + 04h WORD maximum base address in bytes + 06h WORD minimum window size in bytes + 08h WORD maximum window size in bytes + 0Ah WORD window size granularity (bytes) + +Bitfields for PCMCIA window capabilities: +Bit(s) Description (Table 00677) + 0 programmable base address + 1 programmable window size + 2 window disable/enable supported + 3 8-data bus + 4 16-data bus + 5 base address alignment on size boundary required + 6 power-of-two size granularity +---memory windows--- + 7 card offset must be aligned on size boundary + 8 paging hardware available + 9 paging hardware shared + 10 page disable/enable supported + 11-15 reserved (0) +---I/O windows--- + 7-15 reserved (0) +--------X-1A88------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - GET WINDOW + AH = 88h + AL = adapter number + BH = window number +Return: CF clear if successful + AH destroyed + BL = socket number (0-16) (0 = not assigned) + CX = window size (bytes for I/O window, 4K units for memory window) + DH = window attributes (see #00678) + DL = access speed (only one bit set) (see #00674) + SI = window base address (bytes if I/O, 4K units if memory) + DI = card offset address (memory only, 4K units) + CF set on error + AH = error code (01h,11h) (see #00656) +SeeAlso: AH=87h,AH=89h,AH=8Ah + +Bitfields for PCMCIA window attributes: +Bit(s) Description (Table 00678) + 0 memory-mapped rather than I/O-mapped + 1 attribute memory rather than common (memory-mapped) + EISA mapped (I/O) + 2 enabled + 3 16-data path + 4 subdivided into pages (memory-mapped only) + 5 non-specific access slot enable (EISA-mapped only) + 6-7 reserved (0) +--------X-1A89------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - SET WINDOW + AH = 89h + AL = adapter number + BH = window number + BL = socket number + CX = window size (bytes if I/O window, 4K units if memory window) + DH = window attributes (see #00678) + DL = access speed (only one bit set) (see #00674) + SI = window base address (bytes if I/O, 4K units if memory window) + DI = card offset addrress (memory only, 4K units) +Return: CF clear if successful + AH destroyed + CF set on error + AH = error code (01h,03h,07h,08h,0Ah,0Bh,0Dh,10h,11h) (see #00656) +SeeAlso: AH=87h,AH=88h,AH=8Bh +--------X-1A8A------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - GET PAGE + AH = 8Ah + AL = adapter number + BH = window number + BL = page number +Return: CF clear if successful + AH destroyed + DX = page attributes (see #00679) + DI = memory card offset (4K units) + CF set on error + AH = error code (01h,08h,11h) (see #00656) +Notes: this function is only valid for memory-mapped windows + the socket being operated on is implied by the previous AH=89h call +SeeAlso: AH=88h,AH=8Bh + +Bitfields for PCMCIA page attributes: +Bit(s) Description (Table 00679) + 0 page enabled + 15-1 reserved (0) +--------X-1A8B------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - SET PAGE + AH = 8Bh + AL = adapter number + BH = window number + BL = page number + DX = page attributes (see #00679) + DI = memory card offset (4K units) +Return: CF clear if successful + AH destroyed + CF set on error + AH = error code (01h,02h,07h,08h,11h) (see #00656) +Notes: this function is only valid for memory-mapped windows + the socket being operated on is implied by the previous AH=89h call +SeeAlso: AH=89h,AH=8Ah +--------X-1A8C------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - INQUIRE SOCKET + AH = 8Ch + AL = adapter number + BL = socket number (01h to maximum supported by adapter) +Return: CF clear if successful + AH destroyed + DH = capabilities (see #00680) + DL = hardware indicators (see #00681) + DS:SI -> Socket Characteristics table (see #00682) + DS:DI -> Power Management table (see #00684) + CF set on error + AH = error code (01h,0Bh) (see #00656) +SeeAlso: AH=87h,AH=8Dh,AH=8Eh + +Bitfields for PCMCIA socket capabilities: +Bit(s) Description (Table 00680) + 0 card change + 1 card lock + 2 insert card (motor control) + 3 eject card (motor control) + 4-7 reserved (0) + +Bitfields for PCMCIA socket hardware indicators: +Bit(s) Description (Table 00681) + 0 busy status + 1 write-protected + 2 battery status + 3 card lock status + 4 XIP status (eXecute-In-Place) + 5-7 reserved (0) + +Format of PCMCIA Socket Characteristics table: +Offset Size Description (Table 00682) + 00h WORD supported card types (see #00683) + 02h WORD steerable IRQ levels (bit 0 = IRQ0 to bit 15 = IRQ15) + 04h WORD additional steerable IRQ levels + bit 0: NMI + bit 1: I/O check + bit 2: bus error + bit 3: vendor-unique + bits 4-7 reserved (0) + +Bitfields for supported card types: +Bit(s) Description (Table 00683) + 0 memory card + 1 I/O card + 2-7 reserved (0) + +Format of PCMCIA Power Management table: +Offset Size Description (Table 00684) + 00h WORD number of entries in table (0 if power management not avail) + 02h 2N BYTEs power levels + byte 0: voltage in 0.1V units + byte 1: power supply + bit 7: Vcc + bit 6: Vpp1 + bit 5: Vpp2 +--------X-1A8D------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - GET SOCKET + AH = 8Dh + AL = adapter number + BL = socket number (01h to maximum supported by adapter) +Return: CF clear if successful + AH destroyed + BH = status change interrupt enable mask (see #00658) + CH = Vcc level (lower nybble) (see #00684) + CL = Vpp1 level (upper nybble) and Vpp2 level (lower nybble) + DH = current socket status (see #00659) + DL = indicators (see #00681) + SI = card type (see #00685) + DI = IRQ level steering (I/O only) (see #00686) + CF set on error + AH = error code (01h,0Bh) (see #00656) +SeeAlso: AH=8Ch,AH=8Eh + +Bitfields for PCMCIA card type: +Bit(s) Description (Table 00685) + 0 memory + 1 I/O + 2-15 reserved (0) + +Bitfields for PCMCIA I/O level steering: +Bit(s) Description (Table 00686) + 15 interrupt steering enabled + 14-5 reserved (0) + 4-0 IRQ level (0-15=IRQ,16=NMI,17=I/O check,18=bus error,19=vendor) +--------X-1A8E------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - SET SOCKET + AH = 8Eh + AL = adapter number + BL = socket number (01h to maximum supported by adapter) + BH = status change interrupt enable mask (see #00658) + CL = Vpp1 level (upper nybble) and Vpp2 level (lower nybble) + DH = current socket status (see #00659) + DL = indicators (see #00681) + SI = card type (see #00685) + DI = IRQ level steering (I/O only) (see #00686) +Return: CF clear if successful + AH destroyed + CF set on error + AH = error code (01h,02h,05h,06h,0Bh,0Eh,0Fh) (see #00656) +SeeAlso: AH=8Ch,AH=8Dh +--------X-1A8F------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - GET CARD + AH = 8Fh + AL = adapter number + BL = socket number (01h to maximum supported by adapter) +Return: CF clear if successful + AH destroyed + DL = current card status (see #00660) + CF set on error + AH = error code (01h,0Bh) (see #00656) +SeeAlso: AH=8Dh,AH=90h +--------X-1A90------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - RESET CARD + AH = 90h + AL = adapter number + BL = socket number (01h to maximum supported by adapter) +Return: CF clear if successful + AH destroyed + CF set on error + AH = error code (01h,0Bh,14h) (see #00656) +Note: toggles RESET pin of the specified card, but does not wait after + toggling the pin; it is the caller's responsibility to avoid + accessing the card before it is ready again +--------X-1A91------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - READ ONE + AH = 91h + AL = adapter number + BL = socket number (01h to maximum supported by adapter) + BH = attributes (see #00687) + DX:SI = card address +Return: CF clear if successful + AH destroyed + CL/CX = value read + CF set on error + AH = error code (01h,07h,09h,0Bh,14h) (see #00656) + CX may be destroyed +Note: this function is only valid for I/O-mapped sockets +SeeAlso: AH=92h,AH=93h,INT 21/AX=440Dh"DOS 3.2+" + +Bitfields for PCMCIA attributes: +Bit(s) Description (Table 00687) + 2 even bytes only + 1 word rather than byte + 0 attribute memory instead of common memory +--------X-1A92------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - WRITE ONE + AH = 92h + AL = adapter number + BL = socket number (01h to maximum supported by adapter) + BH = attributes (see #00687) + CL/CX = value to write + DX:SI = card address +Return: CF clear if successful + AH destroyed + CF set on error + AH = error code (01h,07h,0Bh,12h,14h) (see #00656) +Note: this function is only valid for I/O-mapped sockets; it also does not + implement Card Technology handling--use AH=94h when writing to + non-RAM technologies +SeeAlso: AH=91h,AH=94h,INT 21/AX=440Dh"DOS 3.2+" +--------X-1A93------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - READ MULTIPLE + AH = 93h + AL = adapter number + BL = socket number (01h to maximum supported by adapter) + BH = attributes (see #00687) + CX = number of bytes or words to read + DX:SI = card address + DS:DI -> data buffer to be filled +Return: CF clear if successful + AH destroyed + CF set on error + AH = error code (01h,07h,09h,0Bh,14h) (see #00656) +Note: this function is only available on I/O-mapped sockets +SeeAlso: AH=91h,AH=94h,INT 21/AX=440Dh"DOS 3.2+" +--------X-1A94------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - WRITE MULTIPLE + AH = 94h + AL = adapter number + BL = socket number (01h to maximum supported by adapter) + BH = attributes (see #00687) + CX = number of bytes or words to read + DX:DI = card address + DS:SI -> buffer containing data + BP = Card Technology type (0000h = RAM) +Return: CF clear if successful + AH destroyed + CF set on error + AH = error code (01h,07h,0Bh,0Ch,12h,14h) (see #00656) +Notes: this function is only available on I/O-mapped sockets + Socket Services calls the Card Technology callback (see #00661) for + any card technology it does not directly support +SeeAlso: AH=82h"PCMCIA",AH=92h,AH=93h,INT 21/AX=440Dh"DOS 3.2+" +--------X-1A95------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - INQUIRE ERROR DETECTION CODE + AH = 95h + AL = adapter number + BH = EDC generator number +Return: CF clear if successful + AH destroyed + CX = bitmap of assignable sockets + DH = EDC capabilities (see #00688) + DL = supported EDC types (see #00689) + CF set on error + AH = error code (01h,04h) (see #00656) +SeeAlso: AH=96h,AH=9Ch + +Bitfields for EDC capabilities: +Bit(s) Description (Table 00688) + 0 unidirectional only generation + 1 bidirectional only generation + 2 register-based (I/O-mapped) support + 3 memory-mapped support + 4 pausable + 5-7 reserved (0) + +Bitfields for supported EDC types: +Bit(s) Description (Table 00689) + 0 8-checksum + 1 16-CRC-SDLC + 2-7 reserved (0) +--------X-1A96------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - GET ERROR DETECTION CODE + AH = 96h + AL = adapter number + BH = EDC generator number +Return: CF clear if successful + AH destroyed + BL = socket number + DH = EDC attributes (see #00690) + DL = EDC type (see #00689) (only one bit set) + CF set on error + AH = error code (01h,04h) (see #00656) +SeeAlso: AH=95h,AH=97h,AH=9Ch + +Bitfields for EDC attributes: +Bit(s) Description (Table 00690) + 0 unidirectional only + 1 (if 0 set) clear=read, set=write + 2-7 reserved (0) +--------X-1A97------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - SET ERROR DETECTION CODE + AH = 97h + AL = adapter number + BH = EDC generator + BL = socket number + DH = EDC attributes (see #00690) + DL = EDC type (see #00689) (only one bit may be set) +Return: CF clear if successful + AH destroyed + CF set on error + AH = error code (01h,02h,04h,0Bh) (see #00656) +SeeAlso: AH=96h,AH=9Ch +--------X-1A98------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - START ERROR DETECTION CODE + AH = 98h + AL = adapter number + BH = EDC generator +Return: CF clear if successful + AH destroyed + CF set on error + AH = error code (01h,04h) (see #00656) +SeeAlso: AH=96h,AH=99h,AH=9Bh,AH=9Ch +--------X-1A99------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - PAUSE ERROR DETECTION CODE + AH = 99h + AL = adapter number + BH = EDC generator +Return: CF clear if successful + AH destroyed + CF set on error + AH = error code (01h,04h) (see #00656) +SeeAlso: AH=9Ah +--------X-1A9A------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - RESUME ERROR DETECTION CODE + AH = 9Ah + AL = adapter number + BH = EDC generator +Return: CF clear if successful + AH destroyed + CF set on error + AH = error code (01h,04h) (see #00656) +SeeAlso: AH=99h,AH=98h +--------X-1A9B------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - STOP ERROR DETECTION CODE + AH = 9Bh + AL = adapter number + BH = EDC generator +Return: CF clear if successful + AH destroyed + CF set on error + AH = error code (see #00656) +SeeAlso: AH=98h,AH=99h,AH=9Ch +--------X-1A9C------------------------------- +INT 1A - PCMCIA Socket Services v1.00 - READ ERROR DETECTION CODE + AH = 9Ch + AL = adapter number + BH = EDC generator +Return: CF clear if successful + AH destroyed + DL/DX = computed checksum or CRC + CF set on error + AH = error code (01h,04h) (see #00656) +SeeAlso: AH=95h,AH=96h,AH=98h,AH=99h,AH=9Bh +--------X-1A9D------------------------------- +INT 1A - PCMCIA Socket Services v2.1??? - GET VENDOR INFO + AH = 9Dh + AL = adapter number + BH = EDC generator + ES:EDI -> vendor information structure (see #00691) +Return: CF clear if successful + AH destroyed + DX = vendor release number in BCD + ES:EDI unchanged + CF set on error + AH = error code (01h,15h) (see #00656) +Notes: this API is supported by recent versions of the AMI BIOS + the low-level API described here is hidden by the higher-level + ExCA API once Card Services has been installed +SeeAlso: AH=9Dh"ExCA" + +Format of Vendor Information structure: +Offset Size Description (Table 00691) + 00h WORD buffer length (set to size of buffer below) + 04h WORD (ret) data length + 08h x BYTEs implementor name (ASCIIZ string) +--------X-1A9D------------------------------- +INT 1A - Intel PCMCIA ExCA Card Services - API + AH = 9Dh + AL = subfunction (see #00692) + ??? +Return: ??? +SeeAlso: AH=9Dh"ExCA",#00891 + +(Table 00692) +Values for PCMCIA ExCA Card Services subfunction number: + 00h Client Services: Get Number of Sockets + 01h Advanced Client Utilities: Initialize + 02h Client Services: Register Client + 03h Client Services: Deregister Client + 04h Advanced Client Utilities: Enumerate Clients + 05h Client Services: Register SCB + 06h Client Services: Deregister SCB + 07h Advanced Client Utilities: Register MTD + 08h Advanced Client Utilities: Deregister MTD + 09h Advanced Client Utilities: Enumerate MTD + 0Ah Client Services: Get Status + 0Bh Client Services: Reset Card + 0Ch Client Utilities: Get First Tuple + 0Dh Client Utilities: Get Next Tuple + 0Eh Client Utilities: Determine First Region + 0Fh Client Utilities: Determine Next Region + 10h Client Utilities: Get First Region + 11h Client Utilities: Get Next Region + 12h Client Utilities: Get First Partition + 13h Client Utilities: Get Next Partition + 14h Bulk Memory Services: Open Region + 15h Bulk Memory Services: Read Memory + 16h Bulk Memory Services: Write Memory + 17h Bulk Memory Services: Copy Memory + 18h Bulk Memory Services: Erase Memory + 19h Resource Management: Request I/O + 1Ah Resource Management: Release I/O + 1Bh Resource Management: Request Memory + 1Ch Client Services: Modify Window + 1Dh Resource Management: Release Memory + 1Eh Client Services: Map Mem Page + 1Fh Advanced Client Utilities: Return SS Entry + 20h Advanced Client Utilities: Map Log to Phy + 21h Advanced Client Utilities: Map Log Phy to Log + 22h Resource Management: Request IRQ + 23h Resource Management: Release IRQ + 24h Bulk Memory Services: Close Region +--------X-1A9E------------------------------- +INT 1A - PCMCIA Socket Services v2.1 - ACKNOWLEDGE INTERRUPT + AH = 9Eh + AL = adapter number +Return: CF clear if successful + AH destroyed + CX = bitmap representing sockets which have changed status + CF set on error + AH = error code (01h) (see #00656) +Note: this API is supported by recent versions of the AMI BIOS +--------X-1A9F------------------------------- +INT 1A - PCMCIA Socket Services v2.1 - GET/SET PRIOR INT 1A HANDLER + AH = 9Fh + AL = adapter number + BL = mode + 00h get prior INT 1Ah handler + 01h set prior INT 1Ah handler + CX:DX -> new prior handler +Return: CF clear if successful + AH destroyed + CX:DX -> old prior handler + CF set on error + AH = error code (01h,15h,18h) (see #00656) +Desc: allows hooking of INT 16h "behind" the Socket Services hook +Note: this API is supported by recent versions of the AMI BIOS +SeeAlso: AH=9Eh,AH=A0h"PCMCIA",AH=AEh"PCMCIA" +--------c-1AA0------------------------------- +INT 1A U - Disk Spool II v2.07+ - INSTALLATION CHECK + AH = A0h +Return: AH = B0h if installed + AL = pending INT 1A/AH=D0h subfunction if nonzero??? + ES = code segment + ES:BX -> name of current spool file + ES:SI -> current despool file + CL = despooler state (00h disabled, 41h enabled) + CH = spooler state (00h disabled, 41h enabled) + DL = despooler activity + 00h currently active printing a file + 41h standing by + DH = 00h ??? + = 41h ??? + DI = 0000h ??? + 0001h ??? +Program: Disk Spool II is a shareware disk-based print spooler by Budget + Software Company +Note: this function is also supported by Vertisoft's Emulaser utility ELSPL, + as that is a licensed version of Disk Spool II +SeeAlso: AH=ABh,AH=C0h,AH=D0h,AH=E1h +--------X-1AA0------------------------------- +INT 1A - PCMCIA Socket Services v2.1 - GET/SET SOCKET SERVICES ADDRESS + AH = A0h + AL = adapter number + BH = mode + 00h real mode + 01h 16:16 protected mode + 02h 16:32 protected mode + 03h 00:32 (Flat) protected mode + BL = subfunction + 00h return number of additional data areas (see #00693) + 01h return description of additional data areas (see #00694) + 02h accept mode-specific pointers to data areas (see #00695) + ES:EDI -> buffer supplied by caller +Return: CF clear if successful + AH destroyed + CX = number of additional data areas + ES:EDI unchanged + CF set on error + AH = error code (01h,02h,15h,16h,18h) (see #00656) +SeeAlso: AH=9Fh,AH=AEh + +Format of PCMCIA Subfunction 00h Buffer Table Entry structure: +Offset Size Description (Table 00693) + 00h DWORD 32-bit linear base address of the code segment + 04h DWORD segment limit of the code segment + 08h DWORD entry point offset + 0Ch DWORD 32-bit linear base address of the data segment + (ignored in 00:32 flat mode) + 10h DWORD segment limit of the data segment + 14h DWORD data area offset. Only used in 32-bit protected mode. +SeeAlso: #00694,#00695 + +Format of PCMCIA Additional Data Area Description structure [array]: +Offset Size Description (Table 00694) + 00h DWORD 32-bit linear base address of the additional data segment + (ignored in 00:32 flat mode) + 04h DWORD segment limit of the code segment + 08h DWORD data area offset (only used in 32-bit protected mode) +SeeAlso: #00693,#00695 + +Format of PCMCIA Subfunction 02h Buffer Table Entry structure: +Offset Size Description (Table 00695) + 00h DWORD 32-bit offset(ignored in 16:16 protected mode) + 04h DWORD selector (only used in 00:32 flat mode) + 08h DWORD reserved +SeeAlso: #00693,#00694 +--------X-1AA1------------------------------- +INT 1A - PCMCIA Socket Services v2.1 - GET ACCESS OFFSETS + AH = A1h + AL = adapter number + BH = Mode + 00h = Real Mode + 01h = 16:16 Protected Mode + 02h = 16:32 Protected Mode + 03h = 00:32 Protected Mode + CX = Number of access offsets + ES:EDI -> buffer supplied by caller, CX words long (see #00696) +Return: CF clear if successful + AH destroyed + DX = number of access offsets supported + ES:EDI unchanged + CF set on error + AH = error code (01h,15h,16h) (see #00656) +Desc: Returns an array of low-level adapter-specific optimized + PC Card access routines for adapters that use registers + or I/O ports to access PC Card memory. Adapters that access + PC Card memory through windows mapped to host system memory + do not support this function. +Note: offsets returned are 16-bit offsets into the + Socket Services code segment. They must be called + appropriately for the processor mode selected. + (Real, 16:16 and 16:32 modes use FAR CALL, + Flat 00:32 mode uses a 32-bit NEAR CALL). +SeeAlso: AH=AEh + +Format of Offset Table structure: +Offset Size Description (Table 00696) + 00h WORD Set Address + 02h WORD Set Auto Increment + 04h WORD Read Byte + 06h WORD Read Word + 08h WORD Read Byte with Auto Increment + 0Ah WORD Read Word with Auto Increment + 0Ch WORD Read Words + 0Eh WORD Read Words with Auto Increment + 10h WORD Write Byte + 12h WORD Write Word + 14h WORD Write Byte with Auto Increment + 16h WORD Write Word with Auto Increment + 18h WORD Write Words + 1Ah WORD Write Words with Auto Increment + 1Ch WORD Compare Byte + 1Eh WORD Compare Byte with Auto Increment + 20h WORD Compare Words + 22h WORD Compare Words with Auto Increment +--------X-1AA2------------------------------- +INT 1A - CardBus Socket Services - ACCESS CONFIGURATION SPACE + AH = A2h + ??? details not available +Return: ??? +--------X-1AA4------------------------------- +INT 1A - CardBus Socket Services - GET BRIDGE WINDOW / WINDOW CAPABILITIES + AH = A4h + ??? details not available +Return: ??? +SeeAlso: AH=A5h"CardBus" +--------X-1AA5------------------------------- +INT 1A - CardBus Socket Services - SET BRIDGE WINDOW + AH = A5h + ??? details not available +Return: ??? +SeeAlso: AH=A4h"CardBus" +--------c-1AAB------------------------------- +INT 1A U - Disk Spool II v1.83 - INSTALLATION CHECK + AH = ABh +Return: AH = BAh if installed + AL = pending INT 1A/AH=ADh subfunction if nonzero??? + ES = code segment + ES:BX -> name of current spool file + ES:SI -> current despool file + CL = despooler state (00h disabled, 41h enabled) + CH = spooler state (00h disabled, 41h enabled) + DL = despooler activity + 00h currently active printing a file + 41h standing by + DH = 00h ??? + = 41h ??? + DI = 0000h ??? + 0001h ??? +Program: Disk Spool II is a shareware disk-based print spooler by Budget + Software Company +SeeAlso: AH=A0h,AH=ACh,AH=ADh,AH=E1h +--------c-1AAC------------------------------- +INT 1A U - Disk Spool II v1.83 - INSTALLATION CHECK + AH = ACh +Return: (see AH=ABh) +Note: this function is identical to AH=ABh +SeeAlso: AH=A0h,AH=ABh,AH=ADh +--------c-1AAD------------------------------- +INT 1A U - Disk Spool II v1.83 - FUNCTION CALLS + AH = ADh + AL = function code (see #00697) +Return: AH = 00h if successful +SeeAlso: AH=ABh + +(Table 00697) +Values for Disk Spool function code: + 02h enable spooler only + 03h enable the despooler + 04h disable the despooler + 08h inhibit popup menu + 09h enable popup menu + 0Ah ??? + 0Bh disable the spooler + 0Ch start despooler after last successfully printed document??? + 0Dh start despooler at the exact point where it last left off??? + 0Eh pop up the menu + 0Fh ??? + 11h ??? + 14h ??? + 15h ??? + 16h ??? + 17h ??? + 18h ??? + 19h ??? + 20h clear file pointed to by the despooler??? + 21h ??? + 22h ??? + 23h ??? + 30h ??? +--------X-1AAE------------------------------- +INT 1A - PCMCIA Socket Services v2.1 - VENDOR SPECIFIC + AH = AEh + AL = adapter number + all other registers are vendor-specific +Return: vendor specific +SeeAlso: AH=A1h,AH=AFh +--------X-1AAE------------------------------- +INT 1A - PCMCIA Socket Services v2.1 - API + AH = AEh + SI = function + 0002h ??? + 0100h ??? + 0101h ??? + 8000h ??? + 8001h ??? + details not yet available +Return: CF clear if successful + CF set on error + AH = error code (02h,0Bh,11h,15h,17h) (see #00656) +SeeAlso: AH=9Eh +--------X-1AAF------------------------------- +INT 1A - PCMCIA v2 Card Services - API + AH = AFh + AL = function + 00h close memory + 01h copy memory + 02h deregister client + 03h get client information (see #00702) + 04h get configuration information (see #00704) + 05h get first partition + 06h get first region + 07h get first tuple (see #00711) + 08h get next partition + 09h get next region + 0Ah get next tuple + 0Bh get Card Services information (see #00700) + 0Ch get status + 0Dh get tuple data (see #00712) + 0Eh get first client (see #00701) + 0Fh get/register Erase Queue + 10h register client (see #00713) + 11h reset function + 12h map logical socket + 13h map logical window + 14h map memory page + 15h map physical socket + 16h map physical window + 17h modify window + 18h open memory + 19h read memory + 1Ah register MTD + 1Bh release I/O + 1Ch release IRQ (see #00715) + 1Dh release window + 1Eh release configuration (see #00716) + 1Fh request I/O (see #00717) + 20h request IRQ (see #00718) + 21h reqeust window (see #00720) + 22h request socket mask + 23h return SS entry + 24h write memory + 25h deregister Erase Queue + 26h check Erase Queue + 27h modify configuration + 28h register timer + 29h set region + 2Ah get next client + 2Bh validate CIS + 2Ch request exclusive access (see #00723) + 2Dh release exclusive access (see #00723) + 2Eh get event mask + 2Fh release socket mask + 30h request configuration (see #00724) + 31h set event mask + 32h add Socket Service + 33h replace Socket Service + 34h vendor-specific + 35h adjust resource information + 36h access configuration register + 37h get first window + 38h get next window + 39h get memory page + 3Ah request DMA + 3Bh release DMA + further details not yet available +Return: ??? = result code (see #00698) +SeeAlso: AH=AEh + +(Table 00698) +Values for PCMCIA Card Services result codes: + 00h successful + 01h invalid adapter number + 02h bad value for attribute field + 03h bad value for base system memory address + 04h invalid EDC generator specified + 05h (reserved for historical reasons) + 06h invalid IRQ level specified + 07h invalid PC Card memory array offset + 08h invalid page number specified + 09h unable to complete read request + 0Ah invalid size specified + 0Bh invalid socket number + 0Ch (reserved for historical reasons) + 0Dh invalid window or interface type + 0Eh invalid Vcc power level specified + 0Fh invalid Vpp1 or Vpp2 power level specified + 10h (reserved for historical reasons) + 11h invalid window number + 12h unable to complete write request + 13h (reserved for historical reasons) + 14h no PC Card in socket + 15h service not supported by implementation + 16h unsupported processor mode + 17h specified speed not available + 18h busy -- retry later + 19h undefined error (general failure) + 1Ah storage medium write protected + 1Bh argument length in (E)CX is invalid + 1Ch bad value(s) in argument packet + 1Dh configuration has already been locked + 1Eh requested resource already in use + 1Fh no more items of requested type available + 20h out of resources + 21h invalid client handle + 22h unsupported client version + +(Table 00699) +Values for Card Services Callback Event codes: + 01h battery dead + 02h battery low + 03h card locked + 04h card has become ready + 05h card removed + 06h card unlocked + 07h motorized ejection complete + 08h ejection requested + 09h insertion complete + 0Ah insertion requested + 0Bh power management: resume + 0Ch power management: suspend + 0Dh exclusive access granted + 0Eh exclusive access requested + 0Fh perform physical reset + 10h physical reset requested + 11h card has been reset + 12h MTD request (read/write/etc) + 14h request for client info + 15h timer has expired + 16h Socket Service was modified + 17h write-protected + 18h attention requested + 40h card insertion + 80h reset complete + 81h erase complete + 82h registration complete + +Format of Card Services Information: +Offset Size Description (Table 00700) + 00h WORD length of information record in bytes + 02h WORD signature + 04h WORD number of sockets + 06h WORD revision level + 08h WORD Card Services level + 0Ah WORD offset of vendor string + 0Ch WORD length of vendor string + 0Eh WORD number of functions + 10h 255 BYTEs vendor string +SeeAlso: #00702 + +Format of Card Services Client structure: +Offset Size Description (Table 00701) + 00h WORD PCMCIA socket number + 02h WORD client attributes + +Format of Cards Services Client Information: +Offset Size Description (Table 00702) + 00h WORD maximum length of data in bytes (180) + 02h WORD (ret) length of returned data + 04h WORD attributes (see #00703) + 06h WORD revision level (BCD) + 08h WORD Card Services level (BCD) + 0Ah WORD revision date (DOS packed date format) (see #01666) + 0Ch WORD offset to name + 0Eh WORD length of name + 10h WORD offset to vendor string + 12h WORD length of vendor string + 14h 80 BYTEs buffer for name + 64h 80 BYTEs buffer for vendor string +SeeAlso: #00700,#00704 + +Bitfields for Card Services client attributes: +Bit(s) Description (Table 00703) + 0 memory client + 1 MTD client + 2 I/O client + 3 all clients can share this card + 4 only one client can use this card at a time +SeeAlso: #00702 + +Format of Card Services configuration information: +Offset Size Description (Table 00704) + 00h WORD socket (usually 0000h) + 02h WORD attributes (see #00705) + 04h BYTE Vcc value + 05h BYTE Vpp1 value + 06h BYTE Vpp2 value + 07h BYTE interface type (see #00706) + 08h DWORD base address of configuration registers + 0Ch BYTE card's Status register setting (if present) + 0Dh BYTE card's Pin register setting (if present) + 0Eh BYTE card's Socket/Copy register setting (if present) + 0Fh BYTE card's Option register setting (if present) + 10h BYTE bitmap of present card configuration registers + 11h BYTE first device type + 12h BYTE function code + 13h BYTE SysInit mask + 14h WORD manufacturer code + 16h WORD manufacturer information + 18h BYTE valie card register values + 19h BYTE IRQ number assigned to PC Card + 1Ah WORD IRQ attributes (see #00708) + 1Ch WORD base port address (for I/O range 1) + 1Eh BYTE number of contiguous ports (for I/O range 1) + 1Fh BYTE bitmap of port attributes (for I/O range 1) (see #00709) + 20h WORD base port address (for I/O range 2) + 22h BYTE number of contiguous ports (for I/O range 2) + 23h BYTE bitmap of port attributes (for I/O range 2) (see #00709) + 24h BYTE number of I/O address lines decoded (16-bit PC Card only) + 25h BYTE extended status register setting (if present) + 26h BYTE bitmap of DMA attributes (see #00710) + (note: value at call is used to set!) + 27h BYTE assigned DMA channel + 28h BYTE number of I/O windows in use on logical socket + 29h BYTE number of memory windows in use on logical socket +SeeAlso: #00703,#00724 + +Bitfields for Card Services Configuration attributes: +Bit(s) Description (Table 00705) + 0 exclusive + 1 IRQ active + 2 CardBus card + 3-5 reserved (0) + 6 DMA channel is active + 7 reserved (0) + 8 valid client + 9 overwrite voltage value + 10-15 reserved (0) +SeeAlso: #00704 + +Bitfields for Card Services Configuration interface type: +Bit(s) Description (Table 00706) + 0 memory interface + 1 I/O and memory interface + 2 CardBus interface + 3-7 reserved (0) +SeeAlso: #00704 + +Bitfields for Card Services Configuration registers: +Bit(s) Description (Table 00707) + 0 option value is value + 1 status value + 2 pin-replacement value + 3 copy value + 4 extended status value + 5-7 reserved (0) +SeeAlso: #00704 + +Bitfields for Card Services Configuration IRQ attributes: +Bit(s) Description (Table 00708) + 1-0 sharing + 00 no sharing + 01 time-multiplex sharing + 10 dynamic sharing + 11 reserved + 2 force pulse mode + 3 first used together + 4-7 reserved + 8 pulse IRQ has been assigned + 9-15 reserved +SeeAlso: #00704,#00709,#00710,#00715,#00718 + +Bitfields for Card Services Configuration Port attributes: +Bit(s) Description (Table 00709) + 0 shared I/O ports + 1 "CS_FirstCommonUsedCard" + 2 force alias access + 3 =1 sixteen-bit I/O + =0 eight-bit I/O + 7-4 reserved (0) +SeeAlso: #00704,#00708,#00710,#00717 + +Bitfields for Card Services Configuration DMA attributes: +Bit(s) Description (Table 00710) + 1-0 sharing mode + 00 no sharing + 01 time-multiplex sharing + 10 dynamic sharing + 11 reserved + 3-2 DMA request signal + 00 reserved + 01 DMARQ uses pin SPKR# + 10 DMARQ uses pin IOIS16# + 11 DMARQ uses pin INPACK# + 4 DMA size + 0 eight bits + 1 sixteen bits + 7-5 reserved (0) +SeeAlso: #00704,#00708,#00709 + +Format of Card Services Tuple information: +Offset Size Description (Table 00711) + 00h WORD logical socket number + 02h WORD attributes + bit 0: return Link tuples + 04h BYTE code value of desired tuple + 05h BYTE reserved (0) + 06h WORD (ret) TupleFlags + 08h DWORD (ret) -> Card Services Link State Information + 0Ch DWORD (ret) -> Card Services CIS State Information + 10h BYTE (ret) code for tuple + 11h BYTE (ret) link value for tuple +SeeAlso: #00712 + +Format of Card Services GetTupleData record: +Offset Size Description (Table 00712) + 00h WORD logical socket + 02h WORD attributes + 04h BYTE code value of desired tuple + 05h BYTE offset into tuple from link byte + 06h WORD flags + 08h DWORD -> Link + 0Ch DWORD -> CIS + 10h WORD (call) maximum amount of data to return (0004h) + 12h WORD (ret) amount of data returned + 14h DWORD (ret) tuple data +SeeAlso: #00711 + +Format of Card Services Client Registration record: +Offset Size Description (Table 00713) + 00h WORD attributes + 02h WORD event mask + 04h WORD client data (passed to client event handler in DI) +--- 16-bit code --- + 06h WORD client data selector (passed to event handler in DS) + 08h WORD client data offset (passed to event handler in SI) + 0Ah WORD reserved +--- 32-bit code --- + 06h WORD reserved + 08h DWORD client data offset (passed to event handler in ESI) +------ + 0Ch WORD expected Card Services version (0210h for v2.10) + +Bitfields for Card Services client event codes: +Bit(s) Description (Table 00714) + 0 change in write-protect status + 1 change in card lock + 2 ejection request + 3 insertion request + 4 battery is dead + 5 battery low + 6 change in Ready + 7 change in Card Detect + 8 power management change + 9 reset + 10 Socket Services updated + 11 extended status change +SeeAlso: #00713 + +Format of Card Services ReleaseIRQ record: +Offset Size Description (Table 00715) + 00h WORD logical socket number + 02h WORD attributes (see #00708) + 04h BYTE assigned IRQ number to be released + +Format of Card Services Release Configuration record: +Offset Size Description (Table 00716) + 00h WORD logical socket number + +Format of Card Services Request I/O record: +Offset Size Description (Table 00717) + 00h WORD logical socket number + 02h WORD base port 1 + 04h BYTE size of port range 1 + 05h BYTE attributes for port range 1 (see #00709) + 06h WORD base port 2 + 08h BYTE size of port range 2 + 09h BYTE attributes for port range 2 (see #00709) + 0Ah BYTE number of address lines (typically 16) +SeeAlso: #00718,#00716 + +Format of Card Services Request IRQ record: +Offset Size Description (Table 00718) + 00h WORD logical socket number + 02h WORD attributes (see #00708) + 04h BYTE (ret) assigned IRQ number, if successful + 05h BYTE IRQ info (see #00719) + 06h WORD bitmap of available IRQs (bit 0 = IRQ0, etc.) + (only if bit 4 of IRQ info set) +SeeAlso: #00717,#00716 + +Bitfields for Card Services Request IRQ info flags: +Bit(s) Description (Table 00719) + 7 IRQ is shared + 6 pulse (edge-triggered) interrupt + 5 level interrupt + 4 use IRQ bitmap +--- bit 4 set --- + 3 vendor-specific interrupt + 2 bus error + 1 I/O check interrupt + 0 NMI +--- bit 4 clear --- + 3-0 IRQ number +SeeAlso: #00718 + +Format of Card Services Request Window record: +Offset Size Description (Table 00720) + 00h WORD logical socket number + 02h WORD attributes (see #00721) + 04h DWORD system base adress + 08h DWORD size of memory window + 0Ch BYTE additional info + if attributes bit ??? is set, this is the address-lines field + otherwise, this is the access-speed field (see #00722) + +Bitfields for Card Services Request Window attributes: +Bit(s) Description (Table 00721) + 0 I/O window instead of memory window + 1 attribute memory instead of normal memory (16-bit PC Cards only) + 2 window enabled + 3 16-bit data path instead of 8-bit path (16-bit PC Cards only, v2.10+) + (ignored if bit 9 set) + 4 size is given in 16K pages (invalid for CardBus PC Cards) + 5 shared (invalid for CardBus) + 6 first shared (invalid for CardBus) + 7 "CS_BindingSpecific" (memory window only) + 8 card offsets are window-size granular (16-bit PC Card memory window) + 9 32-bit data path (CardBus only) + 10 reserved (0) + 12-11 prefetch/cache + 00 neither prefetchable nor cacheable + 01 prefetchable but not cacheable + 10 prefetchable and cachable + 11 reserved + 15-13 decoded base address register number (CardBus only) +SeeAlso: #00720,#00722 + +Bitfields for Card Services Request Window access-speed: +Bit(s) Description (Table 00722) + 6-3 mantissa + 0000 use device speed code + 0001 1.0 + 0010 1.2 + 0011 1.2 ??? + 0100 1.5 + 0101 2.0 + 0110 2.5 + 0111 3.0 + 1000 3.5 + 1001 4.0 + 1010 4.5 + 1011 5.0 + 1100 5.5 + 1101 6.0 + 1110 7.0 + 1111 8.0 +--- if mantissa==0 --- + 2-0 device speed code + 000 reserved + 001 250 ns + 010 200 ns + 011 150 ns + 100 100 ns + 101-111 reserved +--- if mantissa<>0 --- + 2-0 speed exponent + 000 1 ns + 001 10 ns + 010 100 ns + 011 1 us + 100 10 us + 101 100 us + 110 1 ms + 111 10 ms +SeeAlso: #00720,#00721 + +Format of Card Services Request/Release Exclusive Access record: +Offset Size Description (Table 00723) + 00h WORD logical socket number + 02h WORD attributes (currently all reserved, must be 0000h) + +Format of Card Services Request Configuration record: +Offset Size Description (Table 00724) + 00h WORD socket (usually 0000h) + 02h WORD attributes (see #00705) + 04h BYTE Vcc value + 05h BYTE Vpp1 value + 06h BYTE Vpp2 value + 07h BYTE interface type (see #00706) + 08h DWORD base address of configuration registers + 0Ch BYTE card's Status register setting (if present) + 0Dh BYTE card's Pin register setting (if present) + 0Eh BYTE card's Socket/Copy register setting (if present) + 0Fh BYTE card's Option register setting (if present) + 10h BYTE bitmap of present card configuration registers + 11h BYTE extended status register setting (if present) +SeeAlso: #00704 +--------X-1AB000----------------------------- +INT 1A U - HP 100LX/200LX - PCMCIA - ??? + AX = B000h + ES:BX -> parameter block ??? +Return: CF clear if ??? + CF set if ??? +Note: called by HP 100LX/200LX PCMCIA client CIC100.EXE +--------d-1AB001CX4D52----------------------- +INT 1A - Microsoft Real-Time Compression Interface (MRCI) - ROM-BASED SERVER + AX = B001h + CX = 4D52h ("MR") + DX = 4349h ("CI") +Return: CX = 4943h ("IC") if installed + DX = 524Dh ("RM") if installed + ES:DI -> MRCINFO structure (see #00725) +Note: this call is functionally identical to INT 2F/AX=4A12h, which should + be called first, as this call is used for the first, ROM-based + MRCI server, while the other call is used for RAM-based servers + which may be partially or entirely replacing a prior server +SeeAlso: INT 2F/AX=4A12h + +Format of MRCINFO structure: +Offset Size Description (Table 00725) + 00h 4 BYTEs vendor signature + "MSFT" Microsoft + 04h WORD server version (high=major) + 06h WORD MRCI specification version + 08h DWORD address of server entry point (see #00727) + 0Ch WORD bit flags: server capabilities (see #00726) + 0Eh WORD bit flags: hardware assisted capabilities (see #00726) + 10h WORD maximum block size supported by server (at least 8192 bytes) + +Bitfields for MRCI capabilities: +Bit(s) Description (Table 00726) + 0 standard compress + 1 standard decompress + 2 update compress + 3 MaxCompress (not present in initial public release) + 4 reserved + 5 incremental decompress + 6 MRCI 2.0 standard compress + 7 MRCI 2.0 standard decompress + 8-14 reserved + 15 this structure is in ROM and can't be modified + (server capabilities only) + +(Table 00727) +Call MRCI entry point with: + DS:SI -> MRCREQUEST structure (see #00728) + CX = type of client (0000h application, 0001h file system) + AX = operation + 0001h perform standard compression + 0002h perform standard decompression + 0004h perform update compression + 0008h perform MaxCompress + 0020h perform incremental decompression + 0040h perform MRCI 2.0 standard compression + 0080h perform MRCI 2.0 standard decompression + AX = FFFFh clear flags + BX = bitmask of flags to clear (set bits in BX are flags to clear) +Return: AX = status + 0000h successful + 0001h invalid function + 0002h server busy, try again + 0003h destination buffer too small + 0004h incompressible data + 0005h bad compressed data format + BP destroyed (MS-DOS 6.2) +Note: MRCI driver may chain to a previous driver + +Format of MRCREQUEST structure: +Offset Size Description (Table 00728) + 00h DWORD pointer to source buffer + 04h WORD size of source buffer (0000h = 64K) + 06h WORD (UpdateCompress only) + (call) offset in source buffer of beginning of changed data + (ret) offset in destination buffer of beginning of changed + compressed data + 08h DWORD pointer to destination buffer + must contain original compressed data for UpdateCompress + 0Ch WORD size of destination buffer (0000h = 64K) + any compression: size of buffer for compressed data + standard decompression: number of bytes to be decompressed + incremental decompression: number of byte to decompress now + (ret) actual size of resulting data + 0Eh WORD client compressed data storage allocation size + 10h DWORD incremental decompression state data + set to 00000000h before first incremental decompression call +Notes: the source and destination buffers may not overlap + the source and destination buffer sizes should normally be the same + application should not update the contents of the MRCREQUEST structure + between incremental decompression calls +--------!---Section-------------------------- diff --git a/floppy/doc/LINKS b/floppy/doc/LINKS new file mode 100644 index 0000000..2dc5f26 --- /dev/null +++ b/floppy/doc/LINKS @@ -0,0 +1,16 @@ +similar projects + +https://www.insentricity.com/a.cl/283 +https://github.com/yeokm1/gentoo-on-486 +https://github.com/MiSTer-devel/Main_MiSTer/wiki +https://yeokhengmeng.com/2018/01/make-the-486-great-again + +alternatives to "standard" Linux: + +ELKS linux-i386 for 16-bit +Minix +NetBSD + +https://www.kernel.org/doc/html/latest/x86/boot.html +https://0xax.gitbooks.io/linux-insides/content/Booting/linux-bootstrap-2.html +https://www.kernel.org/doc/html/latest/x86/zero-page.html diff --git a/floppy/doc/NEEDHELP.TXT b/floppy/doc/NEEDHELP.TXT new file mode 100644 index 0000000..b0a3b23 --- /dev/null +++ b/floppy/doc/NEEDHELP.TXT @@ -0,0 +1,30 @@ +VOLUNTEERS NEEDED +----------------- + +15jul00: + +I haven't been managing any transcriptions for a while due to lack of +time, but I hope to restart the process this fall. Once I'm ready to +go, I'll contact everyone who has volunteered in the past. + + +30aug98: + +If you've always wanted to show your appreciation of the interrupt +list, but never had anything to contribute before, here's your chance! +I continue to have a need for volunteers to transcribe and condense the +information in various on-line documents into a suitable form for +inclusion in the list. A good job of transcription can save me 90% of +the effort it would otherwise take me, which means that I can get far +more information into the list -- and that helps everyone. + +If you're interested in transcribing one or more documents, send me +mail and I'll provide you with the URL and a brief style guide. Let me +know whether you're willing to work on a large document or only a +small(ish) one. As an added incentive, those who contribute at least +120K of additions (roughly equivalent to the info from four motherboard +chipsets; figure around 50 hours of effort) get a free autographed +copy of one of my books. + + + diff --git a/floppy/doc/OVERVIEW.LST b/floppy/doc/OVERVIEW.LST new file mode 100644 index 0000000..642dc5d --- /dev/null +++ b/floppy/doc/OVERVIEW.LST @@ -0,0 +1,262 @@ +[Provided by Bent Lynggaard . Last Edit 6/5/94] +This list is a brief description of each of the 256 interrupts. Each +description begins with "INT nn " where "nn" is a two digit hexadecimal +number 00 - FF. For automatic processing, do not rely on the order being +consecutive. +--------!---TITLES--------------------------- +INT 00 - CPU-generated - DIVIDE ERROR +INT 01 - CPU-generated - SINGLE STEP; (80386+) - DEBUGGING EXCEPTIONS +INT 02 - external hardware - NON-MASKABLE INTERRUPT +INT 03 - CPU-generated - BREAKPOINT +INT 04 - CPU-generated - INTO DETECTED OVERFLOW +INT 05 - PRINT SCREEN; CPU-generated (80186+) - BOUND RANGE EXCEEDED +INT 06 - CPU-generated (80286+) - INVALID OPCODE +INT 07 - CPU-generated (80286+) - PROCESSOR EXTENSION NOT AVAILABLE +INT 08 - IRQ0 - SYSTEM TIMER; CPU-generated (80286+) +INT 09 - IRQ1 - KEYBOARD DATA READY; CPU-generated (80286,80386) +INT 0A - IRQ2 - LPT2/EGA,VGA/IRQ9; CPU-generated (80286+) +INT 0B - IRQ3 - SERIAL COMMUNICATIONS (COM2); CPU-generated (80286+) +INT 0C - IRQ4 - SERIAL COMMUNICATIONS (COM1); CPU-generated (80286+) +INT 0D - IRQ5 - FIXED DISK/LPT2/reserved; CPU-generated (80286+) +INT 0E - IRQ6 - DISKETTE CONTROLLER; CPU-generated (80386+) +INT 0F - IRQ7 - PARALLEL PRINTER +INT 10 - VIDEO; CPU-generated (80286+) +INT 11 - BIOS - GET EQUIPMENT LIST; CPU-generated (80486+) +INT 12 - BIOS - GET MEMORY SIZE +INT 13 - DISK +INT 14 - SERIAL +INT 15 - CASSETTE +INT 16 - KEYBOARD +INT 17 - PRINTER +INT 18 - DISKLESS BOOT HOOK (START CASSETTE BASIC) +INT 19 - SYSTEM - BOOTSTRAP LOADER +INT 1A - TIME +INT 1B - KEYBOARD - CONTROL-BREAK HANDLER +INT 1C - TIME - SYSTEM TIMER TICK +INT 1D - SYSTEM DATA - VIDEO PARAMETER TABLES +INT 1E - SYSTEM DATA - DISKETTE PARAMETERS +INT 1F - SYSTEM DATA - 8x8 GRAPHICS FONT +INT 20 - DOS 1+ - TERMINATE PROGRAM +INT 21 - DOS 1+ - Function Calls +INT 22 - DOS 1+ - PROGRAM TERMINATION ADDRESS +INT 23 - DOS 1+ - CONTROL-C/CONTROL-BREAK HANDLER +INT 24 - DOS 1+ - CRITICAL ERROR HANDLER +INT 25 - DOS 1+ - ABSOLUTE DISK READ +INT 26 - DOS 1+ - ABSOLUTE DISK WRITE +INT 27 - DOS 1+ - TERMINATE AND STAY RESIDENT +INT 28 - DOS 2+ - DOS IDLE INTERRUPT +INT 29 - DOS 2+ - FAST CONSOLE OUTPUT +INT 2A - NETBIOS +INT 2B - DOS 2+ - RESERVED +INT 2C - DOS 2+ - RESERVED +INT 2D - DOS 2+ - RESERVED +INT 2E - DOS 2+ - PASS COMMAND TO COMMAND INTERPRETER FOR EXECUTION +INT 2F - Multiplex +INT 30 - (NOT A VECTOR!) - DOS 1+ - FAR JMP instruction +INT 31 - overwritten by CP/M jump instruction in INT 30 +INT 32 - (no special use) +INT 33 - MS MOUSE +INT 34 - FLOATING POINT EMULATION - OPCODE D8h +INT 35 - FLOATING POINT EMULATION - OPCODE D9h +INT 36 - FLOATING POINT EMULATION - OPCODE DAh +INT 37 - FLOATING POINT EMULATION - OPCODE DBh +INT 38 - FLOATING POINT EMULATION - OPCODE DCh +INT 39 - FLOATING POINT EMULATION - OPCODE DDh +INT 3A - FLOATING POINT EMULATION - OPCODE DEh +INT 3B - FLOATING POINT EMULATION - OPCODE DFh +INT 3C - FLOATING POINT EMULATION - SEGMENT OVERRIDE +INT 3D - FLOATING POINT EMULATION - STANDALONE FWAIT +INT 3E - FLOATING POINT EMULATION - Borland "SHORTCUT" CALL +INT 3F - Overlay manager interrupt (Microsoft/Borland) +INT 40 - DISKETTE - RELOCATED ROM BIOS DISKETTE HANDLER +INT 41 - SYSTEM DATA - HARD DISK 0 PARAMETER TABLE; CPU - MS Windows +INT 42 - VIDEO - RELOCATED DEFAULT INT 10 VIDEO SERVICES (EGA,VGA) +INT 43 - VIDEO DATA - CHARACTER TABLE (EGA,MCGA,VGA) +INT 44 - VIDEO DATA - CHARACTER FONT (PCjr); Novell NetWare +INT 45 - Z100/Acorn +INT 46 - SYSTEM DATA - HARD DISK 1 DRIVE PARAMETER TABLE +INT 47 - Z100/Acorn/Western Digital/SQL Base +INT 48 - KEYBOARD (PCjr) - Z100/Watstar/Acorn/Western Digital/Compaq +INT 49 - SYSTEM DATA (PCjr) - Z100/TI/Watstar/Acorn/MAGic +INT 4A - SYSTEM - USER ALARM HANDLER +INT 4B - IBM SCSI interface; Virtual DMA Specification (VDS) +INT 4C - Z100/Acorn/TI +INT 4D - Z100 +INT 4E - TI/Z100 +INT 4F - Common Access Method SCSI +INT 50 - IRQ0 relocated by software +INT 51 - IRQ1 relocated by software +INT 52 - IRQ2 relocated by software +INT 53 - IRQ3 relocated by software +INT 54 - IRQ4 relocated by software +INT 55 - IRQ5 relocated by software +INT 56 - IRQ6 relocated by software +INT 57 - IRQ7 relocated by software +INT 58 - IRQ8/0 relocated by software +INT 59 - IRQ9/1 relocated by software; GSS Computer Graphics Interface +INT 5A - IRQ10/2 relocated by software +INT 5B - IRQ11/3 relocated by software; Network +INT 5C - IRQ12/4 relocated by software; Network Interface +INT 5D - IRQ13/5 relocated by software +INT 5E - IRQ14/6 relocated by software +INT 5F - IRQ15/7 relocated by software; HP 95LX GRAPHICS PRIMITIVES +INT 60 - reserved for user interrupt; multiple purposes +INT 61 - reserved for user interrupt; multiple purposes +INT 62 - reserved for user interrupt; multiple purposes +INT 63 - reserved for user interrupt; multiple purposes +INT 64 - reserved for user interrupt; multiple purposes +INT 65 - reserved for user interrupt; multiple purposes +INT 66 - reserved for user interrupt; multiple purposes +INT 67 - reserved for user interrupt; LIM EMS; multiple purposes +INT 68 - multiple purposes +INT 69 - multiple purposes +INT 6A - multiple purposes +INT 6B - multiple purposes +INT 6C - CONVERTIBLE; DOS 3.2; DECnet DOS network scheduler +INT 6D - VGA - internal +INT 6E - DECnet DOS - DECnet NETWORK PROCESS API +INT 6F - Novell NetWare; 10NET; MS Windows 3.0 +INT 70 - IRQ8 - CMOS REAL-TIME CLOCK +INT 71 - IRQ9 - REDIRECTED TO INT 0A BY BIOS +INT 72 - IRQ10 - RESERVED +INT 73 - IRQ11 - RESERVED +INT 74 - IRQ12 - POINTING DEVICE (PS) +INT 75 - IRQ13 - MATH COPROCESSOR EXCEPTION (AT and up) +INT 76 - IRQ14 - HARD DISK CONTROLLER (AT and later) +INT 77 - IRQ15 - RESERVED (AT,PS); POWER CONSERVATION (Compaq) +INT 78 - DOS extenders; multiple purposes +INT 79 - multiple purposes +INT 7A - Novell NetWare; IBM 3270; multiple purposes +INT 7B - multiple purposes +INT 7C - multiple purposes +INT 7D - multiple purposes +INT 7E - RESERVED FOR DIP, Ltd. ROM LIBRARY; multiple purposes +INT 7F - multiple purposes +INT 80 - reserved for BASIC; multiple purposes +INT 81 - reserved for BASIC +INT 82 - reserved for BASIC +INT 83 - reserved for BASIC +INT 84 - reserved for BASIC +INT 85 - reserved for BASIC +INT 86 - IBM ROM BASIC - used while in interpreter; multiple purposes +INT 87 - IBM ROM BASIC - used while in interpreter +INT 88 - IBM ROM BASIC - used while in interpreter; multiple purposes +INT 89 - IBM ROM BASIC - used while in interpreter +INT 8A - IBM ROM BASIC - used while in interpreter +INT 8B - IBM ROM BASIC - used while in interpreter +INT 8C - IBM ROM BASIC - used while in interpreter +INT 8D - IBM ROM BASIC - used while in interpreter +INT 8E - IBM ROM BASIC - used while in interpreter +INT 8F - IBM ROM BASIC - used while in interpreter +INT 90 - IBM ROM BASIC - used while in interpreter +INT 91 - IBM ROM BASIC - used while in interpreter +INT 92 - IBM ROM BASIC - used while in interpreter; multiple purposes +INT 93 - IBM ROM BASIC - used while in interpreter +INT 94 - IBM ROM BASIC - used while in interpreter; multiple purposes +INT 95 - IBM ROM BASIC - used while in interpreter +INT 96 - IBM ROM BASIC - used while in interpreter +INT 97 - IBM ROM BASIC - used while in interpreter +INT 98 - IBM ROM BASIC - used while in interpreter +INT 99 - IBM ROM BASIC - used while in interpreter +INT 9A - IBM ROM BASIC - used while in interpreter +INT 9B - IBM ROM BASIC - used while in interpreter +INT 9C - IBM ROM BASIC - used while in interpreter +INT 9D - IBM ROM BASIC - used while in interpreter +INT 9E - IBM ROM BASIC - used while in interpreter +INT 9F - IBM ROM BASIC - used while in interpreter +INT A0 - IBM ROM BASIC - used while in interpreter +INT A1 - IBM ROM BASIC - used while in interpreter +INT A2 - IBM ROM BASIC - used while in interpreter +INT A3 - IBM ROM BASIC - used while in interpreter +INT A4 - IBM ROM BASIC - used while in interpreter +INT A5 - IBM ROM BASIC - used while in interpreter +INT A6 - IBM ROM BASIC - used while in interpreter +INT A7 - IBM ROM BASIC - used while in interpreter +INT A8 - IBM ROM BASIC - used while in interpreter +INT A9 - IBM ROM BASIC - used while in interpreter +INT AA - IBM ROM BASIC - used while in interpreter +INT AB - IBM ROM BASIC - used while in interpreter +INT AC - IBM ROM BASIC - used while in interpreter +INT AD - IBM ROM BASIC - used while in interpreter +INT AE - IBM ROM BASIC - used while in interpreter +INT AF - IBM ROM BASIC - used while in interpreter +INT B0 - IBM ROM BASIC - used while in interpreter +INT B1 - IBM ROM BASIC - used while in interpreter +INT B2 - IBM ROM BASIC - used while in interpreter +INT B3 - IBM ROM BASIC - used while in interpreter +INT B4 - IBM ROM BASIC - used while in interpreter +INT B5 - IBM ROM BASIC - used while in interpreter +INT B6 - IBM ROM BASIC - used while in interpreter +INT B7 - IBM ROM BASIC - used while in interpreter +INT B8 - IBM ROM BASIC - used while in interpreter +INT B9 - IBM ROM BASIC - used while in interpreter +INT BA - IBM ROM BASIC - used while in interpreter +INT BB - IBM ROM BASIC - used while in interpreter +INT BC - IBM ROM BASIC - used while in interpreter +INT BD - IBM ROM BASIC - used while in interpreter +INT BE - IBM ROM BASIC - used while in interpreter +INT BF - IBM ROM BASIC - used while in interpreter +INT C0 - IBM ROM BASIC - used while in interpreter +INT C1 - IBM ROM BASIC - used while in interpreter +INT C2 - IBM ROM BASIC - used while in interpreter +INT C3 - IBM ROM BASIC - used while in interpreter +INT C4 - IBM ROM BASIC - used while in interpreter +INT C5 - IBM ROM BASIC - used while in interpreter +INT C6 - IBM ROM BASIC - used while in interpreter +INT C7 - IBM ROM BASIC - used while in interpreter +INT C8 - IBM ROM BASIC - used while in interpreter +INT C9 - IBM ROM BASIC - used while in interpreter +INT CA - IBM ROM BASIC - used while in interpreter +INT CB - IBM ROM BASIC - used while in interpreter +INT CC - IBM ROM BASIC - used while in interpreter +INT CD - IBM ROM BASIC - used while in interpreter +INT CE - IBM ROM BASIC - used while in interpreter +INT CF - IBM ROM BASIC - used while in interpreter +INT D0 - IBM ROM BASIC - used while in interpreter +INT D1 - IBM ROM BASIC - used while in interpreter +INT D2 - IBM ROM BASIC - used while in interpreter +INT D3 - IBM ROM BASIC - used while in interpreter +INT D4 - IBM ROM BASIC - used while in interpreter +INT D5 - IBM ROM BASIC - used while in interpreter +INT D6 - IBM ROM BASIC - used while in interpreter +INT D7 - IBM ROM BASIC - used while in interpreter +INT D8 - IBM ROM BASIC - used while in interpreter +INT D9 - IBM ROM BASIC - used while in interpreter +INT DA - IBM ROM BASIC - used while in interpreter +INT DB - IBM ROM BASIC - used while in interpreter +INT DC - IBM ROM BASIC - used while in interpreter +INT DD - IBM ROM BASIC - used while in interpreter +INT DE - IBM ROM BASIC - used while in interpreter +INT DF - IBM ROM BASIC - used while in interpreter +INT E0 - IBM ROM BASIC - used while in interpreter; multiple purposes +INT E1 - IBM ROM BASIC - used while in interpreter +INT E2 - IBM ROM BASIC - used while in interpreter +INT E3 - IBM ROM BASIC - used while in interpreter +INT E4 - IBM ROM BASIC - used while in interpreter +INT E5 - IBM ROM BASIC - used while in interpreter +INT E6 - IBM ROM BASIC - used while in interpreter +INT E7 - IBM ROM BASIC - used while in interpreter +INT E8 - IBM ROM BASIC - used while in interpreter +INT E9 - IBM ROM BASIC - used while in interpreter +INT EA - IBM ROM BASIC - used while in interpreter +INT EB - IBM ROM BASIC - used while in interpreter +INT EC - IBM ROM BASIC - used while in interpreter +INT ED - IBM ROM BASIC - used while in interpreter +INT EE - IBM ROM BASIC - used while in interpreter +INT EF - BASIC - ORIGINAL INT 09 VECTOR +INT F0 - BASICA.COM, GWBASIC, compiled BASIC - ORIGINAL INT 08 VECTOR +INT F1 - reserved for user interrupt +INT F2 - reserved for user interrupt +INT F3 - reserved for user interrupt +INT F4 - reserved for user interrupt +INT F5 - reserved for user interrupt +INT F6 - reserved for user interrupt +INT F7 - reserved for user interrupt +INT F8 - reserved for user interrupt +INT F9 - reserved for user interrupt +INT FA - reserved for user interrupt +INT FB - reserved for user interrupt +INT FC - reserved for user interrupt +INT FD - reserved for user interrupt +INT FE - AT/XT286/PS50+ - destroyed by return from protected mode +INT FF - AT/XT286/PS50+ - destroyed by return from protected mode diff --git a/floppy/doc/RBROWN.TXT b/floppy/doc/RBROWN.TXT new file mode 100644 index 0000000..70ebefa --- /dev/null +++ b/floppy/doc/RBROWN.TXT @@ -0,0 +1,487 @@ +Public Domain/Freeware/Shareware by Ralf Brown: + +(URLs for use with your favorite WWW browser are at the end of this file) + +The x86/MSDOS Interrupt List + A comprehensive listing of more than 8500 functions available through + interrupt calls on IBM PCs and compatibles. Includes both + documented and undocumented functions, plus lists of I/O port, CMOS, + and memory locations, far-call entry points, model-specific + registers, and system-management mode state save areas. + Current version: INTER61A (release 61, 16jul00) + INTER61B + INTER61C + INTER61D + INTER61E (utility programs) + INTER61F (hypertext conversion programs) + +DVINT + An extract of the MSDOS Interrupt List containing the DESQview + and QEMM API calls. Updated whenever there have been significant + additions to the DESQview/QEMM calls in the Interrupt List. + Current version: DVINT43 (06jun94) + +RBcomm + A DESQview-aware communications program which sports seamless DSZ, + PCZ, or PUMA/MPt integration for file transfers; ANSI/VT102, VT52, + and AVATAR emulation (including 132 columns); speeds to 115200 bps; + a powerful macro language; dialing directory; ANSI music; and + more. Runs in 65K with DSZ, 47K without. While it works under + plain DOS, additional features are available under DESQview. + Current version: RBCOM346 (v3.46 29jan95) + +RBdualVGA + Use two color displays on one PC. + Current version: RBDUAL09 (v0.9 02jun96) + DUAL093S (v0.93 source code, 11sep98) + +RBkeyswap + Exchange left control and CapsLock keys, as well as Esc and `/~. + Loads itself high, using just 64 bytes; needs only 128 bytes low + if no high memory is available. + Current version: RBKEYSWP (v2.0 22jun91; v3.0 included in AMISLIB) + +RBpci + Print out more than you ever wanted to know about the devices + on the PCI bus inside your computer. All device-specific data + files are plain text, to let you update/customize them yourself + (updates for new chips which are sent to the author will be + included in the following release). Includes full source code + for the program. + Current version: RBPCI119 (v1.19, 10jan99) + +SPAWNO + A replacement for the Turbo C and Microsoft C spawn..() functions + which swaps the current program to disk, EMS, XMS, or raw extended + memory while the spawned program executes, leaving less than 300 + bytes in memory. Also includes a variant for Turbo Pascal v4.0 or + higher. + Current version: SPWNO413 (v4.13 12dec92) + Price: libraries free, full source code $100. + +AMISLIB + Public Domain library (with full source code and five sample TSRs) + for creating self-highloading TSRs which may be unloaded in any + order. Up to 256 TSRs created with AMISLIB may be installed + simultaneously, and TSRs can be as small as 128 bytes resident, + 1.4K on disk. One of the sample TSRs is a popup which accesses + DOS. + Current version: AMISL092 (v0.92 24sep95) + +DV-GLUE + DESQview API bindings for Turbo/Borland C (also mostly compatible + with MS C). + Current version: DVGLU172 (source & compiled) (v1.72 01oct95) + +DVKPOLL + "Poor man's version" of TAME. Makes programs give up CPU time when + they are in an idle loop polling the keyboard for keystrokes. + Current version: DVKPOLL2 (18jun88) + Note: This program has been superseded by DVPTAME. + +DVPTAME + "Not-so-poor man's version" of TAME. Tells DESQview to give the + remainder of a time slice away if the program is in an idle loop + polling the keyboard for keystrokes. Uses 0 bytes of memory. + Current version: DVPTAME (04jun91) + +DVdevload + Load device drivers only in those DESQview windows which need the + services of the driver, reducing the pre-DESQview overhead and thus + permitting larger DESQview windows. + Current version: DVDEVL12 (v1.20 03jan93) + Note: as of DESQview 2.40, Quarterdeck's DEVICE.COM is able to install + drivers into the device chain in the same manner as DVdevload; + however, DEVICE uses eight times as much memory as DVdevload and + has a serious interaction with 4DOS/NDOS that can lead to system + crashes. + +RBspeed + Switch the CPU speed of an Intel Pentium motherboard using the + "Neptune" chipset. Public Domain. + Current version: RBSPEED1 (v1.00 08sep94) + +SPTURBO + An integrated environment for Borland's Sprint word processor and + Turbo C, Turbo Pascal, Turbo Assembler, Turbo Debugger, and CDECL. + Knows which compiler to invoke based on the file's extension, and + can run MAKE for multi-file projects. + Current version: SPTURBO (v2.3 Aug 1,1989) + Note: There will be no further updates of this package. + +PURGEMSG + Delete or copy *.MSG files such that you only see those messages + from a Fidonet echomail area which interest you. + Current version: PURGEMSG (v1.00, 04aug91) + +-------------- +Authentication +-------------- + +Beginning 1/1/91, all packages are distributed in PKZIP archives with +authenticity verification (v1.1 before 4/1/93, v2.0 after). Please +redistribute only the original archives to preserve the authenticity +information. If you receive an archive dated after 1/1/91 which fails +the authenticity check, you should treat it with caution. If you +receive an archive which passes the PKZIP check but displays an +authenticity code other than NWS235, then the archive has been +deliberately tampered with and should be deleted IMMEDIATELY. + +Beginning 9/24/95, all packages additionally include detached PGP +signatures in an enclosed archive named PGP-SIGS.ZIP. My PGP keys +are available from http://pobox.com/~ralf/ralf.asc or +ftp://ftp.cs.cmu.edu/afs/cs/user/ralf/pub/WWW/ralf.asc + + +------------- +Availability: +------------- + +On the Internet, by standard anonymous FTP from FTP.CS.CMU.EDU [128.2.206.173]. + Change directly to directory /afs/cs.cmu.edu/user/ralf/pub with a + single command (directories above this are not accessible via + anonymous FTP). [DV-GLUE is not available here] + Don't forget to set "binary" mode! If you are refused access to + the directory, try again later; a fileserver may have been down. + +If connected to AFS, you can simply perform standard Unix/VMS/whatever + directory listing and file copies from the above directory. + +Or visit my home page, and grab the files with your favorite web browser: + http://www.pobox.com/~ralf + +On FIDOnet, from Soundingboard BBS 1:129/26 1-412-621-4604 28.8k HST, file req. + My programs are kept in file area 8 for those wishing to download + manually. + +Alternate Distribution Points (new versions will be available here +usually within 24 hours of release): +Internet: SimTel Software Repository mirrors in directories /SimTel/msdos/X. + X is 'info' for the Interrupt List, 'modem' for RBcomm, 'c' for + SPAWNO, 'asmutl' for AMISLIB, 'desqview' for DV-GLUE/DVKPOLL/DVPTAME, + and 'sprint' for SPTURBO. Note that you must use mode "binary" to + successfully FTP the files. The SimTel mirror sites include + oak.oakland.edu [141.210.10.117], wuarchive.wustl.edu [128.252.135.4], + ftp.uu.net [137.39.1.9], nic.funet.fi [128.214.6.100], + src.doc.ic.ac.uk [146.169.3.7] and archie.au [139.130.4.6]. + Some packages are also on GARBO.UWASA.FI in /pc/programming. + +Bitnet users may also retrieve items on SimTel via the following automated +mail servers: + (in the US) LISTSERV@RPITSVM (alias VM.ITS.RPI.EDU) + LISTSERV@NDSUVM1 (alias VM1.NODAK.EDU) + (in Europe) TRICKLE@AWIWUW11 (Austria) + TRICKLE@BANUFS11 (Belgium) + TRICKLE@DKTC11 (Denmark) + TRICKLE@FRMOP11 (France) + BITFTP@BITFTP.BITNET (Germany) + TRICKLE@IMIPOLI (Italy) + TRICKLE@HEARN (Netherlands) + TRICKLE@EB0UB011 (Spain) + TRICKLE@SEARN (Sweden) + TRICKLE@TREARN (Turkey) + (elsewhere) TRICKLE@UNALCOL (Colombia) + TRICKLE@TAUNIVM (Israel) +Send a mail message containing the line + /HELP +in the body for instructions. + +DV-GLUE, DVKPOLL, DVINT, DVPTAME, DVdevload, and RBcomm are also available on +Fidonet BBSs belonging to DVNet (listed below). + +The Interrupt List and SPAWNO are also available on Fidonet BBSs belonging +to the Programmer's Distribution Network. Selected PDN member boards as of +March, 1998: + + 1:232/16 Martin Belcke Peoria, IL (http://www.filegate.org) 1-309-672-4430 + 1:270/101 George Peace Harrisburg, PA -paonline.com (Internet) + 1:3615/50 Planet Connect Satellite Systems + 1:154/280 EXEC-PC BBS Elm Grove, WI + 1:124/3210 Glenn O'Gorman Garland, TX + 1:167/132 Roland Larocque Canada + 1:115/10 Tom Huber Crystal Lake, IL + 1:2320/38 Janis Kracht Louisville, KY (PDN,MISSING,UTIL,PAS,PCB,HAM,STN) + (http://jkracht.aye.net) BBS: 1-502-245-6778 + 1:272/125 Thomas Gabrinowiz Montgomery, NY + 1:140/53 Frank Cox Melville Sask. Canada + 1:285/85 Richard Rasmussen Omaha, Nebraska + 1:153/9117 Darrell Harder Whiterock, BC + 1:321/212 Vern Pero Dalton MA + 1:342/52 Vincent Danen Edmonton_AB + 1:2605/638 Douglas Vogt Bridewater NJ + 1:3803/7 Ben Ritchey Lafayette, LA + 2:20/11 Peter Bygden Stockholm, Sweden + 2:341/68 Juan Enrique Gomez Madrid, Spain + 2:5032/5 Dmitry Maevsky Novgorod, Russia + 3:774/605 Barry Blackford Hamilton, NZ + 1:133/2 Chuck Robinson Lawrenceville, GA (ftp://ftp.ftbbs.com/fdn) + 2:25/75 Graham Print (RAR, T-MAIL, FSFAN) + 2:254/61 Dave Carter Croydon, Surrey + 2:254/211 Bill Hayles Foots Cray, Kent + 2:254/212 Bill Hayles Foots Cray, Kent + 2:254/233 Peter Friedlos London + 2:254/620 Michael Mehmet London + 2:251/21 Mike Forbes Southsea + 2:251/50 Jim Reeves Gosport, Hampshire + 2:251/101 Roy Arnold Bournemouth + 2:251/203 Robert Leach Fareham, Hampshire + 2:252/7 Andrew Eaves Princes Risborough, Buckinghamshire + 2:252/314 Dwayne Heaton Binfield, Hants + 2:252/555 Andrew Chant Farnborough + 2:255/1 John Burden Exeter. MNL + 2:257/71 Darren Parker Hitchin, Herts + 2:443/13 Colin Turner Bangor, Co. Down, N.Ireland + 2:481/56 Rafel Slimakowski Poland + 2:281/506 Ron Huiskes (SDC,LUX,NOVL,PAS) + 2:245/5530 Michael Bauer Mainz, Germany + 2:205/498 Bo Jakobsen Alta, Sweeden + 2:235/200 Brian Vinberg Copenhagen, Denmark + 2:236/64 Richard Hansen Glumsoe, Denmark + 2:236/1111 Jrgen llgrd Slangerup, Denmark + 2:244/1530 Edgar Schaettle Schwalbach, Germany + 2:291/709 Pierre-Claude Demanet Brussels, Belgium + 2:292/826 Gerry Van Steerteghem Zoersel, Belgium + 2:301/714 Rolf Taschler Zuerich, Switzerland + 2:310/700 Sascha Vogt Vienna, Austria + 2:333/304 Enzo Gasparini Padova, Italy + 2:403/138 Nemrod Kedem Rishon le Zion, Israel + 2:2480/220 Uwe Schirm Muenchen, Germany + 3:633/2 Malcolm Miles Melbourne Victoria Australia + 4:823/1 Adolfo Justiniano Bolivia, South America + 4:806/7 Brazil Marcio Gordiano + 4:901/148 Argentina Fernando Bertuccelli + 4:840/1 Peru Daniel Pizarro + 4:851/1 Uruguay Alejandro Hernandez + 5:7104/2 Henk Wolsink Port Elizabeth, Rep. of South Africa + 6:751/321 Terry Roati Makati City, Philippines + 6:750/213 Manila (Albert Godinez) + 6:750/401 Kalookan City (Albert Uy) + 6:751/15 San Fernando (Jun Martin) + 6:751/2 Quezon City (William Villanueva) + 6:751/20 Olongapo City (Rudy Ordiz) + 6:751/101 Pasig (Victor Reyes) + 6:751/222 Greenhills (Stewart Buckingham) + 6:751/417 Paranaque (Marco Antonio Cabrazal) + 6:754/10 Cebu City (Jojo Sybico) + 6:754/201 Bacolod City (Eduardo M Joven) + +------------------------------------------------------------------------ + +DVNet nodes as of August 1994: + + DVNet node listing as of AUG 03, 1994 + + USA + ------------------------------ --------- ------------ -------- +AK 65'North, Fairbanks 1:355/38 907-452-1460 VFCV32b +AR Phil's BBS, Walnut Ridge 1:389/10 501-886-1701 HSTV32b +AR CrossFire, N Little Rock 1:3821/2 501-791-2993 H16V32b +AR MinnTelligence, Little Rock 1:3821/6 501-664-2237 V32b +AZ Analog Gate, Sierra Vista 1:309/9 602-458-0451 HSTV32 +CA Carl's Corner, San Jose 1:10/1 408-248-9704 HSTV32 +CA Central Computer Banks, LA 1:102/851 213-256-0871 HSTV32b +CA Gandalf's, El Cajon 1:202/302 619-466-9505 HSTV32 +CA Stingray!, Clovis 1:205/12 209-298-9461 HST +CA Bertha Board, Manteca 1:208/1 209-823-0093 HST +CO Hole in the Wall, Parker 1:104/651 303-841-5515 HSTV32b +CO Prgrmmrs Playhouse, Colo Springs 1:128/60 719-380-8813 HST +CT Treasure Island, Danbury 1:141/730 203-791-8532 HSTV32b +CT Ascii Neighborhood, W Haven 1:141/333 203-934-9852 HST +CT Death's Domain, Enfield 1:142/629 203-749-6103 HSTV32 +CT Plainfield News, Plainfield 1:327/452 203-564-8579 HST +DE KnowledgeBase BBS, Wilmington 1:150/360 302-633-4797 HSTV32 +FL Stan's Shack, Jacksonville 1:112/5 904-768-3854 HSTV32 +FL Silicon Dreams, Bradenton 1:137/200 813-746-7788 V32 +FL Jos' Lounge, Naples 1:3630/40 813-592-1535 HSTV32 +FL Other World, Tallahassee 1:3605/56 904-668-1092 HST +FL The Dog House, Tamarac 1:369/54 305-720-3637 HSTV32 +FL archonRAINBOW, Ft Myers 1:371/13 813-939-3394 HST +FL Strat's Asylum, Cape Canaveral 1:374/12 407-799-0390 HSTV32b +FL E.I.L.C. BBS, Palm Bay 1:374/60 407-676-2998 HSTV32b +FL Southern Systems, Tampa 1:377/9 813-977-7065 HSTV32 +GA Galaxy Info System, Atlanta 1:133/411 404-671-1024 V32 +GA Code Plus, Warner Robins 1:3611/15 912-953-1053 HSTV32b +GA Combat Override, Albany 1:3617/3 912-883-1421 HST +HI CocoNuts BBS Service, Honolulu 1:345/2 808-845-7054 HSTV32 +IA Icarus, Iowa City 1:283/657 319-337-9878 HSTV32 +IL Midrange System, Mt Prospect 1:115/439 708-439-9679 HSTV32 +IL Buzzard's Roost, Peoria 1:232/17 309-691-5469 HSTV32b +IN Someplace BBS, Indianapolis 1:231/120 317-353-9981 HST +IN Joker's Wild, Indianapolis 1:231/510 317-843-1371 HSTV32 +IN The Jokerman BBS, Bluffton 1:236/12 219-824-5628 ZYXV32b +LA My Secret Garden, Shreveport 1:380/5 318-865-4503 H16V32b +LA *Silver Streak RBBS, New Orleans 1:396/15 504-888-6515 HSTV32b +MA Rainbow's Edge, Westwood 1:101/1 617-551-0495 HSTV32 +MA Pioneer Valley PCUG1, Amherst 1:321/109 413-256-1037 HST +MA Denis's Opus, Ayer 1:322/2 508-772-6373 HSTV32 +MA Waystar BBS, Marlborough 1:322/14 508-481-7147 HST +MA The Business Card, Lawrence 1:324/121 508-682-5329 HSTV32b +MD Addict's Attic, Germantown 1:109/423 301-428-8998 V32 +MD AviTechnic ,Lutherville 1:261/662 301-252-0717 HSTV32 +MI The Red Eye BBS, Westland 1:2410/213 313-728-0213 V32b +MI Fast Eddies BBS, Monroe 1:2380/101 313-243-0944 ZYXV32b +MN Riverside BBS, Elk River 1:282/1008 612-241-9963 V32 +MO Cheswick's, St Louis 1:100/375 314-965-5296 HSTV32 +MO Summit Forum, Holt's Summit 1:289/13 314-896-5393 HSTV32 +MO Cmos, St Joseph 1:294/1 816-233-1357 HSTV32b +NC Crossed Wires, Dudley 1:3660/809 919-580-7194 H16V32b +NC Psychotronic BBS, Durham 1:3641/1 919-286-7738 HSTV32 +NC Programmer's Asstnt, Charlotte 1:379/4 704-544-0010 HST +NH Our BBS Yours and Mine, Derry 1:132/193 603-432-5287 HSTV32b +NJ University BBS, Eatontown 1:107/411 908-544-8193 HSTV32b +NJ Maple Shade Opus, Maple Shade 1:266/12 609-482-8604 HSTV32b +NJ APFL- The BBS, Tenafly 1:2604/306 201-567-6994 HSTV32b +NJ Fleet Street, Somerville 1:2605/625 908-722-8962 V32 +NJ Atrium Way, Morris Plains 1:2606/583 201-984-5555 HSTV32 +NM Construction Net #6, Los Alamos 1:15/20 505-662-0659 HST +NV $in City Bit Pit, Las Vegas 1:209/711 702-647-4427 HSTV32 +NV Danger Zone, Reno 1:213/720 702-828-4907 HSTV32 +NY Rivendell * TAP/1, Syracuse 1:260/1 716-646-0227 HSTV32 +OH The Mountain Top, Cincinnati 1:108/107 513-921-5568 HST +OH Blue Byte BBS, Enon 1:110/270 513-864-1143 HST +OH Nerd's Nook, Rocky River 1:157/3 216-356-1882 HSTV32b +OH NHampton Data, Cuyahoga Falls 1:157/533 216-928-8565 HSTV32 +OH Computer Room, Pickerington 1:226/110 614-861-8377 HSTV32 +OH Steel Valley BBS, Girard 1:237/500 216-545-2318 HSTV32 +OH The Outer Limits, Chillicothe 1:2220/10 614-772-5520 H16VFC +OH South of the Bauder, Chillicothe 1:2220/70 614-773-2423 H16V32b +OK Ascension, Norman 1:147/46 405-360-4261 HST +OR Bink of an Aye, Portland 1:105/42 503-297-9043 PEPV32 +OR Atarian BBS, Portland 1:105/10 503-245-9730 HSTV32 +OR Busker's Boneyard, Portland 1:105/14 503-771-4773 PEP +OR Dimension 7, Eugene 1:152/7 503-461-2219 HST +PA The Other BBS, Harrisburg 1:270/101 717-657-2223 HST +PA Walsh Microsys, Philadelphia 1:273/917 215-725-9134 HST +PA Optical Illusion, Allentown 1:273/603 215-797-7409 HSTV32 +PA U.S.S. Intrepid, Spring House 1:273/703 215-641-0270 HST +PA Programmer's Haven, Allentown 1:2607/103 610-797-9378 V32BVFC +PA Cheyenne BBS, Upper Darby 1:2614/409 215-544-0819 HSTV32b +PR Island Sun, Caparra Heights 1:367/15 809-783-9542 HST +SC Dreadnaught BBS, Columbia 1:376/50 803-731-3884 V32 +SC Special Projects, Beech Island 1:360/13 803-827-1725 HSTV32b +SC Carolina Collections, Sumter 1:3647/1 803-499-4316 HSTV32b +TN EET BBS, Nashville 1:116/24 615-353-3476 HSTV32 +TX Conch Opus, Houston 1:106/357 713-667-7213 HSTPCP +TX Inns of Court, Dallas 1:124/6101 214-458-2620 HSTV32 +TX Spare Parts, Bedford 1:130/38 817-540-3527 HST +TX Southern Crossroads, Dallas 1:124/4115 817-481-8984 ZYXV32b +TX The Gas Company, Arlington 8:930/201 817-265-8938 HST +TX Wireline, Corpus Christi 1:160/40 512-241-1120 HST +TX Middle Earth, San Antonio 1:382/19 512-835-4848 HST +TX Hair of the Dog, Austin 1:382/44 512-219-9446 V32b +TX Last Chance TBBS, San Antonio 1:387/800 512-822-7519 HST +TX TSTI INFO NET, Waco 1:388/1000 817-799-1570 HST +TX Direct Connect!, Victoria 1:3802/213 512-573-0245 HSTV32b +VA Diving Board, Richmond 1:264/180 804-965-9082 HST +VA Host D, Newport News 1:271/295 804-887-0577 V32b +VA Host D, Newport News 1:271/296 804-887-2490 ZYXV32b +VA Host D, Newport News 1:271/294 804-887-8235 HST +VA ThunderBolt BBS, Fredericksburg 1:274/13 703-373-9289 HST +VA Terrapin Station, Norfolk 1:275/13 804-489-7450 HSTV32b +VT The Ozone Layer, Williston 1:325/118 802-862-5058 HSTV32b +WA Pacifier BBS, Vancouver 1:105/103 206-253-9770 HSTV32 +WA Seattle/Everett Hub, Seattle 1:343/300 206-244-8860 HST +WA Sno-Valley SW Exchange, N Bend 1:343/108 206-888-9249 HSTV32 +WA Sleepy Hollow BBS, Wenatchee 1:344/78 509-664-4021 V32b +WA Gecko Control, Fairchild AFB 1:346/26 509-244-0944 V32 +WA SunDial BBS, Pasco 1:347/7 509-545-1789 HST +WI County Line BBS, W Allis 1:154/100 414-476-8468 HSTV32b +WI The Inn, Chippewa Falls 1:2300/10 715-723-3552 HSTV32b +WY Oregon Trail XRoads, Casper 1:303/5 307-472-3615 H96V32 +WY Black Diamond, Greybull 1:15/24 307-682-6944 H14V32b + + CANADA + ------------------------------ --------- ------------ ---------- +AB Logical Solutions, Calgary 1:134/10 403-299-9917 HST +AB Information Corner, Edmonton 1:342/20 403-483-1896 HST +BC Kiwi-Land, Surrey 1:153/909 604-536-0831 H16V32b +MB Polar Bear Heaven Winnipeg 1:348/405 204-837-9704 HST +NB Atlantic Access, St John W 1:255/2 506-635-1964 HST +ON AFI Comm, Nepean 1:163/115 613-829-0282 HST +ON Ned's Opus HST Ottawa 1:163/211 613-523-8965 HST +ON Alpha City BBS, Oshawa 1:229/2 416-579-6302 H14V32b +ON The Aardvark, Burlington 1:259/110 905-332-4127 H16V32b +PQ Arcane BBS, Laval 1:167/116 514-687-9586 HST +SK The DataForce, Regina 1:140/72 306-585-1958 HST + + ZONE 2 + --------------------------------- --------- -------------- ------- +AU ZAP #3/Cuckoo's Nest 2:310/3 43-1-454330 HSTV32b + +BE The Optimist, Antwerpen 2:292/856 32-3-2811450 ZYXV32b + +DE The 49er's, Wuppertal 2:243/7801 49-202-305803 HST +DE Median, Berlin 2:2410/305 49-30-735148 H16V32Terbo +DE BoersenBox, Friedrichshafen 2:246/8501 49-7541-53191 HSTV32b + +FR The Lys Valley, Comines 2:322/2 33-20631262 HSTV32Terbo + +GB Enigma Variations, Worcester 2:2/544 44-905-795002 HST +GB GABBS, Gosport Hants 2:251/16 44-705-524805 HSTV32b +GB Komputer Knowledge, Cheddington 2:252/7 44-296-668148 HSTV32 +GB Aureal, Market Harborough 2:254/153 44-858-466594 HST +GB Trinity I, Exeter 2:255/112 44-392-495899 HSTV32b +GB Dog & Duck, Hull 2:2503/3 44-482-444650 HSTV32 +GB Power BBS, Wrexham Clwyd 2:442/78 44-978-824278 HSTV32b +GB Piston Popper's, Hastings 2:441/80 44-424-853361 HSTV32 + +IL Small BBS, Jerusalem 2:402/777 V32b + +IT Venus, Pavia PV 2:331/318 39-382-575369 V32bZYX +IT Genova 2000, Genova 2:332/201 39-10-3770080 V32b +IT SUBALPINA's_Hub, Torino 2:334/300 39-11-6624400 HSTV32 + +NL TouchDown, Hoofddorp 2:280/414 31-2503-52030 H14V32b +NL Interface HQ, Den Haag 2:281/506 31-70-3360698 V32b +NL Kiss Software, Almelo 2:283/314 31-5490-13932 ZYXV32b +NL Programmers Support, Helmond 2:2802/108 31-4920-13558 H14V32b +NL Byteline! Systems, Hardinxveld 2:285/101 31-1846-17611 H14V32b +NL DOSSBoss Twente, Delden 2:500/149 31-5407-64701 ZYXV32b +NL The HEKOM Board 2:500/223 31-3483-4072 V32b +NL MotherBoard 2:512/197 31-50-187669 H14V32b + +SE Capital City BBS,Haninge 2:201/111 46-8-53043088 H14V32 +SE Fenix, Viksj 2:201/298 46-8-58011629 V32b + + ZONE 3 + ------------------------------ --------- ------------- ------- +AU Marwick's MadHouse, Brisbane 3:640/820 61-7-3870-2972 PEPV32 +AU Sentry, Lane Cove NSW 3:711/401 61-2-9428-4687 PEPV32 +AU Sentry's Shadow, Lane Cove NSW 3:711/501 61-2-9418-6682 V32bTerbo +AU Revelstone BBS, Doveton Vic 3:632/348 61-3-9741-2353 PEP +AU Southern Mail CBCS Croyton Vic 3:632/386 61-3-9725-1621 PEP +AU COMPUlink, Perth WA 3:690/628 61-8-9451-7288 2400 +AU Phone Box,Inglewood SA 3:800/854 61-8-8380-5505 V32 + + The following phone number will come into effect in November 1997 +AU OZ-Board, Townsville Qsnlnd 3:640/715 61-7-4721-3592 PEPV32RE + + ZONE 6 + ------------------------------ --------- ------------- ------- +HK TAIC Maximus Kowloon 6:700/1 85-2-789-1267 PEPV32 + + +====================================================================== + +URLs: + +Home page: http://www.pobox.com/~ralf + +Files in my FTP area: + http://www.pobox.com/~ralf/files.html + ftp://ftp.cs.cmu.edu/afs/cs.cmu.edu/user/ralf/pub/ + +Files on SimTel and mirrors: + ftp://ftp.simtel.net/pub/simtelnet/msdos/info/ [look for inter???.zip] + ftp://ftp.simtel.net/pub/simtelnet/msdos/c/spwno413.zip + ftp://ftp.simtel.net/pub/simtelnet/msdos/desqview/dvint43.zip + ftp://ftp.simtel.net/pub/simtelnet/msdos/desqview/dvglu172.zip + ftp://ftp.simtel.net/pub/simtelnet/msdos/modem/rbcom346.zip + +Files at Garbo: + ftp://garbo.uwasa.fi/pc/programming/inter61a.zip + ftp://garbo.uwasa.fi/pc/programming/inter61b.zip + ftp://garbo.uwasa.fi/pc/programming/inter61c.zip + ftp://garbo.uwasa.fi/pc/programming/inter61d.zip + ftp://garbo.uwasa.fi/pc/programming/inter61e.zip + ftp://garbo.uwasa.fi/pc/programming/inter61f.zip diff --git a/floppy/doc/README.1 b/floppy/doc/README.1 new file mode 100644 index 0000000..3899362 --- /dev/null +++ b/floppy/doc/README.1 @@ -0,0 +1,18 @@ +This is the first of six archives containing the x86/MSDOS Interrupt List, +release 61. It should contain the following files: + + README.NOW + README.1 + INTERRUP.A + INTERRUP.B + INTERRUP.C + INTERRUP.D + FAQ.LST + OVERVIEW.LST + TABLES.LST + SAMPLE.FLT + SAMPLE1.FLT + SAMPLE2.FLT + NEEDHELP.TXT + RBROWN.TXT + _ADVERT.TXT diff --git a/floppy/doc/README.NOW b/floppy/doc/README.NOW new file mode 100644 index 0000000..53d92fd --- /dev/null +++ b/floppy/doc/README.NOW @@ -0,0 +1,76 @@ +As usual, I still have a queue of unprocessed submissions.... If +you've sent in any contributions which don't appear in this release but +which I've acknowledged, they are still on my queue and will appear in +the future. + +Still on the queue: more OpenDOS info, the rest of the TI Professional +info, lots of chipset info (see NEEDHELP.TXT), .... + + +UPCOMING CHANGES +================ + +The individual sections of the list will be larger in future releases +so that there are fewer parts. I'm planning on 720K per section unless +there are strong objections. + + +WHAT'S NEW +========== + +INTER61 +------- +New files: + FAQ.LST start of an FAQ -- submissions welcome! + +updated files: + OPCODES.LST + +new info: + over 400k of additions, including: AHA-154x commands, ATASPI, + more MSRs (including AMD Athlon), lots of DR-DOS/OpenDOS/PTS-DOS/S-DOS + info (with more still to be added), AMIGATSR, MULTIJOY, USB4DOS, + VXDLDR, etc. + +Other changes: + INTERxxF and INTERxxG have been merged. + +Note: I have deliberately omitted the usual renumbering of tables because + I still have lots of pending updates referencing tables using the + numbering from INTER60 (and there are no doubt some dangling + cross-references due to incomplete updating). As a result, many + table numbers will be out of order. + + +INTER60 +------- +updated files: + OPCODES.LST + +updated programs: + INT2WHLP can now handle the new five-character table numbers + +new info: + Econet, VESA VBE/AF, Matrox VESA-OEM functions, more Soft-ICE backdoor + commands, XBIOS, EZ-Drive, Adaptec AIC-7xxx and AHA-152x ports, + GEM/ViewMAX, WinTel API, TrLit API, VHRBIOS.SYS, Philips SAA7110(A), + Intel 82595FX + + +INTER59 +------- +format changes: + all table numbers are now five characters in length, and just in time, + too: PORTS.LST now has 1014 tables.... + +updated files: + OPCODES.LST + +new info: + chipsets: Intel 440BX/EX/LX, Intel 82371MX, OPTi "Vendetta", OPTi + 82C493/82C382, Via VT82C496G "486SXWB", Via VT82C570M "Apollo Master" + PicoPower Vesuvius + other hardware: C&T 82C9001A, C&T 64200/64310, Ensoniq ES1370/1371, + Cirrus CL-PD6710/6722, Cirrus CL-PD6729 + Award-BIOS password algorithm, more PCI vendor IDs + diff --git a/floppy/doc/SAMPLE.FLT b/floppy/doc/SAMPLE.FLT new file mode 100644 index 0000000..602ebf2 --- /dev/null +++ b/floppy/doc/SAMPLE.FLT @@ -0,0 +1,25 @@ +# Sample filtering file. Lines starting with a hash mark in the first +# column are comments. Actual filtering lines start with either a dash +# or a plus sign in the first column (additional modes may be added in +# the future). Lines starting with a dash specify that interrupt list +# entries containing that string in the first line will be omitted from +# the formatted output; lines starting with a plus sign specify that +# interrupt list entries containing that string are to be included in +# the formatted output unless one of the minus lines matches. + +# Extract MS-DOS calls, but exclude DR-DOS-specific, DOS-extender, and +# non-DOS networking calls. Note: a few extraneous calls are still included. +# ++ DOS +-DR DOS +-DR-DOS +-DR Multiuser DOS +-Concurrent DOS +-DOS/16M +-DOS4GX +-DOS/4G +-extender +-LAN Manager +-DECnet DOS +# +# end of SAMPLE.FLT diff --git a/floppy/doc/SAMPLE1.FLT b/floppy/doc/SAMPLE1.FLT new file mode 100644 index 0000000..4378d04 --- /dev/null +++ b/floppy/doc/SAMPLE1.FLT @@ -0,0 +1,19 @@ +# SAMPLE1.FLT +# Sample filtering file number 1, using only title includes/excludes. +# Extract MS-DOS calls, but exclude DR-DOS-specific, DOS-extender, and +# non-DOS networking calls. +# Note: a few extraneous calls are still included. +# ++ DOS +-DR DOS +-DR-DOS +-DR Multiuser DOS +-Concurrent DOS +-DOS/16M +-DOS4GX +-DOS/4G +-extender +-LAN Manager +-DECnet DOS +# +# end of SAMPLE1.FLT diff --git a/floppy/doc/SAMPLE2.FLT b/floppy/doc/SAMPLE2.FLT new file mode 100644 index 0000000..5821274 --- /dev/null +++ b/floppy/doc/SAMPLE2.FLT @@ -0,0 +1,17 @@ +# SAMPLE2.FLT +# Sample filtering file number 2, using category includes/excludes. Extract +# MS-DOS and DR-DOS calls, but exclude OS/2 and other operating systems. +# +# unconditionally include the DOS category +>D +# include 'other OSes' category, but remove OS/2, VMiX, PC-MOS, etc. +iO +-OS/2 +-VMiX +-PC-MOS +-STARLITE +-WinDOS +-Acorn BBC +-Linux DOSEMU +# +# end of SAMPLE2.FLT diff --git a/floppy/doc/TABLES.LST b/floppy/doc/TABLES.LST new file mode 100644 index 0000000..69eae93 --- /dev/null +++ b/floppy/doc/TABLES.LST @@ -0,0 +1,184 @@ +SELECTED TABLES Release 61 Last change 16jul00 +Copyright (c) 1989-1999,2000 Ralf Brown +--------!------------------------------------ + +Buses + EISA (see INT 15/AX=D800h) + I2C / IIC bus (see I2C 00h) + PCI bus -- see below + System Management Bus (see INT 15/AX=53B0h/BH=01h) + Universal Serial Bus OpenHCI (see #00902 at INT 1A/AX=B10Ah) + +Country-Specific Information: + country codes (see #01400 at INT 21/AH=38h) + country-specific information (see #01398,#01399) + country-dependent capitalization (see INT 21/AX=6520h) + code pages (see #00470,#01757) + extended country-specific info (see #01750 at INT 21/AX=6500h) + uppercase table (see #01751) + filename uppercase table (see #01753) + filename terminator table (see #01754) + collating table (see #01755) + DBCS lead byte table (see #01756) + yes/no response (see INT 21/AX=6523h) + +DESQview + .PIF / .DVP file format (see #00427 at INT 15/AX=102Ch) + TopView panel file format (see #00436 at INT 15/AH=12h) + TopView/DESQview streams (see #00446,#00447,#00448 at INT 15/AH=12h) + +Device Drivers + command code (see #02595 at INT 2F/AX=0802h) + device driver header (see #01646 at INT 21/AH=52h) + device attributes (see #01647,#01648 at INT 21/AH=52h) + error codes (see #02598 at INT 2F/AX=0802h) + request header (see #02596 at INT 2F/AX=0802h) + +Disks + BIOS Parameter Block (BPB) (see #01663) + diskette drive type (see #00242 at INT 13/AH=08h) + diskette parameter table (see #01264 at INT 1E) + DOS drive parameter block (see #01357 at INT 21/AH=1Fh) + DOS media ID byte (see #01356 at INT 21/AH=1Bh) + hard disk master boot sector (see #00650 at INT 19) + hard disk partition record (see #00651 at INT 19) + IDE controller commands (see #P0515 at PORT 01F0h) + Partition Types (see #00652 at INT 19) + serial number (see #01565 at INT 21/AX=440Dh,#01766 at INT 21/AH=69h) + +DOS (general) + DOS commandline (see #02585 at INT 2E) + DOS Environment block (see #01378 at INT 21/AH=26h,#01395) + DOS memory allocation strategy (see #01679 at INT 21/AH=58h) + DOS OEM number (see #01394 at INT 21/AH=30h) + +DOS error codes (see INT 21/AH=59h) + critical error (see #02545 at INT 24) + extended error codes (see #01680) + error class (see #01682) + error locus (see #01684) + media ID structure (see #01681) + recommended action (see #01683) + +DOS EXEC function (see INT 21/AH=4Bh): + EXEC parameter block (see #01590,#01591,#01592) + .EXE file formats (see #01594,#01596,#01609,#01616) + Program Segment Prefix (PSP) (see #01378 at INT 21/AH=26h) + +DOS extenders + DPMI error codes (see #03143 at INT 21/AX=0000h) + DPMI mode switch (see #02718 at INT 2F/AX=1687h) + DPMI vendor-specific API (see #02719 at INT 2F/AX=168Ah) + DPMS registration structure (see #02793 at INT 2F/AX=43E0h) + VCPI (see INT 67/AX=DE00h) + mode switch (see #03665 at INT 67/AX=DE0Ch) + +DOS-internal data (see INT 21/AH=52h) + Current Directory Structure (see #01643,#01644,#01645) + Disk buffer (see #01649,#01650,#01652,#01653,#01655) + DOS Parameter List (DPL) (see #01686 at INT 21/AX=5D00h) + IFS entry point (see #01658) + List of Lists (SYSVARS) (see #01627) + Memory Control Block (see #01628,#01630,#01633) + Novell DOS (see #01584,#01585 at INT 21/AX=4458h) + SHARE hooks (see #01636) + Swappable Data Area (SDA) (see #01687,#01690 at INT 21/AX=5D0Bh) + System File Table (SFT) (see #01639,#01640,#01641,#01642) + +Error Codes (Other) + AMI/Award/C&T/etc. BIOS diagnostics (POST) codes (see #P0410,#P0412) + Advanced Power Management [APM] (see #00473 at INT 15/AX=5300h) + EMS (see #03648 at INT 67/AH=40h) + PRINT.EXE (see #02594 at INT 2F/AX=0101h) + XMS (see #02775 at INT 2F/AX=4310h) + +Files and Directories + Directory Entry: MS-DOS, DR DOS, Novell DOS (see #01352) + file attributes (see #01401 at INT 21/AH=3Ch) + File Control Block (FCB) (see #01345 at INT 21/AH=0Fh) + File Date and Time (see #01665,#01666 at INT 21/AX=5700h) + file-sharing behavior (see #01403 at INT 21/AH=3Dh) + FindFirst data block (see #01626 at INT 21/AH=4Eh) + Long File Names (see INT 21/AH=71h,#01355 at INT 21/AH=11h) + +Keyboard + keyboard controller commands (see #P0386,#P0401) + scan codes (see #00006 at INT 09"IRQ1") + shift states (see #00587,#00588 at INT 16/AH=12h) + +Memory + memory size (see INT 12,INT 15/AH=88h,INT 15/AX=E820h) + SDRAM/DIMM configuration data (see #I0047 at I2C A0h) + +NetWare + DOS Requester entry point (see #02859 at INT 2F/AX=7A20h) + error codes (see #01807 at INT 21/AH=BCh,#01811,#01834 at INT 21/AH=E1h) + LSL status (see #02989 at INT 2F/AX=C000h"LSL") + NetWare Core Protocol functions (see #02095 at INT 21/AH=F2h) + VLM error codes (see #02860 at INT 2F/AX=7A20h) + VLM header (see #02862 at INT 2F/AX=7A20h) + VLM identifier (see #02861 at INT 2F/AX=7A20h) + +PCI Bus + PCI BIOS error codes (see #00729 at INT 1A/AX=B101h) + PCI configuration data (see #00878 at INT 1A/AX=B10Ah) + PCI vendor ID (see #00732 at INT 1A/AX=B102h) + PCI IRQ Routing Table (see #01259 at INT 1A/AX=B406h) + +Plug-and-Play + Plug-and-Play Installation Structure (see #F0024) + Plug-and-Play error codes (see #F0081) + Plug-and-Play device type codes (see #F0085) + Extended System Configuration Data (ESCD)(see #01244 at INT 1A/AX=B401h) + generic device IDs (see #F0086) + +Power Management + Advanced Power Management [APM] (see INT 15/AX=5300h) + Advanced Configuration and Power Interface [ACPI] + (see #M0094 at MEM xxxxh:xxx0h"ACPI") + +Real-Time Clock (see also CMOS.LST) + status registers (see #00406,#00407,#00408 at INT 15/AH=01h"Amstrad") + +Serial Port + serial port parameters (see #00300 at INT 14/AH=00h) + serial line status (see #00304 at INT 14/AH=03h) + modem status (see #00305 at INT 14/AH=03h) + +Sound + Adlib/SoundBlaster registers (see #P0645 at PORT 0388h"AdLib") + Gravis UltraSound + registers (see #P0593 at PORT 0340h"Gravis") + board version (see PORT 0746h"Gravis") + MegaEm (see INT 21/AX=FD12h,#03975 at INT 81/AX=0200h) + SoundBlaster SBSIM (see #03972 at INT 80"SBSIM") + Windows Sound System (see #P0895 at PORT 0530h"Windows Sound") + +Video + character attributes (see #00014 at INT 10/AH=08h) + Display Combination Code (DCC) (see #00039 at INT 10/AX=1A00h) + TopView/RSIS shadow buffer [virtual screen] (see INT 10/AH=FEh) + VESA DDC monitor information (see #00127 at INT 10/AX=4F15h/BL=01h) + VESA SuperVGA information (see #00077 at INT 10/AX=4F00h) + video modes + mode numbers (see #00010 at INT 10/AH=00h) + UltraVision modes (see #00220 at INT 10/AX=CD04h) + VESA modes (see #00083 at INT 10/AX=4F02h) + video parameters (see #01263 at INT 1D) + +Windows + Global EMM Import record (see #01515 at INT 21/AX=4402h) + Startup Information Structure (see #02631 at INT 2F/AX=1605h) + VMMCALL (see INT 20"Windows") + VxD identifiers (see #02642 at INT 2F/AX=1684h) + +Other Tables + AMIS signatures (see #02569,#02570 at INT 2D/AH=00h) + BIOS equipment list (see #00226 at INT 11) + BIOS32 Service Directory (see #F0021) + Interrupt Sharing Protocol (ISP) header (see #02568 at INT 2D) + Multiprocessor Specification - Floating Pointer Structure (see #M0113) + Option ROM header (see #F0082) + ROM configuration table (see #00509 at INT 15/AH=C0h) +--------!---CONTACT_INFO--------------------- +E-mail: ralf@pobox.com (currently forwards to ralf@telerama.lm.com) diff --git a/floppy/doc/_ADVERT.TXT b/floppy/doc/_ADVERT.TXT new file mode 100644 index 0000000..ab95220 --- /dev/null +++ b/floppy/doc/_ADVERT.TXT @@ -0,0 +1,112 @@ +Warning: Blatant advertisements follow + +Tired of wearing out printer ribbons getting a hardcopy of the interrupt +list? Want the list split up by subject and thoroughly indexed? Try + + PC Interrupts: + A Programmer's Reference to BIOS, DOS, and Third-Party Calls + (second edition) + Ralf Brown and Jim Kyle + 1210 pages + Addison-Wesley + ISBN 0-201-62485-0 + $39.95 + +Corresponds to the non-networking portions of INTER36 with a few of the +additions from INTER37. + +The companion book Network Interrupts corresponds to the networking +portions of INTER37 with a few of the additions from INTER38. + + Network Interrupts: A Programmer's Reference to Network APIs + Ralf Brown and Jim Kyle + 730 pages + Addison-Wesley 1994 + ISBN 0-201-6644-6 + $29.95 + +Now (December 1994) available: + + Uninterrupted Interrupts: A Programmer's CD-ROM Reference to + Network APIs, and to the BIOS, DOS, and Third-Party Calls + Ralf Brown and Jim Kyle + Addison-Wesley + ISBN 0-201-40966-6 + $49.95 + +CD-ROM containing the full text of both PC Interrupts (2nd ed) and +Network Interrupts, updated to include information added through INTER42. + +------- + +PC Interrupts is now available in Chinese. I don't know the exact title +(and couldn't reproduce it here), but it is a three-volume set which +appears to be a straight translation of the Interrupt List, circa +INTER26. + + ISBN 957-652-272-2 (INT 00h-1Fh) 516 pages, NT$ 300 + ISBN 957-652-271-4 (INT 20h-30h) 704 pages, NT$ 400 + ISBN 957-652-261-7 (INT 31h-FFh) 488 pages, NT$ 280 + +Also available in Russian.... ISBN 5-03-002989-3 (vol. 1) + ISBN 5-03-002990-7 (vol. 2) +The Russian version is a translation of the first edition. + +------- + + Undocumented DOS: + A Programmer's Guide to Reserved MS-DOS Functions and Data Structures + (second edition) + Andrew Schulman, Ralf Brown, David Maxey, Raymond J. Michels, and + Jim Kyle + + 880 pages, 7-3/8" x 9-1/8" + Addison-Wesley + ISBN 0-201-63287-X + $44.95 (book and 1.44M disk) + +Includes a repackaged version of INTER36, script-based interrupt +monitoring utility, source for a sample network redirector, discussions +of TSRs/multitasking/networks/installable file systems/debugging, +lots of examples, etc. + +Jolt Productivity Award winner, 1991 (first edition) + +------- + +Undocumented DOS (first edition) is now also available in Chinese. +ISBN 7-302-01071-4. + +------- + +WindowBook, Inc., the folks who prepared the hypertext version for +_Undocumented_DOS_, first edition, is tracking my releases of the +interrupt list, and offering the WindowBook version for $39.95 ($19.95 +for updates). You can reach them at 800-524-0380 or 617-661-9515. Note +that I have no financial interest whatsoever in WindowBook's offering, +I'm just letting people know of value-added versions of the list. + + Window Book, Inc. + 61 Howard Street + Cambridge, MA 02139 + +------- + +The following books may also be of interest: + + DOS Internals + Geoff Chappell + 740 pages + 1.44M disk, $39.95 + Addison-Wesley + ISBN 0-201-60835-9 + + The Undocumented PC: A Programmer's Guide to I/O, CPUs, and + Fixed Memory Areas + Frank van Gilluwe + 916 pages + 1.44M disk, $44.95 + Addison-Wesley + ISBN 0-201-62277-7 + +Again, I have no financial interest in the above (though I have met both +authors). + diff --git a/floppy/doc/dc0d32.blogspot.com_2010_06_real-mode-in-c-with-gcc-writing.txt b/floppy/doc/dc0d32.blogspot.com_2010_06_real-mode-in-c-with-gcc-writing.txt new file mode 100644 index 0000000..6834acd --- /dev/null +++ b/floppy/doc/dc0d32.blogspot.com_2010_06_real-mode-in-c-with-gcc-writing.txt @@ -0,0 +1,892 @@ + #[1]dc0d32 - Atom [2]dc0d32 - RSS [3]dc0d32 - Atom + +[4]dc0d32 + +Tuesday, June 15, 2010 + +Real mode in C with gcc : writing a bootloader + + Usually the x86 boot loader is written in assembler. We will be + exploring the possibility of writing one in C language (as much as + possible) compiled with gcc, and runs in real mode. Note that you can + also use the 16 bit bcc or TurboC compiler, but we will be focusing on + gcc in this post. Most open source kernels are compiled with gcc, and + it makes sense to write C bootloader with gcc instead of bcc as you get + a much cleaner toolchain :) + As of today (20100614), gcc 4.4.4 officially only emits code for + protected/long mode and does not support the real mode natively (this + may [5]change in future). + Also note that we will not discuss the very fundamentals of booting. + This article is fairly advanced and assumes that you know what it takes + to write a simple boot-loader in assembler. It is also expected that + you know how to write gcc inline assembly. Not everything can be done + in C! + +getting the tool-chain working + +.code16gcc + + As we will be running in 16 bit real mode, this tells gas that the + assembler was generated by gcc and is intended to be run in real mode. + With this directive, gas automatically adds addr32 prefix wherever + required. For each C file which contains code to be run in real mode, + this directive should be present at the top of effectively generated + assembler code. This can be ensured by defining in a header and + including it before any other. +#ifndef _CODE16GCC_H_ +#define _CODE16GCC_H_ +__asm__(".code16gcc\n"); +#endif + + This is great for bootloaders as well as parts of kernel that must run + in real mode but are desired written in C instead of asm. In my opinion + C code is a lot easier to debug and maintain than asm code, at expense + of code size and performance at times. + +Special linking + + As bootloader is supposed to run at physical 0x7C00, we need to tell + that to linker. The mbr/vbr should end with the proper boot signature + 0xaa55. + All this can be taken care of by a simple linker script. +ENTRY(main); +SECTIONS +{ + . = 0x7C00; + .text : AT(0x7C00) + { + _text = .; + *(.text); + _text_end = .; + } + .data : + { + _data = .; + *(.bss); + *(.bss*); + *(.data); + *(.rodata*); + *(COMMON) + _data_end = .; + } + .sig : AT(0x7DFE) + { + SHORT(0xaa55); + } + /DISCARD/ : + { + *(.note*); + *(.iplt*); + *(.igot*); + *(.rel*); + *(.comment); +/* add any unwanted sections spewed out by your version of gcc and flags here */ + } +} + + gcc emits elf binaries with sections, whereas a bootloader is a + monolithic plain binary with no sections. Conversion from elf to binary + can be done as follows: +$ objcopy -O binary vbr.elf vbr.bin + +The code + + With the toolchain set up, we can start writing our hello world + bootloader! + vbr.c (the only source file) looks something like this: +/* + * A simple bootloader skeleton for x86, using gcc. + * + * Prashant Borole (boroleprashant at Google mail) + * */ + +/* XXX these must be at top */ +#include "code16gcc.h" +__asm__ ("jmpl $0, $main\n"); + + +#define __NOINLINE __attribute__((noinline)) +#define __REGPARM __attribute__ ((regparm(3))) +#define __NORETURN __attribute__((noreturn)) + +/* BIOS interrupts must be done with inline assembly */ +void __NOINLINE __REGPARM print(const char *s){ + while(*s){ + __asm__ __volatile__ ("int $0x10" : : "a"(0x0E00 | *s), "b"(7)) +; + s++; + } +} +/* and for everything else you can use C! Be it traversing the filesystem, or ve +rifying the kernel image etc.*/ + +void __NORETURN main(){ + print("woo hoo!\r\n:)"); + while(1); +} + + + compile it as +$ gcc -c -g -Os -march=i686 -ffreestanding -Wall -Werror -I. -o vbr.o vbr.c +$ ld -static -Tlinker.ld -nostdlib --nmagic -o vbr.elf vbr.o +$ objcopy -O binary vbr.elf vbr.bin + + and that should have created vbr.elf file (which you can use as a + symbols file with gdb for source level debugging the vbr with gdbstub + and qemu/bochs) as well as 512 byte vbr.bin. To test it, first create a + dummy 1.44M floppy image, and overwrite it's mbr by vbr.bin with dd. +$ dd if=/dev/zero of=floppy.img bs=1024 count=1440 +$ dd if=vbr.bin of=floppy.img bs=1 count=512 conv=notrunc + + and now we are ready to test it out :D +$ qemu -fda floppy.img -boot a + + and you should see the message! + Once you get to this stage, you are pretty much set with respect to the + tooling itself. Now you can go ahead and write code to read the + filesystem, search for next stage or kernel and pass control to it. + Here is a simple example of a floppy boot record with no filesystem, + and the next stage or kernel written to the floppy immediately after + the boot record. The next image LMA and entry are fixed in a bunch of + macros. It simply reads the image starting one sector after boot record + and passes control to it. There are many obvious holes, which I left + open for sake of brevity. +/* + * A simple bootloader skeleton for x86, using gcc. + * + * Prashant Borole (boroleprashant at Google mail) + * */ + +/* XXX these must be at top */ +#include "code16gcc.h" +__asm__ ("jmpl $0, $main\n"); + + +#define __NOINLINE __attribute__((noinline)) +#define __REGPARM __attribute__ ((regparm(3))) +#define __PACKED __attribute__((packed)) +#define __NORETURN __attribute__((noreturn)) + +#define IMAGE_SIZE 8192 +#define BLOCK_SIZE 512 +#define IMAGE_LMA 0x8000 +#define IMAGE_ENTRY 0x800c + +/* BIOS interrupts must be done with inline assembly */ +void __NOINLINE __REGPARM print(const char *s){ + while(*s){ + __asm__ __volatile__ ("int $0x10" : : "a"(0x0E00 | *s), "b"(7)) +; + s++; + } +} + +#if 0 +/* use this for the HD/USB/Optical boot sector */ +typedef struct __PACKED TAGaddress_packet_t{ + char size; + char :8; + unsigned short blocks; + unsigned short buffer_offset; + unsigned short buffer_segment; + unsigned long long lba; + unsigned long long flat_buffer; +}address_packet_t ; + +int __REGPARM lba_read(const void *buffer, unsigned int lba, unsigned short +blocks, unsigned char bios_drive){ + int i; + unsigned short failed = 0; + address_packet_t packet = {.size = sizeof(address_packet_t), .blocks += blocks, .buffer_offset = 0xFFFF, .buffer_segment = 0xFFFF, .lba = lba, .flat_b +uffer = (unsigned long)buffer}; + for(i = 0; i < 3; i++){ + packet.blocks = blocks; + __asm__ __volatile__ ( + "movw $0, %0\n" + "int $0x13\n" + "setcb %0\n" + :"=m"(failed) : "a"(0x4200), "d"(bios_drive), "S +"(&packet) : "cc" ); + /* do something with the error_code */ + if(!failed) + break; + } + return failed; +} +#else +/* use for floppy, or as a fallback */ +typedef struct { + unsigned char spt; + unsigned char numh; +}drive_params_t; + +int __REGPARM __NOINLINE get_drive_params(drive_params_t *p, unsigned char +bios_drive){ + unsigned short failed = 0; + unsigned short tmp1, tmp2; + __asm__ __volatile__ + ( + "movw $0, %0\n" + "int $0x13\n" + "setcb %0\n" + : "=m"(failed), "=c"(tmp1), "=d"(tmp2) + : "a"(0x0800), "d"(bios_drive), "D"(0) + : "cc", "bx" + ); + if(failed) + return failed; + p->spt = tmp1 & 0x3F; + p->numh = tmp2 >> 8; + return failed; +} + +int __REGPARM __NOINLINE lba_read(const void *buffer, unsigned int lba, uns +igned char blocks, unsigned char bios_drive, drive_params_t *p){ + unsigned char c, h, s; + c = lba / (p->numh * p->spt); + unsigned short t = lba % (p->numh * p->spt); + h = t / p->spt; + s = (t % p->spt) + 1; + unsigned char failed = 0; + unsigned char num_blocks_transferred = 0; + __asm__ __volatile__ + ( + "movw $0, %0\n" + "int $0x13\n" + "setcb %0" + : "=m"(failed), "=a"(num_blocks_transferred) + : "a"(0x0200 | blocks), "c"((s << 8) | s), "d"((h << 8) | bios_driv +e), "b"(buffer) + ); + return failed || (num_blocks_transferred != blocks); +} +#endif + +/* and for everything else you can use C! Be it traversing the filesystem, or ve +rifying the kernel image etc.*/ + +void __NORETURN main(){ + unsigned char bios_drive = 0; + __asm__ __volatile__("movb %%dl, %0" : "=r"(bios_drive)); /* the B +IOS drive number of the device we booted from is passed in dl register */ + + drive_params_t p = {}; + get_drive_params(&p, bios_drive); + + void *buff = (void*)IMAGE_LMA; + unsigned short num_blocks = ((IMAGE_SIZE / BLOCK_SIZE) + (IMAGE_SIZE % +BLOCK_SIZE == 0 ? 0 : 1)); + if(lba_read(buff, 1, num_blocks, bios_drive, &p) != 0){ + print("read error :(\r\n"); + while(1); + } + print("Running next image...\r\n"); + void* e = (void*)IMAGE_ENTRY; + __asm__ __volatile__("" : : "d"(bios_drive)); + goto *e; +} + + + removing __NOINLINE may result in even smaller code in this case. I had + it in place so that I could figure out what was happening. + +Concluding remarks + + C in no way matches the code size and performance of hand tuned + size/speed optimized assembler. Also, because of an extra byte (0x66, + 0x67) wasted (in addr32) with almost every instruction, it is highly + unlikely that you can cram up the same amount of functionality as + assembler. + Global and static variables, initialized as well as uninitialized, can + quickly fill those precious 446 bytes. Changing them to local and + passing around instead may increase or decrease size; there is no thumb + rule and it has to be worked out on per case basis. Same goes for + function in-lining. + You also need to be extremely careful with various gcc optimization + flags. For example, if you have a loop in your code whose number of + iterations are small and deducible at compile time, and the loop body + is relatively small (even 20 bytes), with default -Os, gcc will unroll + that loop. If the loop is not unrolled (-fno-tree-loop-optimize), you + might be able to shave off big chunk of bytes there. Same holds true + for frame setups on i386 - you may want to get rid of them whenever not + required using -fomit-frame-pointer. Moral of the story : you need to + be extra careful with gcc flags as well as version update. This is not + much of an issue for other real mode modules of the kernel where size + is not of this prime importance. + Also, you must be very cautious with assembler warnings when compiling + with .code16gcc. Truncation is common. It is a very good idea to use + --save-temp and analyze the assembler code generated from your C and + inline assembly. Always take care not to mess with the C calling + convention in inline assembly and meticulously check and update the + clobber list for inline assembly doing BIOS or APM calls (but you + already knew it, right?). + It is likely that you want to switch to protected/long mode as early as + possible, though. Even then, I still think that maintainability wins + over asm's size/speed in case of a bootloader as well as the real mode + portions of the kernel. + It would be interesting if someone could try this with + c++/java/fortran. Please let me know if you do! + at [6]June 15, 2010 + [7]Email This[8]BlogThis![9]Share to Twitter[10]Share to + Facebook[11]Share to Pinterest + Labels: [12]assembler, [13]bootloader, [14]c, [15]gas, [16]gcc, + [17]kernel, [18]osdev + +25 comments: + + 1. [19]Girija[20]Tuesday, June 15, 2010 at 6:12:00 PM GMT+5:30 + Dokyaawarun 10 foot.. kiwwa jaastach. + :-| + Reply[21]Delete + Replies + Reply + 2. [22]descent[23]Tuesday, December 21, 2010 at 1:10:00 PM GMT+5:30 + Hi, + Thank you for your sharing. + in void __NOINLINE __REGPARM print(const char *s) + I change the print function to access pointer, + like this: + videoram[0]='H'; + but I got the warning message: + /tmp/cc5qsy9l.s:33: Warning: 00000000000b8000 shortened to + 0000000000008000 + Do I miss something? + Reply[24]Delete + Replies + Reply + 3. [25]descent[26]Tuesday, December 21, 2010 at 2:05:00 PM GMT+5:30 + Hi, + I use gcc-3.4 to compile again. + I see no warning message, but in qemu, + I still cannot see char H. + videoram is static variable. + static unsigned char *videoram = (unsigned char *) 0xb8000; + Reply[27]Delete + Replies + Reply + 4. [28]descent[29]Tuesday, December 21, 2010 at 3:16:00 PM GMT+5:30 + Hi, + I got something. In 16bit mode, the pointer is 16bit length. So + 0xb8000 shortened to 0x8000. + I write a c file and a function, + void put_char() + { + unsigned char *videoram = (unsigned char *) 0xb8000; + videoram[0]='H'; + videoram[2]='H'; + videoram[40]='H'; + } + no include code16gcc.h, I think the pointer is 32bits length, but I + still can not see the H character. + Reply[30]Delete + Replies + Reply + 5. [31]Prashant[32]Tuesday, December 21, 2010 at 7:16:00 PM GMT+5:30 + @descent: check the '--save-temps' preserved assembler version of + the C function. + This article assumes that the reader has low level programming + experience with x86. + To access the vidmem with b8000h, you have 2 options: + 1. write inline assembly to set es to b800h, and di to the address + in the real mode segment. Then write byte/word to es:di. + 2. Enter unreal mode. Then you can use the full 4G memory, + one-to-one mapped. + I personally would not recommend any of these methods for printing + - BIOS int 10h is pretty good. Remember - do not try and do + anything fancy in the (m/v)br; do it in the next stage instead as + you have pretty much unconstrained image size in later stages. + Reply[33]Delete + Replies + Reply + 6. [34]descent[35]Wednesday, December 22, 2010 at 9:41:00 AM GMT+5:30 + Hi Prashant, + Thank you for your explanation. + Because in protected mode, I can use C, + and direct access 0xb8000, so I am confused. + real/protect mode, gcc/gas 16/32 bit also confuse me. + They are very complicate. + Reply[36]Delete + Replies + Reply + 7. [37]Sebastian[38]Saturday, March 12, 2011 at 6:26:00 PM GMT+5:30 + you are a genius! + Reply[39]Delete + Replies + Reply + 8. [40]Unknown[41]Sunday, April 17, 2011 at 5:48:00 AM GMT+5:30 + I've got that infamous runtime error... + bootloader.exe has encountered a problem and needs to close. We are + sorry for the inconvenience. + Reply[42]Delete + Replies + Reply + 9. [43]Unknown[44]Saturday, May 21, 2011 at 2:39:00 AM GMT+5:30 + Managed to do it in C++. + Code is the same. + Linker file needs to discard eh_frame. + When building on x86-64 add -m32 to g++ and -melf_i386 on ld + command line. + Trying to rewrite it in a more c++-ish style. + My e-mail is boskovits@cogito-top.hu . + Reply[45]Delete + Replies + Reply + 10. [46]Prashant[47]Saturday, May 21, 2011 at 3:02:00 AM GMT+5:30 + @abraker95: are you trying to run the MZ/PE image in windows? that + is like sinning and then spitting on the devil when in hell. + @boskov1985: cool man! let us know how it goes :D + Reply[48]Delete + Replies + Reply + 11. Anonymous[49]Friday, November 25, 2011 at 2:50:00 AM GMT+5:30 + It's easier to to this without objcopy. Modern ld versions support + --oformat=binary , so just one line does the direct compilation + job. + gcc -g -Os -march=i686 -ffreestanding -Wall -Werror -I. -static + -nostdlib -Wl,-Tlinker.ld -Wl,--nmagic -Wl,--oformat=binary -o + loader.bin loader.c + Reply[50]Delete + Replies + Reply + 12. [51]Prashant[52]Friday, November 25, 2011 at 8:01:00 AM GMT+5:30 + I can't verify right now whether it works, but thanks for letting + us know, rpfh! + Reply[53]Delete + Replies + Reply + 13. [54]descent[55]Sunday, December 4, 2011 at 9:42:00 PM GMT+5:30 + Hi, + The c code uses function call, why need not set stack (ss:esp)? + Reply[56]Delete + Replies + Reply + 14. [57]Prashant[58]Tuesday, December 6, 2011 at 10:18:00 AM GMT+5:30 + good point @decent. I guess you will need to set up the stack first + in main, probably in assembler. + Reply[59]Delete + Replies + Reply + 15. [60]descent[61]Saturday, December 24, 2011 at 8:02:00 PM GMT+5:30 + I change %ss:%esp to 0x07a0:0000, + Is any side effect? + void __NORETURN main(){ + __asm__ ("mov %cs, %ax\n"); + __asm__ ("mov %ax, %ds\n"); + __asm__ ("mov $0x07a0, %ax\n"); + __asm__ ("mov %ax, %ss\n"); + __asm__ ("mov $0, %esp\n"); + print("woo hoo!\r\n:)"); + while(1); + } + Reply[62]Delete + Replies + Reply + 16. [63]descent[64]Monday, July 30, 2012 at 8:16:00 AM GMT+5:30 + Hi, + I test c bootloader in real machine, in my eeepc 904, need add some + code to setup stack. + http://descent-incoming.blogspot.tw/2012/05/x86-bootloader-hello-wo + rld.html + The article is written by Chinese, but the code, picture can give + some reference. + cppb.cpp is cpp version (compile by g++), it can work, I test it in + real machine(eeepc 904). + Reply[65]Delete + Replies + Reply + 17. [66]axiomfinity[67]Saturday, April 20, 2013 at 10:46:00 AM GMT+5:30 + linker fails whats up with it..? + Reply[68]Delete + Replies + Reply + 18. [69]Prashant[70]Sunday, April 21, 2013 at 9:34:00 AM GMT+5:30 + Fails how? Can you please elaborate? + Reply[71]Delete + Replies + Reply + 19. [72]Unknown[73]Wednesday, November 13, 2013 at 12:51:00 PM GMT+5:30 + Thank you for detaile explanation + Linker failed nt sure why..ld: error: load segment overlap [0x7c00 + -> 0x7e50] and [0x7dfe -> 0x7e00] + Reply[74]Delete + Replies + Reply + 20. [75]osdev[76]Saturday, May 31, 2014 at 1:35:00 AM GMT+5:30 + someone here? I need to test, but... + "c"((s << 8) | s) <-- duplicate s in CH and CL? + c = lba / (p->numh * p->spt); <-- 'c' is never used... + maybe -> "c"((c << 8) | s) + Reply[77]Delete + Replies + Reply + 21. [78]Unknown[79]Thursday, February 5, 2015 at 8:39:00 PM GMT+5:30 + Thank you for your nice post! I'm trying to run it on my x86-64 + linux box, but gcc reports errors like "bad register name rax", I'm + a little confused by the various compiler options here, could you + please give me suggestions on how to compile the C source file on + x86-64 machines? Thanks + Reply[80]Delete + Replies + 1. [81]Jose Fernando Lopez Fernandez[82]Friday, January 20, 2017 + at 2:56:00 PM GMT+5:30 + rax is a 64 bit register. A bootloader is running in 16 bits, + so you cannot use rax (64 bit) or eax (32 bit). You have to + use ax. + Also, you said your computer is an x86-64. Which one is it? + x86 (32 bit) or 64 (64 bit)? If you have an x86, it will have + no idea what rax is, since it has no knowledge of 64 bit + registers. + I'm just speculating as to your problem here, though. If + anything here is incorrect/misguided by all means let me know, + I'm only a beginner too + [83]Delete + Replies + Reply + 2. [84]Jose Fernando Lopez Fernandez[85]Friday, January 20, 2017 + at 2:57:00 PM GMT+5:30 + @Jing Peng + rax is a 64 bit register. A bootloader is running in 16 bits, + so you cannot use rax (64 bit) or eax (32 bit). You have to + use ax. + Also, you said your computer is an x86-64. Which one is it? + x86 (32 bit) or 64 (64 bit)? If you have an x86, it will have + no idea what rax is, since it has no knowledge of 64 bit + registers. + I'm just speculating as to your problem here, though. If + anything here is incorrect/misguided by all means let me know, + I'm only a beginner too + [86]Delete + Replies + Reply + Reply + 22. [87]Unknown[88]Thursday, February 5, 2015 at 8:40:00 PM GMT+5:30 + Thank you for your nice post! I'm trying to run it on my x86-64 + linux box, but gcc reports errors like "bad register name rax", I'm + a little confused by the various compiler options here, could you + please give me suggestions on how to compile the C source file on + x86-64 machines? Thanks + Reply[89]Delete + Replies + Reply + 23. [90]Unknown[91]Sunday, February 7, 2016 at 8:43:00 PM GMT+5:30 + hello i ma atif + Reply[92]Delete + Replies + Reply + + Add comment + Load more... + + [93]Newer Post [94]Older Post [95]Home + Subscribe to: [96]Post Comments (Atom) + * [97]Real mode in C with gcc : writing a bootloader + Usually the x86 boot loader is written in assembler. We will be + exploring the possibility of writing one in C language (as much as + possible)... + * [98]Writing kernel in Windows with Visual Studio C/C++ + Most hobby osdev projects prefer *nix+gcc combination these days, + primarily because there are a bunch of nice tutorials and examples + availab... + * [99]Debugging kernel with qemu and gdb + Assuming that you have your (or Linux/*BSD/Solaris/Windows or any + other) kernel on a bootable device, you can debug the kernel and + also the ... + +Blog Archive + + * [100]|> [101]2012 (1) + + [102]|> [103]Feb 2012 (1) + + * [104]v [105]2010 (7) + + [106]v [107]Jun 2010 (2) + o [108]Cold boot attack + o [109]Real mode in C with gcc : writing a bootloader + + [110]|> [111]May 2010 (2) + + [112]|> [113]Apr 2010 (1) + + [114]|> [115]Mar 2010 (1) + + [116]|> [117]Feb 2010 (1) + + * [118]|> [119]2009 (12) + + [120]|> [121]Dec 2009 (1) + + [122]|> [123]Nov 2009 (2) + + [124]|> [125]Sep 2009 (1) + + [126]|> [127]Aug 2009 (1) + + [128]|> [129]Jul 2009 (2) + + [130]|> [131]Feb 2009 (2) + + [132]|> [133]Jan 2009 (3) + + * [134]|> [135]2008 (9) + + [136]|> [137]Nov 2008 (2) + + [138]|> [139]Oct 2008 (3) + + [140]|> [141]Aug 2008 (1) + + [142]|> [143]Jun 2008 (3) + +Labels + + [144]linux [145]kernel [146]8800 [147]FreeBSD [148]gdb [149]nvidia + [150]osdev [151]windows 7 [152]bochs [153]boot [154]bootloader + [155]debug [156]dual boot [157]gas [158]gcc [159]overclock [160]pidgin + [161]windows [162]windows server 2008 [163]2k8 [164]3DMark [165]3DMark + vantage [166]820 [167]DRAM [168]Directx 10 [169]Dirext 11 [170]Java + [171]OpenJDK [172]OpenOffice [173]Pentium D [174]RAID [175]Sun + [176]UUID [177]Unicode [178]VirtualBox [179]X [180]Xorg [181]ageis + [182]assembler [183]authentication [184]bash [185]c [186]coolbits + [187]dx10 [188]fedora [189]fortune [190]gdm [191]ghostscript [192]gnome + [193]google [194]gs [195]gtalk [196]heat sink [197]invisible + [198]jabber [199]kde [200]latex [201]lvm [202]lyx [203]mount + [204]networked audio [205]networked sound [206]nvclock [207]oolatex + [208]ooolatex [209]perl [210]phonon [211]physics [212]physx [213]picasa + [214]plugin [215]proxy [216]pulseaudio [217]qemu [218]rsync [219]rtp + [220]scp [221]scp stdin [222]security [223]server [224]shell [225]squid + [226]ssh [227]sync [228]tar [229]udev [230]unix [231]xdm [232]xfce + [233]xmpp [234]xorg.conf [235]zsh + [236]visit counter for blogspot + + Theme images by [237]5ugarless. Powered by [238]Blogger. + +References + + Visible links: + 1. http://dc0d32.blogspot.com/feeds/posts/default + 2. http://dc0d32.blogspot.com/feeds/posts/default?alt=rss + 3. http://dc0d32.blogspot.com/feeds/6370208028763486595/comments/default + 4. http://dc0d32.blogspot.com/ + 5. http://gcc.gnu.org/ml/gcc/1999-07n/msg00483.html + 6. http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html + 7. https://www.blogger.com/share-post.g?blogID=35813921&postID=6370208028763486595&target=email + 8. https://www.blogger.com/share-post.g?blogID=35813921&postID=6370208028763486595&target=blog + 9. https://www.blogger.com/share-post.g?blogID=35813921&postID=6370208028763486595&target=twitter + 10. https://www.blogger.com/share-post.g?blogID=35813921&postID=6370208028763486595&target=facebook + 11. https://www.blogger.com/share-post.g?blogID=35813921&postID=6370208028763486595&target=pinterest + 12. http://dc0d32.blogspot.com/search/label/assembler + 13. http://dc0d32.blogspot.com/search/label/bootloader + 14. http://dc0d32.blogspot.com/search/label/c + 15. http://dc0d32.blogspot.com/search/label/gas + 16. http://dc0d32.blogspot.com/search/label/gcc + 17. http://dc0d32.blogspot.com/search/label/kernel + 18. http://dc0d32.blogspot.com/search/label/osdev + 19. https://www.blogger.com/profile/06904019980664523275 + 20. http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html?showComment=1276605767623#c7537756629084768590 + 21. https://www.blogger.com/delete-comment.g?blogID=35813921&postID=7537756629084768590 + 22. https://www.blogger.com/profile/17992312956580227764 + 23. http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html?showComment=1292917257855#c7916645211913421716 + 24. https://www.blogger.com/delete-comment.g?blogID=35813921&postID=7916645211913421716 + 25. https://www.blogger.com/profile/17992312956580227764 + 26. http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html?showComment=1292920505936#c6914976194912758237 + 27. https://www.blogger.com/delete-comment.g?blogID=35813921&postID=6914976194912758237 + 28. https://www.blogger.com/profile/17992312956580227764 + 29. http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html?showComment=1292924802000#c3509490007866551116 + 30. https://www.blogger.com/delete-comment.g?blogID=35813921&postID=3509490007866551116 + 31. https://www.blogger.com/profile/15716533043357974705 + 32. http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html?showComment=1292939196737#c8552773997968662641 + 33. https://www.blogger.com/delete-comment.g?blogID=35813921&postID=8552773997968662641 + 34. https://www.blogger.com/profile/17992312956580227764 + 35. http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html?showComment=1292991102048#c3691472389082213083 + 36. https://www.blogger.com/delete-comment.g?blogID=35813921&postID=3691472389082213083 + 37. https://www.blogger.com/profile/04546527990311411722 + 38. http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html?showComment=1299934567958#c8861407369344586215 + 39. https://www.blogger.com/delete-comment.g?blogID=35813921&postID=8861407369344586215 + 40. https://www.blogger.com/profile/13931402888317484377 + 41. http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html?showComment=1302999537204#c1796379189090357880 + 42. https://www.blogger.com/delete-comment.g?blogID=35813921&postID=1796379189090357880 + 43. https://www.blogger.com/profile/10664008816666619973 + 44. http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html?showComment=1305925792707#c309698377277262219 + 45. https://www.blogger.com/delete-comment.g?blogID=35813921&postID=309698377277262219 + 46. https://www.blogger.com/profile/15716533043357974705 + 47. http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html?showComment=1305927124224#c7619831240140737017 + 48. https://www.blogger.com/delete-comment.g?blogID=35813921&postID=7619831240140737017 + 49. http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html?showComment=1322169605658#c1693276418345545837 + 50. https://www.blogger.com/delete-comment.g?blogID=35813921&postID=1693276418345545837 + 51. https://www.blogger.com/profile/15716533043357974705 + 52. http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html?showComment=1322188282688#c6259496576598783959 + 53. https://www.blogger.com/delete-comment.g?blogID=35813921&postID=6259496576598783959 + 54. https://www.blogger.com/profile/17992312956580227764 + 55. http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html?showComment=1323015134989#c3945832952459710949 + 56. https://www.blogger.com/delete-comment.g?blogID=35813921&postID=3945832952459710949 + 57. https://www.blogger.com/profile/15716533043357974705 + 58. http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html?showComment=1323146939454#c2066813635755540091 + 59. https://www.blogger.com/delete-comment.g?blogID=35813921&postID=2066813635755540091 + 60. https://www.blogger.com/profile/17992312956580227764 + 61. http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html?showComment=1324737140263#c7908397772486068687 + 62. https://www.blogger.com/delete-comment.g?blogID=35813921&postID=7908397772486068687 + 63. https://www.blogger.com/profile/17992312956580227764 + 64. http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html?showComment=1343616406999#c8117194716929362278 + 65. https://www.blogger.com/delete-comment.g?blogID=35813921&postID=8117194716929362278 + 66. https://www.blogger.com/profile/00410755183408310829 + 67. http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html?showComment=1366435009449#c1258130037332531147 + 68. https://www.blogger.com/delete-comment.g?blogID=35813921&postID=1258130037332531147 + 69. https://www.blogger.com/profile/15716533043357974705 + 70. http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html?showComment=1366517094365#c8123329091843779139 + 71. https://www.blogger.com/delete-comment.g?blogID=35813921&postID=8123329091843779139 + 72. https://www.blogger.com/profile/17234059656421576642 + 73. http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html?showComment=1384327289704#c4134298820836763034 + 74. https://www.blogger.com/delete-comment.g?blogID=35813921&postID=4134298820836763034 + 75. https://www.blogger.com/profile/16683260877229099988 + 76. http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html?showComment=1401480336214#c455729903293178418 + 77. https://www.blogger.com/delete-comment.g?blogID=35813921&postID=455729903293178418 + 78. https://www.blogger.com/profile/07765096042053323038 + 79. http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html?showComment=1423148995473#c7126019925062815723 + 80. https://www.blogger.com/delete-comment.g?blogID=35813921&postID=7126019925062815723 + 81. https://www.blogger.com/profile/01833111909520604012 + 82. http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html?showComment=1484904386672#c7038618115198897417 + 83. https://www.blogger.com/delete-comment.g?blogID=35813921&postID=7038618115198897417 + 84. https://www.blogger.com/profile/01833111909520604012 + 85. http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html?showComment=1484904424918#c1284220459583274955 + 86. https://www.blogger.com/delete-comment.g?blogID=35813921&postID=1284220459583274955 + 87. https://www.blogger.com/profile/07765096042053323038 + 88. http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html?showComment=1423149010339#c2287827836063649127 + 89. https://www.blogger.com/delete-comment.g?blogID=35813921&postID=2287827836063649127 + 90. https://www.blogger.com/profile/17596900636592437710 + 91. http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html?showComment=1454858010555#c4198004625201390279 + 92. https://www.blogger.com/delete-comment.g?blogID=35813921&postID=4198004625201390279 + 93. http://dc0d32.blogspot.com/2010/06/cold-boot-attack.html + 94. http://dc0d32.blogspot.com/2010/05/how-not-to-look-like-fool-on-facebook.html + 95. http://dc0d32.blogspot.com/ + 96. http://dc0d32.blogspot.com/feeds/6370208028763486595/comments/default + 97. http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html + 98. http://dc0d32.blogspot.com/2012/02/writing-kernel-in-windows-with-visual.html + 99. http://dc0d32.blogspot.com/2010/03/debugging-kernel-with-qemu-and-gdb.html + 100. javascript:void(0) + 101. http://dc0d32.blogspot.com/2012/ + 102. javascript:void(0) + 103. http://dc0d32.blogspot.com/2012/02/ + 104. javascript:void(0) + 105. http://dc0d32.blogspot.com/2010/ + 106. javascript:void(0) + 107. http://dc0d32.blogspot.com/2010/06/ + 108. http://dc0d32.blogspot.com/2010/06/cold-boot-attack.html + 109. http://dc0d32.blogspot.com/2010/06/real-mode-in-c-with-gcc-writing.html + 110. javascript:void(0) + 111. http://dc0d32.blogspot.com/2010/05/ + 112. javascript:void(0) + 113. http://dc0d32.blogspot.com/2010/04/ + 114. javascript:void(0) + 115. http://dc0d32.blogspot.com/2010/03/ + 116. javascript:void(0) + 117. http://dc0d32.blogspot.com/2010/02/ + 118. javascript:void(0) + 119. http://dc0d32.blogspot.com/2009/ + 120. javascript:void(0) + 121. http://dc0d32.blogspot.com/2009/12/ + 122. javascript:void(0) + 123. http://dc0d32.blogspot.com/2009/11/ + 124. javascript:void(0) + 125. http://dc0d32.blogspot.com/2009/09/ + 126. javascript:void(0) + 127. http://dc0d32.blogspot.com/2009/08/ + 128. javascript:void(0) + 129. http://dc0d32.blogspot.com/2009/07/ + 130. javascript:void(0) + 131. http://dc0d32.blogspot.com/2009/02/ + 132. javascript:void(0) + 133. http://dc0d32.blogspot.com/2009/01/ + 134. javascript:void(0) + 135. http://dc0d32.blogspot.com/2008/ + 136. javascript:void(0) + 137. http://dc0d32.blogspot.com/2008/11/ + 138. javascript:void(0) + 139. http://dc0d32.blogspot.com/2008/10/ + 140. javascript:void(0) + 141. http://dc0d32.blogspot.com/2008/08/ + 142. javascript:void(0) + 143. http://dc0d32.blogspot.com/2008/06/ + 144. http://dc0d32.blogspot.com/search/label/linux + 145. http://dc0d32.blogspot.com/search/label/kernel + 146. http://dc0d32.blogspot.com/search/label/8800 + 147. http://dc0d32.blogspot.com/search/label/FreeBSD + 148. http://dc0d32.blogspot.com/search/label/gdb + 149. http://dc0d32.blogspot.com/search/label/nvidia + 150. http://dc0d32.blogspot.com/search/label/osdev + 151. http://dc0d32.blogspot.com/search/label/windows%207 + 152. http://dc0d32.blogspot.com/search/label/bochs + 153. http://dc0d32.blogspot.com/search/label/boot + 154. http://dc0d32.blogspot.com/search/label/bootloader + 155. http://dc0d32.blogspot.com/search/label/debug + 156. http://dc0d32.blogspot.com/search/label/dual%20boot + 157. http://dc0d32.blogspot.com/search/label/gas + 158. http://dc0d32.blogspot.com/search/label/gcc + 159. http://dc0d32.blogspot.com/search/label/overclock + 160. http://dc0d32.blogspot.com/search/label/pidgin + 161. http://dc0d32.blogspot.com/search/label/windows + 162. http://dc0d32.blogspot.com/search/label/windows%20server%202008 + 163. http://dc0d32.blogspot.com/search/label/2k8 + 164. http://dc0d32.blogspot.com/search/label/3DMark + 165. http://dc0d32.blogspot.com/search/label/3DMark%20vantage + 166. http://dc0d32.blogspot.com/search/label/820 + 167. http://dc0d32.blogspot.com/search/label/DRAM + 168. http://dc0d32.blogspot.com/search/label/Directx%2010 + 169. http://dc0d32.blogspot.com/search/label/Dirext%2011 + 170. http://dc0d32.blogspot.com/search/label/Java + 171. http://dc0d32.blogspot.com/search/label/OpenJDK + 172. http://dc0d32.blogspot.com/search/label/OpenOffice + 173. http://dc0d32.blogspot.com/search/label/Pentium%20D + 174. http://dc0d32.blogspot.com/search/label/RAID + 175. http://dc0d32.blogspot.com/search/label/Sun + 176. http://dc0d32.blogspot.com/search/label/UUID + 177. http://dc0d32.blogspot.com/search/label/Unicode + 178. http://dc0d32.blogspot.com/search/label/VirtualBox + 179. http://dc0d32.blogspot.com/search/label/X + 180. http://dc0d32.blogspot.com/search/label/Xorg + 181. http://dc0d32.blogspot.com/search/label/ageis + 182. http://dc0d32.blogspot.com/search/label/assembler + 183. http://dc0d32.blogspot.com/search/label/authentication + 184. http://dc0d32.blogspot.com/search/label/bash + 185. http://dc0d32.blogspot.com/search/label/c + 186. http://dc0d32.blogspot.com/search/label/coolbits + 187. http://dc0d32.blogspot.com/search/label/dx10 + 188. http://dc0d32.blogspot.com/search/label/fedora + 189. http://dc0d32.blogspot.com/search/label/fortune + 190. http://dc0d32.blogspot.com/search/label/gdm + 191. http://dc0d32.blogspot.com/search/label/ghostscript + 192. http://dc0d32.blogspot.com/search/label/gnome + 193. http://dc0d32.blogspot.com/search/label/google + 194. http://dc0d32.blogspot.com/search/label/gs + 195. http://dc0d32.blogspot.com/search/label/gtalk + 196. http://dc0d32.blogspot.com/search/label/heat%20sink + 197. http://dc0d32.blogspot.com/search/label/invisible + 198. http://dc0d32.blogspot.com/search/label/jabber + 199. http://dc0d32.blogspot.com/search/label/kde + 200. http://dc0d32.blogspot.com/search/label/latex + 201. http://dc0d32.blogspot.com/search/label/lvm + 202. http://dc0d32.blogspot.com/search/label/lyx + 203. http://dc0d32.blogspot.com/search/label/mount + 204. http://dc0d32.blogspot.com/search/label/networked%20audio + 205. http://dc0d32.blogspot.com/search/label/networked%20sound + 206. http://dc0d32.blogspot.com/search/label/nvclock + 207. http://dc0d32.blogspot.com/search/label/oolatex + 208. http://dc0d32.blogspot.com/search/label/ooolatex + 209. http://dc0d32.blogspot.com/search/label/perl + 210. http://dc0d32.blogspot.com/search/label/phonon + 211. http://dc0d32.blogspot.com/search/label/physics + 212. http://dc0d32.blogspot.com/search/label/physx + 213. http://dc0d32.blogspot.com/search/label/picasa + 214. http://dc0d32.blogspot.com/search/label/plugin + 215. http://dc0d32.blogspot.com/search/label/proxy + 216. http://dc0d32.blogspot.com/search/label/pulseaudio + 217. http://dc0d32.blogspot.com/search/label/qemu + 218. http://dc0d32.blogspot.com/search/label/rsync + 219. http://dc0d32.blogspot.com/search/label/rtp + 220. http://dc0d32.blogspot.com/search/label/scp + 221. http://dc0d32.blogspot.com/search/label/scp%20stdin + 222. http://dc0d32.blogspot.com/search/label/security + 223. http://dc0d32.blogspot.com/search/label/server + 224. http://dc0d32.blogspot.com/search/label/shell + 225. http://dc0d32.blogspot.com/search/label/squid + 226. http://dc0d32.blogspot.com/search/label/ssh + 227. http://dc0d32.blogspot.com/search/label/sync + 228. http://dc0d32.blogspot.com/search/label/tar + 229. http://dc0d32.blogspot.com/search/label/udev + 230. http://dc0d32.blogspot.com/search/label/unix + 231. http://dc0d32.blogspot.com/search/label/xdm + 232. http://dc0d32.blogspot.com/search/label/xfce + 233. http://dc0d32.blogspot.com/search/label/xmpp + 234. http://dc0d32.blogspot.com/search/label/xorg.conf + 235. http://dc0d32.blogspot.com/search/label/zsh + 236. http://www.statcounter.com/blogger/ + 237. http://www.istockphoto.com/portfolio/5ugarless?platform=blogger + 238. https://www.blogger.com/ + + Hidden links: + 240. https://www.blogger.com/post-edit.g?blogID=35813921&postID=6370208028763486595&from=pencil + 241. https://www.blogger.com/comment/frame/35813921?po=6370208028763486595&hl=en diff --git a/floppy/doc/github.com_yeokm1_gentoo-on-486.txt b/floppy/doc/github.com_yeokm1_gentoo-on-486.txt new file mode 100644 index 0000000..b477703 --- /dev/null +++ b/floppy/doc/github.com_yeokm1_gentoo-on-486.txt @@ -0,0 +1,1114 @@ + #[1]GitHub + + [2]Skip to content + + [3]Sign up (BUTTON) + (BUTTON) + + * Product + + [4]Features + + [5]Mobile + + [6]Actions + + [7]Codespaces + + [8]Copilot + + [9]Packages + + [10]Security + + [11]Code review + + [12]Issues + + [13]Integrations + + [14]GitHub Sponsors + + [15]Customer stories + * [16]Team + * [17]Enterprise + * Explore + + [18]Explore GitHub + + Learn and contribute + + [19]Topics + + [20]Collections + + [21]Trending + + [22]Skills + + [23]GitHub Sponsors + + [24]Open source guides + + Connect with others + + [25]The ReadME Project + + [26]Events + + [27]Community forum + + [28]GitHub Education + + [29]GitHub Stars program + * [30]Marketplace + * Pricing + + [31]Plans + + [32]Compare plans + + [33]Contact Sales + + [34]Education + + ____________________ + * In this repository All GitHub RET + Jump to RET + + * No suggested jump to results + + * In this repository All GitHub RET + Jump to RET + * In this user All GitHub RET + Jump to RET + * In this repository All GitHub RET + Jump to RET + + [35]Sign in + [36]Sign up + + (BUTTON) + {{ message }} + + [37]yeokm1 / [38]gentoo-on-486 Public + * [39]Notifications + * [40]Fork 6 + * [41]Star 57 (BUTTON) + + Instructions on how to install modern Gentoo Linux on ancient 486-based + PCs. + [42]yeokhengmeng.com/2018/01/make-the-486-great-again/ + +License + + [43]MIT license + [44]57 stars [45]6 forks + [46]Star (BUTTON) + [47]Notifications + + * [48]Code + * [49]Issues 1 + * [50]Pull requests 0 + * [51]Actions + * [52]Projects 0 + * [53]Wiki + * [54]Security + * [55]Insights + + More + * [56]Code + * [57]Issues + * [58]Pull requests + * [59]Actions + * [60]Projects + * [61]Wiki + * [62]Security + * [63]Insights + +yeokm1/gentoo-on-486 + + This commit does not belong to any branch on this repository, and may + belong to a fork outside of the repository. + master + + Switch branches/tags (BUTTON) + ____________________ + (BUTTON) Branches (BUTTON) Tags + Could not load branches + Nothing to show + [64]{{ refName }} default + + [65]View all branches + Could not load tags + Nothing to show + [66]{{ refName }} default + + [67]View all tags + [68]1 branch [69]0 tags + Code + +Latest commit + + +Git stats + + * [70]12 commits + +Files + + [71]Permalink + Failed to load latest commit information. + Type + Name + Latest commit message + Commit time + [72]images + + + [73].config + + + [74]LICENSE + + + [75]README.md + + + [76]gentoo-on-486-presentation.pptx + + + (BUTTON) View code + ____________________ + [77]gentoo-on-486 [78]The Hardware [79]Deployment machine : IBM PS/1 + Consultant 2133 19C (released in 1993) [80]Compilation machine: + Thinkpad T430 (released in 2012) [81](Optional) Machine to issue SSH + commands to compilation machine [82]Instructions [83]1. Preparing the + install media/disks [84]2. Networking and SSH [85]3. Preparing the + disks [86]4. Installing stage3 [87]5. Installing base system [88]Read + the news [89]Set system profile [90]Configure timezone [91]Configure + locale [92]6. Configuring the kernel [93]Find out system specs [94]Just + take the latest stable kernel [95]Download a particular kernel version + [96]Kernel options [97]64-bit Kernel [98]Processor type and features: + [99]Bus Options [100]Device Drivers [101]File Systems [102]Backup + kernel configuration [103]Compiling the kernel [104]7. Configuring the + system [105]Configuring /etc/fstab [106]Set hostname [107]Network info + [108]System config [109]8. Installing tools [110]Required installs + [111]Correct syslog issues [112]Optional installs [113]9. Configuring + the bootloader [114]Install Bootloader [115]Configure LILO [116]10. + Finalising install [117]Create non-root user [118]Unmount and + reboot/poweroff system [119]11. Boot on i486 [120]Change preferred + Python version [121]Update time [122]Sound test [123]Configure Web + Server [124]Bonus step: + +[125]README.md + +gentoo-on-486 + + Instructions on how to install modern Gentoo Linux on ancient 486-based + PCs. This is for a command-line install only. + + As Gentoo is a source-based distribution, we have to compile every + package we install from scratch including the kernel and bootloader. + + This is too time-consuming to do on the 486 PC so I use a modern + machine to do the compilation then move the disk over to the ancient + PC. + + I have written a [126]companion blog post that explains the motivations + and less-technical details. + +The Hardware + +Deployment machine : [127]IBM PS/1 Consultant 2133 19C (released in 1993) + + [128]Screen + * AMD 5X86 486-clone running at 133mhz (similar performance to + Pentium 75Mhz) + * Cirrus Logic VLB CL-GD5424 Graphics 512KiB VRAM + * 64MB SDRAM + * 48x IDE CD ROM Drive + * [129]Gotek 1.44MB floppy emulator + * CompactFlash-IDE adapter + 32GB Sandisk Extreme CF card + * 10Mbps 3Com Etherlink III [130]3c509B (ISA) + * [131]Sound Blaster 16 CT2950 PnP (ISA) Unfortunately, this card + uses [132]CQM. + * 1x Parallel Port + * 2x Serial Port + * 1x VGA port + +Compilation machine: [133]Thinkpad T430 (released in 2012) + + [134]Screen + * Intel Core i7-3520M (3.50 GHz, 4MB L3, 1333MHz FSB) + * Intel HD Graphics 4000 + * 16GB DDR3 - 1600MHz + * Gigabit Ethernet + * Ultrabay DVD-RW + * 2x USB 3.0, 2x USB 2.0 + * USB-CF adapter to compile on CF card + * SSD removed to avoid corrupting it by accident during install + +(Optional) Machine to issue SSH commands to compilation machine + + This can be any machine capable of SSH. This will be explained later. + +Instructions + + I heavily reference official [135]Gentoo Wiki x86 handbook with some + tweaks to suit the 486 as well as ease of repeated builds. Please note + that my instructions are a compliment and are not a replacement to the + official guide. + +1. Preparing the install media/disks + + [136]Gentoo Wiki: Choosing the media + + I use a CompactFlash card as my hard disk for my 486 PC to make it easy + to transfer the image back and forth between it and the compilation PC. + + Download the x86 Minimal Installation CD ISO image from [137]official + download page. You can burn the ISO image to CD or to a USB flash drive + but I opt for the former for simplicity. + + Once you are done, boot from the install media using your modern + compilation machine. You might have to adjust your BIOS settings to do + so. + +2. Networking and SSH + + [138]Gentoo Wiki: Configuring the network + + The official guide included quite a bit of information on setting + things up. + + For my case, I used a wired LAN with DHCP and everything just worked on + boot. If you need a special configuration, consult that guide. + + I highly recommend that you turn on SSH at this point so you can + copy-paste the commands to run instead of manually typing in the + commands. You can even do additional configuration while the packages + are compiling. +passwd root +New Password: blahblah +Again: blahblah + +/etc/init.d/sshd start +ifconfig + + Use the third machine and ssh root@X.X.X.X + +3. Preparing the disks + + [139]Gentoo Wiki: Preparing the disks + + The guide suggests 4 partitions with the first one being for the BIOS + boot partition for EFI systems. Since our 486 obviously predates EFI, I + opt to ignore that and use the following layout instead. + Partition Filesystem Size Description + /dev/sda1 ext2 128M Boot + /dev/sda2 (swap) 2048M Swap + /dev/sda3 ext4 Rest of disk Root + + Just a note, ancient PCs have a [140]504MiB barrier. This means that + the boot partition should reside entirely within this limit to be + bootable. Once Linux is started, it can recognise the entire disk. + + I created my partitions using the fdisk tool. Note for the swap + partition, you have to set the partition type. Type t to set the + partition type, 2 to select the partition just created and then type in + 82 to set the partition type to "Linux Swap". + + Once done, format the partitions: +mkfs.ext2 /dev/sda1 +mkswap /dev/sda2 +swapon /dev/sda2 +mkfs.ext4 /dev/sda3 + +mount /dev/sda3 /mnt/gentoo + +4. Installing stage3 + + [141]Gentoo Wiki: Installing Stage 3 + + stage3 contains almost all the files to create a bare minimum system. +date +# If date is wrong, use ntpd to update your PC's clock. +ntpd -q -g + + Download the latest i486 stage3 tarball which at the time of writing is + named stage3-i486-20180117T214502Z.tar.xz. I highly recommend + downloading from a mirror close to you instead of using the official + one. +cd /mnt/gentoo +wget http://gentoo.aditsu.net:8000/releases/x86/autobuilds/current-stage3-i486/s +tage3-i486-20180117T214502Z.tar.xz + +# Untar the tarball. If you wish, you can add the `v` verbose option. +tar xpf stage3-i486-20180117T214502Z.tar.xz --xattrs-include='*.*' --numeric-own +er + + The guide says you should edit the /mnt/gentoo/etc/portage/make.conf + and adjust the CFLAGS and CXXFLAGS to suit your system. However for + this case, we can skip this as the default is already the 486. But do + verify just in case. +CFLAGS="-O2 -march=i486 -pipe" +CHOST="i486-pc-linux-gnu" + +MAKEOPTS="-j5" # A good choice is the number of CPU cores in the system plus 1 +USE="-kde -qt4 -qt5 ffmpeg mp3 alsa" + + If you want to, you can add the MAKEOPTS setting to benefit the + compilation machine. The optional USE flags is to remove unwanted GUI + support as well as add some audio support when compiling. MP3 support + is extremely poor due to the slow processor speed, but you can give it + a shot. + +5. Installing base system + + [142]Gentoo Wiki: Installing base system + + Just run the following commands I lifted from the guide. +mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf +# To avoid having to run mirrorselect manually in your next build, you can save +your list and add it next time. +# GENTOO_MIRRORS="http://gentoo.aditsu.net:8000/ http://ftp.iij.ad.jp/pub/linux/ +gentoo/ http://ftp.jaist.ac.jp/pub/Linux/Gentoo/ http://ftp.daum.net/gentoo/ htt +p://ftp.kaist.ac.kr/pub/gentoo/ http://ftp.lanet.kr/pub/gentoo/ http://ftp.tware +n.net/Linux/Gentoo/" + +mkdir --parents /mnt/gentoo/etc/portage/repos.conf +cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos +.conf/gentoo.conf +cp --dereference /etc/resolv.conf /mnt/gentoo/etc/ + +mount --types proc /proc /mnt/gentoo/proc +mount --rbind /sys /mnt/gentoo/sys +mount --make-rslave /mnt/gentoo/sys +mount --rbind /dev /mnt/gentoo/dev +mount --make-rslave /mnt/gentoo/dev + +chroot /mnt/gentoo /bin/bash +source /etc/profile +export PS1="(chroot) ${PS1}" + +mkdir /boot # This can be ignored as it seems to exist already +mount /dev/sda1 /boot +emerge-webrsync + +Read the news + +eselect news list +eselect news read + +Set system profile + + The default system profile is [10] default/linux/x86/17.0 (stable) + which I use. + + Changing system profiles will invoke a long compilation process + especially for GCC, to save time, you can skip this step for your + initial test builds. +eselect profile list + +# Example changing to profile "default/linux/x86/17.0" which is the 10th profile + at time of writing +eselect profile set 10 +# If profile change is required, run the following: +emerge --ask --update --deep --newuse @world + +Configure timezone + +ls /usr/share/zoneinfo # To see available locales +echo "Asia/Singapore" > /etc/timezone +emerge --config sys-libs/timezone-data + +Configure locale + +nano -w /etc/locale.gen +#Adjust your locale settings + +locale-gen + +eselect locale list +eselect locale set 4 # Change 4 to the one you prefer. Use the one with UTF +env-update && source /etc/profile && export PS1="(chroot) $PS1" + +6. Configuring the kernel + + [143]Gentoo Wiki: Configuring the kernel + + The wiki suggest using genkernel tool. It does not seem to work for the + 486 setting so we must use the manual configuration method. + +Find out system specs + + pciutils entirely optional especially since my system does not have PCI + bus. +emerge sys-apps/pciutils sys-apps/lshw + +Just take the latest stable kernel + +emerge sys-kernel/gentoo-sources + +Download a particular kernel version + + I decided to use the 4.14.x kernel release as the previous stable + 4.12.x is rather old by now. However 4.14 is not marked stable, see + this [144]issue. +emerge --ask =sys-kernel/gentoo-sources-4.14.8-r1 # Then make the config file ch +anges +dispatch-conf # Press 'u' to accept +emerge --ask =sys-kernel/gentoo-sources-4.14.8-r1 + +Kernel options + +cd /usr/src/linux +make menuconfig + + Kernel options I used on top of the default. It might differ for your + setup. I chose to compile everything into the kernel instead of using + modules. + + I enable traditional options as well as some modern ones as so the + kernel can still work with my modern machine if I need to compile new + packages in future. + +64-bit Kernel + + * Uncheck this!!! + +Processor type and features: + + * Uncheck "Symmetric multi-processing support" + * Processor Family - Check 486 + * Check Generic x86 support + +Bus Options + + * Check ISA support + +Device Drivers + + * Plug and Play support + * + + ISA Plug and Play support + * + + Plug and Play BIOS support + * SCSI device support + * + + SCSI disk support + * SATA and PATA drivers + * + + Generic ATA support + * + + Legacy ISA PATA support (Experimental) + * Network device support + * + + Ethernet driver support + * + + + o 3Com devices + * + + + o + # 3c509/3c579 "Etherlink III" support + * Sound card support + * + + ALSA + * + + + o ISA sound devices + * + + + o + # Check SB16 (PnP) + * USB Support + * + + xHCI HCD (USB 3.0) Support + * + + + o Generic xHCI driver for a platform device + * + + USB Mass Storage support + * + + + o Tick everything related to cards and bridges + * MMC/SD/SDIO card support + +File Systems + + * Enable all Ext2 and Ext4 relevant options + * CD-ROM/DVD Filesystems + * + + Tick all + * DOS/FAT/NT Filesystems + * + + Tick the NTFS options + * Network File Systems + * + + SMB3 and CIFS support + * + + + o Tick relevant sub options + +Backup kernel configuration + + To make it easier to do subsequent rebuilds, you might want to backup + the current configuration. Once you do so, you just have to upload + .config and don't have to run make menuconfig. +# Backup +scp root@X.X.X.X:/mnt/gentoo/usr/src/linux/.config . + +# Put back +scp .config root@X.X.X.X:/mnt/gentoo/usr/src/linux/ + +Compiling the kernel + +make -j5 #Replace 5 with num CPU cores + 1 +make modules_install +make install + +# This is entirely optional for such an old system but might be useful for your +compilation machine +emerge sys-kernel/linux-firmware + +7. Configuring the system + + [145]Gentoo Wiki: Configuring the system + + I only adjust a subset of the settings in the guide that are relevant + to me. + +Configuring /etc/fstab + +nano -w /etc/fstab + +# Those are my settings based on my partition layout above +/dev/sda1 /boot ext2 defaults,noatime 0 2 +/dev/sda2 none swap sw 0 0 +/dev/sda3 / ext4 noatime 0 1 +/dev/cdrom /mnt/cdrom auto noauto,user 0 0 + +Set hostname + +nano -w /etc/conf.d/hostname +hostname="tux" + +Network info + +emerge --noreplace net-misc/netifrc + +nano -w /etc/conf.d/net + +# Replace eth0 with the actual network interface name. Use `ifconfig` to check. +# You can put multiple as well to easily transit between the compilation and 486 + PC. +# eth0 is used by my 3Com NIC in the 486 PC +# enxxxx is used by my compilation machine + +config_eth0="dhcp" +config_enxxxx="dhcp" +## End + +cd /etc/init.d + +ln -s net.lo net.eth0 +rc-update add net.eth0 default + +ln -s net.lo net.enxxxx +rc-update add net.enxxxx default + +System config + +# Set root password +passwd + +nano -w /etc/conf.d/hwclock +# Set local clock instead of UTC if you wish +clock="local" + +8. Installing tools + + [146]Gentoo Wiki: Installing tools + +Required installs + +# Install system logger +emerge app-admin/sysklogd +rc-update add sysklogd default + +# Install cron daemon +emerge sys-process/cronie +rc-update add cronie default + +# Install file indexing tools +emerge sys-apps/mlocate + +# Start SSH on boot +rc-update add sshd default + +# Install file systems tools +emerge sys-fs/e2fsprogs sys-fs/dosfstools + +# Install DHCP +emerge net-misc/dhcpcd + +# NTP +emerge net-misc/ntp + +# If ALSA is enabled in the USE flags +emerge media-libs/alsa-lib +emerge media-sound/alsa-utils +rc-update add alsasound boot + +# If FFmpeg is enabled in the USE flags +emerge media-video/ffmpeg + +Correct syslog issues + + I tested after reboot, I got No such file or directory errors on some + files. Since I do not need them, I just made the following changes. +nano /etc/syslog.conf + +# Comment out the following lines +#news.crit /var/log/news/news.crit +#news.err /var/log/news/news.err +#news.notice -/var/log/news/news.notice + +# Change +*.=notice;*.=warn |/dev/xconsole +# to +*.=notice;*.=warn |/dev/tty6 # Or any other tty since I don't use xconsole + on my system. + +Optional installs + + Note that the following may take a significant amount time to compile. +emerge sys-apps/hwinfo +emerge www-servers/nginx +emerge dev-vcs/git +emerge media-sound/moc + +# Golang only works for Pentium MMX CPUs and up. But you can install this to see + the failure message for fun. +emerge dev-lang/go + +# Gentoo's default Python version is only 3.5 at time of writing. You can instal +l Python 3.6 but Portage and others will still remain on Python 3.5. +emerge dev-lang/python:3.6 + +# Command line web browsers +emerge www-client/elinks +emerge www-client/w3m +emerge www-client/lynx + +9. Configuring the bootloader + + [147]Gentoo Wiki: Configuring the bootloader + +Install Bootloader + + In theory, one should use the modern Grub2 bootloader. Grub2 loads ok + but the system reboots the moment I select a boot option. This seems + like a known issue given the age of the system. So I use the older LILO + instead. +emerge sys-boot/lilo + +Configure LILO + + Adjust the kernel version to suit yours +nano -w /etc/lilo.conf +### Add the following +boot=/dev/sda # Install LILO in the MBR +prompt # Give the user the chance to select another section +timeout=50 # Wait 5 (five) seconds before booting the default sec +tion +default=gentoo # When the timeout has passed, boot the "gentoo" secti +on + +image=/boot/vmlinuz-4.14.8-gentoo-r1 + label=gentoo + read-only + root=/dev/sda3 + vga=4 # This will set the VGA mode to 80x30 + +image=/boot/vmlinuz-4.14.8-gentoo-r1 + label=gentoo-ask-vga + read-only + root=/dev/sda3 + vga=ask # Linux will ask you to pick the VGA mode on startup + +image=/boot/vmlinuz-4.14.8-gentoo-r1 + label=gentoo-rescue + read-only + root=/dev/sda3 + append="init=/bin/bb" +### End + +/sbin/lilo + +10. Finalising install + + [148]Gentoo Wiki: Finalizing + +Create non-root user + +#Add non-root user. By default, you cannot SSH in as root user. +useradd -m -G users,wheel,audio -s /bin/bash john +passwd john + +Unmount and reboot/poweroff system + +exit +cd +umount -l /mnt/gentoo/dev{/shm,/pts,} +umount -R /mnt/gentoo + +reboot # This is preferred so the SSH keys can be generated for the first time o +n your compilation machine instead of taking like ages on the 486 PC. +poweroff + + For some strange reason, I cannot reliably boot with a USB-CF card + adapter. Subsequent powerups on my Thinkpad sometimes fail. Booting up + with a native SATA-CF adapter works fine. See the bonus step. + +11. Boot on i486 + + Transfer the disk to the 486 PC and hope it boots! Very slowly.... but + it'll work. Good luck! + + All commands below except ALSA stuff are only usable if you are the + root user but I'm sure you can find a way to solve that. You also + cannot SSH in via the root user by default. + +Change preferred Python version + + If you installed another Python version earlier. +eselect python list +# Select your preferred Python version +eselect python set 2 + +Update time + + Just in case... +ntpd -q -g + +Sound test + + If you want to test the sound, you can run the following commands: +alsamixer # Remember to increase PCM volume +speaker-test -t wav -c 2 + +Configure Web Server + + If you installed nginx earlier, you can try your hand at hosting + something. [149]Reference +mkdir /var/www/localhost/htdocs +# Create a dummy page +echo 'Hello, world!' > /var/www/localhost/htdocs/index.html +nano /etc/nginx/nginx.conf +# Change `listen 127.0.0.1;` -> `listen 0.0.0.0;` + +/etc/init.d/nginx start + +# Start on boot +rc-update add nginx default + +Bonus step: + + If for some reason you need to rescue the Gentoo installation (say if + kernel fails), you can try booting up from the install CD and mount the + disk instead of installing from scratch. These are the instructions you + can use based on above: +# These are if you want to SSH into the system +passwd root +New Password: blahblah +Again: blahblah + +/etc/init.d/sshd start +ifconfig +# + +mount /dev/sda3 /mnt/gentoo + +mount --types proc /proc /mnt/gentoo/proc +mount --rbind /sys /mnt/gentoo/sys +mount --make-rslave /mnt/gentoo/sys +mount --rbind /dev /mnt/gentoo/dev +mount --make-rslave /mnt/gentoo/dev + +chroot /mnt/gentoo /bin/bash +source /etc/profile +export PS1="(chroot) ${PS1}" + +mkdir /boot # This can be ignored as it seems to exist already +mount /dev/sda1 /boot + +About + + Instructions on how to install modern Gentoo Linux on ancient 486-based + PCs. + [150]yeokhengmeng.com/2018/01/make-the-486-great-again/ + +Topics + + [151]linux [152]linux-kernel [153]gentoo [154]486 + +Resources + + [155]Readme + +License + + [156]MIT license + +Stars + + [157]57 stars + +Watchers + + [158]10 watching + +Forks + + [159]6 forks + +[160]Releases + + No releases published + +[161]Packages 0 + + No packages published + +Footer + + 2022 GitHub, Inc. + +Footer navigation + + * [162]Terms + * [163]Privacy + * [164]Security + * [165]Status + * [166]Docs + * [167]Contact GitHub + * [168]Pricing + * [169]API + * [170]Training + * [171]Blog + * [172]About + + (BUTTON) You can't perform that action at this time. + + You signed in with another tab or window. [173]Reload to refresh your + session. You signed out in another tab or window. [174]Reload to + refresh your session. + + (BUTTON) + +References + + Visible links: + 1. https://github.com/opensearch.xml + 2. https://github.com/yeokm1/gentoo-on-486#start-of-content + 3. https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E&source=header-repo + 4. https://github.com/features + 5. https://github.com/mobile + 6. https://github.com/features/actions + 7. https://github.com/features/codespaces + 8. https://github.com/features/copilot + 9. https://github.com/features/packages + 10. https://github.com/features/security + 11. https://github.com/features/code-review + 12. https://github.com/features/issues + 13. https://github.com/features/integrations + 14. https://github.com/sponsors + 15. https://github.com/customer-stories + 16. https://github.com/team + 17. https://github.com/enterprise + 18. https://github.com/explore + 19. https://github.com/topics + 20. https://github.com/collections + 21. https://github.com/trending + 22. https://skills.github.com/ + 23. https://github.com/sponsors/explore + 24. https://opensource.guide/ + 25. https://github.com/readme + 26. https://github.com/events + 27. https://github.community/ + 28. https://education.github.com/ + 29. https://stars.github.com/ + 30. https://github.com/marketplace + 31. https://github.com/pricing + 32. https://github.com/pricing#compare-features + 33. https://github.com/enterprise/contact + 34. https://education.github.com/ + 35. https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fyeokm1%2Fgentoo-on-486 + 36. https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E&source=header-repo&source_repo=yeokm1%2Fgentoo-on-486 + 37. https://github.com/yeokm1 + 38. https://github.com/yeokm1/gentoo-on-486 + 39. https://github.com/login?return_to=%2Fyeokm1%2Fgentoo-on-486 + 40. https://github.com/login?return_to=%2Fyeokm1%2Fgentoo-on-486 + 41. https://github.com/login?return_to=%2Fyeokm1%2Fgentoo-on-486 + 42. http://yeokhengmeng.com/2018/01/make-the-486-great-again/ + 43. https://github.com/yeokm1/gentoo-on-486/blob/master/LICENSE + 44. https://github.com/yeokm1/gentoo-on-486/stargazers + 45. https://github.com/yeokm1/gentoo-on-486/network/members + 46. https://github.com/login?return_to=%2Fyeokm1%2Fgentoo-on-486 + 47. https://github.com/login?return_to=%2Fyeokm1%2Fgentoo-on-486 + 48. https://github.com/yeokm1/gentoo-on-486 + 49. https://github.com/yeokm1/gentoo-on-486/issues + 50. https://github.com/yeokm1/gentoo-on-486/pulls + 51. https://github.com/yeokm1/gentoo-on-486/actions + 52. https://github.com/yeokm1/gentoo-on-486/projects?type=beta + 53. https://github.com/yeokm1/gentoo-on-486/wiki + 54. https://github.com/yeokm1/gentoo-on-486/security + 55. https://github.com/yeokm1/gentoo-on-486/pulse + 56. https://github.com/yeokm1/gentoo-on-486 + 57. https://github.com/yeokm1/gentoo-on-486/issues + 58. https://github.com/yeokm1/gentoo-on-486/pulls + 59. https://github.com/yeokm1/gentoo-on-486/actions + 60. https://github.com/yeokm1/gentoo-on-486/projects?type=beta + 61. https://github.com/yeokm1/gentoo-on-486/wiki + 62. https://github.com/yeokm1/gentoo-on-486/security + 63. https://github.com/yeokm1/gentoo-on-486/pulse + 64. https://github.com/yeokm1/gentoo-on-486/tree/{{%20urlEncodedRefName%20}} + 65. https://github.com/yeokm1/gentoo-on-486/branches + 66. https://github.com/yeokm1/gentoo-on-486/tree/{{%20urlEncodedRefName%20}} + 67. https://github.com/yeokm1/gentoo-on-486/tags + 68. https://github.com/yeokm1/gentoo-on-486/branches + 69. https://github.com/yeokm1/gentoo-on-486/tags + 70. https://github.com/yeokm1/gentoo-on-486/commits/master + 71. https://github.com/yeokm1/gentoo-on-486/tree/207a5cddd0411495da608736e4e02bb79d1f5780 + 72. https://github.com/yeokm1/gentoo-on-486/tree/master/images + 73. https://github.com/yeokm1/gentoo-on-486/blob/master/.config + 74. https://github.com/yeokm1/gentoo-on-486/blob/master/LICENSE + 75. https://github.com/yeokm1/gentoo-on-486/blob/master/README.md + 76. https://github.com/yeokm1/gentoo-on-486/blob/master/gentoo-on-486-presentation.pptx + 77. https://github.com/yeokm1/gentoo-on-486#gentoo-on-486 + 78. https://github.com/yeokm1/gentoo-on-486#the-hardware + 79. https://github.com/yeokm1/gentoo-on-486#deployment-machine--ibm-ps1-consultant-2133-19c-released-in-1993 + 80. https://github.com/yeokm1/gentoo-on-486#compilation-machine-thinkpad-t430-released-in-2012 + 81. https://github.com/yeokm1/gentoo-on-486#optional-machine-to-issue-ssh-commands-to-compilation-machine + 82. https://github.com/yeokm1/gentoo-on-486#instructions + 83. https://github.com/yeokm1/gentoo-on-486#1-preparing-the-install-mediadisks + 84. https://github.com/yeokm1/gentoo-on-486#2-networking-and-ssh + 85. https://github.com/yeokm1/gentoo-on-486#3-preparing-the-disks + 86. https://github.com/yeokm1/gentoo-on-486#4-installing-stage3 + 87. https://github.com/yeokm1/gentoo-on-486#5-installing-base-system + 88. https://github.com/yeokm1/gentoo-on-486#read-the-news + 89. https://github.com/yeokm1/gentoo-on-486#set-system-profile + 90. https://github.com/yeokm1/gentoo-on-486#configure-timezone + 91. https://github.com/yeokm1/gentoo-on-486#configure-locale + 92. https://github.com/yeokm1/gentoo-on-486#6-configuring-the-kernel + 93. https://github.com/yeokm1/gentoo-on-486#find-out-system-specs + 94. https://github.com/yeokm1/gentoo-on-486#just-take-the-latest-stable-kernel + 95. https://github.com/yeokm1/gentoo-on-486#download-a-particular-kernel-version + 96. https://github.com/yeokm1/gentoo-on-486#kernel-options + 97. https://github.com/yeokm1/gentoo-on-486#64-bit-kernel + 98. https://github.com/yeokm1/gentoo-on-486#processor-type-and-features + 99. https://github.com/yeokm1/gentoo-on-486#bus-options + 100. https://github.com/yeokm1/gentoo-on-486#device-drivers + 101. https://github.com/yeokm1/gentoo-on-486#file-systems + 102. https://github.com/yeokm1/gentoo-on-486#backup-kernel-configuration + 103. https://github.com/yeokm1/gentoo-on-486#compiling-the-kernel + 104. https://github.com/yeokm1/gentoo-on-486#7-configuring-the-system + 105. https://github.com/yeokm1/gentoo-on-486#configuring-etcfstab + 106. https://github.com/yeokm1/gentoo-on-486#set-hostname + 107. https://github.com/yeokm1/gentoo-on-486#network-info + 108. https://github.com/yeokm1/gentoo-on-486#system-config + 109. https://github.com/yeokm1/gentoo-on-486#8-installing-tools + 110. https://github.com/yeokm1/gentoo-on-486#required-installs + 111. https://github.com/yeokm1/gentoo-on-486#correct-syslog-issues + 112. https://github.com/yeokm1/gentoo-on-486#optional-installs + 113. https://github.com/yeokm1/gentoo-on-486#9-configuring-the-bootloader + 114. https://github.com/yeokm1/gentoo-on-486#install-bootloader + 115. https://github.com/yeokm1/gentoo-on-486#configure-lilo + 116. https://github.com/yeokm1/gentoo-on-486#10-finalising-install + 117. https://github.com/yeokm1/gentoo-on-486#create-non-root-user + 118. https://github.com/yeokm1/gentoo-on-486#unmount-and-rebootpoweroff-system + 119. https://github.com/yeokm1/gentoo-on-486#11-boot-on-i486 + 120. https://github.com/yeokm1/gentoo-on-486#change-preferred-python-version + 121. https://github.com/yeokm1/gentoo-on-486#update-time + 122. https://github.com/yeokm1/gentoo-on-486#sound-test + 123. https://github.com/yeokm1/gentoo-on-486#configure-web-server + 124. https://github.com/yeokm1/gentoo-on-486#bonus-step + 125. https://github.com/yeokm1/gentoo-on-486#readme + 126. http://yeokhengmeng.com/2018/01/make-the-486-great-again/ + 127. https://en.wikipedia.org/wiki/IBM_PS/1 + 128. https://github.com/yeokm1/gentoo-on-486/blob/master/images/gentoo-486-capabilities.jpg + 129. https://www.philscomputerlab.com/gotek-floppy-emulator.html + 130. https://en.wikipedia.org/wiki/3Com_3c509 + 131. https://en.wikipedia.org/wiki/Sound_Blaster_16 + 132. https://en.wikipedia.org/wiki/Sound_Blaster_16#OPL-3_FM_and_CQM_Synthesis_options + 133. http://www.thinkwiki.org/wiki/Category:T430 + 134. https://github.com/yeokm1/gentoo-on-486/blob/master/images/gentoo-486-t430.jpg + 135. https://wiki.gentoo.org/wiki/Handbook:X86 + 136. https://wiki.gentoo.org/wiki/Handbook:X86/Installation/Media + 137. https://www.gentoo.org/downloads/ + 138. https://wiki.gentoo.org/wiki/Handbook:X86/Installation/Networking + 139. https://wiki.gentoo.org/wiki/Handbook:X86/Installation/Disks + 140. http://www.pcguide.com/ref/hdd/bios/sizeMB504-c.html + 141. https://wiki.gentoo.org/wiki/Handbook:X86/Installation/Stage + 142. https://wiki.gentoo.org/wiki/Handbook:X86/Installation/Base + 143. https://wiki.gentoo.org/wiki/Handbook:X86/Installation/Kernel + 144. https://archives.gentoo.org/gentoo-dev/message/57f754009e47732a56bb2e0259f2ac3e + 145. https://wiki.gentoo.org/wiki/Handbook:X86/Installation/System + 146. https://wiki.gentoo.org/wiki/Handbook:X86/Installation/Tools + 147. https://wiki.gentoo.org/wiki/Handbook:X86/Installation/Bootloader + 148. https://wiki.gentoo.org/wiki/Handbook:X86/Installation/Finalizing + 149. https://wiki.gentoo.org/wiki/Nginx + 150. http://yeokhengmeng.com/2018/01/make-the-486-great-again/ + 151. https://github.com/topics/linux + 152. https://github.com/topics/linux-kernel + 153. https://github.com/topics/gentoo + 154. https://github.com/topics/486 + 155. https://github.com/yeokm1/gentoo-on-486#readme + 156. https://github.com/yeokm1/gentoo-on-486/blob/master/LICENSE + 157. https://github.com/yeokm1/gentoo-on-486/stargazers + 158. https://github.com/yeokm1/gentoo-on-486/watchers + 159. https://github.com/yeokm1/gentoo-on-486/network/members + 160. https://github.com/yeokm1/gentoo-on-486/releases + 161. https://github.com/users/yeokm1/packages?repo_name=gentoo-on-486 + 162. https://docs.github.com/en/github/site-policy/github-terms-of-service + 163. https://docs.github.com/en/github/site-policy/github-privacy-statement + 164. https://github.com/security + 165. https://www.githubstatus.com/ + 166. https://docs.github.com/ + 167. https://support.github.com/?tags=dotcom-footer + 168. https://github.com/pricing + 169. https://docs.github.com/ + 170. https://services.github.com/ + 171. https://github.blog/ + 172. https://github.com/about + 173. https://github.com/yeokm1/gentoo-on-486 + 174. https://github.com/yeokm1/gentoo-on-486 + + Hidden links: + 176. https://github.com/ + 177. https://github.com/yeokm1/gentoo-on-486 + 178. https://github.com/yeokm1/gentoo-on-486 + 179. https://github.com/yeokm1/gentoo-on-486 + 180. https://github.com/yeokm1/gentoo-on-486 + 181. https://github.com/yeokm1/gentoo-on-486#gentoo-on-486 + 182. https://github.com/yeokm1/gentoo-on-486#the-hardware + 183. https://github.com/yeokm1/gentoo-on-486#deployment-machine--ibm-ps1-consultant-2133-19c-released-in-1993 + 184. https://github.com/yeokm1/gentoo-on-486#compilation-machine-thinkpad-t430-released-in-2012 + 185. https://github.com/yeokm1/gentoo-on-486#optional-machine-to-issue-ssh-commands-to-compilation-machine + 186. https://github.com/yeokm1/gentoo-on-486#instructions + 187. https://github.com/yeokm1/gentoo-on-486#1-preparing-the-install-mediadisks + 188. https://github.com/yeokm1/gentoo-on-486#2-networking-and-ssh + 189. https://github.com/yeokm1/gentoo-on-486#3-preparing-the-disks + 190. https://github.com/yeokm1/gentoo-on-486#4-installing-stage3 + 191. https://github.com/yeokm1/gentoo-on-486#5-installing-base-system + 192. https://github.com/yeokm1/gentoo-on-486#read-the-news + 193. https://github.com/yeokm1/gentoo-on-486#set-system-profile + 194. https://github.com/yeokm1/gentoo-on-486#configure-timezone + 195. https://github.com/yeokm1/gentoo-on-486#configure-locale + 196. https://github.com/yeokm1/gentoo-on-486#6-configuring-the-kernel + 197. https://github.com/yeokm1/gentoo-on-486#find-out-system-specs + 198. https://github.com/yeokm1/gentoo-on-486#just-take-the-latest-stable-kernel + 199. https://github.com/yeokm1/gentoo-on-486#download-a-particular-kernel-version + 200. https://github.com/yeokm1/gentoo-on-486#kernel-options + 201. https://github.com/yeokm1/gentoo-on-486#64-bit-kernel + 202. https://github.com/yeokm1/gentoo-on-486#processor-type-and-features + 203. https://github.com/yeokm1/gentoo-on-486#bus-options + 204. https://github.com/yeokm1/gentoo-on-486#device-drivers + 205. https://github.com/yeokm1/gentoo-on-486#file-systems + 206. https://github.com/yeokm1/gentoo-on-486#backup-kernel-configuration + 207. https://github.com/yeokm1/gentoo-on-486#compiling-the-kernel + 208. https://github.com/yeokm1/gentoo-on-486#7-configuring-the-system + 209. https://github.com/yeokm1/gentoo-on-486#configuring-etcfstab + 210. https://github.com/yeokm1/gentoo-on-486#set-hostname + 211. https://github.com/yeokm1/gentoo-on-486#network-info + 212. https://github.com/yeokm1/gentoo-on-486#system-config + 213. https://github.com/yeokm1/gentoo-on-486#8-installing-tools + 214. https://github.com/yeokm1/gentoo-on-486#required-installs + 215. https://github.com/yeokm1/gentoo-on-486#correct-syslog-issues + 216. https://github.com/yeokm1/gentoo-on-486#optional-installs + 217. https://github.com/yeokm1/gentoo-on-486#9-configuring-the-bootloader + 218. https://github.com/yeokm1/gentoo-on-486#install-bootloader + 219. https://github.com/yeokm1/gentoo-on-486#configure-lilo + 220. https://github.com/yeokm1/gentoo-on-486#10-finalising-install + 221. https://github.com/yeokm1/gentoo-on-486#create-non-root-user + 222. https://github.com/yeokm1/gentoo-on-486#unmount-and-rebootpoweroff-system + 223. https://github.com/yeokm1/gentoo-on-486#11-boot-on-i486 + 224. https://github.com/yeokm1/gentoo-on-486#change-preferred-python-version + 225. https://github.com/yeokm1/gentoo-on-486#update-time + 226. https://github.com/yeokm1/gentoo-on-486#sound-test + 227. https://github.com/yeokm1/gentoo-on-486#configure-web-server + 228. https://github.com/yeokm1/gentoo-on-486#bonus-step + 229. https://github.com/ diff --git a/floppy/doc/lwn.net_Articles_672587.txt b/floppy/doc/lwn.net_Articles_672587.txt new file mode 100644 index 0000000..32a6a4e --- /dev/null +++ b/floppy/doc/lwn.net_Articles_672587.txt @@ -0,0 +1,240 @@ + #[1]LWN.net headlines [2]Comments posted to this article + + [3]LWN.net Logo LWN + .net News from the source [4]LWN + * [5]Content + + [6]Weekly Edition + + [7]Archives + + [8]Search + + [9]Kernel + + [10]Security + + [11]Distributions + + [12]Events calendar + + [13]Unread comments + + + _________________________________________________________ + + + [14]LWN FAQ + + [15]Write for us + + User: ________ Password: ________ Log in + | Subscribe + | Register + [16]Subscribe / [17]Log in / [18]New account + +[RFC] CONFIG_FORCE_MINIMALLY_SANE_CONFIG=y (was: Re: [RFC PATCH] x86/kconfig: +Sanity-check config file during oldconfig) + + [Posted January 20, 2016 by corbet] + + From: Ingo Molnar + To: Borislav Petkov , Linus Torvalds + , Greg Kroah-Hartman + , Andrew Morton + + Subject: [RFC] CONFIG_FORCE_MINIMALLY_SANE_CONFIG=y (was: Re: [RFC + PATCH] x86/kconfig: Sanity-check config file during oldconfig) + Date: Tue, 19 Jan 2016 09:20:22 +0100 + Message-ID: <20160119082022.GB18237@gmail.com> + Cc: Michal Marek , + =?iso-8859-1?Q?M=E5ns_Rullg=E5rd?= , Markus + Trippelsdorf , Thomas Voegtle + , linux-kernel-AT-vger.kernel.org, x86-ml + , Peter Zijlstra , Thomas + Gleixner , Andrew Morton + , Linus Torvalds + , Jiri Olsa , + Arnaldo Carvalho de Melo , + =?iso-8859-1?Q?Fr=E9d=E9ric?= Weisbecker + Archive-link: [19]Article, [20]Thread + + +( I've Cc:-ed Linus, Greg and Andrew, to see whether doing something like what I + + suggest below in the x86 architecture would be acceptable. ) + +* Borislav Petkov wrote: + +> From: Borislav Petkov +> +> Thomas Voegtle reported that doing oldconfig with a .config which has +> CONFIG_MICROCODE enabled but BLK_DEV_INITRD disabled prevents the +> microcode loading mechanism from being built. +> +> Add a short script which hooks into the "make oldconfig" handling and +> sanity-checks the config file for that discrepancy. It issues a message +> which should hopefully sensitize the user to that issue and point her +> into the right direction. + +So it would be much better to just do such things automatically, and only allow +'safe' combination of options - without the user having to do anything. + +The guiding principle is: kernel configuration is (still...) our worst barrier o +f +entry for new users/developers, and kernel configuration still sucks very much +from a UI point of view. + +In fact our kernel configuration UI and workflow is still so bad that it's an +effort to stay current even with a standalone and working .config, even for +experienced kernel developers... + +Adding a (somewhat hacky) post processing script and forcing users to read +something 99% of them does not have a clue about is a step in the wrong directio +n, +IMHO. + +So can we do something more intelligent instead, such as modifying the Kconfigs +in +a way that it's not possible to have CONFIG_MICROCODE enabled while BLK_DEV_INIT +RD +is disabled? + +I'd be fine with a 'select BLK_DEV_INITRD' for example. If people doing super +specialized setups disagree because they really need that nonsensical combinatio +n +of config options, they can complain and provide a better solution. + +In fact on x86 I'd suggest we go farther than that and add a core set of selects + +that can be disabled only through a sufficiently scary "I really know I'm doing +something utmost weird" (and default disabled) config option. + +From my own randconfig testing I can give a core list of must-have kernel option +s, +without which most distros (Fedora, RHEL, Ubuntu, SuSE) won't boot properly: + ++config FORCE_MINIMALLY_SANE_CONFIG ++ bool ++ default y ++ ++ # so that capset() works (sudo, etc.): ++ select SECURITY ++ select SECURITY_CAPABILITIES ++ select BINFMT_ELF ++ ++ select SYSFS ++ select SYSFS_DEPRECATED ++ select PROC_FS ++ select FUTEX ++ ++ # newer systemd silently relies on the presence of the epoll system call +: ++ select EPOLL ++ select ANON_INODES ++ ++ # newer systemd silently hangs durig early init without these: ++ select PROC_SYSCTL ++ select SYSCTL ++ select POSIX_MQUEUE ++ select POSIX_MQUEUE_SYSCTL ++ ++ # systemd needs this syscall: ++ select FHANDLE ++ ++ # systemd needs devtmpfs: "systemd[1]: Failed to mount devtmpfs at /dev: + No such device" ++ select DEVTMPFS ++ ++ # systemd needs tmpfs: "systemd[1]: Failed to mount tmpfs at /sys/fs/cgr +oup: No such file or +directory" ++ select SHMEM ++ select TMPFS ++ ++ # systemd needs timerfd syscalls: "[ 8.198625] systemd[1]: Failed to +create timerfd: Function +not implemented^" ++ select TIMERFD ++ ++ # systemd needs signalfd support: "[ 45.536725] systemd[1]: Failed to +allocate manager object: +Function not implemented" ++ select SIGNALFD ++ ++ # systemd hangs during bootup without cgroup support: ++ select CGROUPS ++ ++ # systemd fails during bootup without this option, with a nonsensical me +ssage: "[DEPEND] +Dependency failed for File System Check on /dev/sda1." ++ select FILE_LOCKING ++ ++ # systemd fails during bootup without this option: ++ select FSNOTIFY ++ select INOTIFY_USER ++ ++ # won't boot otherwise: ++ select RD_GZIP ++ select BLK_DEV_INITRD ++ ++ # old F6 userspace needs vsyscalls: ++ select X86_VSYSCALL_EMULATION if X86_64 ++ select IA32_EMULATION if X86_64 + +And yes, many of these options are members of the 'SystemD debuggability Hall Of + +Shame'... It cost me many, many days of painful config-bisection to figure the +often obscure dependencies out, so we might as well upstream this information. + +Many braincells died to bring us this information! + +Note that some of these have sub-dependencies (and super-dependencies) so the li +st +isn't complete from a Kconfig language POV - but it lists most of the 'must have +' +leaf features and would form a good starting point. + +The idea is that if you have this option enabled, the rest of kernel config shou +ld +be 'fool proof' - or at least failures should be a lot more obvious (such as a +missing hardware driver or a missing filesystem driver). + +I'd keep this option x86-only at least initially, because that's still the space + +where most of our newbie testers come from, and because I'd like to see how this + +evolves before trying to generalize it to 44 architectures... + +Also, I'd not try to be per distro, I'd use a single superset of such config +options: from a usability POV it's _much_ better to have a few more options +enabled in a .config of thousands of entries, than to accidentally have the one +option not enabled that your user-space somehow critically depends on ... + +Thoughs? + +Thanks, + + Ingo + + + __________________________________________ + + ([21]Log in to post comments) + + Copyright 2016, Eklektix, Inc. + Comments and public postings are copyrighted by their creators. + Linux is a registered trademark of Linus Torvalds + +References + + 1. https://lwn.net/headlines/newrss + 2. https://lwn.net/headlines/672587/ + 3. https://lwn.net/ + 4. https://lwn.net/ + 5. https://lwn.net/Articles/672587/#t + 6. https://lwn.net/current/ + 7. https://lwn.net/Archives/ + 8. https://lwn.net/Search/ + 9. https://lwn.net/Kernel/ + 10. https://lwn.net/Security/ + 11. https://lwn.net/Distributions/ + 12. https://lwn.net/Calendar/ + 13. https://lwn.net/Comments/unread + 14. https://lwn.net/op/FAQ.lwn + 15. https://lwn.net/op/AuthorGuide.lwn + 16. https://lwn.net/subscribe/ + 17. https://lwn.net/Login/ + 18. https://lwn.net/Login/newaccount + 19. http://article.gmane.org/gmane.linux.kernel/2129528 + 20. http://thread.gmane.org/gmane.linux.kernel/2129528 + 21. https://lwn.net/Login/?target=/Articles/672587/ diff --git a/floppy/doc/people.freedesktop.org_~narmstrong_meson_drm_doc_admin-guide_initrd.txt b/floppy/doc/people.freedesktop.org_~narmstrong_meson_drm_doc_admin-guide_initrd.txt new file mode 100644 index 0000000..0c2351e --- /dev/null +++ b/floppy/doc/people.freedesktop.org_~narmstrong_meson_drm_doc_admin-guide_initrd.txt @@ -0,0 +1,453 @@ + #[1]The Linux Kernel 4.11.0-rc4-00191-g7de6e5d documentation [2]The + Linux kernel user's and administrator's guide [3]Linux Serial Console + [4]Rules on how to access information in sysfs + +Navigation + + * [5]index + * [6]next | + * [7]previous | + * [8]The Linux Kernel 4.11.0-rc4-00191-g7de6e5d documentation + * [9]The Linux kernel user's and administrator's guide + +Using the initial RAM disk (initrd)[10] + + Written 1996,2000 by Werner Almesberger + <[11]werner.almesberger@epfl.ch> and Hans Lermen <[12]lermen@fgan.de> + + initrd provides the capability to load a RAM disk by the boot loader. + This RAM disk can then be mounted as the root file system and programs + can be run from it. Afterwards, a new root file system can be mounted + from a different device. The previous root (from initrd) is then moved + to a directory and can be subsequently unmounted. + + initrd is mainly designed to allow system startup to occur in two + phases, where the kernel comes up with a minimum set of compiled-in + drivers, and where additional modules are loaded from initrd. + + This document gives a brief overview of the use of initrd. A more + detailed discussion of the boot process can be found in [13][1]. + +Operation[14] + + When using initrd, the system typically boots as follows: + + 1. the boot loader loads the kernel and the initial RAM disk + 2. the kernel converts initrd into a "normal" RAM disk and frees the + memory used by initrd + 3. if the root device is not /dev/ram0, the old (deprecated) + change_root procedure is followed. see the "Obsolete root change + mechanism" section below. + 4. root device is mounted. if it is /dev/ram0, the initrd image is + then mounted as root + 5. /sbin/init is executed (this can be any valid executable, including + shell scripts; it is run with uid 0 and can do basically everything + init can do). + 6. init mounts the "real" root file system + 7. init places the root file system at the root directory using the + pivot_root system call + 8. init execs the /sbin/init on the new root filesystem, performing + the usual boot sequence + 9. the initrd file system is removed + + Note that changing the root directory does not involve unmounting it. + It is therefore possible to leave processes running on initrd during + that procedure. Also note that file systems mounted under initrd + continue to be accessible. + +Boot command-line options[15] + + initrd adds the following new options: +initrd= (e.g. LOADLIN) + + Loads the specified file as the initial RAM disk. When using LILO, you + have to specify the RAM disk image file in /etc/lilo.conf, using the + INITRD configuration variable. + +noinitrd + + initrd data is preserved but it is not converted to a RAM disk and + the "normal" root file system is mounted. initrd data can be read + from /dev/initrd. Note that the data in initrd can have any structure + in this case and doesn't necessarily have to be a file system image. + This option is used mainly for debugging. + + Note: /dev/initrd is read-only and it can only be used once. As soon + as the last process has closed it, all data is freed and /dev/initrd + can't be opened anymore. + +root=/dev/ram0 + + initrd is mounted as root, and the normal boot procedure is followed, + with the RAM disk mounted as root. + +Compressed cpio images[16] + + Recent kernels have support for populating a ramdisk from a compressed + cpio archive. On such systems, the creation of a ramdisk image doesn't + need to involve special block devices or loopbacks; you merely create a + directory on disk with the desired initrd content, cd to that + directory, and run (as an example): +find . | cpio --quiet -H newc -o | gzip -9 -n > /boot/imagefile.img + + Examining the contents of an existing image file is just as simple: +mkdir /tmp/imagefile +cd /tmp/imagefile +gzip -cd /boot/imagefile.img | cpio -imd --quiet + +Installation[17] + + First, a directory for the initrd file system has to be created on the + "normal" root file system, e.g.: +# mkdir /initrd + + The name is not relevant. More details can be found on the + pivot_root(2) man page. + + If the root file system is created during the boot procedure (i.e. if + you're building an install floppy), the root file system creation + procedure should create the /initrd directory. + + If initrd will not be mounted in some cases, its content is still + accessible if the following device has been created: +# mknod /dev/initrd b 1 250 +# chmod 400 /dev/initrd + + Second, the kernel has to be compiled with RAM disk support and with + support for the initial RAM disk enabled. Also, at least all components + needed to execute programs from initrd (e.g. executable format and file + system) must be compiled into the kernel. + + Third, you have to create the RAM disk image. This is done by creating + a file system on a block device, copying files to it as needed, and + then copying the content of the block device to the initrd file. With + recent kernels, at least three types of devices are suitable for that: + + * a floppy disk (works everywhere but it's painfully slow) + * a RAM disk (fast, but allocates physical memory) + * a loopback device (the most elegant solution) + + We'll describe the loopback device method: + + 1. make sure loopback block devices are configured into the kernel + 2. create an empty file system of the appropriate size, e.g.: +# dd if=/dev/zero of=initrd bs=300k count=1 +# mke2fs -F -m0 initrd + + (if space is critical, you may want to use the Minix FS instead of + Ext2) + 3. mount the file system, e.g.: +# mount -t ext2 -o loop initrd /mnt + + 4. create the console device: +# mkdir /mnt/dev +# mknod /mnt/dev/console c 5 1 + + 5. copy all the files that are needed to properly use the initrd + environment. Don't forget the most important file, /sbin/init + Note + /sbin/init permissions must include "x" (execute). + 6. correct operation the initrd environment can frequently be tested + even without rebooting with the command: +# chroot /mnt /sbin/init + + This is of course limited to initrds that do not interfere with the + general system state (e.g. by reconfiguring network interfaces, + overwriting mounted devices, trying to start already running + demons, etc. Note however that it is usually possible to use + pivot_root in such a chroot'ed initrd environment.) + 7. unmount the file system: +# umount /mnt + + 8. the initrd is now in the file "initrd". Optionally, it can now be + compressed: +# gzip -9 initrd + + For experimenting with initrd, you may want to take a rescue floppy and + only add a symbolic link from /sbin/init to /bin/sh. Alternatively, you + can try the experimental newlib environment [18][2] to create a small + initrd. + + Finally, you have to boot the kernel and load initrd. Almost all Linux + boot loaders support initrd. Since the boot process is still compatible + with an older mechanism, the following boot command line parameters + have to be given: +root=/dev/ram0 rw + + (rw is only necessary if writing to the initrd file system.) + + With LOADLIN, you simply execute: +LOADLIN initrd= + + e.g.: +LOADLIN C:\LINUX\BZIMAGE initrd=C:\LINUX\INITRD.GZ root=/dev/ram0 rw + + With LILO, you add the option INITRD= to either the global + section or to the section of the respective kernel in /etc/lilo.conf, + and pass the options using APPEND, e.g.: +image = /bzImage + initrd = /boot/initrd.gz + append = "root=/dev/ram0 rw" + + and run /sbin/lilo + + For other boot loaders, please refer to the respective documentation. + + Now you can boot and enjoy using initrd. + +Changing the root device[19] + + When finished with its duties, init typically changes the root device + and proceeds with starting the Linux system on the "real" root device. + + The procedure involves the following steps: + + + mounting the new root file system + + turning it into the root file system + + removing all accesses to the old (initrd) root file system + + unmounting the initrd file system and de-allocating the RAM + disk + + Mounting the new root file system is easy: it just needs to be mounted + on a directory under the current root. Example: +# mkdir /new-root +# mount -o ro /dev/hda1 /new-root + + The root change is accomplished with the pivot_root system call, which + is also available via the pivot_root utility (see pivot_root(8) man + page; pivot_root is distributed with util-linux version 2.10h or higher + [20][3]). pivot_root moves the current root to a directory under the + new root, and puts the new root at its place. The directory for the old + root must exist before calling pivot_root. Example: +# cd /new-root +# mkdir initrd +# pivot_root . initrd + + Now, the init process may still access the old root via its executable, + shared libraries, standard input/output/error, and its current root + directory. All these references are dropped by the following command: +# exec chroot . what-follows dev/console 2>&1 + + Where what-follows is a program under the new root, e.g. /sbin/init If + the new root file system will be used with udev and has no valid /dev + directory, udev must be initialized before invoking chroot in order to + provide /dev/console. + + Note: implementation details of pivot_root may change with time. In + order to ensure compatibility, the following points should be observed: + + * before calling pivot_root, the current directory of the invoking + process should point to the new root directory + * use . as the first argument, and the _relative_ path of the + directory for the old root as the second argument + * a chroot program must be available under the old and the new root + * chroot to the new root afterwards + * use relative paths for dev/console in the exec command + + Now, the initrd can be unmounted and the memory allocated by the RAM + disk can be freed: +# umount /initrd +# blockdev --flushbufs /dev/ram0 + + It is also possible to use initrd with an NFS-mounted root, see the + pivot_root(8) man page for details. + +Usage scenarios[21] + + The main motivation for implementing initrd was to allow for modular + kernel configuration at system installation. The procedure would work + as follows: + + 1. system boots from floppy or other media with a minimal kernel (e.g. + support for RAM disks, initrd, a.out, and the Ext2 FS) and loads + initrd + 2. /sbin/init determines what is needed to (1) mount the "real" root + FS (i.e. device type, device drivers, file system) and (2) the + distribution media (e.g. CD-ROM, network, tape, ...). This can be + done by asking the user, by auto-probing, or by using a hybrid + approach. + 3. /sbin/init loads the necessary kernel modules + 4. /sbin/init creates and populates the root file system (this doesn't + have to be a very usable system yet) + 5. /sbin/init invokes pivot_root to change the root file system and + execs - via chroot - a program that continues the installation + 6. the boot loader is installed + 7. the boot loader is configured to load an initrd with the set of + modules that was used to bring up the system (e.g. /initrd can be + modified, then unmounted, and finally, the image is written from + /dev/ram0 or /dev/rd/0 to a file) + 8. now the system is bootable and additional installation tasks can be + performed + + The key role of initrd here is to re-use the configuration data during + normal system operation without requiring the use of a bloated + "generic" kernel or re-compiling or re-linking the kernel. + + A second scenario is for installations where Linux runs on systems with + different hardware configurations in a single administrative domain. In + such cases, it is desirable to generate only a small set of kernels + (ideally only one) and to keep the system-specific part of + configuration information as small as possible. In this case, a common + initrd could be generated with all the necessary modules. Then, only + /sbin/init or a file read by it would have to be different. + + A third scenario is more convenient recovery disks, because information + like the location of the root FS partition doesn't have to be provided + at boot time, but the system loaded from initrd can invoke a + user-friendly dialog and it can also perform some sanity checks (or + even some form of auto-detection). + + Last not least, CD-ROM distributors may use it for better installation + from CD, e.g. by using a boot floppy and bootstrapping a bigger RAM + disk via initrd from CD; or by booting via a loader like LOADLIN or + directly from the CD-ROM, and loading the RAM disk from CD without need + of floppies. + +Obsolete root change mechanism[22] + + The following mechanism was used before the introduction of pivot_root. + Current kernels still support it, but you should _not_ rely on its + continued availability. + + It works by mounting the "real" root device (i.e. the one set with rdev + in the kernel image or with root=... at the boot command line) as the + root file system when linuxrc exits. The initrd file system is then + unmounted, or, if it is still busy, moved to a directory /initrd, if + such a directory exists on the new root file system. + + In order to use this mechanism, you do not have to specify the boot + command options root, init, or rw. (If specified, they will affect the + real root file system, not the initrd environment.) + + If /proc is mounted, the "real" root device can be changed from within + linuxrc by writing the number of the new root FS device to the special + file /proc/sys/kernel/real-root-dev, e.g.: +# echo 0x301 >/proc/sys/kernel/real-root-dev + + Note that the mechanism is incompatible with NFS and similar file + systems. + + This old, deprecated mechanism is commonly called change_root, while + the new, supported mechanism is called pivot_root. + +Mixed change_root and pivot_root mechanism[23] + + In case you did not want to use root=/dev/ram0 to trigger the + pivot_root mechanism, you may create both /linuxrc and /sbin/init in + your initrd image. + + /linuxrc would contain only the following: +#! /bin/sh +mount -n -t proc proc /proc +echo 0x0100 >/proc/sys/kernel/real-root-dev +umount -n /proc + + Once linuxrc exited, the kernel would mount again your initrd as root, + this time executing /sbin/init. Again, it would be the duty of this + init to build the right environment (maybe using the root= device + passed on the cmdline) before the final execution of the real + /sbin/init. + +Resources[24] + + [25][1] Almesberger, Werner; "Booting Linux: The History and the + Future" [26]http://www.almesberger.net/cv/papers/ols2k-9.ps.gz + [27][2] newlib package (experimental), with initrd example + [28]https://www.sourceware.org/newlib/ + [29][3] util-linux: Miscellaneous utilities for Linux + [30]https://www.kernel.org/pub/linux/utils/util-linux/ + +[31]Table Of Contents + + * [32]Using the initial RAM disk (initrd) + + [33]Operation + + [34]Boot command-line options + + [35]Compressed cpio images + + [36]Installation + + [37]Changing the root device + + [38]Usage scenarios + + [39]Obsolete root change mechanism + + [40]Mixed change_root and pivot_root mechanism + + [41]Resources + +Previous topic + + [42]Rules on how to access information in sysfs + +Next topic + + [43]Linux Serial Console + +This Page + + * [44]Show Source + +Quick search + + ____________________ Go + + Enter search terms or a module, class or function name. + +Navigation + + * [45]index + * [46]next | + * [47]previous | + * [48]The Linux Kernel 4.11.0-rc4-00191-g7de6e5d documentation + * [49]The Linux kernel user's and administrator's guide + + Copyright The kernel development community. Created using [50]Sphinx + 1.2.2. + +References + + 1. https://people.freedesktop.org/~narmstrong/meson_drm_doc/index.html + 2. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/index.html + 3. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/serial-console.html + 4. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/sysfs-rules.html + 5. https://people.freedesktop.org/~narmstrong/meson_drm_doc/genindex.html + 6. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/serial-console.html + 7. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/sysfs-rules.html + 8. https://people.freedesktop.org/~narmstrong/meson_drm_doc/index.html + 9. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/index.html + 10. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/initrd.html#using-the-initial-ram-disk-initrd + 11. mailto:werner.almesberger%40epfl.ch + 12. mailto:lermen%40fgan.de + 13. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/initrd.html#f1 + 14. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/initrd.html#operation + 15. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/initrd.html#boot-command-line-options + 16. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/initrd.html#compressed-cpio-images + 17. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/initrd.html#installation + 18. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/initrd.html#f2 + 19. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/initrd.html#changing-the-root-device + 20. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/initrd.html#f3 + 21. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/initrd.html#usage-scenarios + 22. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/initrd.html#obsolete-root-change-mechanism + 23. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/initrd.html#mixed-change-root-and-pivot-root-mechanism + 24. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/initrd.html#resources + 25. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/initrd.html#id1 + 26. http://www.almesberger.net/cv/papers/ols2k-9.ps.gz + 27. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/initrd.html#id2 + 28. https://www.sourceware.org/newlib/ + 29. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/initrd.html#id3 + 30. https://www.kernel.org/pub/linux/utils/util-linux/ + 31. https://people.freedesktop.org/~narmstrong/meson_drm_doc/index.html + 32. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/initrd.html + 33. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/initrd.html#operation + 34. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/initrd.html#boot-command-line-options + 35. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/initrd.html#compressed-cpio-images + 36. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/initrd.html#installation + 37. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/initrd.html#changing-the-root-device + 38. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/initrd.html#usage-scenarios + 39. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/initrd.html#obsolete-root-change-mechanism + 40. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/initrd.html#mixed-change-root-and-pivot-root-mechanism + 41. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/initrd.html#resources + 42. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/sysfs-rules.html + 43. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/serial-console.html + 44. https://people.freedesktop.org/~narmstrong/meson_drm_doc/_sources/admin-guide/initrd.txt + 45. https://people.freedesktop.org/~narmstrong/meson_drm_doc/genindex.html + 46. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/serial-console.html + 47. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/sysfs-rules.html + 48. https://people.freedesktop.org/~narmstrong/meson_drm_doc/index.html + 49. https://people.freedesktop.org/~narmstrong/meson_drm_doc/admin-guide/index.html + 50. http://sphinx-doc.org/ diff --git a/floppy/doc/www.drdobbs.com_80386-protected-mode-initialization_184408010.txt b/floppy/doc/www.drdobbs.com_80386-protected-mode-initialization_184408010.txt new file mode 100644 index 0000000..d0cf894 --- /dev/null +++ b/floppy/doc/www.drdobbs.com_80386-protected-mode-initialization_184408010.txt @@ -0,0 +1,916 @@ + #[1]Dr. Dobb's All Articles [2]Dr. Dobb's All Articles + + [tr?id=832000476880185&ev=PageView&noscript=1] + + (BUTTON) Informa + + Dr. Dobb's is part of the Informa Tech Division of Informa PLC + * [3]Informa PLC + * [4]About us + * [5]Investor relations + * [6]Talent + + This site is operated by a business or businesses owned by Informa PLC + and all copyright resides with them. Informa PLC's registered office is + 5 Howick Place, London SW1P 1WG. Registered in England and Wales. + Number 8860726. + + * [7]Subscribe + * [8]Newsletters + * [9]Digital Library + * [10]RSS + + * ________________________________________ + * Submit + + Search: (*) Site ( ) Source Code + + * [11]Home + * [12]Articles + * [13]News + * [14]Blogs + * [15]Source Code + * [16]Webinars & Events + + * [17]Facebook + * [18]Twitter + + Sections v + * [19]Home + * [20]Articles + * [21]News + * [22]Blogs + * [23]Source Code + * [24]Webinars & Events + + * [25]Cloud + * [26]Mobile + * [27]Parallel + * [28].NET + * [29]JVM Languages + * [30]C/C++ + * [31]Tools + * [32]Design + * [33]Testing + * [34]Web Dev + * [35]Jolt Awards + + Channels v + * [36]Cloud + * [37]Mobile + * [38]Parallel + * [39].NET + * [40]JVM Languages + * [41]C/C++ + * [42]Tools + * [43]Design + * [44]Testing + * [45]Web Dev + * [46]Jolt Awards + + [47]RSS + + [48]Tweet + [49][share_email_icon.gif] [50][share_print_icon.gif] [51]Permalink + +80386 Protected Mode Initialization + + By Neal Margulis, October 01, 1988 + + In addition to discussing how to get from real- to protected-mode and + back, Neal shows how to define greater tan 64K segments, and provides + some general comments on the ins and outs of developing 32-bit + software. + + Neal Margulis is an applications engineer for Intel Corp. and can be + reached at 2625 Walsh Ave., SC4-40, Santa Clara, CA 95051. + __________________________________________________________________ + + The 32-bit mode of the Intel 80386 and the 80386SX provides significant + architectural advantages over the 80286. ln addition, software that + takes advantage of these advanced features has significant performance + improvements. An application program running in the 80386's native + 32-bit mode typically executes from two to six times faster than the + equivalent application written for the 80286. Furthermore, programs + that manipulate large data structures are easier to write when you use + the 32-bit mode of the 80386. Among the features that the 80386 + provides over the 80286 are support for large segment sizes, 32-bit + data operations, and paged memory management. + + The program presented here shows how to initialize the 80386 into + protected mode, how to define segments greater than 64K in size, and + how to return to real mode. You can use this program as a template for + coding applications that use the 80386 features. Although the 80386SX + has a reduced physical addressing space of 16 Mbytes (the maximum + address space of AT architecture), its programming model is the same as + that of the 80386. Thus the template can be used with it as well. + + This article explains how the code works and briefly describes how to + adapt the template to suit your individual needs. You may also find it + helpful to refer to one of many 80386 programming articles, such as + "Programming on the 80386" (DDJ, October 1986). Additional information + can be found in the Intel 80386 Programmers Reference Guide and the + 80386 Data Sheet, as well as the book Programming the 80386 by Crawford + and Gelsinger (Sybex Books). + +32-Bit Data Operations + +The ability to operate on 32 bits of data adds power to arithmetic and +logical instructions. While the 80286 generates only 16-bit data, the 80386 +contains eight general-purpose 32-bit registers. Segments for 80386 protected +mode are set to either use16 or use32, which indicates the default sizes for +data and addressing. in real mode, the 80386 is limited to only use16 +segments. An override prefix must be designated in order to perform 32-bit +operations within a protected mode use16 segment. This results in greater +program length and a possible decrease in performance. The 80386 in protected +mode allows for both use16 and use32 segments. No override prefixes are +necessary for 32-bit data operations or 32-bit addressing in a use32 segment. +In the program shown in [52]Listing One, page 84, CSEG and C3 are use16 code +segments because they must be executable from real mode, and PMODE segment is +a use32 code segment. + +Large Segments + +The 64K limit on the segment size of the 80286 and the real mode 80386 hinder +the addressing of large data arrays and of long sequences of code. Reloading +segments is time consuming, disrupts the task at hand, and causes an +unnatural breakup of procedures and data. The 80386 protected mode allows for +segments up to 4 gigabytes in size. The base, limit, and granularity fields +of segment descriptors specify the segment size and location in memory. The +base represents a linear address and the segment size is determined by the +limit and the granularity (G) bit. When the G bit is a zero, the actual limit +is the 20-bit limit field of the descriptor (Maximum size 2^20 = 1 Mbyte). If +the G bit is a one, then the limit field page granularity is multiplied by +4K. This gives a maximum limit of 4 gigabytes (2^20 * 2^12). The base's +linear address is 32-bits long, thus allowing it to be specified anywhere +within the 4-gigabyte address space. + +Segmentation is the basis for protection. Data and code segments can reside +in separate, nonoverlapping areas of memory. In addition, privilege levels +assigned to different segments provide a mechanism for limiting access to +certain data or privileged instruction sequences (for both). The 80386 +provides four privilege levels. In the program presented in [53]Listing One, +all segments are of the highest privilege level (0). You can change this by +modifying the segment descriptors and the selectors. + +4-Gigabyte Addressing + +To use the increased segment sizes, the 80386 has expanded the instruction +pointer to 32-bits and added new addressing modes. As a result, segment loads +and stores within a procedure can be eliminated and the entire physical +address space can be accessed as one segment. The template program sets up a +data segment that starts at the base of video memory 0B8000H. The entire +address space is accessible through a segment that begins at zero. + +The effective address of a memory operand can be obtained through an absolute +address or through one of the register-base methods of the following form: + +[base register] + [(index register * scale) + displacement] + +The 80386 also has page translation by which linear addresses can be resolved +to physical addresses. Page translation occurs when the PG bit in CR0 is set. +Two levels of tables are used to address each page of memory. The +higher-level table is the page directory, which addresses up to 1K +second-level page tables. These second-level page tables address up to 1K +pages, each being 4K. + +Because all pages are of equal size, page translation can reduce the memory +fragmentation that occurs when using segmentation for on-demand memory +allocation. The template program does not use paging, so all linear addresses +are treated as the physical address. + +Setting Up the Descriptor Tables + +Before entering protected mode, you must set up descriptor tables and load +the 80386 with pointers to these tables. While in real mode, the program in +[54]Listing One sets up a global descriptor table (GDT) and does not require +a local descriptor table. + +Starting at the memory location designated by the label GDT__table, +successive 8-byte descriptor entries make up the GDT. MASM's STRUC feature +makes coding of the entries much easier. Because DOS determines the memory +location of the program at run time, the absolute addresses must also be +calculated at run time. + +The template program determines the bases for each of the segments and the +pointer to the descriptor table. This table pointer consists of a 32-bit +linear address and a 16-bit limit. + +Such 48-bit (6-byte) objects are sometimes referred to as a PWORD or FWORD +data type. Using a QWORD (8 bytes), as in this program, helps to maintain +portability between assemblers. + +The Type field of the descriptor determines whether segments that use this +descriptor contain code or data. Descriptors to specify gates, task state +segments, and local descriptor tables are also available, but are not used in +this example. + +Entering Protected Mode + +Having set up the descriptor table, it is simple to enter protected mode. The +PE bit of Control Register Zero (CR0) is set to one, and then a jump is +executed. The jump flushes the prefetch queue, which contains instructions +that were decoded for execution in real mode. Either a near or a far jump +will flush the prefetch queue. By using a far jump, the 80386 reloads the +code segment register (CS) and the internal segment descriptor cache. The far +jump instruction uses selector 08H, which is GDT entry 1. This is the PMODE +segment entry. Execution in this segment allows native 32-bit operations. +(Bits 15 through 3 of the selector determine the GDT table entry. Bit 2 is +Table indicator, and bits 1 and 0 are the privilege level.) + +The Jump instructions are handcoded by using the define byte (DB) assembler +directive. Opcode 0EAH specifies an intersegment jump, with the next two +fields of the instruction being the offset and the segment selector operands. +In this example, all of the offsets are zero because the jump targets are at +the start of their respective segments. The offset size is either a 16-bit or +32-bit field. This is determined by the code segment type size in which the +jump instruction occurs. The segment selector field of the jump instruction +determines which descriptor table entry is the target segment for the jump. + +Returning to Real Mode + +Returning to real mode on the 80286 requires that you reset the processor. On +an PC AT, this means saving the required processor contents, placing a reset +code in the CMOS RAM, storing a return address in memory, and using the +keyboard controller to reset the processor. Although 386 based ATs support +this reset scheme, a much simpler and far faster way to return the 386 to +real mode is available. In the C3 segment of the example program, the 80386 +is returned to real mode by clearing the PE bit then executing a jump +instruction to flush the instruction queue. To assure proper operation after +returning to real mode, the segment registers must be loaded with real mode +type selectors while still in protected mode. Entry 4 in the GDT represents +what should be in the segment descriptor caches during real mode. They have a +64K limit with the base at zero and the top 2 bytes set to zero. + +Other Considerations + +In the early days of PCs, some programs took advantage of addresses wrapping +around to zero after the limit of the 8088 was exceeded. When the 80286-based +AT was introduced, it was necessary to emulate this address wrapping. An +enable gate was added to address line 20. To prevent unwanted wrapping, you +must enable this gate. The code for doing this is located in the IBM +Technical References for the AT and PS/2. The procedures are different +because the AT uses the keyboard controller to enable the address line. The +programming example indicates where to insert the procedures for enabling and +disabling of the address line. + +[LISTING ONE] + +_80386 PROTECTED MODE INITIALIZATION_ +by +Neal Margulis + +comment #***************************** +Program by Neal Margulis -- Use MASM 5.0 +#************************************* + +descriptor STRUC + limit_0_15 dw 0 ; lowest 16 bits of segment limit + base_0_15 dw 0 ; lowest 16 bits of base + base_16_23 db 0 ; base bits 16-23 + access db 0 ; Present bit, priv. level, type + gran db 0 ; G bit, D/B bit , limit bits 16-19 + base_24_31 db 0 ; base bits 24-31 +descriptor ENDS + +code_seg_access equ 09AH ; Present, DPL=0, non-conforming,read/exec +data_seg_access equ 092H ; Present, DPL=0, Expand-Up,writeable + +; have screenbase equal B8000H for EGA or B0000H for monochrome +screenbase EQU 0B8000H +screenseg EQU 0B800H + +CSEG segment word use16 'code' +assume cs:CSEG,ds:CSEG + + mov ax,CSEG + mov ds, ax + +; Make entries in GDT for PMODE segment as code or data + mov ax, seg PMODE + and eax, 0FFFFh + shl eax, 4H + mov ebx, eax + shr eax, 16 + mov gdt_PM_1.base_0_15, bx + mov gdt_PM_2.base_0_15, bx + mov gdt_PM_1.base_16_23,al + mov gdt_PM_2.base_16_23,al + +; Make entry in GDT for C3 segment as code + mov ax,seg C3 + and eax, 0FFFFH + shl eax, 4H + mov ebx, eax + shr eax, 16 + mov gdt_c3_5.base_0_15, bx + mov gdt_c3_5.base_16_23,al + +; Set up gdtr for lgdt instruction + mov ax, cs + and eax, 0FFFFH + shl eax, 4H + add eax, offset gdttbl + mov dword ptr gdtaddr+2,eax + lgdt gdtaddr ; set GDT address +A20_ON: + + cld ; Clear direction flag + cli ; Disable interrupts + +; Enter Protected Mode + mov eax,cr0 + or eax,1 + mov cr0,eax ; Enable protected mode + + ;flush prefetch queue + DB 0EAH,0H,0H,08H,0H ; jmp to PMODE and execute + +gdtaddr label qword + dw 48 + dd ? + dw 0 + +; global descriptor table + +gdttbl label dword +gdt_null descriptor <,,,,,> ; GDT entry 0 (null descriptor) +gdt_PM_1 descriptor <0FFFFH,,,code_seg_access,0C0H,0> ; D bit +ON +gdt_PM_2 descriptor <0FFFFH,,,data_seg_access,08FH,> ; +gdt_3 descriptor <0FFFFH,0,0,data_seg_access,08FH,0> +gdt_rm_4 descriptor <0FFFFH,0,0,data_seg_access,08fH,0> +gdt_c3_5 descriptor <0FFFFH,,,code_seg_access,080H,0> ; D bit +OFF + +CSEG ends + +PMODE segment para public use32 'code' + assume cs:PMODE + mov ax, 18h ;selector 18H is 4 Gigabyte data +segment with + ; +base at 0 + mov es, ax + mov fs, ax + mov ax, 10h ; Data segment with base at 'c2seg' + mov ds, ax + mov cx, 025h + mov edi,screenbase ; Addressing screen memory from +protected mode +display:mov byte ptr es:[edi],'P' + add edi,2 + mov byte ptr es:[edi],'M' + add edi,2 + mov byte ptr es:[edi],' ' + add edi,2 + loopne display + + db 0eah, 0h, 0h, 0h, 0h,28h, 0h ; jmp to c3 and +execute + +align 16 + + pdat db 0ach +lastpm label dword +PMODE ends + +c3 segment para public use16 'code' + assume cs:c3 + + mov ax, 20h ; Change segments back to have valid + mov es, ax ; real mode attributes. + mov ds, ax + mov fs, ax + mov eax,cr0 + and eax, 07ffffffeh + mov cr0,eax ; enter real mode + jmp far ptr flushrl ; flush queue + flushrl: + mov ax, screenseg ; Address screen memory from real mode + mov ds, ax + sub edi, 0b8000h + mov si,di + mov byte ptr ds:[si],'C' ; Write to screen + add si,2 + mov byte ptr ds:[si],'3' + +A20_off: + + mov ah, 04ch ; DOS termination + mov al, 01h + int 21h +c3 ends + +end + + + + + + + + + + Related Reading + + * [55]News + * [56]Commentary + +News + + * [57]Tools To Build Payment-Enabled Mobile Apps + * [58]Parasoft DevTest Shifts To Continuous + * [59]A Datacenter Operating System For Data Developers + * [60]XMind 6 Public Beta Now Available[61]More News + +Commentary + + * [62]biicode 2.0 Is Buzzing + * [63]Things That Go Boom + * [64]Application Intelligence For Advanced Dummies + * [65]Devart dbForge Studio For MySQL With Phrase Completion[66]More + Commentary + + * [67]Slideshow + * [68]Video + +Slideshow + + * [69]Jolt Awards: The Best Books + * [70]Developer Reading List + * [71]The Most Underused Compiler Switches in Visual C++ + * [72]Jolt Awards: Coding Tools[73]More Slideshows + +Video + + * [74]Verizon App Challenge Winners + * [75]IBM Mobile Developer Challenge + * [76][email protected] Showcase + * [77]Connected Vehicles[78]More Videos + + * [79]Most Popular + +Most Popular + + * [80]RESTful Web Services: A Tutorial + * [81]Lambda Expressions in Java 8 + * [82]Developer Reading List: The Must-Have Books for JavaScript + * [83]An Algorithm for Compressing Space and Time[84]More Popular + __________________________________________________________________ + + More Insights + +White Papers + + * [85]Maximize the Human Potential of Your SOC + * [86]Real-time Endpoint Security with Automated Incident Response + + [87]More >> + +Reports + + * [88]Proven Success Factors for Endpoint Security + * [89]Intel 471 Breach Report + + [90]More >> + +Webcasts + + * [91]4 Tips for Enabling Collaboration Among Remote Designers + * [92]Why We're Still Stuck on Passwords + + [93]More >> + __________________________________________________________________ + + INFO-LINK + * + * + * + * + + [dobbs_disqus_logo.gif] + +Currently we allow the following HTML tags in comments: + +Single tags + + These tags can be used alone and don't need an ending tag. + +
Defines a single line break +
Defines a horizontal line + +Matching tags + + These require an ending tag - e.g. italic text + +
Defines an anchor + Defines bold text + Defines big text +
Defines a long quotation + Defines a table caption + Defines a citation + Defines computer code text + Defines emphasized text +
Defines a border around elements in a form +

This is heading 1 +

This is heading 2 +

This is heading 3 +

This is heading 4 +

This is heading 5 +
This is heading 6 + Defines italic text +

Defines a paragraph +

 Defines preformatted text
+    Defines a short quotation
+    Defines sample computer code text
+    Defines small text
+    Defines a section in a document
+    Defines strikethrough text
+    Defines strikethrough text
+    Defines strong text
+    Defines subscripted text
+    Defines superscripted text
+    Defines underlined text
+
+   Dr. Dobb's encourages readers to engage in spirited, healthy debate,
+   including taking us to task. However, Dr. Dobb's moderates all comments
+   posted to our site, and reserves the right to modify or remove any
+   content that it determines to be derogatory, offensive, inflammatory,
+   vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr.
+   Dobb's further reserves the right to disable the profile of any
+   commenter participating in said activities.
+
+   Disqus Tips To upload an avatar photo, first [94]complete your Disqus
+   profile. | [95]View the list of supported HTML tags you can use to
+   style comments. | Please read our [96]commenting policy.
+
+Recent Articles
+
+     * [97]Dr. Dobb's Archive
+     * [98]Farewell, Dr. Dobb's
+     * [99]Jolt Awards 2015: Coding Tools
+     * [100]Thriving Among the APIs
+     * [101]The Long Death of Project Hosting Sites
+
+Most Popular
+
+   [102]Stories [103]Blogs
+     * [104]RESTful Web Services: A Tutorial
+     * [105]Lambda Expressions in Java 8
+     * [106]Developer Reading List: The Must-Have Books for JavaScript
+     * [107]An Algorithm for Compressing Space and Time
+     * [108]Why Build Your Java Projects with Gradle Rather than Ant or
+       Maven?
+     *
+     *
+
+     * [109]Read/Write Properties Files in Java
+     * [110]Coding the JavaFX TableView
+     * [111]Easy DOM Parsing in Java
+     * [112]C++11: unique_ptr
+     * [113]Making HTTP Requests From Java
+     *
+     *
+
+This month's Dr. Dobb's Journal
+
+                [114]Dr. Dobb's Digital Digest - October 2014
+
+   [115]This month, Dr. Dobb's Journal is devoted to mobile programming.
+   We introduce you to Apple's new Swift programming language, discuss the
+   perils of being the third-most-popular mobile platform, revisit SQLite
+   on Android , [116]and much more!
+   [117]Download the latest issue today. >>
+
+Upcoming Events
+
+   [118]Live Events [119]WebCasts
+     * [120][FREE Virtual Event] The Identity Crisis -
+
+     [121]4 Tips for Enabling Collaboration Among Remote Designers
+
+     [122]Tips for Keeping Your Enterprises' Password Stores Safe
+
+     [123]Why We're Still Stuck on Passwords
+
+     [124]Tools for Better Network Monitoring and Observability
+
+     [125]The ROI Story: Identifying & Justifying Disruptive Technology
+
+   [126]More Webcasts>>
+
+Featured Reports
+
+
+
+   [127]What's this?
+     * [128]AI-Driven Testing: Bridging the Software Automation Gap
+     * [129]2021 Digital Transformation Report
+     * [130]Increased Cooperation Between Access Brokers, Ransomware
+       Operators Reviewed
+     * [131]SANS 2021 Cloud Security Survey
+     * [132]The Infoblox Q1 2021 Cyberthreat Intelligence Report
+
+   [133]More >>
+   [smartbox.PNG]
+
+Featured Whitepapers
+
+
+
+   [134]What's this?
+     * [135]Maximize the Human Potential of Your SOC
+     * [136]Modernize your Security Operations with Human-Machine
+       Intelligence
+     * [137]AI in Cybersecurity: Using artificial intelligence to mitigate
+       emerging security risks
+     * [138]Avoid Unplanned Downtime From Ransomware
+     * [139]Real-time Endpoint Security with Automated Incident Response
+
+   [140]More >>
+   [smartbox.PNG]
+
+Most Recent Premium Content
+
+   [141]Digital Issues
+   2014
+       Dr. Dobb's Journal
+     * [142]November - Mobile Development
+     * [143]August - Web Development
+     * [144]May - Testing
+     * [145]February - Languages
+       Dr. Dobb's Tech Digest
+     * [146]DevOps
+     * [147]Open Source
+     * [148]Windows and .NET programming
+     * [149]The Design of Messaging Middleware and 10 Tips from Tech
+       Writers
+     * [150]Parallel Array Operations in Java 8 and Android on x86: Java
+       Native Interface and the Android Native Development Kit
+       2013
+     * [151]January - Mobile Development
+     * [152]February - Parallel Programming
+     * [153]March - Windows Programming
+     * [154]April - Programming Languages
+     * [155]May - Web Development
+     * [156]June - Database Development
+     * [157]July - Testing
+     * [158]August - Debugging and Defect Management
+     * [159]September - Version Control
+     * [160]October - DevOps
+     * [161]November- Really Big Data
+     * [162]December - Design
+       2012
+     * [163]January - C & C++
+     * [164]February - Parallel Programming
+     * [165]March - Microsoft Technologies
+     * [166]April - Mobile Development
+     * [167]May - Database Programming
+     * [168]June - Web Development
+     * [169]July - Security
+     * [170]August - ALM & Development Tools
+     * [171]September - Cloud & Web Development
+     * [172]October - JVM Languages
+     * [173]November - Testing
+     * [174]December - DevOps
+
+    IFRAME: [175]https://www.googletagmanager.com/ns.html?id=GTM-MMJM4JC
+
+   Discover more from Informa Tech
+     * [176]InformationWeek
+     * [177]Interop
+     * [178]Dark Reading
+     * [179]Data Center Knowledge
+     * [180]Network Computing
+     * [181]IT Pro Today
+
+   Working With Us
+     * [182]Contact Us
+     * [183]About Us
+     * [184]Advertise
+     * [185]Reprints
+
+   Follow Dr. Dobb's on Social
+     *
+     *
+     *
+     *
+
+   alt text of the logo
+     * [186]Home
+     * [187]Cookie Policy
+     * [188]CCPA: Do not sell my personal info
+     * [189]Privacy
+     * [190]Terms
+
+   Copyright  2022 Informa PLC. Informa PLC is registered in England and
+   Wales with company number 8860726 whose registered and head office is 5
+   Howick Place, London, SW1P 1WG.
+
+References
+
+   Visible links:
+   1. https://www.drdobbs.com/rss/all
+   2. https://www.drdobbs.com/rss/all
+   3. https://informa.com/
+   4. https://informa.com/About-Us/
+   5. https://informa.com/Investors/
+   6. https://informa.com/Talent/
+   7. https://www.drdobbs.com/subscribe/
+   8. https://www.informationweek.com/profile.asp?update_newsletter=t
+   9. https://www.informationweek.com/whitepaper/topic/developer
+  10. https://www.drdobbs.com/rss/
+  11. https://www.drdobbs.com/
+  12. https://www.drdobbs.com/articles
+  13. https://www.drdobbs.com/news
+  14. https://www.drdobbs.com/blogs
+  15. https://www.drdobbs.com/sourcecode
+  16. http://www.informationweek.com/events/d/d-id/898857
+  17. https://www.facebook.com/pages/Dr-Dobbs/17631669579
+  18. https://twitter.com/dr_dobbs
+  19. https://www.drdobbs.com/
+  20. https://www.drdobbs.com/articles
+  21. https://www.drdobbs.com/news
+  22. https://www.drdobbs.com/blogs
+  23. https://www.drdobbs.com/sourcecode
+  24. http://www.informationweek.com/events/d/d-id/898857
+  25. https://www.drdobbs.com/cloud
+  26. https://www.drdobbs.com/mobile
+  27. https://www.drdobbs.com/parallel
+  28. https://www.drdobbs.com/windows
+  29. https://www.drdobbs.com/jvm
+  30. https://www.drdobbs.com/cpp
+  31. https://www.drdobbs.com/tools
+  32. https://www.drdobbs.com/architecture-and-design
+  33. https://www.drdobbs.com/testing
+  34. https://www.drdobbs.com/web-development
+  35. https://www.drdobbs.com/joltawards
+  36. https://www.drdobbs.com/cloud
+  37. https://www.drdobbs.com/mobile
+  38. https://www.drdobbs.com/parallel
+  39. https://www.drdobbs.com/windows
+  40. https://www.drdobbs.com/jvm
+  41. https://www.drdobbs.com/cpp
+  42. https://www.drdobbs.com/tools
+  43. https://www.drdobbs.com/architecture-and-design
+  44. https://www.drdobbs.com/testing
+  45. https://www.drdobbs.com/web-development
+  46. https://www.drdobbs.com/joltawards
+  47. https://www.drdobbs.com/rss
+  48. https://twitter.com/share
+  49. javascript:emailLauncher('/email?articleUrl=','/80386-protected-mode-initialization/184408010')
+  50. https://www.drdobbs.com/article/print?articleId=184408010&siteSectionName=
+  51. https://www.drdobbs.com/80386-protected-mode-initialization/184408010
+  52. https://www.drdobbs.com/80386-protected-mode-initialization/8810c.htm#01ca_000b
+  53. https://www.drdobbs.com/80386-protected-mode-initialization/8810c.htm#01ca_000b
+  54. https://www.drdobbs.com/80386-protected-mode-initialization/8810c.htm#01ca_000b
+  55. https://www.drdobbs.com/80386-protected-mode-initialization/184408010#toc-news
+  56. https://www.drdobbs.com/80386-protected-mode-initialization/184408010#toc-commentary
+  57. https://www.drdobbs.com/cloud/tools-to-build-payment-enabled-mobile-ap/240169446?cid=SBX_ddj_related_news_default_80386_protected_mode_initialization&itc=SBX_ddj_related_news_default_80386_protected_mode_initialization
+  58. https://www.drdobbs.com/tools/parasoft-devtest-shifts-to-continuous/240169403?cid=SBX_ddj_related_news_default_80386_protected_mode_initialization&itc=SBX_ddj_related_news_default_80386_protected_mode_initialization
+  59. https://www.drdobbs.com/database/a-datacenter-operating-system-for-data-d/240169391?cid=SBX_ddj_related_news_default_80386_protected_mode_initialization&itc=SBX_ddj_related_news_default_80386_protected_mode_initialization
+  60. https://www.drdobbs.com/tools/xmind-6-public-beta-now-available/240169385?cid=SBX_ddj_related_news_default_80386_protected_mode_initialization&itc=SBX_ddj_related_news_default_80386_protected_mode_initialization
+  61. https://www.drdobbs.com/news?cid=SBX_ddj_related_news_default_80386_protected_mode_initialization&itc=SBX_ddj_related_news_default_80386_protected_mode_initialization
+  62. https://www.drdobbs.com/cpp/biicode-20-is-buzzing/240169447?cid=SBX_ddj_related_commentary_default_80386_protected_mode_initialization&itc=SBX_ddj_related_commentary_default_80386_protected_mode_initialization
+  63. https://www.drdobbs.com/embedded-systems/things-that-go-boom/240169445?cid=SBX_ddj_related_commentary_default_80386_protected_mode_initialization&itc=SBX_ddj_related_commentary_default_80386_protected_mode_initialization
+  64. https://www.drdobbs.com/tools/application-intelligence-for-advanced-du/240169443?cid=SBX_ddj_related_commentary_default_80386_protected_mode_initialization&itc=SBX_ddj_related_commentary_default_80386_protected_mode_initialization
+  65. https://www.drdobbs.com/tools/devart-dbforge-studio-for-mysql-with-phr/240169414?cid=SBX_ddj_related_commentary_default_80386_protected_mode_initialization&itc=SBX_ddj_related_commentary_default_80386_protected_mode_initialization
+  66. https://www.drdobbs.com/articles?cid=SBX_ddj_related_commentary_default_80386_protected_mode_initialization&itc=SBX_ddj_related_commentary_default_80386_protected_mode_initialization
+  67. https://www.drdobbs.com/80386-protected-mode-initialization/184408010#toc-slideshow
+  68. https://www.drdobbs.com/80386-protected-mode-initialization/184408010#toc-video
+  69. https://www.drdobbs.com/joltawards/jolt-awards-the-best-books/240169070?cid=SBX_ddj_related_slideshow_default_80386_protected_mode_initialization&itc=SBX_ddj_related_slideshow_default_80386_protected_mode_initialization
+  70. https://www.drdobbs.com/architecture-and-design/developer-reading-list/240168591?cid=SBX_ddj_related_slideshow_default_80386_protected_mode_initialization&itc=SBX_ddj_related_slideshow_default_80386_protected_mode_initialization
+  71. https://www.drdobbs.com/cpp/the-most-underused-compiler-switches-in/240166599?cid=SBX_ddj_related_slideshow_default_80386_protected_mode_initialization&itc=SBX_ddj_related_slideshow_default_80386_protected_mode_initialization
+  72. https://www.drdobbs.com/joltawards/jolt-awards-coding-tools/240165725?cid=SBX_ddj_related_slideshow_default_80386_protected_mode_initialization&itc=SBX_ddj_related_slideshow_default_80386_protected_mode_initialization
+  73. https://www.drdobbs.com/slideshows?cid=SBX_ddj_related_slideshow_default_80386_protected_mode_initialization&itc=SBX_ddj_related_slideshow_default_80386_protected_mode_initialization
+  74. https://www.drdobbs.com/mobile/verizon-app-challenge-winners/240166966?cid=SBX_ddj_related_video_default_80386_protected_mode_initialization&itc=SBX_ddj_related_video_default_80386_protected_mode_initialization
+  75. https://www.drdobbs.com/mobile/ibm-mobile-developer-challenge/240166310?cid=SBX_ddj_related_video_default_80386_protected_mode_initialization&itc=SBX_ddj_related_video_default_80386_protected_mode_initialization
+  76. https://www.drdobbs.com/architecture-and-design/researchintel-showcase/240157932?cid=SBX_ddj_related_video_default_80386_protected_mode_initialization&itc=SBX_ddj_related_video_default_80386_protected_mode_initialization
+  77. https://www.drdobbs.com/architecture-and-design/connected-vehicles/240148293?cid=SBX_ddj_related_video_default_80386_protected_mode_initialization&itc=SBX_ddj_related_video_default_80386_protected_mode_initialization
+  78. https://www.drdobbs.com/video/archives?cid=SBX_ddj_related_video_default_80386_protected_mode_initialization&itc=SBX_ddj_related_video_default_80386_protected_mode_initialization
+  79. https://www.drdobbs.com/80386-protected-mode-initialization/184408010#toc-most-popular
+  80. https://www.drdobbs.com/web-development/restful-web-services-a-tutorial/240169069?cid=SBX_ddj_related_mostpopular_default_80386_protected_mode_initialization&itc=SBX_ddj_related_mostpopular_default_80386_protected_mode_initialization
+  81. https://www.drdobbs.com/jvm/lambda-expressions-in-java-8/240166764?cid=SBX_ddj_related_mostpopular_default_80386_protected_mode_initialization&itc=SBX_ddj_related_mostpopular_default_80386_protected_mode_initialization
+  82. https://www.drdobbs.com/tools/developer-reading-list-the-must-have-boo/240148421?cid=SBX_ddj_related_mostpopular_default_80386_protected_mode_initialization&itc=SBX_ddj_related_mostpopular_default_80386_protected_mode_initialization
+  83. https://www.drdobbs.com/jvm/an-algorithm-for-compressing-space-and-t/184406478?cid=SBX_ddj_related_mostpopular_default_80386_protected_mode_initialization&itc=SBX_ddj_related_mostpopular_default_80386_protected_mode_initialization
+  84. https://www.drdobbs.com/?cid=SBX_ddj_related_mostpopular_default_80386_protected_mode_initialization&itc=SBX_ddj_related_mostpopular_default_80386_protected_mode_initialization
+  85. https://www.informationweek.com/whitepaper/security-management-and-analytics/cybersecurity/maximize-the-human-potential-of-your-soc/439363?cid=SBX_ddj_well_wp_default_80386_protected_mode_initialization&itc=SBX_ddj_well_wp_default_80386_protected_mode_initialization
+  86. https://www.informationweek.com/whitepaper/cybersecurity/security/real-time-endpoint-security-with-automated-incident-response/435543?cid=SBX_ddj_well_wp_default_80386_protected_mode_initialization&itc=SBX_ddj_well_wp_default_80386_protected_mode_initialization
+  87. https://www.drdobbs.com/whitepaper/all/more.html?cid=SBX_ddj_well_wp_default_80386_protected_mode_initialization&itc=SBX_ddj_well_wp_default_80386_protected_mode_initialization
+  88. https://www.informationweek.com/whitepaper/cybersecurity/endpoint-security/proven-success-factors-for-endpoint-security/429043?cid=SBX_ddj_well_Analytics_default_80386_protected_mode_initialization&itc=SBX_ddj_well_Analytics_default_80386_protected_mode_initialization
+  89. https://www.informationweek.com/whitepaper/cybersecurity/risk-management-security/intel-471-breach-report/429143?cid=SBX_ddj_well_Analytics_default_80386_protected_mode_initialization&itc=SBX_ddj_well_Analytics_default_80386_protected_mode_initialization
+  90. https://www.drdobbs.com/analytics/all/more.html?cid=SBX_ddj_well_Analytics_default_80386_protected_mode_initialization&itc=SBX_ddj_well_Analytics_default_80386_protected_mode_initialization
+  91. https://informationweek.tradepub.com/c/pubRD.mpl?secure=1&sr=pp&_t=pp:&qf=w_defa2717&ch=sbx&cid=SBX_ddj_well_Webcast_default_80386_protected_mode_initialization&itc=SBX_ddj_well_Webcast_default_80386_protected_mode_initialization&K=SBX_DDJ_WL
+  92. https://interop.com/july19-event?keycode=sbx&cid=SBX_ddj_well_Webcast_default_80386_protected_mode_initialization&itc=SBX_ddj_well_Webcast_default_80386_protected_mode_initialization&K=SBX_DDJ_WL
+  93. https://www.drdobbs.com/webcast/all/more.html?cid=SBX_ddj_well_Webcast_default_80386_protected_mode_initialization&itc=SBX_ddj_well_Webcast_default_80386_protected_mode_initialization
+  94. https://disqus.com/dashboard/
+  95. https://www.drdobbs.com/80386-protected-mode-initialization/184408010
+  96. https://www.drdobbs.com/80386-protected-mode-initialization/184408010
+  97. https://www.drdobbs.com/architecture-and-design/dr-dobbs-archive/240169474
+  98. https://www.drdobbs.com/architecture-and-design/farewell-dr-dobbs/240169421
+  99. https://www.drdobbs.com/joltawards/jolt-awards-2015-coding-tools/240169420
+ 100. https://www.drdobbs.com/architecture-and-design/thriving-among-the-apis/240169441
+ 101. https://www.drdobbs.com/web-development/the-long-death-of-project-hosting-sites/240169394
+ 102. https://www.drdobbs.com/80386-protected-mode-initialization/184408010
+ 103. https://www.drdobbs.com/80386-protected-mode-initialization/184408010
+ 104. https://www.drdobbs.com/web-development/restful-web-services-a-tutorial/240169069
+ 105. https://www.drdobbs.com/jvm/lambda-expressions-in-java-8/240166764
+ 106. https://www.drdobbs.com/tools/developer-reading-list-the-must-have-boo/240148421
+ 107. https://www.drdobbs.com/jvm/an-algorithm-for-compressing-space-and-t/184406478
+ 108. https://www.drdobbs.com/jvm/why-build-your-java-projects-with-gradle/240168608
+ 109. https://www.drdobbs.com/jvm/readwrite-properties-files-in-java/231000005
+ 110. https://www.drdobbs.com/jvm/coding-the-javafx-tableview/240001874
+ 111. https://www.drdobbs.com/jvm/easy-dom-parsing-in-java/231002580
+ 112. https://www.drdobbs.com/cpp/c11-uniqueptr/240002708
+ 113. https://www.drdobbs.com/jvm/making-http-requests-from-java/240160966
+ 114. https://www.drdobbs.com/digital/20141022?k=ddjtm&cid=onedit_ds_ddjtm
+ 115. https://www.drdobbs.com/digital/20141022?k=ddjtm&cid=onedit_ds_ddjtm
+ 116. https://www.drdobbs.com/digital/20141022?k=ddjtm&cid=onedit_ds_ddjtm
+ 117. https://www.drdobbs.com/digital/20141022?k=ddjtm&cid=onedit_ds_ddjtm
+ 118. https://www.drdobbs.com/80386-protected-mode-initialization/184408010#tab_live-events
+ 119. https://www.drdobbs.com/80386-protected-mode-initialization/184408010#tab_webcasts
+ 120. https://www.interop.com/july19-event?keycode=sbx&cid=SBX_ddj_fture_LiveEvent_default_80386_protected_mode_initialization&itc=SBX_ddj_fture_LiveEvent_default_80386_protected_mode_initialization
+ 121. https://informationweek.tradepub.com/c/pubRD.mpl?secure=1&sr=pp&_t=pp:&qf=w_defa2717&ch=sbx&cid=SBX_ddj_fture_Webcast_default_80386_protected_mode_initialization&itc=SBX_ddj_fture_Webcast_default_80386_protected_mode_initialization&K=SBX_DDJ_FT
+ 122. https://interop.com/july19-event?keycode=sbx&cid=SBX_ddj_fture_Webcast_default_80386_protected_mode_initialization&itc=SBX_ddj_fture_Webcast_default_80386_protected_mode_initialization&K=SBX_DDJ_FT
+ 123. https://interop.com/july19-event?keycode=sbx&cid=SBX_ddj_fture_Webcast_default_80386_protected_mode_initialization&itc=SBX_ddj_fture_Webcast_default_80386_protected_mode_initialization&K=SBX_DDJ_FT
+ 124. https://networkcomputing.tradepub.com/c/pubRD.mpl?secure=1&sr=pp&_t=pp:&pc=w_defa2542&ch=sbx&cid=SBX_ddj_fture_Webcast_default_80386_protected_mode_initialization&itc=SBX_ddj_fture_Webcast_default_80386_protected_mode_initialization&K=SBX_DDJ_FT
+ 125. https://webinar.informationweek.com/5876?keycode=sbx&cid=SBX_ddj_fture_Webcast_default_80386_protected_mode_initialization&itc=SBX_ddj_fture_Webcast_default_80386_protected_mode_initialization&K=SBX_DDJ_FT
+ 126. https://www.drdobbs.com/webcast/all/more.html?cid=SBX_ddj_fture_Webcast_default_80386_protected_mode_initialization?itc=SBX_ddj_fture_Webcast_default_80386_protected_mode_initialization
+ 127. https://www.drdobbs.com/80386-protected-mode-initialization/184408010
+ 128. https://www.informationweek.com/whitepaper/operating-systems/application-acceleration/ai-driven-testing-bridging-the-software-automation-gap/436523?keycode=sbx&cid=SBX_ddj_fture_Analytics_default_80386_protected_mode_initialization&itc=SBX_ddj_fture_Analytics_default_80386_protected_mode_initialization
+ 129. https://www.informationweek.com/whitepaper/executive-insights-and-innovation/it-strategy/2021-digital-transformation-report/428703?cid=SBX_ddj_fture_Analytics_default_80386_protected_mode_initialization&itc=SBX_ddj_fture_Analytics_default_80386_protected_mode_initialization
+ 130. https://www.informationweek.com/whitepaper/cybersecurity/risk-management-security/increased-cooperation-between-access-brokers,-ransomware-operators-reviewed/429153?cid=SBX_ddj_fture_Analytics_default_80386_protected_mode_initialization&itc=SBX_ddj_fture_Analytics_default_80386_protected_mode_initialization
+ 131. https://www.informationweek.com/whitepaper/cybersecurity/cloud-security/sans-2021-cloud-security-survey/429583?cid=SBX_ddj_fture_Analytics_default_80386_protected_mode_initialization&itc=SBX_ddj_fture_Analytics_default_80386_protected_mode_initialization
+ 132. https://www.informationweek.com/whitepaper/network-and-perimeter-security/cloud-infrastructure/the-infoblox-q1-2021-cyberthreat-intelligence-report/429503?cid=SBX_ddj_fture_Analytics_default_80386_protected_mode_initialization&itc=SBX_ddj_fture_Analytics_default_80386_protected_mode_initialization
+ 133. https://www.drdobbs.com/analytics/all/more.html?cid=SBX_ddj_fture_Analytics_default_80386_protected_mode_initialization?itc=SBX_ddj_fture_Analytics_default_80386_protected_mode_initialization
+ 134. https://www.drdobbs.com/80386-protected-mode-initialization/184408010
+ 135. https://www.informationweek.com/whitepaper/security-management-and-analytics/cybersecurity/maximize-the-human-potential-of-your-soc/439363?cid=SBX_ddj_fture_wp_default_80386_protected_mode_initialization&itc=SBX_ddj_fture_wp_default_80386_protected_mode_initialization
+ 136. https://www.informationweek.com/whitepaper/security-management-and-analytics/cybersecurity/modernize-your-security-operations-with-human-machine-intelligence/438993?cid=SBX_ddj_fture_wp_default_80386_protected_mode_initialization&itc=SBX_ddj_fture_wp_default_80386_protected_mode_initialization
+ 137. https://www.informationweek.com/whitepaper/security-management-and-analytics/cybersecurity/ai-in-cybersecurity-using-artificial-intelligence-to-mitigate-emerging-security-risks/438983?cid=SBX_ddj_fture_wp_default_80386_protected_mode_initialization&itc=SBX_ddj_fture_wp_default_80386_protected_mode_initialization
+ 138. https://www.informationweek.com/whitepaper/cybersecurity/security/avoid-unplanned-downtime-from-ransomware/435553?cid=SBX_ddj_fture_wp_default_80386_protected_mode_initialization&itc=SBX_ddj_fture_wp_default_80386_protected_mode_initialization
+ 139. https://www.informationweek.com/whitepaper/cybersecurity/security/real-time-endpoint-security-with-automated-incident-response/435543?cid=SBX_ddj_fture_wp_default_80386_protected_mode_initialization&itc=SBX_ddj_fture_wp_default_80386_protected_mode_initialization
+ 140. https://www.drdobbs.com/whitepaper/all/more.html?cid=SBX_ddj_fture_wp_default_80386_protected_mode_initialization?itc=SBX_ddj_fture_wp_default_80386_protected_mode_initialization
+ 141. https://www.drdobbs.com/digitaledition/
+ 142. https://www.drdobbs.com/digital/20141022
+ 143. https://dc.ubm-us.com/i/350594
+ 144. https://dc.ubm-us.com/i/300036/
+ 145. https://dc.ubm-us.com/i/245989
+ 146. https://www.drdobbs.com/digital/20140813
+ 147. https://www.drdobbs.com/digital/20140626
+ 148. https://www.drdobbs.com/digital/20140514/
+ 149. https://www.drdobbs.com/digital/012914/
+ 150. https://www.drdobbs.com/digital/022614
+ 151. https://www.drdobbs.com/digital/121712/?cid=ddj_premium_January2013
+ 152. https://www.drdobbs.com/digital/012213/?cid=ddj_premium_February2013
+ 153. https://www.drdobbs.com/digital/022513/?cid=ddj_premium_March2013
+ 154. https://www.drdobbs.com/digital/032513/?cid=ddj_premium_April2013
+ 155. https://www.drdobbs.com/digital/042213/?cid=ddj_premium_May2013
+ 156. https://www.drdobbs.com/digital/052013/?cid=ddj_premium_June2013
+ 157. https://www.drdobbs.com/digital/062413/?cid=ddj_premium_July2013
+ 158. https://www.drdobbs.com/digital/072213/?cid=ddj_premium_August2013
+ 159. https://www.drdobbs.com/digital/082613
+ 160. https://www.drdobbs.com/digital/092313/
+ 161. https://www.drdobbs.com/digital/102113
+ 162. https://www.drdobbs.com/digital/111113?k=ddjtm&cid=onedit_ds_ddjtm
+ 163. https://www.drdobbs.com/digital/121911/?cid=ddj_premium_January2012
+ 164. https://www.drdobbs.com/digital/011912/?cid=ddj_premium_February2012
+ 165. https://www.drdobbs.com/digital/021912/?cid=ddj_premium_March2012
+ 166. https://www.drdobbs.com/digital/031912/?cid=ddj_premium_April2012
+ 167. https://www.drdobbs.com/digital/042312/?cid=ddj_premium_May2012
+ 168. https://www.drdobbs.com/digital/052112/?cid=ddj_premium_June2012
+ 169. https://www.drdobbs.com/digital/061812/?cid=ddj_premium_July2012
+ 170. https://www.drdobbs.com/digital/072312/?cid=ddj_premium_August2012
+ 171. https://www.drdobbs.com/digital/082012/?cid=ddj_premium_September2012
+ 172. https://www.drdobbs.com/digital/092412/?cid=ddj_premium_October2012
+ 173. https://www.drdobbs.com/digital/102212/?cid=ddj_premium_November2012
+ 174. https://www.drdobbs.com/digital/111912/?cid=ddj_premium_December2012
+ 175. https://www.googletagmanager.com/ns.html?id=GTM-MMJM4JC
+ 176. https://www.informationweek.com/
+ 177. https://www.interop.com/
+ 178. https://www.darkreading.com/
+ 179. https://www.datacenterknowledge.com/
+ 180. https://www.networkcomputing.com/
+ 181. https://www.itprotoday.com/
+ 182. https://informationweek.com/about-us/d/d-id/705542
+ 183. https://informationweek.com/document.asp?doc_id=705542
+ 184. https://informationweek.com/document.asp?doc_id=1334603
+ 185. https://info.wrightsmedia.com/informa-licensing-reprints-request
+ 186. https://tech.informa.com/
+ 187. https://tech.informa.com/cookie-policy
+ 188. https://privacyportal-eu-cdn.onetrust.com/dsarwebform/c1f53e84-9f05-4169-a854-85052b63c50b/5f26b553-52cc-4973-a761-295d5634a6b6.html
+ 189. https://tech.informa.com/privacy-policy
+ 190. https://tech.informa.com/terms-and-conditions
+
+   Hidden links:
+ 192. https://www.addthis.com/bookmark.php?v=250&winname=addthis&pub=Dr.Dobbs&source=tbx-250&lng=en-US&s=stumbleupon&url=https://www.drdobbs.com/80386-protected-mode-initialization/184408010&title=80386%20Protected%20Mode%20Initialization&ate=AT-Dr.Dobbs/-/fs-0/4d4fc3809f4d8545/1&sms_ss=1&at_xt=1&CXNID=2000001.5215456080540439074NXC&pre=http%3A%2F%2Fwww.drdobbs.com%2F&tt=0
+ 193. https://www.drdobbs.com/80386-protected-mode-initialization/184408010#disqus_thread
+ 194. https://www.drdobbs.com/
+ 195. https://www.drdobbs.com/
+ 196. https://www.drdobbs.com/
+ 197. https://www.drdobbs.com/
+ 198. https://www.facebook.com/informationweek
+ 199. https://twitter.com/InformationWeek
+ 200. https://www.linkedin.com/company/3930/admin/
+ 201. https://www.drdobbs.com/rss/
+ 202. https://www.omniture.com/
diff --git a/floppy/doc/www.insentricity.com_a.cl_283.txt b/floppy/doc/www.insentricity.com_a.cl_283.txt
new file mode 100644
index 0000000..dd97bad
--- /dev/null
+++ b/floppy/doc/www.insentricity.com_a.cl_283.txt
@@ -0,0 +1,808 @@
+[1]Insentricity Logo
+
+     * [2]Coin-op
+     * [3]Computers
+     * [4]Electronics
+     * [5]Gaming
+     * [6]Misc
+     * [7]Woodworking
+
+     * [8]Computers ->
+     * [9]Retro ->
+
+     * Published on | Jul 06, 2020 | by FozzTexx
+
+   [14959.png]
+
+Booting a 486 From Floppy with the Most Up-to-Date Stable Linux Kernel
+
+   IFRAME: [10]https://www.youtube.com/embed/oBeE_z4HTwg
+
+   Back in August of 2019 I had a [11]Sing-Along Week contest on
+   RetroBattlestations with the challenge of playing a MIDI file
+   synchronized to a speech synthesizer singing the lyrics. In my stash of
+   cards I found an MQX-32M MIDI card (Roland MPU-401 clone) which I
+   wanted to use for converting MIDI signals to interface to an Apple II+
+   with an Echo II speech synthesizer, but ended up using a laptop with a
+   USB MIDI interface. The [12]Pizza Week contest made me more interested
+   in finding a 486 in a pizza box case and so my search began for a
+   suitable case.
+
+   Searching eBay wasn't easy because there's not really a good search
+   term that would find the kind of case I wanted. I didn't bother trying
+   to make a saved search since this project wasn't a high priority.
+   Instead every once in a while something would inspire to go hit eBay
+   and try some other search terms. A couple of weeks ago I spotted this
+   486 and made a guess of the size based on the size of the 5.25" bay.
+   It's fairly slim, it has a riser card to turn the cards sideways and
+   the case is shorter than an ISA card, but I don't feel like it's slim
+   enough to call it a pizza box. It's close though!
+
+   The motherboard is a [13]TMC PAT48PG4 and it came with 32MB of RAM
+   (technically 36MB, it had four 30 pin SIMMs in it too) and 4 cards:
+   VGA, SoundBlaster, modem, and multi-function IO. The seller had tested
+   it and was sold as non-working, won't POST, although he said the cards
+   all worked. I mostly wanted it for the case so I wasn't concerned. Of
+   course when I got it I had to see if the motherboard was really dead.
+   It didn't work for me either but then I discovered if I hit the reset
+   button it would give me some error beeps. I tried another power supply
+   and it came up after hitting reset! It still doesn't cold boot when
+   powered on, not sure if there's a bad cap or if the very slight battery
+   damage (battery was removed before I got it) is preventing the reset
+   line from being pulled after power on. Nonetheless it was working
+   enough that I needed to explore its capabilities more.
+
+   My ultimate goal is to get a very recent Linux distro and Python 3
+   installed to a "large" hard drive, but being that this is a 486
+   installing a current Linux distro isn't trivial. The only Linux distros
+   that still support installing from floppy media are quite dated.
+   Normally I would bypass a floppy install entirely and just boot an
+   older computer via PXE and then install over the network. I thought I
+   could [14]put iPXE on a floppy and stick in an ISA NIC but iPXE just
+   hangs without any error messages right after it's loaded from floppy.
+
+   The BIOS is ancient and struggles with handling the "large" hard drive
+   I hooked up. The drive is 8.45GB and the BIOS can only see it as an
+   8.0GB drive. Enabling LBA in the BIOS causes the computer to hang
+   during POST after it detects the drive. Win98 fdisk insists the drive
+   is only 504MB. FreeDOS can't see the drive at all. I tried sticking in
+   a NIC with XTIDE ROM on the socket and XTIDE also insists there's no
+   drive connected.
+
+   Since I wanted to see how Linux would detect the drive that meant I
+   needed to find a way to boot Linux. After a bit of googling I
+   discovered the [15]make tinyconfig option which makes a very small (but
+   useless) kernel, small enough to fit on a floppy. [16]I enabled a
+   couple of other options, found a small enough initramfs, and was able
+   to get it to boot on the 486. And as expected Linux has no problem with
+   seeing that the drive is connected and the drive's full capacity.
+
+   Next step is to actually get Linux installed to the hard drive. I'd
+   rather not roll my own distro but maybe I'll have to. Another
+   possibility is to boot Linux from floppy and then download a kernel and
+   initrd from a current distro and kexec over to it. But that feels to me
+   like reinventing iPXE.
+
+Compiling the Linux Kernel From Source
+
+   A quick rundown of the steps to build the floppy image:
+     * git clone
+       https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
+          + v5.8-rc2-1-g625d3449788f at the time of writing
+     * make ARCH=x86 tinyconfig
+     * make ARCH=x86 menuconfig
+          + Set processor to 486: CONFIG_M486=y
+               o Processor type and features > Processor family > 486
+          + Enable tty: CONFIG_TTY=y
+               o Device Drivers > Character devices > Enable TTY
+          + Enable printk: CONFIG_PRINTK=y
+               o General Setup > Configure standard kernel features
+                 (expert users) > Enable support for printk
+          + Enable initramfs: CONFIG_INITRAMFS_COMPRESSION_GZIP=y
+               o General Setup > Initial RAM filesystem and RAM disk
+                 (initramfs/initrd) support > Support initial
+                 ramdisk/ramfs compressed using gzip
+          + Enable ELF: CONFIG_BINFMT_ELF=y
+               o Executable file formats > Kernel support for ELF binaries
+     * make ARCH=x86 bzImage
+
+   You'll need a rootfs, get [17]system-image-486 from Aboriginal Linux,
+   extract rootfs.cpio.gz
+
+   Test boot with qemu:
+qemu-system-i386 -kernel arch/x86/boot/bzImage -initrd ../system-image-486/rootf
+s.cpio.gz
+
+   Create a blank floppy image:
+dd if=/dev/zero of=linux-boot.img bs=1k count=1440
+mkdosfs linux-boot.img
+syslinux --install linux-boot.img
+mount -o loop linux-boot.img /mnt
+cp arch/x86/boot/bzImage /mnt
+cp rootfs.cpio.gz /mnt
+
+   Create /mnt/syslinux.cfg:
+DEFAULT linux
+LABEL linux
+ SAY Now booting the kernel from SYSLINUX...
+ KERNEL bzImage
+ APPEND initrd=rootfs.cpio.gz
+
+   Write the image to a floppy:
+umount /mnt
+fdformat /dev/fd0
+ddrescue -f -D linux-boot.img /dev/fd0
+
+
+
+Join The Discussion
+
+   This field for office use only ____________________ This field for
+   office use only 7919400_____________
+   Have something to say? Go ahead and enter it here ->
+   ____________________________________________________________
+   ____________________________________________________________
+   ____________________________________________________________
+   ____________________________________________________________
+   Name (required) ->  ____________________
+   Email (optional) ->  ____________________
+   Website (optional) ->  ____________________
+   Password (optional) ->  ____________________
+   Submit Lost Password?
+
+   +1  Posted by [18]Eric  o  Jul.06.2020 at 20.26  o  Reply
+
+   I had the Amdek Color II connected to an Apple //e. The colors were
+   still blurred and not very good -- but that was the Apple's color hacks
+   in my opinion.
+   This field for office use only ____________________ This field for
+   office use only 7919400_____________
+   Have something to say? Go ahead and enter it here ->
+   ____________________________________________________________
+   ____________________________________________________________
+   ____________________________________________________________
+   ____________________________________________________________
+   Name (required) ->  ____________________
+   Email (optional) ->  ____________________
+   Website (optional) ->  ____________________
+   Password (optional) ->  ____________________
+   Submit Lost Password?
+
+   +1  Posted by Max  o  Jul.18.2020 at 04.32  o  Reply
+
+   What does free say regarding memory usage?
+   This field for office use only ____________________ This field for
+   office use only 7919400_____________
+   Have something to say? Go ahead and enter it here ->
+   ____________________________________________________________
+   ____________________________________________________________
+   ____________________________________________________________
+   ____________________________________________________________
+   Name (required) ->  ____________________
+   Email (optional) ->  ____________________
+   Website (optional) ->  ____________________
+   Password (optional) ->  ____________________
+   Submit Lost Password?
+
+   +1  Posted by doi.org  o  Jul.31.2020 at 16.44  o  Reply
+
+   May I simply just say what a relief to uncover somebody that really
+   understands what they're discussing online. You actually know how to
+   bring a problem to light and make it important. More people need to
+   check this out and understand this side of the story. I was surprised
+   you aren't more popular given that you certainly have the gift.
+   This field for office use only ____________________ This field for
+   office use only 7919400_____________
+   Have something to say? Go ahead and enter it here ->
+   ____________________________________________________________
+   ____________________________________________________________
+   ____________________________________________________________
+   ____________________________________________________________
+   Name (required) ->  ____________________
+   Email (optional) ->  ____________________
+   Website (optional) ->  ____________________
+   Password (optional) ->  ____________________
+   Submit Lost Password?
+
+   +1  Posted by xnxx2.pro  o  Nov.04.2020 at 06.07  o  Reply
+
+   stripper sohodolls country girls boobs naked cubby teens. sexy plus
+   size outfit angelina naked having sex moving pussy animations. mature
+   andie arija bareikis boobs adult star holly topps.
+
+   vintage lucite furniture american asian church strongbad teen girl.
+   nude virginia models sexual activity symptoms remeni naked. extreme
+   huge cock tube lyrics my dick bigger ecuadore sex young. clip free
+   latina sex girls shitting pantyhose adult daycare peoria il. jennifer
+   collony masturbation mike tenore sex offender lincoln taylor south
+   africa breasts.
+
+   best friend sex pic gay glasses teen film genre.
+
+   girls with cocks fucking
+   [19]https://en.wikipedia.org/wiki/Pornographic_film amateur video
+   rating.
+
+   nude scene from nightmare
+   [20]http://choicega.net/__media__/js/netsoltrademark.php?d=sexbombo.pro
+   %2Fvideo-5374036711.html star treck fuck. free porn solo muscle
+   [21]http://alltrak.net/__media__/js/netsoltrademark.php?d=xnxx2.pro%2Ft
+   ag%2Fheray-xxx-india-vido-1.html adiane hentai.
+
+   cocks well hung pussie gangbangs orgies
+   [22]http://jodko.net/__media__/js/netsoltrademark.php?d=xnxx2.pro%2Ftag
+   %2Frajesh-1.html asian marriage agencys.
+
+   how good are sex dolls [23]https://bit.ly/34J5Nl5 fuck girls gang
+   banged in brisbane.
+
+   state women's prison pee wee valley [24]https://bit.ly/2GstcPD
+   wrestling gay humiliation. nude waterpolo [25]https://bit.ly/30CfPDh
+   fullmetal alchemist hentai videos.
+
+   dragon ball z kai hentai [26]https://bit.ly/2SLTsXP 45 second vanessa
+   hudgens sex tape. vintage source maryland [27]https://bit.ly/33JIAQt
+   naked rumanian gymnast.
+
+   asian pov massage [28]https://bit.ly/33vKsvT gaza strip border. nude
+   mom gallaries [29]https://bit.ly/2GLaNNt hot milf tuggers.
+
+   nude girl you tube [30]https://bit.ly/3d4cUs1 cz vintage. free nude
+   asian sex videos [31]https://bit.ly/2IgRWuH wrong bus xxx.
+
+   unresponsive adult [32]https://bit.ly/3dp98JW old saggie pussy.
+
+   piss fisting sluts stories [33]https://bit.ly/34xUcVT ford escort mk6
+   body kit. i have to pee porn
+   [34]http://howzitgecko.com/__media__/js/netsoltrademark.php?d=sexbombo.
+   xyz%2Fwatch%3Fv%3D1841285911 femdom mnale submissive.
+
+   teen only chat room [35]https://bit.ly/2HXTslh black hot lesbian porn.
+   kelly peters nude [36]https://bit.ly/2SzLuki best escort tubes.
+
+   phat booty ass fucking thick asses [37]https://bit.ly/34pdVXJ nude on
+   the beach photos.
+
+   gay cannes [38]https://bit.ly/3iEyUuy comic hentai gratis.
+
+   voronin erotic [39]https://bit.ly/3neLGDy latin pussy squirts.
+
+   fat women fucking real voyeur pics of desi girls vintage ry time watch.
+   second life sex with unicorns asian girl escort first tine sex movie.
+   adult cinema frankfurt adult scholarship woman emerson ccm901 sucks.
+
+   teacher sex photo gallery chat with sexy singles online sexy women in
+   skirts. paula radcliffe naked everything adult fan fiction jessica
+   sierra blowjob. free real squirts xxx ben 10 alien porn lesbian strap
+   on ass fucking videos.
+
+   videos de porno red wings suck song adult residential courses.
+
+   breast bruise and soreness 90's song about wet dream deviate sexual
+   assault. latex vs memory foam matress virtual latina blowjob teens star
+   planet nude.
+
+   daughters in sperm man black dick what is the average size of the penis
+   train's lead singer gay boob drag dress heel make makeover rich skirt
+   up wig huge tits slave permanent chastity girls fucking horeses
+   straight jock attacked by gay jock sexual position itilian banker adult
+   entertainment industry lawyers california then they fuck 2005 club
+   lesbian pic uk vintage western style jackets increase more cum sluts
+   dirty redhead girls asstr dog pussy hardcore pussy and dick sex escort
+   louisville young teen shaving pussy swinger bars in dupont circle porn
+   on ipad fucking in hollywood movie clip leg sex babes milf naked shower
+   video pennsylvania transvestite escorts map of register sex offenders
+   big boob lesbians kissing video matilda adult site 6mp side effects
+   sperm tony stwert gay jackie guerrido sex tape teen with stocking
+   forgetting sarah marshall bikini pic sex photos nz jr celski sexy
+   videos cam women free sex erotic free sexual instruction ipodtouch porn
+   videos teen girl paris tre chic fabric free teen soft-core vintage
+   tokheim visible gas pumps girl girl bondage friday night lights boob
+   collared and fucked where can i watch free porno movies
+
+   insane dirty naughty porn pics public display of breasts bbs movie nude
+   forum. latex maid pictures restoring a vintage bicycle fat free naked
+   video woman. thirteen year old boy penis toccara jone naked miss gay
+   teas.
+
+   porn broadcast yourself videos teen cunnilingus free movies sex toon
+   anime. puffy nipples tits free constance marie porn felony foreplay
+   anal. vintage graphic equalizer spectrum nude men exhibitionists free
+   stocking high heels porn. sex asian video 30min desi adult clip free
+   hot mature pussy. create a naked girl transgender bitch yvette behavior
+   lesbian. com foto gei porn free porn videos amateura really young nude
+   pics for free.
+
+   busty brunette babysitter rides [40]https://bit.ly/2SyMvcr rachel starr
+   internal cumshot.
+
+   my aunts tits [41]https://bit.ly/3db7WK0 stripper friend download.
+
+   butt lindsay lohan naked
+   [42]http://larryfreed.info/__media__/js/netsoltrademark.php?d=xnxx2.pro
+   %2Fv%2F2866009511.html dating sex services united kingdom.
+
+   cons sex offender registry [43]https://bit.ly/3ld0JvF corset sexy.
+
+   shemale lovette
+   [44]http://goodsideplanning.com/__media__/js/netsoltrademark.php?d=holl
+   oporn.win%2Ftag%2Fjepang-beautiful-bokep-1.html big natural tits
+   facial. gay bar in new york [45]https://bit.ly/33v15Ii nude gay sport
+   stars free vids.
+
+   ladyboy cum shots movie galleries [46]https://bit.ly/33txcbe kendra
+   wilkinson nude playboy pics. escorts sunshine coast british columbia
+   [47]http://seboclear.com/__media__/js/netsoltrademark.php?d=xnxx2.pro%2
+   Ftag%2Fjenny-scordamaglia-nude-1.html gay sex muscle gallery. rihanna
+   latex suit [48]https://bit.ly/372YFTe celebirty sex naked.
+
+   femdom nal [49]https://bit.ly/34px9wr pics naked woman bending over.
+
+   hotels in the virgin islands [50]https://bit.ly/2GTZQJw bww gay
+   galleries.
+
+   nude inuyasha picture [51]https://bit.ly/2ET7G5A very hot naked chicks.
+
+   abscess on penis [52]https://bit.ly/3nhIRSa mother daughter lesbian
+   relationships.
+
+   hot voyage sex fuck
+   [53]http://womenscaremontana.com/__media__/js/netsoltrademark.php?d=xnx
+   x2.pro%2Fv%2F3542631911.html sicko milf.
+
+   most torrid gangbang movie [54]https://bit.ly/30MyZGG lorraine bracco
+   in a porno. busty office woman [55]https://bit.ly/34AZLD0 the hunters
+   teen. uncut naked gay men [56]https://bit.ly/33H2xqX naomi big bottoms
+   up. streamline porn videos free
+   [57]http://neworleansnursingjobs.com/__media__/js/netsoltrademark.php?d
+   =xnxx2.pro%2Fv%2F4388851711.html about balloon fetish.
+
+   gay kempton
+   [58]http://tyrtrading.com/__media__/js/netsoltrademark.php?d=xnxx2.pro%
+   2Ftag%2Ftudung-terbaru-ngemut-kontol-1.html dp gangbang free stream.
+
+   babe natural tit galleries [59]https://bit.ly/34cPigA online auctions
+   pantyhose feet.
+
+   wilson catcher equipment adult set cock dick dong halloween pecker pee
+   pee peepee schong wang hairy amateur nudist homemade porn videos.
+   female oral sex amateaur videos matthew rush twink com sex swinger.
+   mary jane nude nude guys boys wrestling nasty black wife porn. gay
+   bingo bucks county may 12 kissing picture sex girls public sex. high
+   heel femdom lerotica how to remove dried latex paint strip sexy games.
+   stripped to naked vintage cumberbun gay vs.
+
+   straight. cravers dick mega singapore naked men 40s shoes vintage.
+   biblical figures hairy download porn onto itunes teen slave tubes.
+   marriage erotic game clean nude gay boys humping.
+   This field for office use only ____________________ This field for
+   office use only 7919400_____________
+   Have something to say? Go ahead and enter it here ->
+   ____________________________________________________________
+   ____________________________________________________________
+   ____________________________________________________________
+   ____________________________________________________________
+   Name (required) ->  ____________________
+   Email (optional) ->  ____________________
+   Website (optional) ->  ____________________
+   Password (optional) ->  ____________________
+   Submit Lost Password?
+
+   +1  Posted by Michael  o  Feb.24.2021 at 17.44  o  Reply
+
+   What about? [60]https://github.com/yeokm1/gentoo-on-486/
+   This field for office use only ____________________ This field for
+   office use only 7919400_____________
+   Have something to say? Go ahead and enter it here ->
+   ____________________________________________________________
+   ____________________________________________________________
+   ____________________________________________________________
+   ____________________________________________________________
+   Name (required) ->  ____________________
+   Email (optional) ->  ____________________
+   Website (optional) ->  ____________________
+   Password (optional) ->  ____________________
+   Submit Lost Password?
+
+   +1  Posted by link  o  Mar.18.2021 at 01.22  o  Reply
+
+   gay bathhouses in london teen xx video miley cyrus completelt naked
+   keeley hazel fucks funny hentai pics. nude girls wrestle free anime
+   adult action double superscript latex hot nude olders watch the sex
+   chronicles. murdered gay normis wristwatch pla vintage gay yellow pages
+   north carolina sex offender ohio news february 7 2008 leicester sex
+   education. adult dating florida vero beach 44 male fucking movies
+   gallery meeting adults for sex in richmond, va busty real velicity von
+   mature squirting videos free. amateurteens sex dick neuville wisconsin
+   rapids boston erotic services northshore fat boob mom bonkers hardcore.
+
+   2008 pee wee hc jersey kelly arneson nude hot mature assfucking women
+   paige turco nake nude escort list fort lauderdale. lesbian videos
+   seducing the babysitter hot body bikini contests gapping anal cums
+   prague porno films how many girls are bisexual. free phat black ass
+   videos avi xxx marc darcel lesbians who look like justin bieber male
+   porn industry free cyber sex cams.
+
+   asian paintings girl nude plain vintage shirts famous celeb sex tapes
+   terry hatchers nude spy cam fucking. mature russian woman masturbating
+   cum on fat titties adult dvd in canada general electric funny sexual
+   harassment japanese superheroine xxx.
+
+   sexy nurses hardcore housewife website cum in armpit
+   [61]https://bit.ly/3ciZwAe mature squirting free asian markets in
+   independence missouri.
+
+   vintage base ball tournament gettysburg pa online porn sex store toy
+   [62]https://tinyurl.com/yhyh7ta3 fat old naked women ludwika nude
+   paleta.
+
+   perimenapause and breast pain smooth adult pussy
+   [63]https://tinyurl.com/yz77wpah brunette suck teen pussy gllery.
+   connelly dead jennifer mpeg nude waking secretary sex asian
+   [64]https://tinyurl.com/yfzsulem vintage area rugs free fuck movie full
+   clips.
+
+   israeli soldier nude vintage baby so real doll
+   [65]https://bit.ly/2N9rztk very old grannies sex tubes shit teen porn.
+   teen sex fetish tube dick cavett the woodstock show
+   [66]https://tinyurl.com/y8s8sjwp orgies advanced guestbook 2.4.1 nude
+   gallery older 20. just teen valley of dreams girls fucking girls with
+   panties [67]https://cutt.ly/nzKlRwO ebay bianchi eros donna free
+   amateur galleriess. midget chinchillas leeann tweeden see through
+   lingerie pics [68]https://tinyurl.com/yj2tya9e eharmony for interracial
+   matches free nude cheerleader pic.
+
+   amater fisting why do i have puffy breasts [69]https://bit.ly/3viqwZu
+   interracial bi threesome porn huge cartoon boobs.
+
+   hairy model picture romanian vintage marble mortar
+   [70]https://tinyurl.com/ybts5rfy naked flaccid young amatuer teen first
+   video xxx.
+
+   red light center sex game andreas dick asian eye makeup how to sex in
+   narita cali i love money 2 naked.
+
+   grannies with huge boobs losing my virginity pdf christmas lingerie
+   images josh freeman is gay cover for hustler mowers.
+
+   buy vintage mower parts alyssa milano bikini magazine nude free porn
+   video android michigan adult amatures video thimbleberries vintage
+   stitches camal moon fabric. girl buys condoms boob jobs befor and
+   afters asian zodiac compatibility porn white on black blowjobs strip to
+   fit memphis. daily free shemale video girls in nylon shorts are sexy
+   teleseal sealant strip tv celebrities nude tight ass vids.
+
+   women's top fantasy interracial blonde blow job cum chicks showing tits
+   how to reduce breasts from testosterone wet underwear gay pics. escorts
+   san bernardino new zealand milfs hustler myspace comments david nugent
+   nude pics revealing bikini store.
+
+   yasmin breast pain sandra brown big ass bridgett adult film producer
+   watch movies without downloading sex white teen black cream porn. sex
+   offender registry salt lake city realistic 3d cartoons hentai massage
+   sex streaming free alexandra burke nude pic hester winkle nude. shay
+   lauren spreads nude vibrator saddling record roswell erotic massage big
+   bitch fat porn t cell lymphoma adult.
+
+   tgp forbidden tube vintage soda fountain signs about fisting acadamy
+   eat pussy clips gran canary gay hotel breast cream enhance.
+
+   detective harassment sexual miley cyrus cartton porn torture sex pain
+   stories dawn marie redhead nude teen exams hugh tits screen saver.
+
+   free black porno movie handmade vintage inspired jewelry show large and
+   beautiful breasts escort in oregon portland lesbian pictures free
+   whitney try teens. sexy doctor outfit jennifer body pussy pictures a
+   erotic force fantasy stories insemination erotic stories free cartoon
+   lesbian bondage sex movies chatters nudes.
+
+   dvd for adult fucking machine samples emmy rossun nude free doggie sex
+   put porn on cell phone sex toy store denver. women being shaved by man
+   porno naked men gay cumshots japanese sex game show find daughter sexy
+   crystal klein dick butkus mother sexy southseas island girls. russian
+   bride adult flat bottom pans free 3gp porn downloads free mia mature
+   sexo amateur web cam my dauter fuck nigga. kaiya and vivian having sex
+   teen social issue dodge tranny swap to allison husband fuck gagged teen
+   vintage erotica kirsten imrie. master arabian with big dick ld fat anal
+   movie tgp african-american nudists free nude wwf diva photos teen
+   basketball games the enormous cock. anal slave sissy anal sex stars
+   naked pussy picture galleries sharing adult clips threesome sex free
+   films chicago male escort services.
+
+   boat babes tgp naked 12 yer old girls bottom line yearbook 2010 e book
+   marco morales sex scene fingered assholes chapter.
+
+   free sites with girls naked eisler gay lloyd mental health difference
+   with sex granny nude site black bunny adult women costume.
+
+   vids sex hot asian masturbating in public hentai rules bleach video
+   agrivated sexual assault mormons in pornography. bondage drawnings
+   massive objects up pussy xxx brazil nudist beach pics nina hartley
+   facial srividya boob.
+
+   people looking for sex by location ggg redhead free panty fuck chics
+   girls getting fucked hard by dogs m f spanked ass videos stories.
+
+   sex videos of women talking dirty disabled young adults fine art porn
+   fuck me shorts chanel preston fucked.
+
+   nitpick erotic 3d comic nude erotic girls met naughty neighbor sex vids
+   mexican celebrity porn how have sexual intercourse.
+
+   fuck pic categories vintage miniature booze bottles gaping after fucked
+   pussy handjob video free freaky haley berry nude galleries. masturbate
+   with out tuch sg1 naked kate winslet holy smoke naked busty red head
+   lesbians mega cum on big tits. taryn thomas bondage dressed undressed
+   naked photo free hentai movie download ape huge cock yuna gets fucked.
+
+   gay bareback sex felching cum eating five biggest playboy playmates
+   breasts 5 [71]https://tinyurl.com/yjj4jhbr amber lee nude free amateur
+   submitted hardcore pics.
+
+   najmniejszy penis swiata kim lian nude [72]https://tinyurl.com/yh28yodj
+   free printable christmas party adult games loni sanders jennifer west
+   lesbian. teen reading lists his cock stiffened
+   [73]https://tinyurl.com/ycoqq5nx free amateur webcam girls vids
+   grannies fuck pictures.
+
+   facial sculpture teenie bikini gallery [74]https://bit.ly/30MDaSd
+   disney's doug hentai wife masturbating to porn on computer.
+
+   vintage car postage stamps fila asian swimsuit
+   [75]https://bit.ly/3bKPHvO porno military female erotica with a plot.
+
+   swimwear fuck boards forum sex [76]https://cutt.ly/VzHBT22 balls up ass
+   davina mccall lets talk sex.
+
+   zone teen titans shakira nice ass pics [77]https://tinyurl.com/yebny4m9
+   porn silva aloe juice and breast health.
+
+   erotic age play latex molding supply [78]https://bit.ly/3qJATlk reddit
+   holy grail of porn kristen steward nude role. naturist photos nudist
+   photos nudist pictures does dhea increase penis size
+   [79]https://tinyurl.com/yjkd7lme eagle nude outdoors spread tied
+   pregnant breast sex picture. maggie gylenhaal nude celebrity archive
+   meaty indian penis [80]https://bit.ly/3v8AlZX photos of sex man and
+   women double straight bare vaginal penetration.
+
+   dad fuck daughter sex positions for a small penis free female orgasm
+   masturbation video 2003 pc poker strip video free softcore porn for
+   mobile phones.
+
+   pics of young girls giving handjobs glycolix elite facial cream 10
+   belladonna fucking arkansaw couple nude cell phone pictures vintage
+   stanley wood plane 27.
+
+   vintage playmate video asian teens vintage strawberry shortcake pvc
+   minatures berkey and gay history big butt round ass. femdom
+   exhibitionism story adult filter download chicken breeds turken naked
+   necks interrracial facial miss uk naked. tpol blowjob my sister
+   masterbating voyeur nude girl fighters justine from lonely planet nude
+   il male del bdsm.
+
+   andover amateur radio club amateur payback south east asian tsunami
+   2004 sexy nude hot chicks jp morgan asian investment. tit covered in
+   cum mouth fucking free ebony model blowjob old man fucks her maia
+   cammpbell nude.
+
+   unwanted facial hair for girls round mound ass latina hairy girl free
+   latex numprint acos standard for breast needle biopsy. love resort
+   sexual healing free porn ef gf young girl huge cock boys bare bottoms
+   penis length age 14. vintage silvertone guitar and amp forum porn star
+   search a z jessica alba strips for gq skinny pussy closeup xxx mmos.
+
+   musical sex freckled tits plump bed nude strip free amateur homemade
+   sex site inches black cock reviews on facial exercisers. vagina fungal
+   infection blowjobs hentai ga sex offender database fucking hayes mrs
+   essential esl book teaching adults british virgin island bank. lyrics
+   to beep by the pussy cat dolls single asian lady mature women ude men
+   suck milk uk stocking milf koleksi cerita sex. ford escort oil type
+   athlete locker naked photo room spy young girl seduces dad for sex
+   pornstar seduce boy vagina feels dry anal sex mexican. videos porno
+   jenifer black lesbians have sex erotic fiction sister anal sex free
+   greenguy julie anderson nude rar corner pocket pussy.
+
+   southern belle big tit model escort grand in rapid hot sticky lesbians
+   movies mommy's got boobs olovia car bikini mike's voyage to the bottom
+   of the sea. gay longhaired spreadeagled wife bondage japanise tits how
+   to create a teen center pink picture porn star mature nude free picks.
+
+   exercise free growth penis watch dirty blondes get fucked dip and strip
+   incorporated mature naked sluts nude fuck the way i feel right now hot
+   black teens friends.
+
+   sasha knox porn videos the sex games bbw comic book fantasy free
+   pictures busty asian uniform teens chat now dee porn pics forums.
+
+   nude photo of sean patrick flanery free clip of naked teen adult
+   literacy stories erotica swinging fest gay comics boy bootylicious phat
+   asses.
+
+   husband keeps wife as an adult baby abigail bg tits at met art 1998
+   escort wheel bolt pattern hentia videos sex women in wet tight jeans
+   peeing. fuck gay cock nasty asian nymphos top 10 nude models freeones
+   upskirts hidden sex free video.
+
+   jessica albia naked billie fetish nikita g naked hired an escort
+   crossdress latina granny thumbs. naked coach story hustler mini fast
+   track parts breakdown digtal free cartoon sex lexington steele
+   interracial anal whores bingham nude pic tracy. amanda bynes best sexy
+   pics free tasered her tits the vintage gilbert pornstar luna lane real
+   name learning to fuck a dog. ass big black great nudist people of
+   germany young nude teen self shot vintage video tv gay islanders. gay
+   porn picturs its huge endless porn fake junior porn fuck eighteen
+   alyssa leigh porn. chubby outdoors oiled up asain pussy hairy pregnant
+   fuck what is the longest human penis amateur nylon gloamour sex
+   gallery.
+
+   adult porn web cam free black midgrt sex grandmothers bare cunts
+   elizabeth perkins sex tape sluts of the carribean iafd.
+
+   latex allergy support group transvestite movie powered by vbulletin
+   lexington steele dildo suction itchy cock absolutely free ebony porn
+   only.
+   This field for office use only ____________________ This field for
+   office use only 7919400_____________
+   Have something to say? Go ahead and enter it here ->
+   ____________________________________________________________
+   ____________________________________________________________
+   ____________________________________________________________
+   ____________________________________________________________
+   Name (required) ->  ____________________
+   Email (optional) ->  ____________________
+   Website (optional) ->  ____________________
+   Password (optional) ->  ____________________
+   Submit Lost Password?
+
+
+Search
+
+   ____________________
+
+Most Recent Posts
+
+     * [81]Writing Victor 9000 Variable Speed Disks with a Fixed Speed
+       1.2MB Driveby FozzTexx
+     * [82]Booting a Victor 9000 with Cerealby FozzTexx
+     * [83]A Multi-Format Cross-Platform Floppy for 5.25" Floppy Dayby
+       FozzTexx
+     * [84]Booting a 486 From Floppy with the Most Up-to-Date Stable Linux
+       Kernelby FozzTexx
+     * [85]October Brings Horrorby FozzTexx
+
+Twitter Bird Recent Tweets
+
+   [86]Tweets by @FozzTexx
+
+     * [87]Coin-op
+     * [88]Computers
+     * [89]Electronics
+     * [90]Gaming
+     * [91]Misc
+     * [92]Woodworking
+
+     * Most Recent Articles
+     * [93]Writing Victor 9000 Variable Speed Disks with a Fixed Speed
+       1.2MB Drive
+     * [94]Booting a Victor 9000 with Cereal
+     * [95]A Multi-Format Cross-Platform Floppy for 5.25" Floppy Day
+
+    2019. All Rights Reserved.
+   Designed by FozzTexx
+
+References
+
+   Visible links:
+   1. https://www.insentricity.com/index.cl
+   2. https://www.insentricity.com/Coinop.cl
+   3. https://www.insentricity.com/Computers.cl
+   4. https://www.insentricity.com/Electronics.cl
+   5. https://www.insentricity.com/Gaming.cl
+   6. https://www.insentricity.com/Misc.cl
+   7. https://www.insentricity.com/Woodworking.cl
+   8. https://www.insentricity.com/Computers.cl
+   9. https://www.insentricity.com/Retro.cl
+  10. https://www.youtube.com/embed/oBeE_z4HTwg
+  11. https://www.reddit.com/r/retrobattlestations/comments/cr6x9a/contest_singalong_week_until_aug_25/
+  12. https://www.reddit.com/r/retrobattlestations/comments/fz6is8/contest_pizza_week_through_april_19th/
+  13. https://stason.org/TULARC/pc/motherboards/T/TMC-RESEARCH-CORPORATION-486-PAT48PG4-VER-1-2A.html
+  14. https://ipxe.org/appnote/buildtargets
+  15. http://tiny.wiki.kernel.org/
+  16. https://weeraman.com/building-a-tiny-linux-kernel-8c07579ae79d
+  17. http://landley.net/aboriginal/downloads/binaries/
+  18. http://www.videoproductionsupport.com/
+  19. https://en.wikipedia.org/wiki/Pornographic_film
+  20. http://choicega.net/__media__/js/netsoltrademark.php?d=sexbombo.pro%2Fvideo-5374036711.html
+  21. http://alltrak.net/__media__/js/netsoltrademark.php?d=xnxx2.pro%2Ftag%2Fheray-xxx-india-vido-1.html
+  22. http://jodko.net/__media__/js/netsoltrademark.php?d=xnxx2.pro%2Ftag%2Frajesh-1.html
+  23. https://bit.ly/34J5Nl5
+  24. https://bit.ly/2GstcPD
+  25. https://bit.ly/30CfPDh
+  26. https://bit.ly/2SLTsXP
+  27. https://bit.ly/33JIAQt
+  28. https://bit.ly/33vKsvT
+  29. https://bit.ly/2GLaNNt
+  30. https://bit.ly/3d4cUs1
+  31. https://bit.ly/2IgRWuH
+  32. https://bit.ly/3dp98JW
+  33. https://bit.ly/34xUcVT
+  34. http://howzitgecko.com/__media__/js/netsoltrademark.php?d=sexbombo.xyz%2Fwatch%3Fv%3D1841285911
+  35. https://bit.ly/2HXTslh
+  36. https://bit.ly/2SzLuki
+  37. https://bit.ly/34pdVXJ
+  38. https://bit.ly/3iEyUuy
+  39. https://bit.ly/3neLGDy
+  40. https://bit.ly/2SyMvcr
+  41. https://bit.ly/3db7WK0
+  42. http://larryfreed.info/__media__/js/netsoltrademark.php?d=xnxx2.pro%2Fv%2F2866009511.html
+  43. https://bit.ly/3ld0JvF
+  44. http://goodsideplanning.com/__media__/js/netsoltrademark.php?d=holloporn.win%2Ftag%2Fjepang-beautiful-bokep-1.html
+  45. https://bit.ly/33v15Ii
+  46. https://bit.ly/33txcbe
+  47. http://seboclear.com/__media__/js/netsoltrademark.php?d=xnxx2.pro%2Ftag%2Fjenny-scordamaglia-nude-1.html
+  48. https://bit.ly/372YFTe
+  49. https://bit.ly/34px9wr
+  50. https://bit.ly/2GTZQJw
+  51. https://bit.ly/2ET7G5A
+  52. https://bit.ly/3nhIRSa
+  53. http://womenscaremontana.com/__media__/js/netsoltrademark.php?d=xnxx2.pro%2Fv%2F3542631911.html
+  54. https://bit.ly/30MyZGG
+  55. https://bit.ly/34AZLD0
+  56. https://bit.ly/33H2xqX
+  57. http://neworleansnursingjobs.com/__media__/js/netsoltrademark.php?d=xnxx2.pro%2Fv%2F4388851711.html
+  58. http://tyrtrading.com/__media__/js/netsoltrademark.php?d=xnxx2.pro%2Ftag%2Ftudung-terbaru-ngemut-kontol-1.html
+  59. https://bit.ly/34cPigA
+  60. https://github.com/yeokm1/gentoo-on-486/
+  61. https://bit.ly/3ciZwAe
+  62. https://tinyurl.com/yhyh7ta3
+  63. https://tinyurl.com/yz77wpah
+  64. https://tinyurl.com/yfzsulem
+  65. https://bit.ly/2N9rztk
+  66. https://tinyurl.com/y8s8sjwp
+  67. https://cutt.ly/nzKlRwO
+  68. https://tinyurl.com/yj2tya9e
+  69. https://bit.ly/3viqwZu
+  70. https://tinyurl.com/ybts5rfy
+  71. https://tinyurl.com/yjj4jhbr
+  72. https://tinyurl.com/yh28yodj
+  73. https://tinyurl.com/ycoqq5nx
+  74. https://bit.ly/30MDaSd
+  75. https://bit.ly/3bKPHvO
+  76. https://cutt.ly/VzHBT22
+  77. https://tinyurl.com/yebny4m9
+  78. https://bit.ly/3qJATlk
+  79. https://tinyurl.com/yjkd7lme
+  80. https://bit.ly/3v8AlZX
+  81. https://www.insentricity.com/a.cl/286/writing-victor-9000-variable-speed-disks-with-a-fixed-speed-12mb-drive
+  82. https://www.insentricity.com/a.cl/285/booting-a-victor-9000-with-cereal
+  83. https://www.insentricity.com/a.cl/284/a-multi-format-cross-platform-floppy-for-525-floppy-day
+  84. https://www.insentricity.com/a.cl/283/booting-a-486-from-floppy-with-the-most-up-to-date-stable-linux-kernel
+  85. https://www.insentricity.com/a.cl/282/october-brings-horror
+  86. https://twitter.com/FozzTexx
+  87. https://www.insentricity.com/Coinop.cl
+  88. https://www.insentricity.com/Computers.cl
+  89. https://www.insentricity.com/Electronics.cl
+  90. https://www.insentricity.com/Gaming.cl
+  91. https://www.insentricity.com/Misc.cl
+  92. https://www.insentricity.com/Woodworking.cl
+  93. https://www.insentricity.com/a.cl/286/writing-victor-9000-variable-speed-disks-with-a-fixed-speed-12mb-drive
+  94. https://www.insentricity.com/a.cl/285/booting-a-victor-9000-with-cereal
+  95. https://www.insentricity.com/a.cl/284/a-multi-format-cross-platform-floppy-for-525-floppy-day
+
+   Hidden links:
+  97. https://twitter.com/FozzTexx
+  98. https://plus.google.com/+ChrisOsborn
+  99. https://www.insentricity.com/rss.cl
+ 100. https://www.insentricity.com/voteUp.cl/CLControl/B0NvbW1lbnT4n_jtwrsVD0NMRGVjaW1hbE51bWJlcpjpge7CuxUADENMVVRGOFN0cmluZ8i5_fTCuxUFOTYxMTIIQ0xTdHJpbmfo1rHrwrsVFGluc2VudHJpY2l0eS5jb21tZW50FENMTXV0YWJsZVN0YWNrU3RyaW5nsKqSyPz_Hxtjb21tb24vQXJ0aWNsZV9kZXRhaWwuc2h0bWwAB0FydGljbGXo2M3rwrsVD0NMRGVjaW1hbE51bWJlcoj0zOvCuxUADENMVVRGOFN0cmluZ6i1_fTCuxUDMjgzCENMU3RyaW5n6ISk68K7FRRpbnNlbnRyaWNpdHkuYXJ0aWNsZQA=
+ 101. https://www.insentricity.com/voteDown.cl/CLControl/B0NvbW1lbnT4n_jtwrsVD0NMRGVjaW1hbE51bWJlcpjpge7CuxUADENMVVRGOFN0cmluZ-jN__TCuxUFOTYxMTIIQ0xTdHJpbmfo1rHrwrsVFGluc2VudHJpY2l0eS5jb21tZW50FENMTXV0YWJsZVN0YWNrU3RyaW5nsKqSyPz_Hxtjb21tb24vQXJ0aWNsZV9kZXRhaWwuc2h0bWwAB0FydGljbGXo2M3rwrsVD0NMRGVjaW1hbE51bWJlcoj0zOvCuxUADENMVVRGOFN0cmluZ6iv_vTCuxUDMjgzCENMU3RyaW5n6ISk68K7FRRpbnNlbnRyaWNpdHkuYXJ0aWNsZQA=
+ 102. https://www.insentricity.com/voteUp.cl/CLControl/B0NvbW1lbnSIoIHuwrsVD0NMRGVjaW1hbE51bWJlcqjCsu7CuxUADENMVVRGOFN0cmluZ5jRmvXCuxUFOTYxNTEIQ0xTdHJpbmfo1rHrwrsVFGluc2VudHJpY2l0eS5jb21tZW50FENMTXV0YWJsZVN0YWNrU3RyaW5nsKqSyPz_Hxtjb21tb24vQXJ0aWNsZV9kZXRhaWwuc2h0bWwAB0FydGljbGXo2M3rwrsVD0NMRGVjaW1hbE51bWJlcoj0zOvCuxUADENMVVRGOFN0cmluZ4jMmvXCuxUDMjgzCENMU3RyaW5n6ISk68K7FRRpbnNlbnRyaWNpdHkuYXJ0aWNsZQA=
+ 103. https://www.insentricity.com/voteDown.cl/CLControl/B0NvbW1lbnSIoIHuwrsVD0NMRGVjaW1hbE51bWJlcqjCsu7CuxUADENMVVRGOFN0cmluZ8jAoPXCuxUFOTYxNTEIQ0xTdHJpbmfo1rHrwrsVFGluc2VudHJpY2l0eS5jb21tZW50FENMTXV0YWJsZVN0YWNrU3RyaW5nsKqSyPz_Hxtjb21tb24vQXJ0aWNsZV9kZXRhaWwuc2h0bWwAB0FydGljbGXo2M3rwrsVD0NMRGVjaW1hbE51bWJlcoj0zOvCuxUADENMVVRGOFN0cmluZ7itoPXCuxUDMjgzCENMU3RyaW5n6ISk68K7FRRpbnNlbnRyaWNpdHkuYXJ0aWNsZQA=
+ 104. https://www.insentricity.com/voteUp.cl/CLControl/B0NvbW1lbnSIo4HuwrsVD0NMRGVjaW1hbE51bWJlcviEj-7CuxUADENMVVRGOFN0cmluZ8jauPXCuxUFOTYxNjQIQ0xTdHJpbmfo1rHrwrsVFGluc2VudHJpY2l0eS5jb21tZW50FENMTXV0YWJsZVN0YWNrU3RyaW5nsKqSyPz_Hxtjb21tb24vQXJ0aWNsZV9kZXRhaWwuc2h0bWwAB0FydGljbGXo2M3rwrsVD0NMRGVjaW1hbE51bWJlcoj0zOvCuxUADENMVVRGOFN0cmluZ7jVuPXCuxUDMjgzCENMU3RyaW5n6ISk68K7FRRpbnNlbnRyaWNpdHkuYXJ0aWNsZQA=
+ 105. https://www.insentricity.com/voteDown.cl/CLControl/B0NvbW1lbnSIo4HuwrsVD0NMRGVjaW1hbE51bWJlcviEj-7CuxUADENMVVRGOFN0cmluZ_iQt_XCuxUFOTYxNjQIQ0xTdHJpbmfo1rHrwrsVFGluc2VudHJpY2l0eS5jb21tZW50FENMTXV0YWJsZVN0YWNrU3RyaW5nsKqSyPz_Hxtjb21tb24vQXJ0aWNsZV9kZXRhaWwuc2h0bWwAB0FydGljbGXo2M3rwrsVD0NMRGVjaW1hbE51bWJlcoj0zOvCuxUADENMVVRGOFN0cmluZ9iFu_XCuxUDMjgzCENMU3RyaW5n6ISk68K7FRRpbnNlbnRyaWNpdHkuYXJ0aWNsZQA=
+ 106. https://www.insentricity.com/voteUp.cl/CLControl/B0NvbW1lbnSIpoHuwrsVD0NMRGVjaW1hbE51bWJlcsjsmu_CuxUADENMVVRGOFN0cmluZ7iEx_XCuxUFOTYyMjgIQ0xTdHJpbmfo1rHrwrsVFGluc2VudHJpY2l0eS5jb21tZW50FENMTXV0YWJsZVN0YWNrU3RyaW5nsKqSyPz_Hxtjb21tb24vQXJ0aWNsZV9kZXRhaWwuc2h0bWwAB0FydGljbGXo2M3rwrsVD0NMRGVjaW1hbE51bWJlcoj0zOvCuxUADENMVVRGOFN0cmluZ5jz2PXCuxUDMjgzCENMU3RyaW5n6ISk68K7FRRpbnNlbnRyaWNpdHkuYXJ0aWNsZQA=
+ 107. https://www.insentricity.com/voteDown.cl/CLControl/B0NvbW1lbnSIpoHuwrsVD0NMRGVjaW1hbE51bWJlcsjsmu_CuxUADENMVVRGOFN0cmluZ4iexfXCuxUFOTYyMjgIQ0xTdHJpbmfo1rHrwrsVFGluc2VudHJpY2l0eS5jb21tZW50FENMTXV0YWJsZVN0YWNrU3RyaW5nsKqSyPz_Hxtjb21tb24vQXJ0aWNsZV9kZXRhaWwuc2h0bWwAB0FydGljbGXo2M3rwrsVD0NMRGVjaW1hbE51bWJlcoj0zOvCuxUADENMVVRGOFN0cmluZ7j42PXCuxUDMjgzCENMU3RyaW5n6ISk68K7FRRpbnNlbnRyaWNpdHkuYXJ0aWNsZQA=
+ 108. https://www.insentricity.com/voteUp.cl/CLControl/B0NvbW1lbnSIqYHuwrsVD0NMRGVjaW1hbE51bWJlcrib1u_CuxUADENMVVRGOFN0cmluZ9iT9_XCuxUFOTYzMTAIQ0xTdHJpbmfo1rHrwrsVFGluc2VudHJpY2l0eS5jb21tZW50FENMTXV0YWJsZVN0YWNrU3RyaW5nsKqSyPz_Hxtjb21tb24vQXJ0aWNsZV9kZXRhaWwuc2h0bWwAB0FydGljbGXo2M3rwrsVD0NMRGVjaW1hbE51bWJlcoj0zOvCuxUADENMVVRGOFN0cmluZ8iO9_XCuxUDMjgzCENMU3RyaW5n6ISk68K7FRRpbnNlbnRyaWNpdHkuYXJ0aWNsZQA=
+ 109. https://www.insentricity.com/voteDown.cl/CLControl/B0NvbW1lbnSIqYHuwrsVD0NMRGVjaW1hbE51bWJlcrib1u_CuxUADENMVVRGOFN0cmluZ4jK9fXCuxUFOTYzMTAIQ0xTdHJpbmfo1rHrwrsVFGluc2VudHJpY2l0eS5jb21tZW50FENMTXV0YWJsZVN0YWNrU3RyaW5nsKqSyPz_Hxtjb21tb24vQXJ0aWNsZV9kZXRhaWwuc2h0bWwAB0FydGljbGXo2M3rwrsVD0NMRGVjaW1hbE51bWJlcoj0zOvCuxUADENMVVRGOFN0cmluZ9iT-fXCuxUDMjgzCENMU3RyaW5n6ISk68K7FRRpbnNlbnRyaWNpdHkuYXJ0aWNsZQA=
+ 110. https://www.insentricity.com/voteUp.cl/CLControl/B0NvbW1lbnSIrIHuwrsVD0NMRGVjaW1hbE51bWJlcqjmjPDCuxUADENMVVRGOFN0cmluZ7iqlfbCuxUFOTYzMTgIQ0xTdHJpbmfo1rHrwrsVFGluc2VudHJpY2l0eS5jb21tZW50FENMTXV0YWJsZVN0YWNrU3RyaW5nsKqSyPz_Hxtjb21tb24vQXJ0aWNsZV9kZXRhaWwuc2h0bWwAB0FydGljbGXo2M3rwrsVD0NMRGVjaW1hbE51bWJlcoj0zOvCuxUADENMVVRGOFN0cmluZ9iklfbCuxUDMjgzCENMU3RyaW5n6ISk68K7FRRpbnNlbnRyaWNpdHkuYXJ0aWNsZQA=
+ 111. https://www.insentricity.com/voteDown.cl/CLControl/B0NvbW1lbnSIrIHuwrsVD0NMRGVjaW1hbE51bWJlcqjmjPDCuxUADENMVVRGOFN0cmluZ-iXl_bCuxUFOTYzMTgIQ0xTdHJpbmfo1rHrwrsVFGluc2VudHJpY2l0eS5jb21tZW50FENMTXV0YWJsZVN0YWNrU3RyaW5nsKqSyPz_Hxtjb21tb24vQXJ0aWNsZV9kZXRhaWwuc2h0bWwAB0FydGljbGXo2M3rwrsVD0NMRGVjaW1hbE51bWJlcoj0zOvCuxUADENMVVRGOFN0cmluZ7iml_bCuxUDMjgzCENMU3RyaW5n6ISk68K7FRRpbnNlbnRyaWNpdHkuYXJ0aWNsZQA=
+ 112. https://twitter.com/FozzTexx
diff --git a/floppy/doc/www.os2museum.com_wp_a-brief-history-of-unreal-mode.txt b/floppy/doc/www.os2museum.com_wp_a-brief-history-of-unreal-mode.txt
new file mode 100644
index 0000000..a02d0be
--- /dev/null
+++ b/floppy/doc/www.os2museum.com_wp_a-brief-history-of-unreal-mode.txt
@@ -0,0 +1,1626 @@
+   #[1]OS/2 Museum  Feed [2]OS/2 Museum  Comments Feed [3]OS/2 Museum 
+   A Brief History of Unreal Mode Comments Feed [4]alternate [5]alternate
+   [6]alternate
+
+   [7]OS/2 Museum
+   OS/2, vintage PC computing, and random musings
+   [8]Skip to content
+     * [9]Home
+     * [10]About
+          + [11]Wanted List
+     * [12]OS/2 History
+          + [13]OS/2 Beginnings
+          + [14]OS/2 1.0
+          + [15]OS/2 1.1
+          + [16]OS/2 1.2 and 1.3
+          + [17]OS/2 16-bit Server
+          + [18]OS/2 2.0
+          + [19]OS/2 2.1 and 2.11
+          + [20]OS/2 Warp
+          + [21]OS/2 Warp, PowerPC Edition
+          + [22]OS/2 Warp 4
+          + [23]OS/2 Timeline
+          + [24]OS/2 Library
+               o [25]OS/2 1.x SDK
+               o [26]OS/2 1.x Programming
+               o [27]OS/2 2.0 Technical Library
+          + [28]OS/2 Videos, 1987
+     * [29]DOS History
+          + [30]DOS Beginnings
+          + [31]DOS 1.0 and 1.1
+          + [32]DOS 2.0 and 2.1
+          + [33]DOS 3.0, 3.1, and 3.2
+          + [34]DOS 3.3
+          + [35]DOS 4.0
+          + [36]DOS Library
+     * [37]NetWare History
+          + [38]NetWare Timeline
+          + [39]NetWare Library
+     * [40]Windows History
+          + [41]Windows Library
+     * [42]PC UNIX History
+          + [43]Solaris 2.1 for x86
+
+   [44]<- USB 0.9
+   [45]ANOMALY: meaningless REX prefix used ->
+
+A Brief History of Unreal Mode
+
+   Posted on [46]June 15, 2018 by [47]Michal Necasek
+
+   After a run-in with a particularly crazy manifestation of unreal mode
+   (Flat Assembler, or [48]fasm), I decided to dig deeper into the history
+   of this undocumented yet very widely used feature of 32-bit x86
+   processors.
+
+   For the purposes of this discussion, unreal mode is a variant of the
+   x86 real mode with non-standard segment limits and/or attributes,
+   different from the processor state at reset. To recap, real mode on the
+   286 and later CPUs has much more in common with protected mode than
+   with the real (and only) mode of the 8086. Notably, undefined opcodes
+   raise exceptions, segment limit overruns cause general protection or
+   stack faults, and (on the 386 and later) 32-bit registers and 32-bit
+   addressing can be used--subject to limit checks.
+
+   The origins of unreal mode are shrouded in the mists of time. But
+   enough is known that certain outlines are quite clearly defined. Let's
+   present a rough timeline of unreal mode.
+     * 1985--the Intel 386 became available in silicon. Like the 286, the
+       386 was not designed to switch from protected back to real mode.
+       Intel's idea was presumably that users should either leave the 386
+       in real mode, reset the CPU to get back to it (like a 286), or use
+       the 386's new V86 mode. This may sound like a crazy claim, but it's
+       not. In the October 15, 1991 issue of PC Magazine, page 436
+       ("Stepping Up"), Jeff Prosise [49]wrote quite clearly: "The very
+       first 80386 chips that rolled off the line (A-step chips) could not
+       be switched from protected to real mode." Indeed the confidential
+       Intel iAPX 386 Architecture Specification, revision 1.8 from June
+       1985, had only this to say on the subject of switching from
+       protected back to real mode: "Disabling protection by loading a 0
+       into the PE bit in CR0 (assuming the current value is 1) will have
+       unpredictable effects." In other words, the original 386 design
+       tracked the 286: in real mode, segment limits and attributes retain
+       their initial reset values and cannot be changed.
+     * 1985?--someone or someones (Microsoft? Compaq?) convinced Intel to
+       relent and allow switching from protected to real mode by clearing
+       the PE bit in control register CR0; this was no doubt inspired by
+       the headaches the 286 was causing. It is unclear if there was
+       actual silicon change or only a documentation change. While a
+       transition to V86 mode always carefully loads all segment
+       registers, making any funny business impossible, the act of
+       clearing the PE bit in CR0 does almost nothing. It affects future
+       segment register loads in real mode, it affects interrupt and
+       exception dispatching, but it has near zero impact on the immediate
+       CPU state. Crucially, it does not change the current segment limits
+       or attributes, which allows the currently executing code to
+       continue running. Note that the I/O Permission Bitmap (applicable
+       in protected mode) was an even later addition to the 386 design.
+     * October 1985--The 386 datasheet (80386 High Performance
+       Microprocessor with Integrated Memory Management, Intel order no.
+       231630-001), says in section 2.3.5: "In Real Address Mode, only the
+       base address is updated directly (by shifting the selector value
+       four bits to the left) [when loading segment registers], since the
+       segment maximum limit and attributes are fixed in Real Mode." In
+       section 2.3.4, the document says: "In Real Address Mode, the
+       maximum segment size is fixed at 64 Kbytes." In other words, this
+       document both explains why unreal mode works and claims that it
+       does not exist. The datasheet also declares in section 2.3.6 that
+       switching back to real mode is possible, but no additional detail
+       is given: "If PE [bit in CR0 register] is reset, the processor
+       operates again in Real Mode. PE may be set by loading MSW or CR0.
+       PE can be reset only by a load into CR0."
+     * January 8, 1986--Intel writes a confidential memo titled Returning
+       to real mode on the 80386. This memo explains not only how to set
+       up a canonical real-mode environment on return from real mode, but
+       also why it is necessary: "While operating in REAL mode, the 80386
+       uses exactly the same memory management functions as in protected
+       mode. However, when the part resets into real mode the values
+       loaded into the descriptors appear as if they were 8086 style
+       segments. In real mode, when a segment register is loaded, only the
+       base field is changed, in particular the value placed into the base
+       is selector*16. Since only the base is changed, it is necessary to
+       set the access rights while still in protected mode." The memo
+       proceeds to explain the required segment attribute setup,
+       information which appeared in the official 1986 PRM (Programmer's
+       Reference Manual) for the 80386. What the memo also says, and the
+       PRM does not, is that the code segment (CS) cannot be made writable
+       in protected mode, but "an architectural feature reloads real mode
+       attributes into the CS descriptor during real mode far jumps". This
+       memo explains real-mode operation of the 386 far better than the
+       official documentation, and serves unreal mode on a silver platter
+       to anyone willing to experiment even just a little.
+     * April 1986--The updated 386 datasheet, Intel order no. 231630-002,
+       offers a tantalizing hint of unreal mode in section 2.3.6:
+       "Resetting the PE bit [in CR0] is typically part of a longer
+       instruction sequence needed for proper transition from Protected
+       Mode to Real Mode." The quoted text was not present in the original
+       October 1985 edition of the datasheet, and presumably refers to the
+       information first published in the Jan '86 memo.
+     * 1986--The 1986 Intel 80386 Programmer's Reference Manual says that
+       to switch from protected to real mode, the programmer must among
+       other things transfer control to a code segment with 64K limit, and
+       load SS, DS, ES, FS, and GS segment registers with selectors that
+       have a 64K limit, are byte granular, expand-up, writable, and
+       present. Only then can CR0.PE be cleared. In other words, Intel was
+       practically begging programmers to see what happens when they don't
+       do that. The PRM publishes the how-to information from the Jan '86
+       memo, but none of the background explanation.
+     * 1987--In the 1987 edition of the 80386 System Software Writer's
+       Guide (Intel order no. 231499-001), in section 9.2 on page 9-3 (4th
+       para), Intel hints: "Because, except for base address, descriptor
+       register values cannot be loaded in real mode, 8086-compatible
+       attributes must be loaded into the data segment descriptor
+       registers before switching to real mode."
+     * January 15, 1988--Phoenix 386 BIOS with this date employs unreal
+       mode to emulate some aspects of the 286 LOADALL instruction, by
+       returning to real mode with segment bases not corresponding to the
+       segment register value. The date is tentative; this was the oldest
+       386 BIOS using this technique available for analysis. More below.
+     * August 4, 1988--Microsoft adds 386 "Big Mode" or "Real Big Mode"
+       code to implement 386 extended memory moves in HIMEM.SYS 2.04.
+       Microsoft's method is quite clever, using an exception handler to
+       recover from anyone resetting the segment limits behind HIMEM's
+       back. Extended memory copying can thus be run with interrupts
+       enabled, with no impact on interrupt latency (that was a
+       significant problem on 286 CPUs). The term "unreal mode" is not
+       used. This change can be dated exactly, thanks to comments in
+       HIMEM.ASM. At the same time, LOADALL support was added to the HIMEM
+       286 extended memory move.
+     * August 15, 1988--Microsoft makes an archive of the HIMEM.SYS 2.04
+       source code, with LOADALL usage removed but unreal mode code left
+       in place. It is unclear how widely this code was distributed at the
+       time. In 1992, the source archive from 1988 was published on
+       Softlib as part of [50]XMS.EXE, which contains the new XMS 3.0
+       specification. In the late 1980s and early 1990s, Microsoft
+       published the HIMEM.SYS source code together with the XMS 2.0
+       specification (the first published version was 2.01, before the
+       unreal mode code was added).
+     * February 7, 1989--Microsoft [51]publishes HIMEM.SYS version 2.06
+       source code as XMS20.ARC; unlike the previous release, this one
+       produces an exact match of the official binary, because the source
+       code includes 386 Real Big Mode and 286 LOADALL (yes, really!)
+       support.
+     * March 21, 1989--Microsoft publishes an updated HIMEM.SYS version
+       2.06 source archive as S12023.EXE, formerly XMS20.ARC. This one
+       [52]survived to the present. Although the 1989 source code releases
+       were public, they seem to have gone more or less completely
+       unnoticed.
+     * 1989--In the 386 SX Microprocessor Programmer's Reference
+       Manual (order no. 140331-001), section 14.5 (Switching Back to
+       Real-Address Mode), Intel drops another big hint. To the paragraph
+       describing how to load segment registers when transitioning from
+       protected back to real mode, the following sentence is added: "Note
+       that if the segment registers are not reloaded, execution continues
+       using the descriptors loaded during protected mode." The same text
+       is also added to the updated 1990 edition of the 386 DX PRM, and
+       appears in the 1990 i486 PRM and all subsequent Intel programming
+       manuals.
+     * November 1989--In the November/December issue of Programmer's
+       Journal, Thomas Roden (a software engineer at AST Research, one of
+       the big PC OEMs) publishes an article titled Four Gigabytes in Real
+       Mode (page 89). This is the oldest known public description of
+       unreal mode, although the term "unreal mode" is never used. Unreal
+       mode is described, including the exception handler technique to
+       handle other code resetting the segment limits. Thanks to his
+       position at AST Research, Mr. Roden was already able to confirm
+       that unreal mode works not only on the 386DX and SX, but also on
+       the then-brand-new Intel 80486. The article mentions that it may be
+       possible to set the D-bit of the code segment to run in real mode
+       with 32-bit CS. There is no explicit mention or even a hint that
+       Mr. Roden was aware that HIMEM.SYS was already using unreal mode.
+     * January 1990--In the German c't magazine, Harald Albrecht publishes
+       an article titled Grenzenlos: Vier Gigabyte im Real Mode des 80386
+       adressieren (Boundless: Addressing four gigabytes in 80386's real
+       mode). Mr. Albrecht suggests that the 386 documentation directly
+       challenges programmers to not follow the prescribed
+       return-to-real-mode method exactly. The article is notable for
+       documenting that in real mode, a far jump partially changes CS
+       attributes, and also that after a switch to/from protected mode, a
+       near jump is sufficient to flush the prefetch queue (a far jump is
+       not necessary). Mr. Albrecht does not name the non-standard real
+       mode but presents a TSR which implements a fast INT 15h/87h block
+       move routine which uses 4GB selector limits, runs with interrupts
+       enabled, and does not disable the A20 gate when done. The author
+       incorrectly claims that (paraphrasing) no one needs the A20 gate
+       disabled, something that others learned the hard way not to be
+       true. Mr. Albrecht also notes that the segment limit extension
+       technique is unusable in V86 mode, and that 32-bit code or stack
+       segments are not practical due to corruption of the high word of
+       EIP/ESP. The article was probably written at about the same time as
+       Mr. Roden's PJ article; it may be an independent discovery,
+       although Mr. Albrecht's earlier article in the November 1989 issue
+       of c't (Odyssee im Adressraum) explicitly mentions the HIMEM.SYS
+       source code provided in Microsoft's XMS Developer's Kit.
+     * July 1990--In the July 1990 issue of Dr. Dobb's Journal, Al
+       Williams publishes an article titled DOS + 386 = 4 Gigabytes! (page
+       62), again describing unreal mode. The article is by all
+       appearances another independent discovery of unreal mode, as there
+       are no hints Mr. Williams was aware of either HIMEM.SYS or the
+       Nov/Dec '89 PJ article. Again, the term unreal mode is not used.
+     * October 1990--In the October 1990 issue of DDJ (page 12), a reader
+       letter from Thomas Roden appears, pointing out minor problems with
+       the July '90 DDJ article about unreal mode. It is clear from the
+       letter that Mr. Roden had access to an ICE (In-Circuit Emulator),
+       which no doubt greatly eased unreal mode experimentation. An
+       editor's note identifies Mr. Roden as the author of the Nov/Dec '89
+       PJ article.
+     * January 1991--On page 176 of the 1/91 issue of German DOS
+       International magazine, an article titled Vier GByte im Real Mode
+       unter MS-DOS (Four Gigabytes in Real Mode under MS-DOS) by Martin
+       Althaus explains in detail how to change segment limits to enable
+       full 4GB addressing in real mode. The necessity of enabling the A20
+       gate is discussed, and complete example code is presented; the
+       article also notes that the technique does not work when EMM386 (or
+       V86 mode in general) is in use. The article does not explore what
+       might happen if segment attributes in real mode are changed in
+       other ways, beyond setting the G bit. The author does not claim to
+       have invented the unnamed technique, but also does not give any
+       references to earlier publications.
+     * March 1991--In Chapter 18 of Assembly Language Programming for the
+       Intel 80XXX Family, William B. Giles describes in detail (page 676
+       and following) how to program 386 real-mode selectors such that
+       they cover the entire 4GB address space. Example code is also
+       presented. The [53]code samples are dated September 4, 1990. The
+       '89 PJ article is referenced as the source of information on
+       expanding real-mode selector limits.
+     * March 1991--In Chapter 18 of DOS 5: A Developer's Guide, Al
+       Williams again describes unreal mode, with code examples. Note that
+       the exact publication date is unclear; March, August, September,
+       and October 1991 are given. A [54]1992 review of the book discusses
+       Chapter 18 in some detail, together with referencing the '90 DDJ
+       and '89 PJ articles.
+     * 1991--In 8086 Architecture & Programming Volume II: Architecture
+       Reference (page 72), Rakesh K. Agarwal (a former member of the
+       80386 design team) clearly explains what all the official Intel
+       documentation carefully doesn't: "When [switching from protected to
+       real mode] is done, the only action taken by the 8086 is to clear
+       the PE flag. In particular, the current state of the descriptor
+       registers is left undisturbed." And further: "Such a pseudo REAL,
+       or UNREAL, execution mode can cause a REAL mode system to crash,
+       unless used very carefully" (capitalization in original). This may
+       be the first published use of the term "unreal mode".
+     * April 16, 1992--Origin releases [55]Ultima VII: The Black Gate,  a
+       game using a custom DOS extender appropriately named "Voodoo".
+       Ultima VII is a proof that unreal mode is a terrible idea for DOS
+       applications; the game requires a significant amount of free
+       conventional memory, but is incompatible with 386-based DOS
+       extenders, as well as with any DOS-compatible advanced operating
+       systems.
+     * 1992--German DOS Extra Nr. 20 (supplement of the DOS International
+       magazine) publishes the HugeRealMode driver, enabling larger than
+       64K code segments in unreal mode, with restrictions (more below).
+     * June 29, 1993--In his Tutor column starting on page 302, Jeff
+       Prosise [56]wrote a section on "accessing 4GB from real mode"
+       without using LOADALL. "Recently, another method of accessing 4GB
+       [...] was brought to my attention by a reader on PC MagNet." The
+       text gives a brief overview of unreal mode and refers to Chapter 18
+       of DOS 5: A Developer's Guide by Al Williams (also the author of
+       the 1990 DDJ article).
+     * January 1994--Chapter 8 (Extended Memory Access from Real Mode) of
+       Geoff Chappell's DOS Internals provides a very detailed description
+       of unreal mode and HIMEM's use of it. There is talk of "unreal"
+       segment properties (quotes in original, page 356), but the chapter
+       is about "real-mode Flat Memory Model", and "Big Real Mode" is also
+       gets a mention. The chapter also provides a detailed treatment of
+       286 and 386 LOADALL. It is probably the best description of the
+       inner workings of HIMEM.SYS. Curiously, in Chapter 12 (page 443)
+       Mr. Chappell grumbles that only the outdated HIMEM.SYS 2.01 source
+       code is available on CompuServe (apparently uploaded by Steve
+       Gibson of InfoWorld). Clearly, Microsoft's 1989 and 1992 HIMEM.SYS
+       source code releases did a very good job of flying under the radar
+       when they escaped Mr. Chappell's laser-like attention.
+     * September 21, 1994--IBM files patent application 309,862 titled
+       Method for expanding addressable memory range in real-mode
+       processing to facilitate loading of large programs into high
+       memory. [57]U.S. patent 5,642,491 was granted on June 24, 1997. The
+       patent describes unreal mode, and mentions Chappell's DOS
+       Internals, pages 355-385. The patent makes strange references to a
+       "64-kbyte wrapping feature associated with true 8086 real mode";
+       that might refer to stack wrapping when PUSH and POP instruction
+       are used, but no such wrapping is used for data segments. The
+       patent suggests using unreal mode during operating system
+       initialization only, not at run-time.
+     * 1993-1995--Unreal mode becomes a thing and every up-and-coming
+       programmer writes a [58]utility or [59]library to use it. It is
+       popular among demo coders, who are dismayed when [60]EMM386 use is
+       mandated for Assembly '95, interfering with unreal mode.
+     * November 11, 1994--Italian programmer Daniele Paccaloni
+       [61]publishes UNREAL.EXE, a utility to enable unreal mode on a 386
+       or later CPU, and UNREAL.DOC, a document explaining how unreal mode
+       works. In a continuation of the recurring theme, Mr. Paccaloni
+       appears to have been completely unaware of the fact that unreal
+       mode had been in use for years, or the growing body of literature
+       about it. It appears that Mr. Paccaloni also independently
+       re-invented the term "unreal mode".
+     * September 1995--Robert R. Collins writes an article (NB: The exact
+       date is uncertain, Sep '95 is a guess based on source file
+       timestamps) titled [62]Descriptor Cache Register Anomalies; this is
+       probably the definitive description of unreal mode. Mr. Collins
+       thoroughly explored the CPU behavior using LOADALL for 386 CPUs,
+       and also using SMM together with an ICE on 486, Pentium, and
+       Pentium Pro CPUs. Mr. Collins showed that real mode is much closer
+       to protected mode than one would be led to believe, and most
+       protections are in fact in place. Mr. Collins also found that CS
+       register attributes are handled differently on different CPUs
+       generations. On older processors, far jumps change the CS
+       attributes as described in the Jan '86 memo, while newer CPUs
+       preserve the CS attributes but ignore them in real mode.
+     * February 1996--In the book Protected Mode Software
+       Architecture (chapter 5, page 61), Tom Shanley purportedly
+       describes "Big Real Mode", yet makes the ridiculous claim that
+       segment offsets are still restricted to 64K (while the segment base
+       can be set to any 32-bit address before returning to real mode).
+       Perhaps this is just shows that unreal mode is not well understood,
+       despite numerous authors' attempts to explain it.
+     * September 20, 1996--Phoenix and Intel publish the POST Memory
+       Manager Specification version 1.0 (PMM specification), which
+       mandates the use of "big real mode" (aka unreal mode). Big Real
+       Mode is not explained in detail, presumably because readers already
+       know how it works. The PMM specification is later adopted by the
+       PXE and PCI firmware 3.0 standards. Intel thus manages the
+       astonishing feat of specifying and mandating the use of unreal
+       mode, while simultaneously denying that it exists. Although the
+       original 1.0 PMM specification may be lost, the touched-up [63]PMM
+       1.01 is available.
+     * August 1998--Dr. Dobb's Journal does not publish an article titled
+       [64]The Segment Descriptor Cache by Robert R. Collins. The article
+       says that "[u]nreal mode has been used commonly since it was
+       discovered on the 80386. Unreal mode is so commonly used, in fact,
+       that Intel has been forced to support this mode as part of legacy
+       8086 behavior, though it's never been documented."
+     * August 2004--(This entry is only included for completeness.) In The
+       Unabridged Pentium 4, Tom Shanley correctly describes unreal mode,
+       saying that it "is sometimes referred to as Big Real Mode, Flat
+       Real Mode, Real Big Mode and UnReal Mode" (italics in original).
+       Unfortunately the author makes new, although minor, incorrect
+       claims, namely that CS:IP and SS:SP are always used in real mode,
+       precluding larger than 64K code and stack segments. Larger than 64K
+       code and stack segments are indeed in practice unusable in unreal
+       mode, but for different reasons.
+
+But... Is Unreal Mode Any Good?
+
+   Yes and no. As a general-purpose programming technique it is unusable,
+   because it absolutely cannot function in V86 mode. Transitions to V86
+   mode always force real-mode compatible segment limits and attributes.
+   That means unreal mode cannot be used together with EMM386 or other DOS
+   memory managers utilizing V86 mode. Unreal mode also cannot be used in
+   the DOS boxes of 386 Enhanced Mode Windows 3.x, in the DOS boxes of
+   OS/2 2.x, Windows NT, or Windows 9x. That is an extremely serious
+   drawback.
+
+   The reason why the Voodoo memory manager in Origin's Ultima VII games
+   is unique is that no one else wanted to repeat the same mistake. The
+   Ultima VII: The Black Isle credits capture the situation rather well:
+   Ultima VII's Voodoo Memory Management System
+
+   On the other hand, when unreal mode can be used, it is very useful.
+   HIMEM.SYS uses unreal mode to speed up extended memory access, and
+   perhaps more importantly, preserve normal interrupt latency. Firmware
+   can and does use unreal mode for accessing memory beyond 1 MB during
+   initialization; it avoids switching between real and protected mode,
+   and in firmware there is no danger of segment limits being reset.
+
+   Basic unreal mode (data segments with up to 4G limits, as well as data
+   segments with non-standard base) has become a standard part of the x86
+   architecture.
+
+Unreal LOADALL
+
+   At least as far back as January 1988, Phoenix 386 BIOS combined two
+   undocumented favorites, using unreal mode to emulate the 286 LOADALL
+   instruction. When handling an invalid opcode fault, the BIOS checks
+   whether the faulting instruction is a 286 LOADALL (opcode 0Fh 05h); if
+   so, it examines the provided LOADALL state buffer at address 800h and
+   checks whether the segment bases for ES and/or DS are 1MB or higher. If
+   so, the BIOS builds descriptors with the appropriate bases, loads them
+   in protected mode, and returns to real mode with these "unreal" values
+   in the segment descriptor cache (segment base other than 16 times
+   segment value). The segment bases will get overwritten as soon as ES or
+   DS gets reloaded in real mode, but that is entirely consistent with
+   LOADALL behavior.
+
+   The LOADALL emulation is very limited, but it is sufficient to support
+   the [65]use of LOADALL in OS/2, and possibly others.
+
+   The detailed history of this method is unclear. What's known is that
+   the first 386 BIOS, shipped with the Compaq DeskPro 386 in 1986, did
+   not use unreal mode. Compaq was clearly on good terms with Intel and
+   got the secret memo describing the 386 LOADALL instruction. The Compaq
+   386 BIOS emulated 286 LOADALL rather accurately using the 386 LOADALL
+   instruction, going at least as far back as September 1986 and
+   continuing to use the same method at least until 1989 (it would no
+   longer work on a 486 CPU).
+
+   IBM's PS/2 Model 80 BIOS did not emulate LOADALL at all, and is
+   therefore uninteresting.
+
+   There are also known to have been more or less no-name 386 systems sold
+   around 1987 which used effectively a 286 BIOS and had no provisions to
+   emulate LOADALL, nor did they use 386 instructions at all.
+
+   It is unknown when Phoenix first introduced unreal mode usage to
+   emulate LOADALL, or if other vendors did that before Phoenix. Clone 386
+   BIOS images from before 1988 are rather difficult to find.
+
+Unreal Mode Compatibility
+
+   Basic unreal mode with extended DS, ES, FS, and/or GS segment limits is
+   widely compatible across all 32-bit x86 CPU implementations. After all
+   that's what is mandated by PMM and by extension, PXE and PCI 3.0
+   Firmware specifications, all standards created with a significant
+   involvement of Intel.
+
+   Extending data segment limits in fact causes shockingly few problems,
+   as evidenced by the fact that HIMEM.SYS does just that. On an 8086,
+   referencing a word at offset 0FFFFh causes a wrap-around and the second
+   byte is fetched from offset zero. The 286 is already incompatible with
+   this behavior, causing a #GP fault. On a 386, any attempt to address
+   beyond 64K likewise causes #GP faults, which are typically fatal.
+   Therefore, functioning software does not do it and extending the
+   segment limit has no visible impact.
+
+   Anything else gets more complicated, and interrupts are the number one
+   enemy. For example, Intel CPUs typically support non-standard data
+   segment attributes; it's possible to make DS read-only, but that won't
+   be terribly useful when running real-mode software. It is likewise
+   possible to set the segment limit smaller than 64K, but that won't make
+   16-bit software happy.
+
+   It is possible to extend the CS limit up to 4GB and use 32-bit EIP in
+   unreal mode. In practice that is not very usable because interrupts in
+   real mode only save 16-bit IP and restore it on return. The German DOS
+   Extra magazine presented a [66]hair-raising scheme to solve the
+   problem, using the CR3 register to store the high word of EIP so that
+   it could be restored on return from interrupts, but this requires
+   software to manually keep track of the high word. In practice, larger
+   than 64K code segments are unusable in unreal mode because the
+   complications very quickly outweigh any benefits unreal mode might
+   have.
+
+   It is also possible to set the D bit in CS, changing the default
+   operand size to 32-bit. This may reduce the size of unreal code if it
+   is largely 32-bit (by obviating the need for overrides). Unfortunately,
+   this again causes serious trouble with interrupts, because existing
+   16-bit code cannot run correctly with the D bit set. It is possible to
+   switch to protected mode, clear the D bit, and execute the 16-bit
+   handler every time an interrupt occurs, and in fact it's [67]exactly
+   what fasm does (or at least did in some versions), but with so much
+   mode switching and complexity, the advantages of unreal mode are
+   rapidly lost.
+
+   Similar trouble strikes when attempting to use larger than 64K stack
+   segments. It is possible, but again destroys compatibility with
+   existing 16-bit real-mode code. The complications are such that one
+   might as well use a regular DOS extender and skip all the unreal mode
+   incompatibilities.
+
+   A larger problem is that the "advanced" aspects of unreal mode may not
+   be implemented identically across CPU generations and vendors,
+   precisely because they have never been documented. It is not specified
+   anywhere exactly which segment attributes are ignored and which are
+   honored in real mode. Protected mode, on the other hand, works
+   consistently.
+
+What Does It All Mean?
+
+   Unreal mode is almost certainly an accident of history, a side effect
+   of the fact that the initial 386 design had no architected way of
+   switching from protected mode back to real mode. Once the technique
+   started being used, instead of clearly documenting how it works, Intel
+   in its typical fashion documented only certain aspects of it, such that
+   only programmers who already know about unreal mode find traces of it
+   in the official documentation.
+
+   On the other hand, Intel did leave enough hints in the public
+   documentation that unreal mode appears to have been independently
+   discovered a number of times. What is fascinating is that Microsoft
+   apparently implemented unreal mode support in HIMEM.SYS and made its
+   source code available before any literature on unreal mode was
+   published. Starting in late 1989, articles describing unreal mode were
+   written without knowing of each other, and likely without knowing of
+   Microsoft's prior published work. Reinventing wheels may be satisfying,
+   but in the end it's just not very productive.
+
+   PS: Images of 386 clone BIOSes (other than Compaq and IBM) from 1987
+   and earlier would be worth checking for LOADALL emulation and possible
+   other unreal mode use.
+
+   Feb 2021 Update: The original 231630-001 datasheet has now been
+   recovered and this post updated accordingly.
+   This entry was posted in [68]386, [69]Corrections, [70]Microsoft,
+   [71]PC history, [72]Undocumented. Bookmark the [73]permalink.
+   [74]<- USB 0.9
+   [75]ANOMALY: meaningless REX prefix used ->
+
+43 Responses to A Brief History of Unreal Mode
+
+    1. [76]Neozeed says:
+       [77]June 15, 2018 at 5:38 am
+       The PCem folks are doing a good job of getting numerous 286/386
+       BIOS running on their framework, they ought to have quite a number
+       of images.
+    2. [78]Yuhong Bao says:
+       [79]June 15, 2018 at 6:35 am
+       The fun thing is that they never changed the LMSW instruction. I
+       wonder why/
+    3. dosfan says:
+       [80]June 15, 2018 at 8:33 am
+       Good article but why were you using fasm ? What fasm is doing
+       (32-bit real mode and relocating the IVT via LIDT) is crazy as it's
+       too much effort for too little gain and too many compatibility
+       issues. I'm not sure which is crazier, that or attempting to use
+       real mode paging on the 386 (which isn't allowed on 486 or later
+       CPUs).
+    4. God says:
+       [81]June 15, 2018 at 1:59 pm
+       Love these sorts of "software archaeology" articles Michal - always
+       informative (and a pleasure) to read. However, something of a typo
+       jumped out at me:
+       >August 1998--Dr. Dobb's Journal does NOT publish an article titled
+       The Segment Descriptor Cache
+    5. Michal Necasek says:
+       [82]June 15, 2018 at 7:07 pm
+       Presumably because someone was calling it in protected mode with
+       the PM bit clear, and expected to stay in protected mode...
+    6. Michal Necasek says:
+       [83]June 15, 2018 at 7:07 pm
+       Oh, there are zillions of BIOS images out there. But 386 BIOS
+       images from 1986-87? Nada...
+    7. Michal Necasek says:
+       [84]June 15, 2018 at 7:09 pm
+       I wasn't, I think the author is certifiably insane But someone else
+       using it made me aware of certain curious behaviors.
+    8. Michal Necasek says:
+       [85]June 15, 2018 at 7:09 pm
+       It's not a typo. I could find no evidence that the article was ever
+       published in DDJ.
+    9. Richard Wells says:
+       [86]June 15, 2018 at 9:18 pm
+       Early 386 BIOSes: Don Maslin's collection of ROMs includes the AMI
+       BIOS copyright 1987. I don't believe anyone has collected the
+       Phoenix BIOS used in the 1986 ALR 386 system.
+       While an interesting collection of the history, I believe you
+       overlooked one minor article. The October 1988 issue of Doctor
+       Dobbs had an article entitled "80386 PROTECTED MODE INITIALIZATION"
+       by Neal Marguiles (Intel employee). That title is a misnomer. It
+       covers the allocation of a 4 GB address space followed by a return
+       to real mode plus some other interesting concepts.
+       [87]http://www.drdobbs.com/80386-protected-mode-initialization/1844
+       08010
+   10. Rugxulo says:
+       [88]June 16, 2018 at 1:37 am
+       Actually, latest stable FASM seems to be 1.73.04, which silently
+       omits the unreal hack, hence you basically have to always use the
+       DPMI fallback nowadays. Not exactly sure why, he didn't (AFAIR)
+       publicly mention dropping it or why, nor whether it will come back
+       (somewhat unlikely, but he was always proud of his hack). Maybe it
+       (again) conflicted with his (Linux) 64-bit hosted version hack
+       (fasm.x64). Dunno, it's very complicated!
+   11. dosfan says:
+       [89]June 16, 2018 at 2:17 am
+       A gross hack like that belongs in a technology demo, not production
+       software.
+       I'm not sure why anyone would bother with fasm in the first place ?
+       If you're writing assembly language code for DOS or Windows then
+       there's no reason not to use MASM which was *the* industry standard
+       or the highly MASM-compatible JWasm (or whatever its successor is).
+   12. [90]Yuhong Bao says:
+       [91]June 18, 2018 at 2:47 am
+       Thinking about it, I wonder if reloading the real mode CS
+       attributes was the main change that allowed switching back to real
+       mode. It is unfortunate that writable code segments did not make
+       even the 80386 BTW.
+   13. techfury90 says:
+       [92]June 18, 2018 at 3:33 am
+       Unreal mode seems to have been known to PC-98 programmers to an
+       extent as well. Oldest reference I can find is from April 1995:
+       [93]http://www.tsg.ne.jp/buho/189/tsg189.html#8086
+       Author may have discovered it independently. There may be earlier
+       examples in books and/or magazines, but I have yet to uncover them.
+       Their description of their first cited source is slightly
+       ambiguous: it's possible that they learned about unreal mode from
+       them. The stumbling block is that I cannot seem to find their name
+       for unreal mode in general. I don't think they adopted the name we
+       assigned to it, if there is even a "well-known" name.
+   14. dosfan says:
+       [94]June 18, 2018 at 5:11 am
+       Why is it referred to as "unreal mode" anyway ? That's a foolish
+       and terrible name. Considering that it is referred to as "big real
+       mode" in an Intel doc and it involves setting the big bit in the
+       segment descriptor that should be the official name (not that it
+       really matters today). Certainly "flat real mode" is reasonable
+       alternative since you have direct access to the entire flat 4GB
+       address space.
+   15. Richard Wells says:
+       [95]June 18, 2018 at 8:53 am
+       "Big real mode" suggests that existing code works exactly the same
+       except that the segments can be larger. "Unreal mode" showcases the
+       differences.
+       Those interested in a more intentional version of a similar concept
+       of accessing 32-bit memory for >64K allocations from 16-bit code
+       could look at 1980 Data General MV 8000 documentation especially
+       the section "MV/8000 C/350 Program Combinations" and the following
+       section "Anomolies."(sic) Some of the issues DG discovered were
+       similar to ones that programmers using Intel chip noticed a decade
+       later.
+   16. [96]Yuhong Bao says:
+       [97]June 18, 2018 at 11:38 am
+       In this case, the only difference is that the segment limit is
+       larger, and existing real mode code do work the same.
+   17. Michal Necasek says:
+       [98]June 18, 2018 at 3:03 pm
+       Hmm, I don't see anything about unreal mode in that article. It
+       only says that "to assure proper operation after returning to real
+       mode, the segment registers must be loaded with real mode type
+       selectors while still in protected mode", which is the official
+       Intel party line. And the sample code does exactly that.
+       I think I looked at that AMI BIOS and it's much newer than 1987.
+       It's somewhat common that the copyright message is older than the
+       BIOS date. The opposite also happens. I'm sure there had to be
+       clone BIOSes in 1986-87 but so far I've been unable to locate any.
+   18. Michal Necasek says:
+       [99]June 18, 2018 at 3:06 pm
+       I know why, It's actually automatic. The unreal mode stuff is only
+       used if the code segment is smaller than 64K. In the newer fasm
+       versions there's more code than that, so the unreal mode code path
+       doesn't get compiled in (or at least not used). For that reason
+       it's very unlikely to come back, because using > 64K unreal mode
+       code segments brings another, much nastier layer of complications.
+   19. Michal Necasek says:
+       [100]June 18, 2018 at 4:12 pm
+       That sounds quite plausible. It would be a silicon change, but a
+       very localized one, and only visible from switching from protected
+       back to real mode.
+   20. Michal Necasek says:
+       [101]June 18, 2018 at 4:18 pm
+       Unreal mode because it's real mode, but not conforming to Intel's
+       definition of real mode. "Big real mode" is descriptive but it's
+       unclear whether it covers 32-bit code segments, or code or stack
+       segments with > 64K limits. Same problem with "flat real mode". I
+       suppose you could call it "not-real" mode, or "non-protected mode",
+       but "unreal mode" is really better.
+       To be clear, at least in this article, I use the term "unreal mode"
+       to mean any non-canonical real mode usage. I don't think the terms
+       "big real mode" or "flat real mode" were used to mean anything
+       other than 4G data segment limits, but there's more to unreal mode
+       than that. For example, unreal mode would cover running with
+       segment limits smaller than 64K (just because it's useless doesn't
+       mean it can't be done).
+   21. Michal Necasek says:
+       [102]June 18, 2018 at 4:20 pm
+       "Breaking the wall", I kind of like that.
+   22. dosfan says:
+       [103]June 18, 2018 at 8:08 pm
+       Big real mode (4GB address space) is the only thing that was ever
+       useful. Changing the default bit of the code segment would break
+       everything. If anything should be called "unreal mode" it's that
+       since it's still real mode per-se (no protections) but no regular
+       16-bit real mode program would run properly.
+   23. Michal Necasek says:
+       [104]June 19, 2018 at 2:02 pm
+       The other thing that was clearly useful (as in widely utilized) was
+       64K segments with bases at or beyond 1MB. The rest is more about
+       understanding how the damn architecture actually works than about
+       having practical value.
+   24. dosfan says:
+       [105]June 19, 2018 at 8:22 pm
+       I thought that particular trick was only done via 286 LOADALL. It
+       is of limited use since interrupts have to be disabled because once
+       the segment register is reloaded the base is changed and access
+       beyond 1MB is lost. Big real mode makes that trick impractical.
+   25. Michal Necasek says:
+       [106]June 19, 2018 at 10:34 pm
+       286 LOADALL... and the emulation thereof on 386s. Just about every
+       BIOS in the late 1980s and in the 1990s does that. Disabling
+       interrupts for a short time is still much better than resetting the
+       CPU, which isn't fast. Big real mode is certainly much better, but
+       doesn't emulate 286 LOADALL.
+   26. M says:
+       [107]June 20, 2018 at 12:16 pm
+       I am wondering if the 64K wrap-around alluded to in the IBM patents
+       could be a clumsy reference to A20-behavior?
+   27. Michal Necasek says:
+       [108]June 20, 2018 at 3:33 pm
+       That would be really clumsy, but as an explanation it makes as much
+       sense as anything
+   28. M says:
+       [109]June 20, 2018 at 10:34 pm
+       @Michal: Yes - and it is inconsistent with what they write about
+       being compatible with only pmode and real-mode apps not relying on
+       the wrap-around etc. and the A20 wrap-around indeed does exist (and
+       would not be possible to emulate w paging in unreal-mode, as is
+       done in V86). But yeah, definitely clumsy
+   29. Richard Wells says:
+       [110]June 20, 2018 at 11:13 pm
+       All 16-bit segments wrap around unless concealed behind the complex
+       logic of a 16-bit huge library. Some programs depended on it;
+       sometimes, it just concealed a bug. IBM's note in the patent on
+       wrap around boils down to keeping the standard 16-bit behavior for
+       all programs except those that specifically expect the big segments
+       of unreal mode. Otherwise, a program may be caught accessing memory
+       it didn't plan to leading to interesting results.
+       [111]https://www.pcjs.org/pubs/pc/reference/microsoft/kb/Q58987/
+       shows that wrap around has nothing to do with A20.
+   30. Michal Necasek says:
+       [112]June 21, 2018 at 12:00 am
+       No, 16-bit segments do not wrap on a 286 or later (except for a
+       special case with stack pushes and pops). If you try to address
+       past the end of a segment, you get a #GP fault. The KB article
+       talks about 16-bit pointers wrapping around, which is a different
+       issue, and more likely than not avoids addressing past the end of a
+       segment.
+   31. Chris M. says:
+       [113]June 21, 2018 at 4:11 am
+       AMI used dates instead of version numbers for their HiFlex BIOS
+       cores, hence why you would see two dates on a POST screen. One was
+       the "core" date/revision, and one was the built date/revision that
+       the vendor created. I think this changed when the WinBIOS was
+       introduced, but so many vendors went running to Award after that
+       disaster that nobody really noticed when they released a new
+       revision!
+       That 1988 Phoenix core was around for a long time, that 486
+       EISA/VLB board has it despite being from 1993! (it also has the
+       stupid 16MB RAM limitation when ROM shadowing is enabled) I think
+       Dell might have used it for a long time on their custom
+       motherboards as well (later stuff was mostly Intel OEM).
+   32. Richard Wells says:
+       [114]June 22, 2018 at 11:45 pm
+       16-bit relative near jumps will be done modulo 64k. That happens
+       according to the documentation even with latest chips. There may be
+       an exception triggered but most real mode systems should wind up
+       ignoring the exception. Otherwise, code involving relative 16-bit
+       jumps would have failed since it required overflow/underflow
+       wrapping to get to the more distant parts of the segment.
+       Memory access is a bit different because Intel decided not to
+       follow the 8086 practice of turning any incorrectly aligned word
+       access into a pair of byte accesses which had a side effect of
+       handling a word that occupied both the first and last bytes of a
+       segment. Speed beat out correctly handling an edge case. Some
+       programs seemed to still work with the exception being ignored
+       because I remember 1990s reports of people finally noticing the
+       exception. (Seemed to work because who knows what was in the second
+       byte of that word.)
+   33. Michal Necasek says:
+       [115]June 24, 2018 at 2:22 pm
+       Relative jumps are signed and sign-extended, so there's normally no
+       overflow and no truncation. #GP faults are fatal, in real mode they
+       lead to hangs (the BIOS does nothing special, the
+       interrupt/exception handler will likely return but it will just
+       re-trigger the exception immediately) or visible fatal errors
+       (EMM386, QEMM, NTVDM).
+       I don't know if with the split-word access speed beat out
+       compatibility or if Intel decided that it was a quirk not worth
+       preserving. At any rate it was a well documented difference between
+       the 8086 and later CPUs; how much software it affected in practice
+       I don't know.
+   34. Pingback: [116]Michael Tsai - Blog - A Brief History of Unreal Mode
+   35. [117]Yuhong Bao says:
+       [118]July 8, 2018 at 1:00 am
+       Thinking about it, I think virtual 8086 mode was designed before
+       they officially supported switching the 80386 to real mode, right?
+   36. Michal Necasek says:
+       [119]July 8, 2018 at 11:31 am
+       Yes, definitely. And the transitions into and out of V86 mode are
+       clean, with no way to leave junk in segment registers. It's
+       apparent that Intel's idea was that with V86 mode, no one needed
+       real mode anymore. But in the absence of a V86 monitor built into
+       the BIOS(?), that wasn't so simple.
+   37. Michal Necasek says:
+       [120]July 10, 2018 at 4:16 pm
+       Found this in a 1985 IEEE Micro paper by El-Ayat and Agarwal called
+       The Intel 80386-Architecture and Implementation: "Real mode is
+       useful for initialization and for configuration of the processor
+       data structures needed to run in native 80386 protected mode. The
+       recommended method for running 8086 code is called virtual 86
+       mode." Intel's idea clearly was that real mode was for bring-up
+       only and no one would want to switch in and out. If you wanted to
+       run 8086 code, you were supposed to do that in a V86 monitor. Yet
+       another plan that did not survive first contact with reality.
+   38. Al Williams says:
+       [121]July 29, 2018 at 7:47 am
+       Nice walk down memory lane. The original DDJ article was written on
+       my Intel Inboard 386 plugged into an XT-style motherboard. This did
+       not switch A20 like a "real" PC/AT and so my original code actually
+       would only work on the Inboard but I didn't know that. Later
+       versions (like in the book) would correct that.
+       I was looking. I got an e-mail from an Italian researcher that had
+       used the technique in some scholarly paper and referenced my
+       article for some kind of SEM or spectroscopy, but I couldn't find
+       that and I don't remember the exact year.
+       In addition -- and again, I can't remember the year -- a guy at
+       Software Development cornered me to tell me how he had started a
+       company based on the mode. I think he was selling a library or
+       something. I don't think he had much success. That had to be right
+       after it published within a year or so. I think he advertised with
+       a small ad in a couple of DDJs.
+       As for Necasek's comment, my DOS Extender PROT did run all the real
+       mode code like BIOS/DOS calls in V86 mode. As far as I know, it may
+       have been the first to do that in a nontrivial way.
+   39. Michal Necasek says:
+       [122]July 31, 2018 at 4:14 pm
+       I saw the updates to your article... as I like to say, the A20 gate
+       is the most expensive bit in history. It never occurred to me but
+       of course the Inboard had to have a different A20 gate control
+       mechanism.
+       Do you remember anything about the unreal mode origins? Was that
+       something you independently discovered, or was it something that
+       was already common knowledge in certain circles?
+   40. [123]Myself says:
+       [124]August 30, 2018 at 12:09 am
+       Bummer, I only have the third edition of the i386 datasheet
+       (231630-003, Nov. 1986).
+       In page 2, there is the "update notice" which lists updated
+       paragraphs.
+       If you have the version -002, maybe there are hints about changes
+       in the paragraphs you are emphasizing.
+   41. [125]Al Williams says:
+       [126]August 30, 2018 at 5:19 pm
+       No I had been tantalized by the discussions in the Intel doc
+       warning you to set up the segment registers before switching. Like
+       you mentioned, they all but told you how to do it and then stopped
+       short. It reminded me of the old story about during prohibition
+       where you could buy a "grape block" that had a warning label:
+       Warning: Do not place in 2 quarts of water in a cool dark place for
+       3 weeks or an illegal alcoholic beverage will result."
+       I have been experimenting with protected mode programs and
+       naturally had to try it out. The lead times in the publishing
+       business at the time means I probably was writing that about the
+       time the PJ article hit the streets if not a little before.
+       Consider it took us 3 months to publish a letter to the editor! By
+       the time an article went through the snail mail, the contracts came
+       back, then the editing and typesetting with galleys in the mail. So
+       I don't remember an exact date, but I do remember being surprised
+       when the PJ article was called out. None of us had heard of it as
+       PJ was not a major competitor so we were not tracking them the way
+       we did some of the other magazines.
+   42. Michal Necasek says:
+       [127]August 31, 2018 at 10:16 am
+       Indeed there is. The -002 edition is at
+       [128]http://www.bitsavers.org/components/intel/80386/231746-001_Int
+       roduction_to_the_80386_Apr86.pdf and page 63 in the PDF (page 2 of
+       the actual datasheet) lists the changes, though with no detail.
+       Some of the relevant sections were "revised", but that's all we
+       know until the -001 edition turns up.
+   43. Michal Necasek says:
+       [129]August 31, 2018 at 12:17 pm
+       Thanks for remembering! And the grape block bit, I've not heard of
+       that. Yeah, the Intel docs were like that, daring developers to see
+       what happens if they don't follow the recipe exactly.
+       It's hard to imagine how long the publishing turnaround was was
+       back then, but that's how it was. Entirely possible that someone
+       wrote an article and someone else independently came up with the
+       same thing before it was published. It's quite likely that the
+       articles in foreign press were also independent discoveries; I dug
+       into the German archives a little but I doubt they were the only
+       ones.
+
+Leave a Reply
+
+   Your email address will not be published. Required fields are marked *
+
+   Comment *
+   _____________________________________________
+   _____________________________________________
+   _____________________________________________
+   _____________________________________________
+   _____________________________________________
+   _____________________________________________
+   _____________________________________________
+   _____________________________________________
+
+   Name * ______________________________
+
+   Email * ______________________________
+
+   Website ______________________________
+
+   Post Comment
+
+   D
+   _____________________________________________
+   _____________________________________________
+   _____________________________________________
+   _____________________________________________
+   _____________________________________________
+   _____________________________________________
+   _____________________________________________
+   _____________________________________________
+
+   This site uses Akismet to reduce spam. [130]Learn how your comment data
+   is processed.
+     * Archives
+          + [131]June 2022
+          + [132]May 2022
+          + [133]April 2022
+          + [134]March 2022
+          + [135]February 2022
+          + [136]January 2022
+          + [137]December 2021
+          + [138]November 2021
+          + [139]October 2021
+          + [140]September 2021
+          + [141]August 2021
+          + [142]July 2021
+          + [143]June 2021
+          + [144]May 2021
+          + [145]April 2021
+          + [146]March 2021
+          + [147]February 2021
+          + [148]January 2021
+          + [149]December 2020
+          + [150]November 2020
+          + [151]October 2020
+          + [152]September 2020
+          + [153]August 2020
+          + [154]July 2020
+          + [155]June 2020
+          + [156]May 2020
+          + [157]April 2020
+          + [158]March 2020
+          + [159]February 2020
+          + [160]January 2020
+          + [161]December 2019
+          + [162]November 2019
+          + [163]October 2019
+          + [164]September 2019
+          + [165]August 2019
+          + [166]July 2019
+          + [167]June 2019
+          + [168]May 2019
+          + [169]April 2019
+          + [170]March 2019
+          + [171]February 2019
+          + [172]January 2019
+          + [173]December 2018
+          + [174]November 2018
+          + [175]October 2018
+          + [176]August 2018
+          + [177]July 2018
+          + [178]June 2018
+          + [179]May 2018
+          + [180]April 2018
+          + [181]March 2018
+          + [182]February 2018
+          + [183]January 2018
+          + [184]December 2017
+          + [185]November 2017
+          + [186]October 2017
+          + [187]August 2017
+          + [188]July 2017
+          + [189]June 2017
+          + [190]May 2017
+          + [191]April 2017
+          + [192]March 2017
+          + [193]February 2017
+          + [194]January 2017
+          + [195]December 2016
+          + [196]November 2016
+          + [197]October 2016
+          + [198]September 2016
+          + [199]August 2016
+          + [200]July 2016
+          + [201]June 2016
+          + [202]May 2016
+          + [203]April 2016
+          + [204]March 2016
+          + [205]February 2016
+          + [206]January 2016
+          + [207]December 2015
+          + [208]November 2015
+          + [209]October 2015
+          + [210]September 2015
+          + [211]August 2015
+          + [212]July 2015
+          + [213]June 2015
+          + [214]May 2015
+          + [215]April 2015
+          + [216]March 2015
+          + [217]February 2015
+          + [218]January 2015
+          + [219]December 2014
+          + [220]November 2014
+          + [221]October 2014
+          + [222]September 2014
+          + [223]August 2014
+          + [224]July 2014
+          + [225]June 2014
+          + [226]May 2014
+          + [227]April 2014
+          + [228]March 2014
+          + [229]February 2014
+          + [230]January 2014
+          + [231]December 2013
+          + [232]November 2013
+          + [233]October 2013
+          + [234]September 2013
+          + [235]August 2013
+          + [236]July 2013
+          + [237]June 2013
+          + [238]May 2013
+          + [239]April 2013
+          + [240]March 2013
+          + [241]February 2013
+          + [242]January 2013
+          + [243]December 2012
+          + [244]November 2012
+          + [245]October 2012
+          + [246]September 2012
+          + [247]August 2012
+          + [248]July 2012
+          + [249]June 2012
+          + [250]May 2012
+          + [251]April 2012
+          + [252]March 2012
+          + [253]February 2012
+          + [254]January 2012
+          + [255]December 2011
+          + [256]November 2011
+          + [257]October 2011
+          + [258]September 2011
+          + [259]August 2011
+          + [260]July 2011
+          + [261]June 2011
+          + [262]May 2011
+          + [263]April 2011
+          + [264]March 2011
+          + [265]January 2011
+          + [266]November 2010
+          + [267]October 2010
+          + [268]August 2010
+          + [269]July 2010
+
+     * Categories
+          + [270]286
+          + [271]386
+          + [272]3Com
+          + [273]3Dfx
+          + [274]486
+          + [275]8086/8088
+          + [276]Adaptec
+          + [277]AGP
+          + [278]AMD
+          + [279]AMD64
+          + [280]Apple
+          + [281]Archiving
+          + [282]Assembler
+          + [283]ATi
+          + [284]BIOS
+          + [285]Books
+          + [286]Borland
+          + [287]BSD
+          + [288]Bugs
+          + [289]BusLogic
+          + [290]C
+          + [291]C&T
+          + [292]CD-ROM
+          + [293]Cirrus Logic
+          + [294]CompactFlash
+          + [295]Compaq
+          + [296]Compression
+          + [297]Conner
+          + [298]Corrections
+          + [299]CP/M
+          + [300]Creative Labs
+          + [301]Crystal Semi
+          + [302]Cyrix
+          + [303]DDR RAM
+          + [304]Debugging
+          + [305]DEC
+          + [306]Development
+          + [307]Digital Research
+          + [308]Documentation
+          + [309]DOS
+          + [310]DOS Extenders
+          + [311]Dream
+          + [312]E-mu
+          + [313]Editors
+          + [314]EISA
+          + [315]Ensoniq
+          + [316]ESDI
+          + [317]Ethernet
+          + [318]Fakes
+          + [319]Fixes
+          + [320]Floppies
+          + [321]Graphics
+          + [322]Hardware Hacks
+          + [323]I18N
+          + [324]IBM
+          + [325]IDE
+          + [326]Intel
+          + [327]Internet
+          + [328]Keyboard
+          + [329]Kryoflux
+          + [330]Kurzweil
+          + [331]LAN Manager
+          + [332]Legal
+          + [333]Linux
+          + [334]MCA
+          + [335]Microsoft
+          + [336]MIDI
+          + [337]NetWare
+          + [338]Networking
+          + [339]NeXTSTEP
+          + [340]NFS
+          + [341]Novell
+          + [342]NT
+          + [343]OS X
+          + [344]OS/2
+          + [345]PC architecture
+          + [346]PC hardware
+          + [347]PC history
+          + [348]PC press
+          + [349]PCI
+          + [350]PCMCIA
+          + [351]Pentium
+          + [352]Pentium 4
+          + [353]Pentium II
+          + [354]Pentium III
+          + [355]Pentium Pro
+          + [356]Plug and Play
+          + [357]PowerPC
+          + [358]Pre-release
+          + [359]PS/2
+          + [360]QNX
+          + [361]Quantum
+          + [362]Random Thoughts
+          + [363]RDRAM
+          + [364]Roland
+          + [365]Ryzen
+          + [366]S3
+          + [367]SCO
+          + [368]SCSI
+          + [369]Seagate
+          + [370]Security
+          + [371]Site Management
+          + [372]SMP
+          + [373]Software Hacks
+          + [374]Solaris
+          + [375]Sound
+          + [376]Sound Blaster
+          + [377]Source code
+          + [378]Standards
+          + [379]Storage
+          + [380]Supermicro
+          + [381]TCP/IP
+          + [382]ThinkPad
+          + [383]Trident
+          + [384]UltraSound
+          + [385]Uncategorized
+          + [386]Undocumented
+          + [387]UNIX
+          + [388]UnixWare
+          + [389]USB
+          + [390]VGA
+          + [391]VirtualBox
+          + [392]Virtualization
+          + [393]VLB
+          + [394]Watcom
+          + [395]Wave Blaster
+          + [396]Western Digital
+          + [397]Windows
+          + [398]Windows 95
+          + [399]Windows XP
+          + [400]Wireless
+          + [401]WordStar
+          + [402]x86
+          + [403]Xenix
+          + [404]Xeon
+          + [405]Yamaha
+
+   [406]OS/2 Museum
+   [407]Proudly powered by WordPress.
+
+References
+
+   Visible links:
+   1. http://www.os2museum.com/wp/feed/
+   2. http://www.os2museum.com/wp/comments/feed/
+   3. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/feed/
+   4. http://www.os2museum.com/wp/wp-json/wp/v2/posts/4169
+   5. http://www.os2museum.com/wp/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fwww.os2museum.com%2Fwp%2Fa-brief-history-of-unreal-mode%2F
+   6. http://www.os2museum.com/wp/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fwww.os2museum.com%2Fwp%2Fa-brief-history-of-unreal-mode%2F&format=xml
+   7. http://www.os2museum.com/wp/
+   8. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#content
+   9. http://www.os2museum.com/wp/
+  10. http://www.os2museum.com/wp/about/
+  11. http://www.os2museum.com/wp/about/wanted-list/
+  12. http://www.os2museum.com/wp/os2-history/
+  13. http://www.os2museum.com/wp/os2-history/os2-beginnings/
+  14. http://www.os2museum.com/wp/os2-history/os2-1-0/
+  15. http://www.os2museum.com/wp/os2-history/os2-1-1/
+  16. http://www.os2museum.com/wp/os2-history/os2-1-2-and-1-3/
+  17. http://www.os2museum.com/wp/os2-history/os2-16-bit-server/
+  18. http://www.os2museum.com/wp/os2-history/os2-2-0/
+  19. http://www.os2museum.com/wp/os2-history/os2-2-1-and-2-11/
+  20. http://www.os2museum.com/wp/os2-history/os2-warp/
+  21. http://www.os2museum.com/wp/os2-history/os2-warp-powerpc-edition/
+  22. http://www.os2museum.com/wp/os2-history/os2-warp-4/
+  23. http://www.os2museum.com/wp/os2-history/os2-timeline/
+  24. http://www.os2museum.com/wp/os2-history/os2-library/
+  25. http://www.os2museum.com/wp/os2-history/os2-library/os2-1-x-sdk/
+  26. http://www.os2museum.com/wp/os2-history/os2-library/os2-1-x-programming/
+  27. http://www.os2museum.com/wp/os2-history/os2-library/os2-2-0-technical-library/
+  28. http://www.os2museum.com/wp/os2-history/os2-videos-1987/
+  29. http://www.os2museum.com/wp/dos/
+  30. http://www.os2museum.com/wp/dos/dos-beginnings/
+  31. http://www.os2museum.com/wp/dos/dos-1-0-and-1-1/
+  32. http://www.os2museum.com/wp/dos/dos-2-0-and-2-1/
+  33. http://www.os2museum.com/wp/dos/dos-3-0-3-2/
+  34. http://www.os2museum.com/wp/dos/dos-3-3/
+  35. http://www.os2museum.com/wp/dos/dos-4-0/
+  36. http://www.os2museum.com/wp/dos/dos-library/
+  37. http://www.os2museum.com/wp/netware-history/
+  38. http://www.os2museum.com/wp/netware-history/netware-timeline/
+  39. http://www.os2museum.com/wp/netware-history/netware-library/
+  40. http://www.os2museum.com/wp/windows-history/
+  41. http://www.os2museum.com/wp/windows-history/windows-library/
+  42. http://www.os2museum.com/wp/pc-unix-history/
+  43. http://www.os2museum.com/wp/pc-unix-history/solaris-2-1-for-x86/
+  44. http://www.os2museum.com/wp/usb-0-9/
+  45. http://www.os2museum.com/wp/anomaly-meaningless-rex-prefix-used/
+  46. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/
+  47. http://www.os2museum.com/wp/author/michaln/
+  48. https://en.wikipedia.org/wiki/FASM
+  49. https://books.google.de/books?id=tSLe3yMjc-AC&lpg=PP1&pg=PT437#v=onepage&q&f=false
+  50. http://www.gaby.de/ftp/pub/win3x/archive/softlib/xms.exe
+  51. http://www.megalextoria.com/usenet-archive/news095f1/b118/comp/binaries/ibm/pc/d/00002158.html
+  52. https://archives.scovetta.com/pub/power_programming/MICROSFT/
+  53. https://vetusware.com/download/Assembly%20Language%20Programming%20for%20the%20Intel%2080XXX%20Family%201/?id=15869
+  54. https://link.springer.com/content/pdf/10.3758/BF03203592.pdf
+  55. https://en.wikipedia.org/wiki/Ultima_VII:_The_Black_Gate
+  56. https://books.google.com/books?id=gCfzPMoPJWgC&pg=PA304&lpg=PA304&source=bl&ots=rnelM7Nq98&sig=NwfNst9V6yPrUqTMu4oSayD2594&hl=en&sa=X&ved=0ahUKEwinjISbjKjbAhXQZ1AKHfF3D3UQ6AEIPDAC#v=onepage&f=false
+  57. https://patents.google.com/patent/US5642491
+  58. http://ftp.lanet.lv/ftp/mirror/x2ftp/msdos/programming/memory/
+  59. http://ftp.lanet.lv/ftp/mirror/x2ftp/msdos/programming/libs/
+  60. http://dgi_il.tripod.com/gemmis.txt
+  61. https://ftp.sunet.se/mirror/archive/ftp.sunet.se/pub/simtelnet/msdos/asmutl/unreal10.zip
+  62. http://www.rcollins.org/Productivity/DescriptorCache.html
+  63. https://web.archive.org/web/20051111084304/http://www.phoenix.com/NR/rdonlyres/873A00CF-33AC-4775-B77E-08E7B9754993/0/specspmm101.pdf
+  64. http://www.rcollins.org/ddj/Aug98/Aug98.html
+  65. http://www.os2museum.com/wp/more-on-loadall-and-os2/
+  66. http://www.delorie.com/djgpp/doc/rbinter/it/91/37.html
+  67. https://board.flatassembler.net/topic.php?t=11940
+  68. http://www.os2museum.com/wp/category/386/
+  69. http://www.os2museum.com/wp/category/corrections/
+  70. http://www.os2museum.com/wp/category/microsoft/
+  71. http://www.os2museum.com/wp/category/pc-history/
+  72. http://www.os2museum.com/wp/category/undocumented/
+  73. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/
+  74. http://www.os2museum.com/wp/usb-0-9/
+  75. http://www.os2museum.com/wp/anomaly-meaningless-rex-prefix-used/
+  76. http://virtuallyfun.com/
+  77. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-347786
+  78. https://yuhongbao.blogspot.com/
+  79. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-347787
+  80. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-347790
+  81. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-347796
+  82. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-347801
+  83. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-347802
+  84. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-347803
+  85. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-347804
+  86. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-347808
+  87. http://www.drdobbs.com/80386-protected-mode-initialization/184408010
+  88. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-347810
+  89. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-347812
+  90. https://yuhongbao.blogspot.com/
+  91. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-347858
+  92. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-347860
+  93. http://www.tsg.ne.jp/buho/189/tsg189.html#8086
+  94. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-347861
+  95. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-347862
+  96. https://yuhongbao.blogspot.com/
+  97. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-347864
+  98. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-347865
+  99. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-347866
+ 100. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-347867
+ 101. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-347868
+ 102. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-347869
+ 103. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-347872
+ 104. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-347964
+ 105. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-347974
+ 106. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-347978
+ 107. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-347996
+ 108. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-348003
+ 109. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-348035
+ 110. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-348037
+ 111. https://www.pcjs.org/pubs/pc/reference/microsoft/kb/Q58987/
+ 112. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-348040
+ 113. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-348048
+ 114. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-348117
+ 115. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-348188
+ 116. https://mjtsai.com/blog/2018/07/03/a-brief-history-of-unreal-mode/
+ 117. https://yuhongbao.blogspot.com/
+ 118. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-348565
+ 119. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-348575
+ 120. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-348630
+ 121. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-348979
+ 122. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-349002
+ 123. http://temlib.org/
+ 124. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-349848
+ 125. http://www.awce.com/
+ 126. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-349870
+ 127. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-349883
+ 128. http://www.bitsavers.org/components/intel/80386/231746-001_Introduction_to_the_80386_Apr86.pdf
+ 129. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/#comment-349890
+ 130. https://akismet.com/privacy/
+ 131. http://www.os2museum.com/wp/2022/06/
+ 132. http://www.os2museum.com/wp/2022/05/
+ 133. http://www.os2museum.com/wp/2022/04/
+ 134. http://www.os2museum.com/wp/2022/03/
+ 135. http://www.os2museum.com/wp/2022/02/
+ 136. http://www.os2museum.com/wp/2022/01/
+ 137. http://www.os2museum.com/wp/2021/12/
+ 138. http://www.os2museum.com/wp/2021/11/
+ 139. http://www.os2museum.com/wp/2021/10/
+ 140. http://www.os2museum.com/wp/2021/09/
+ 141. http://www.os2museum.com/wp/2021/08/
+ 142. http://www.os2museum.com/wp/2021/07/
+ 143. http://www.os2museum.com/wp/2021/06/
+ 144. http://www.os2museum.com/wp/2021/05/
+ 145. http://www.os2museum.com/wp/2021/04/
+ 146. http://www.os2museum.com/wp/2021/03/
+ 147. http://www.os2museum.com/wp/2021/02/
+ 148. http://www.os2museum.com/wp/2021/01/
+ 149. http://www.os2museum.com/wp/2020/12/
+ 150. http://www.os2museum.com/wp/2020/11/
+ 151. http://www.os2museum.com/wp/2020/10/
+ 152. http://www.os2museum.com/wp/2020/09/
+ 153. http://www.os2museum.com/wp/2020/08/
+ 154. http://www.os2museum.com/wp/2020/07/
+ 155. http://www.os2museum.com/wp/2020/06/
+ 156. http://www.os2museum.com/wp/2020/05/
+ 157. http://www.os2museum.com/wp/2020/04/
+ 158. http://www.os2museum.com/wp/2020/03/
+ 159. http://www.os2museum.com/wp/2020/02/
+ 160. http://www.os2museum.com/wp/2020/01/
+ 161. http://www.os2museum.com/wp/2019/12/
+ 162. http://www.os2museum.com/wp/2019/11/
+ 163. http://www.os2museum.com/wp/2019/10/
+ 164. http://www.os2museum.com/wp/2019/09/
+ 165. http://www.os2museum.com/wp/2019/08/
+ 166. http://www.os2museum.com/wp/2019/07/
+ 167. http://www.os2museum.com/wp/2019/06/
+ 168. http://www.os2museum.com/wp/2019/05/
+ 169. http://www.os2museum.com/wp/2019/04/
+ 170. http://www.os2museum.com/wp/2019/03/
+ 171. http://www.os2museum.com/wp/2019/02/
+ 172. http://www.os2museum.com/wp/2019/01/
+ 173. http://www.os2museum.com/wp/2018/12/
+ 174. http://www.os2museum.com/wp/2018/11/
+ 175. http://www.os2museum.com/wp/2018/10/
+ 176. http://www.os2museum.com/wp/2018/08/
+ 177. http://www.os2museum.com/wp/2018/07/
+ 178. http://www.os2museum.com/wp/2018/06/
+ 179. http://www.os2museum.com/wp/2018/05/
+ 180. http://www.os2museum.com/wp/2018/04/
+ 181. http://www.os2museum.com/wp/2018/03/
+ 182. http://www.os2museum.com/wp/2018/02/
+ 183. http://www.os2museum.com/wp/2018/01/
+ 184. http://www.os2museum.com/wp/2017/12/
+ 185. http://www.os2museum.com/wp/2017/11/
+ 186. http://www.os2museum.com/wp/2017/10/
+ 187. http://www.os2museum.com/wp/2017/08/
+ 188. http://www.os2museum.com/wp/2017/07/
+ 189. http://www.os2museum.com/wp/2017/06/
+ 190. http://www.os2museum.com/wp/2017/05/
+ 191. http://www.os2museum.com/wp/2017/04/
+ 192. http://www.os2museum.com/wp/2017/03/
+ 193. http://www.os2museum.com/wp/2017/02/
+ 194. http://www.os2museum.com/wp/2017/01/
+ 195. http://www.os2museum.com/wp/2016/12/
+ 196. http://www.os2museum.com/wp/2016/11/
+ 197. http://www.os2museum.com/wp/2016/10/
+ 198. http://www.os2museum.com/wp/2016/09/
+ 199. http://www.os2museum.com/wp/2016/08/
+ 200. http://www.os2museum.com/wp/2016/07/
+ 201. http://www.os2museum.com/wp/2016/06/
+ 202. http://www.os2museum.com/wp/2016/05/
+ 203. http://www.os2museum.com/wp/2016/04/
+ 204. http://www.os2museum.com/wp/2016/03/
+ 205. http://www.os2museum.com/wp/2016/02/
+ 206. http://www.os2museum.com/wp/2016/01/
+ 207. http://www.os2museum.com/wp/2015/12/
+ 208. http://www.os2museum.com/wp/2015/11/
+ 209. http://www.os2museum.com/wp/2015/10/
+ 210. http://www.os2museum.com/wp/2015/09/
+ 211. http://www.os2museum.com/wp/2015/08/
+ 212. http://www.os2museum.com/wp/2015/07/
+ 213. http://www.os2museum.com/wp/2015/06/
+ 214. http://www.os2museum.com/wp/2015/05/
+ 215. http://www.os2museum.com/wp/2015/04/
+ 216. http://www.os2museum.com/wp/2015/03/
+ 217. http://www.os2museum.com/wp/2015/02/
+ 218. http://www.os2museum.com/wp/2015/01/
+ 219. http://www.os2museum.com/wp/2014/12/
+ 220. http://www.os2museum.com/wp/2014/11/
+ 221. http://www.os2museum.com/wp/2014/10/
+ 222. http://www.os2museum.com/wp/2014/09/
+ 223. http://www.os2museum.com/wp/2014/08/
+ 224. http://www.os2museum.com/wp/2014/07/
+ 225. http://www.os2museum.com/wp/2014/06/
+ 226. http://www.os2museum.com/wp/2014/05/
+ 227. http://www.os2museum.com/wp/2014/04/
+ 228. http://www.os2museum.com/wp/2014/03/
+ 229. http://www.os2museum.com/wp/2014/02/
+ 230. http://www.os2museum.com/wp/2014/01/
+ 231. http://www.os2museum.com/wp/2013/12/
+ 232. http://www.os2museum.com/wp/2013/11/
+ 233. http://www.os2museum.com/wp/2013/10/
+ 234. http://www.os2museum.com/wp/2013/09/
+ 235. http://www.os2museum.com/wp/2013/08/
+ 236. http://www.os2museum.com/wp/2013/07/
+ 237. http://www.os2museum.com/wp/2013/06/
+ 238. http://www.os2museum.com/wp/2013/05/
+ 239. http://www.os2museum.com/wp/2013/04/
+ 240. http://www.os2museum.com/wp/2013/03/
+ 241. http://www.os2museum.com/wp/2013/02/
+ 242. http://www.os2museum.com/wp/2013/01/
+ 243. http://www.os2museum.com/wp/2012/12/
+ 244. http://www.os2museum.com/wp/2012/11/
+ 245. http://www.os2museum.com/wp/2012/10/
+ 246. http://www.os2museum.com/wp/2012/09/
+ 247. http://www.os2museum.com/wp/2012/08/
+ 248. http://www.os2museum.com/wp/2012/07/
+ 249. http://www.os2museum.com/wp/2012/06/
+ 250. http://www.os2museum.com/wp/2012/05/
+ 251. http://www.os2museum.com/wp/2012/04/
+ 252. http://www.os2museum.com/wp/2012/03/
+ 253. http://www.os2museum.com/wp/2012/02/
+ 254. http://www.os2museum.com/wp/2012/01/
+ 255. http://www.os2museum.com/wp/2011/12/
+ 256. http://www.os2museum.com/wp/2011/11/
+ 257. http://www.os2museum.com/wp/2011/10/
+ 258. http://www.os2museum.com/wp/2011/09/
+ 259. http://www.os2museum.com/wp/2011/08/
+ 260. http://www.os2museum.com/wp/2011/07/
+ 261. http://www.os2museum.com/wp/2011/06/
+ 262. http://www.os2museum.com/wp/2011/05/
+ 263. http://www.os2museum.com/wp/2011/04/
+ 264. http://www.os2museum.com/wp/2011/03/
+ 265. http://www.os2museum.com/wp/2011/01/
+ 266. http://www.os2museum.com/wp/2010/11/
+ 267. http://www.os2museum.com/wp/2010/10/
+ 268. http://www.os2museum.com/wp/2010/08/
+ 269. http://www.os2museum.com/wp/2010/07/
+ 270. http://www.os2museum.com/wp/category/286/
+ 271. http://www.os2museum.com/wp/category/386/
+ 272. http://www.os2museum.com/wp/category/3com/
+ 273. http://www.os2museum.com/wp/category/3dfx/
+ 274. http://www.os2museum.com/wp/category/486/
+ 275. http://www.os2museum.com/wp/category/8086-8088/
+ 276. http://www.os2museum.com/wp/category/adaptec/
+ 277. http://www.os2museum.com/wp/category/agp/
+ 278. http://www.os2museum.com/wp/category/amd/
+ 279. http://www.os2museum.com/wp/category/amd64/
+ 280. http://www.os2museum.com/wp/category/apple/
+ 281. http://www.os2museum.com/wp/category/archiving/
+ 282. http://www.os2museum.com/wp/category/assembler/
+ 283. http://www.os2museum.com/wp/category/ati/
+ 284. http://www.os2museum.com/wp/category/bios/
+ 285. http://www.os2museum.com/wp/category/books/
+ 286. http://www.os2museum.com/wp/category/borland/
+ 287. http://www.os2museum.com/wp/category/bsd/
+ 288. http://www.os2museum.com/wp/category/bugs/
+ 289. http://www.os2museum.com/wp/category/buslogic/
+ 290. http://www.os2museum.com/wp/category/c/
+ 291. http://www.os2museum.com/wp/category/ct/
+ 292. http://www.os2museum.com/wp/category/cd-rom/
+ 293. http://www.os2museum.com/wp/category/cirrus-logic/
+ 294. http://www.os2museum.com/wp/category/compactflash/
+ 295. http://www.os2museum.com/wp/category/compaq/
+ 296. http://www.os2museum.com/wp/category/compression/
+ 297. http://www.os2museum.com/wp/category/conner/
+ 298. http://www.os2museum.com/wp/category/corrections/
+ 299. http://www.os2museum.com/wp/category/cp-m/
+ 300. http://www.os2museum.com/wp/category/creative-labs/
+ 301. http://www.os2museum.com/wp/category/crystal-semi/
+ 302. http://www.os2museum.com/wp/category/cyrix/
+ 303. http://www.os2museum.com/wp/category/ddr-ram/
+ 304. http://www.os2museum.com/wp/category/debugging/
+ 305. http://www.os2museum.com/wp/category/dec/
+ 306. http://www.os2museum.com/wp/category/development/
+ 307. http://www.os2museum.com/wp/category/digital-research/
+ 308. http://www.os2museum.com/wp/category/documentation/
+ 309. http://www.os2museum.com/wp/category/dos/
+ 310. http://www.os2museum.com/wp/category/dos-extenders/
+ 311. http://www.os2museum.com/wp/category/dream/
+ 312. http://www.os2museum.com/wp/category/e-mu/
+ 313. http://www.os2museum.com/wp/category/editors/
+ 314. http://www.os2museum.com/wp/category/eisa/
+ 315. http://www.os2museum.com/wp/category/ensoniq/
+ 316. http://www.os2museum.com/wp/category/esdi/
+ 317. http://www.os2museum.com/wp/category/ethernet/
+ 318. http://www.os2museum.com/wp/category/fakes/
+ 319. http://www.os2museum.com/wp/category/fixes/
+ 320. http://www.os2museum.com/wp/category/floppies/
+ 321. http://www.os2museum.com/wp/category/graphics/
+ 322. http://www.os2museum.com/wp/category/hardware-hacks/
+ 323. http://www.os2museum.com/wp/category/i18n/
+ 324. http://www.os2museum.com/wp/category/ibm/
+ 325. http://www.os2museum.com/wp/category/ide/
+ 326. http://www.os2museum.com/wp/category/intel/
+ 327. http://www.os2museum.com/wp/category/internet/
+ 328. http://www.os2museum.com/wp/category/keyboard/
+ 329. http://www.os2museum.com/wp/category/kryoflux/
+ 330. http://www.os2museum.com/wp/category/kurzweil/
+ 331. http://www.os2museum.com/wp/category/lan-manager/
+ 332. http://www.os2museum.com/wp/category/legal/
+ 333. http://www.os2museum.com/wp/category/linux/
+ 334. http://www.os2museum.com/wp/category/mca/
+ 335. http://www.os2museum.com/wp/category/microsoft/
+ 336. http://www.os2museum.com/wp/category/midi/
+ 337. http://www.os2museum.com/wp/category/netware/
+ 338. http://www.os2museum.com/wp/category/networking/
+ 339. http://www.os2museum.com/wp/category/nextstep/
+ 340. http://www.os2museum.com/wp/category/nfs/
+ 341. http://www.os2museum.com/wp/category/novell/
+ 342. http://www.os2museum.com/wp/category/nt/
+ 343. http://www.os2museum.com/wp/category/os-x/
+ 344. http://www.os2museum.com/wp/category/os2/
+ 345. http://www.os2museum.com/wp/category/pc-architecture/
+ 346. http://www.os2museum.com/wp/category/pc-hardware/
+ 347. http://www.os2museum.com/wp/category/pc-history/
+ 348. http://www.os2museum.com/wp/category/pc-press/
+ 349. http://www.os2museum.com/wp/category/pci/
+ 350. http://www.os2museum.com/wp/category/pcmcia/
+ 351. http://www.os2museum.com/wp/category/pentium/
+ 352. http://www.os2museum.com/wp/category/pentium-4/
+ 353. http://www.os2museum.com/wp/category/pentium-ii/
+ 354. http://www.os2museum.com/wp/category/pentium-iii/
+ 355. http://www.os2museum.com/wp/category/pentium-pro/
+ 356. http://www.os2museum.com/wp/category/plug-and-play/
+ 357. http://www.os2museum.com/wp/category/powerpc/
+ 358. http://www.os2museum.com/wp/category/pre-release/
+ 359. http://www.os2museum.com/wp/category/ps2/
+ 360. http://www.os2museum.com/wp/category/qnx/
+ 361. http://www.os2museum.com/wp/category/quantum/
+ 362. http://www.os2museum.com/wp/category/random-thoughts/
+ 363. http://www.os2museum.com/wp/category/rdram/
+ 364. http://www.os2museum.com/wp/category/roland/
+ 365. http://www.os2museum.com/wp/category/ryzen/
+ 366. http://www.os2museum.com/wp/category/s3/
+ 367. http://www.os2museum.com/wp/category/sco/
+ 368. http://www.os2museum.com/wp/category/scsi/
+ 369. http://www.os2museum.com/wp/category/seagate/
+ 370. http://www.os2museum.com/wp/category/security/
+ 371. http://www.os2museum.com/wp/category/site-management/
+ 372. http://www.os2museum.com/wp/category/smp/
+ 373. http://www.os2museum.com/wp/category/software-hacks/
+ 374. http://www.os2museum.com/wp/category/solaris/
+ 375. http://www.os2museum.com/wp/category/sound/
+ 376. http://www.os2museum.com/wp/category/sound-blaster/
+ 377. http://www.os2museum.com/wp/category/source-code/
+ 378. http://www.os2museum.com/wp/category/standards/
+ 379. http://www.os2museum.com/wp/category/storage/
+ 380. http://www.os2museum.com/wp/category/supermicro/
+ 381. http://www.os2museum.com/wp/category/tcp-ip/
+ 382. http://www.os2museum.com/wp/category/thinkpad/
+ 383. http://www.os2museum.com/wp/category/trident/
+ 384. http://www.os2museum.com/wp/category/ultrasound/
+ 385. http://www.os2museum.com/wp/category/uncategorized/
+ 386. http://www.os2museum.com/wp/category/undocumented/
+ 387. http://www.os2museum.com/wp/category/unix/
+ 388. http://www.os2museum.com/wp/category/unixware/
+ 389. http://www.os2museum.com/wp/category/usb/
+ 390. http://www.os2museum.com/wp/category/vga/
+ 391. http://www.os2museum.com/wp/category/virtualbox/
+ 392. http://www.os2museum.com/wp/category/virtualization/
+ 393. http://www.os2museum.com/wp/category/vlb/
+ 394. http://www.os2museum.com/wp/category/watcom/
+ 395. http://www.os2museum.com/wp/category/wave-blaster/
+ 396. http://www.os2museum.com/wp/category/western-digital/
+ 397. http://www.os2museum.com/wp/category/windows/
+ 398. http://www.os2museum.com/wp/category/windows-95/
+ 399. http://www.os2museum.com/wp/category/windows-xp/
+ 400. http://www.os2museum.com/wp/category/wireless/
+ 401. http://www.os2museum.com/wp/category/wordstar/
+ 402. http://www.os2museum.com/wp/category/x86/
+ 403. http://www.os2museum.com/wp/category/xenix/
+ 404. http://www.os2museum.com/wp/category/xeon/
+ 405. http://www.os2museum.com/wp/category/yamaha/
+ 406. http://www.os2museum.com/wp/
+ 407. https://wordpress.org/
+
+   Hidden links:
+ 409. http://www.os2museum.com/wp/a-brief-history-of-unreal-mode/ultima-vii-voodoo/
diff --git a/floppy/doc/www.spinics.net_lists_linux-integrity_msg14580.txt b/floppy/doc/www.spinics.net_lists_linux-integrity_msg14580.txt
new file mode 100644
index 0000000..3d25656
--- /dev/null
+++ b/floppy/doc/www.spinics.net_lists_linux-integrity_msg14580.txt
@@ -0,0 +1,188 @@
+   #[1]Linux Integrity
+
+   _________________________ Search
+
+ Re: Fwd: How to extract linux kernel version information from a kernel image?
+
+   [[2]Date Prev][[3]Date Next][[4]Thread Prev][[5]Thread Next][[6]Date
+   Index][[7]Thread Index]
+
+
+   [INS: :INS]
+     __________________________________________________________________
+
+     * Subject: Re: Fwd: How to extract linux kernel version information
+       from a kernel image?
+     * From: Raphael Gianotti 
+     * Date: Mon, 28 Sep 2020 15:31:38 -0700
+     * In-reply-to: <[8]a1c877b3-9f99-04a6-2f21-495fc62d0591@unh.edu>
+     * User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0)
+       Gecko/20100101 Thunderbird/68.12.0
+     __________________________________________________________________
+
+On 9/25/2020 4:06 PM, Kayaalp, Mehmet wrote:
+
+On 9/24/20 4:05 PM, Raphael Gianotti wrote:
+
+Forwarding this here since the final intent here is an IMA related
+change to see if anyone has any suggestions.
+
+
+-------- Forwarded Message --------
+Subject:        How to extract linux kernel version information from a
+kernel
+image?
+Date:   Fri, 18 Sep 2020 12:47:13 -0700
+From:   Raphael Gianotti 
+To:     linux-kernel@xxxxxxxxxxxxxxx
+
+
+
+Hi,
+
+I have been investigating a way to extract the version strong from a
+kernel image (e.g., vmlinux). The version string I've been looking at is
+essentially the linux_banner symbol.
+
+We'll use IMA to measure the version string on the kexec system call,
+providing a way for an attestation service, for instance, to attest to
+what version of the kernel is running on the client.
+
+I haven't found a way to extract the version from the image that isn't
+simply searching the whole image for it. I was hoping someone here may
+be able to point me to a better approach to retrieve the linux_banner
+symbol value from an image or  any existing kernel code that does
+similar parsing.
+
+If that matters for any suggestions, my current focus is on ARM64 images
+(if the code ends up having to be arch specific).
+
+Thanks,
+
+-Raphael
+
+
+In Linux/x86 Boot Protocol [1], the kernel header contains a pointer to
+the kernel_version string at offset 020E (2-byte value):
+
+      # hexdump -s 0x020E -n 2 -e '/2 "%x"'
+/boot/vmlinuz-5.4.0-48-generic; echo
+      3900
+
+Starting after the header (512 bytes), the string is 0x3900 bytes into
+the vmlinuz file:
+
+      # dd bs=1 skip=$((0x3900+512)) if=/boot/vmlinuz-5.4.0-48-generic
+|tr -s '\000' '\n'|head -n 1
+      5.4.0-48-generic (buildd@lcy01-amd64-010) #52-Ubuntu SMP Thu Sep 10
+10:58:49 UTC 2020
+
+In ARM64, the vmlinux is stripped of symbols and compressed into the
+bzImage. To find the linux_banner, System.map file is needed:
+
+      # grep ' linux_banner$' /boot/System.map-5.4.0-48-generic
+      ffff800010df00d0 R linux_banner
+
+The offset into the file can be found by subtracting the load address:
+
+      # grep ' _head$' /boot/System.map-5.4.0-48-generic
+      ffff800010080000 t _head
+
+      # zcat /boot/vmlinuz-5.4.0-48-generic | dd bs=1
+skip=$((0xffff800010df00d0-0xffff800010080000)) | tr -s '\000' '\n' |
+head -n 1
+      Linux version 5.4.0-48-generic (buildd@bos02-arm64-053) (gcc
+version 9.3.0 (Ubuntu 9.3.0-10ubuntu2)) #52-Ubuntu SMP Thu Sep 10
+11:01:50 UTC 2020 (Ubuntu 5.4.0-48.52-generic 5.4.60)
+
+[1]: [9]https://www.kernel.org/doc/html/latest/x86/boot.html
+
+Mehmet
+
+
+
+   Regarding the arm64 vmlinux files, I've noticed in some, if you run the
+   file command for them in the terminal, it does give a "not stripped"
+   string in its result. Also, for those files, objdump does print out
+   symbols, including linux_banner. I've found that out last Friday and I
+   am in the process of looking at what the code for objdump to see how it
+   finds the symbols there and see if I can get its value from the image.
+   I wonder if I am missing something and that reported linux_banner
+   symbol I get from objdump is not what I think it is, so do let me know
+   if I am just wasting my time in investigating that when it comes to
+   arm64.
+
+Thanks,
+
+Raphael
+
+
+
+     __________________________________________________________________
+
+   [[10]Date Prev][[11]Date Next][[12]Thread Prev][[13]Thread
+   Next][[14]Date Index][[15]Thread Index]
+     * References:
+          + [16]Fwd: How to extract linux kernel version information from
+            a kernel image?
+               o From: Raphael Gianotti
+          + [17]Re: Fwd: How to extract linux kernel version information
+            from a kernel image?
+               o From: Kayaalp, Mehmet
+
+     * Prev by Date: [18]Re: [PATCH] Fix Atmel TPM crash caused by too
+       frequent queries
+     * Next by Date: [19]More interrupt problems with TIS TPM
+     * Previous by thread: [20]Re: Fwd: How to extract linux kernel
+       version information from a kernel image?
+     * Next by thread: [21][PATCH 0/4] TPM 2.0 fixes in IMA tests
+     * Index(es):
+          + [22]Date
+          + [23]Thread
+
+               [24][Index of Archives]     [25][Linux Kernel]
+   [26][Linux Kernel Hardening]     [27][Linux NFS]     [28][Linux NILFS]
+                 [29][Linux USB Devel]     [30][Video for Linux]
+    [31][Linux Audio Users]     [32][Yosemite News]     [33][Linux SCSI]
+     __________________________________________________________________
+
+   [INS: :INS]
+
+     [34]Powered by Linux
+
+References
+
+   1. https://feeds.feedburner.com/LinuxIntegrity
+   2. https://www.spinics.net/lists/linux-integrity/msg14579.html
+   3. https://www.spinics.net/lists/linux-integrity/msg14581.html
+   4. https://www.spinics.net/lists/linux-integrity/msg14511.html
+   5. https://www.spinics.net/lists/linux-integrity/msg14496.html
+   6. https://www.spinics.net/lists/linux-integrity/mail5.html#14580
+   7. https://www.spinics.net/lists/linux-integrity/thrd5.html#14580
+   8. https://www.spinics.net/lists/linux-integrity/msg14511.html
+   9. https://www.kernel.org/doc/html/latest/x86/boot.html
+  10. https://www.spinics.net/lists/linux-integrity/msg14579.html
+  11. https://www.spinics.net/lists/linux-integrity/msg14581.html
+  12. https://www.spinics.net/lists/linux-integrity/msg14511.html
+  13. https://www.spinics.net/lists/linux-integrity/msg14496.html
+  14. https://www.spinics.net/lists/linux-integrity/mail5.html#14580
+  15. https://www.spinics.net/lists/linux-integrity/thrd5.html#14580
+  16. https://www.spinics.net/lists/linux-integrity/msg14473.html
+  17. https://www.spinics.net/lists/linux-integrity/msg14511.html
+  18. https://www.spinics.net/lists/linux-integrity/msg14579.html
+  19. https://www.spinics.net/lists/linux-integrity/msg14581.html
+  20. https://www.spinics.net/lists/linux-integrity/msg14511.html
+  21. https://www.spinics.net/lists/linux-integrity/msg14496.html
+  22. https://www.spinics.net/lists/linux-integrity/mail5.html#14580
+  23. https://www.spinics.net/lists/linux-integrity/thrd5.html#14580
+  24. https://www.spinics.net/lists/
+  25. https://www.spinics.net/lists/kernel/
+  26. https://www.spinics.net/lists/kernel-hardening/
+  27. https://www.spinics.net/lists/linux-nfs/
+  28. https://www.spinics.net/lists/linux-nilfs/
+  29. https://www.spinics.net/lists/linux-usb/
+  30. https://www.spinics.net/lists/vfl/
+  31. https://www.spinics.net/lists/linux-audio-users/
+  32. https://yosemitenews.info/
+  33. https://www.spinics.net/lists/linux-scsi/
+  34. https://www.spinics.net/lists/
diff --git a/floppy/doc/yeokhengmeng.com_2018_01_make-the-486-great-again.txt b/floppy/doc/yeokhengmeng.com_2018_01_make-the-486-great-again.txt
new file mode 100644
index 0000000..bb36547
--- /dev/null
+++ b/floppy/doc/yeokhengmeng.com_2018_01_make-the-486-great-again.txt
@@ -0,0 +1,747 @@
+                                    [1]post
+
+   [2]Home [3]Aviation [4]Retrocomputing [5]Categories [6]Favourite Quotes
+       [7]About
+
+   [8]en
+   [9]English (en) [10] (zh)
+
+   [11]Kheng Meng profile pic
+
+Yeo Kheng Meng
+
+   Maker, Coder, Private Pilot, Retrocomputing Enthusiast
+     *
+     *
+     *
+     *
+     *
+     *
+     *
+
+[12]A Science Project: "Make the 486 Great Again!" - Modern Linux in an
+ancient PC
+
+   January 6, 2018
+
+   17 minutes read
+
+     What is the oldest x86 processor that is still supported by a modern
+     Linux kernel in present time?
+
+   I asked the above quiz question during the [13]Geekcamp tech conference
+   in Nov 2017 during [14]my emcee role. The theoretical answer as you can
+   glean from the title of this post is the [15]486 which was first
+   released in 1989. I determined that fact from this article where
+   [16]support for the 386 was dropped in Dec 2012.
+
+   To get you interested, here is the result of my effort.
+
+   The white smudge on the screen is not the camera's fault, there is
+   really a backlight problem with my old 19" monitor.
+
+   IFRAME: [17]https://www.youtube.com/embed/4qSziR6sD8Q
+
+   You can skip to 11:39 when the boot completes.
+
+   00:00 to 00:46 - BIOS
+
+   00:46 to 11:39 - Bootup. It takes almost 11mins to bootup!
+
+   11:39 to 13:14 - System specs, IP info and ALSA mixer
+
+   13:14 to 15:00 - Playing music via Sound Blaster 16
+
+   15:00 to 17:25 - SSH while playing (stuttering) music in the
+   background. With AlsaMixer adjusting volume.
+
+   17:25 to 17:48 - Opening a webpage hosted by nginx.
+
+   18:10 to 20:13 - Git clone a repo.
+
+   20:13 to 21:13 - Using Python 3.6.3
+
+   21:13 to 21:43 - Cleanup and issue shutdown command
+
+   21:43 to End - Shutdown. It takes 5.5 mins to shutdown!
+
+   Interested in how I got a modern Linux kernel 4.14.8 (released in
+   December 2017) to run on this ancient PC? Read on!
+
+Prior work and research
+
+   Last month, I took part in a [18]Super Silly Hackathon with my teammate
+   [19]Hui Jing where we installed Damn Small Linux (DSL) on that same 486
+   PC.
+
+   I bought this machine with the original intent to play old DOS games in
+   their original glory. Anyway, we managed to play music and even host a
+   webpage! See her fantastically detailed write-up [20]here.
+
+   The version 4.4.10 of DSL we used was released in Nov 2008. It used the
+   kernel version [21]2.4.31 that was released in June 2005 which is a
+   dinosaur by today's standards.
+
+   Throughout the entire time, the question of whether the theoretical
+   answer of 486 is actually true lingered in my head. I did some research
+   and found out [22]someone actually installed Gentoo Linux with a modern
+   kernel on a 486 PC. At least someone said it was possible although he
+   did not give any hard evidence :( He advised that one should use a
+   modern PC to do the source code compilation which I'll show later.
+
+What is Gentoo Linux and why?
+
+     Gentoo Linux is a Linux distribution built using the Portage package
+     management system. Unlike a binary software distribution, the source
+     code is compiled locally according to the user's preferences and is
+     often optimized for the specific type of computer.
+
+     From [23]Gentoo's Wikipedia page
+
+   The issue with modern Linux distributions like Debian/Ubuntu/Arch is
+   that they distribute compiled binary packages. Typically this is good
+   enough as compiling every single package you want from scratch is time
+   consuming and most people ain't got the time for that.
+
+   Although the 486 is theoretically supported by the modern Linux kernel,
+   this is not true on the distribution and package level.  For example,
+   Debian has [24]dropped support for older 586 32-bit CPUs as of 2016.
+   Thus, the oldest supported x86 CPU by Debian is the 686. The
+   6th-generation x86 started with the Pentium Pro released in 1995 or its
+   more commonly known variant Pentium 2 was released in 1997.
+
+   Therefore, it is no longer possible to directly use a typical modern
+   distribution on a 486 PC. But on an atypical distribution like Gentoo
+   which requires you to compile every package, this might still be
+   possible.
+
+The hardware
+
+The ancient 486 PC: [25]IBM PS/1 Consultant 2133 19C (released in 1993)
+
+   Marvel at the original specs of this machine. The CPU and RAM were
+   fully upgraded by the seller before I bought it.
+
+Specifications:
+
+     * [26]AMD 5X86 486-clone running at 133mhz
+          + Similar performance to Pentium 75Mhz
+          + The AMD 5X86 series were the fastest 486 clones ever made
+     * Cirrus Logic VLB CL-GD5424 Graphics 512KiB VRAM
+     * 64MB [27]SIMM-72 RAM
+     * 48x IDE CD ROM Drive
+     * [28]Gotek 1.44MB floppy emulator
+     * CompactFlash-IDE adapter + 32GB Sandisk Extreme CF card
+     * 10Mbps 3Com Etherlink III [29]3c509B (ISA)
+     * [30]Sound Blaster 16 CT2950 PnP (ISA)
+
+Front panel
+
+   The 48x PATA CD-ROM drive came with the PC. I replaced the original
+   3.5" floppy drive with the [31]Gotek 1.44MB floppy emulator. This cool
+   device enables one to emulate up to 100 floppy disks based on images
+   stored in the connected USB Flash drive! I no longer need to write to
+   mechanically-failure-prone floppy disks whenever I want to transfer
+   data.
+
+Expansion slots
+
+   There are only 3 16-bit [32]ISA slots placed on the riser card in this
+   PC. It does not even have the newer but also legacy [33]PCI slots. This
+   PC is filled with 2x 32MB SIMM-72 RAM sticks. I have to admit 64MB RAM
+   is unheard of for a 486-era PC. Some people [34]online managed to go up
+   to 128MB RAM.
+
+Expansion cards
+
+   The 3 ISA slots are fully filled with the following
+
+   A [35]Sound Blaster 16 CT2950 PnP, 10Mbps 3Com Etherlink
+   III [36]3c509B,and a CompactFlash-IDE (CF-IDE) adapter. Technically the
+   CF-IDE adapter is not an ISA card. It is mounted in the expansion slot
+   to enable me to easily swap out the CF card without the hassle of
+   opening up the case. To the motherboard, the CF card is just like any
+   other hard disk.
+
+Expansion cards mounted in slots
+
+   Legacy ports galore! Note the power supply which only accepts ~115VAC.
+   I had to buy a transformer to step down the 230VAC mains in Singapore
+   to suit this PC. The CF card is conveniently replaceable at the back.
+
+Compilation machine: [37]Thinkpad T430 (released in 2012)
+
+   Compilation is a CPU-heavy process and the 486 will definitely take
+   ages to do so. To avoid this issue, we shall do the compilation on a
+   modern PC using a USB card reader then move the CF card over to the
+   ancient PC.
+
+   )
+
+Specifications:
+
+     * Intel Core i7-3520M (3.50 GHz, 4MB L3, 1333MHz FSB)
+     * Intel HD Graphics 4000
+     * 16GB DDR3 - 1600MHz
+     * Gigabit Ethernet
+     * Ultrabay DVD-RW
+     * 2x USB 3.0, 2x USB 2.0
+     * USB-CF adapter to compile on CF card
+     * SSD removed to avoid corrupting it by accident during install
+
+   This Thinkpad T430 is a 6-year-old model by today's standards but is
+   still fast enough to do the compilation of everything in a reasonable
+   amount of time (like a few hours).
+
+Linux Installation
+
+   I've documented a [38]detailed list of instructions here on what
+   commands to use to install Gentoo on this ancient PC. This post will
+   just focus on the key steps and issues I faced.
+
+Step 1: Getting the install media and initial attempt
+
+   The Gentoo x86 minimal installation CD can be [39]downloaded here still
+   supports the 486 architecture. Out of curiosity, I booted my ancient PC
+   with it to see if it is possible.
+
+   Turns out I'll get a kernel panic. It is very likely this LiveCD kernel
+   does not have the drivers needed to properly access the CD drive.
+   Anyway, I got the CD started with my modern T430.
+
+Step 2: Disk partitioning
+
+   These steps below are all done on the modern compilation PC except the
+   last step.
+
+Gentoo's proposed partitioning scheme
+
+   This is what Gentoo recommends. Since this is an ancient PC, it does
+   not use UEFI therefore there is no need for the bootloader partition.
+   Ancient PCs also have a BIOS 504MiB barrier which means they can only
+   access the first 504MiB in the disk. This can be seen in the BIOS setup
+   below:
+
+   Linux can recognise the full 32GB capacity of my CF card only after the
+   kernel and necessary drivers are loaded.
+
+Actual partitioning scheme
+
+   Modern Linux distributions don't always have a boot partition by
+   default as its contents are now placed in the root partition. Since we
+   have a 504MiB limit, we will need a small 128MB boot partition as the
+   first primary partition to store the Linux kernel and other boot files.
+
+Step 3: Install Gentoo Stage 3
+
+   Stage3 is a step unique only to the Gentoo distribution. Basically you
+   have to download a tarball containing a bare minimal binaries and
+   system directories.
+
+   You have to make sure to download the one that is named "i486". Then
+   uncompress it to form the base system.
+
+   For more information about the Gentoo Stages, you can take a look
+   [40]here.
+
+Step 4: Verify compilation parameters
+
+   Portage is the package manager used in Gentoo and we have to make sure
+   that its configuration will invoke the GCC compiler to emit packages
+   that are 486 compatible. Ensure /etc/portage/make.conf has the
+   following 486-specific options:
+CFLAGS="-O2 -march=i486 -pipe"
+CHOST="i486-pc-linux-gnu"
+MAKEOPTS="-j5" # A good choice is the number of CPU cores in the system plus 1
+USE="-kde -qt4 -qt5 ffmpeg mp3 alsa"
+
+   The USE flags are for any new packages not to include GUI support and
+   add sound support (for my demo).
+
+Step 5: Configure Linux kernel
+
+   This was a tough nut to crack and I needed countless tries to get it to
+   a workable state.  To minimise kernel size, the default menu options
+   may not enable support for ancient hardware components. However,
+   support for them are still there.
+
+   The actual list of options I chose were very long so I'll only show the
+   key ones I selected.
+
+   Must disable 64-bit kernel for obvious reasons!
+
+   486 is the oldest option in this list!
+
+   ISA support has to be enabled to use the expansion cards.
+
+   ISA Plug and Play is required for autodetecting my SB16 and 3Com NIC as
+   they are late generation ISA PnP cards.
+
+   Enable both Generic ATA support and Legacy ISA PATA support
+
+   My 3Com 3C509 NIC card is still supported!
+
+   Once done we just compile the Linux kernel!
+
+Step 6: Install Bootloader
+
+   The usual bootloader used by Linux today is [41]Grub2. I tried that but
+   it did a reboot loop whenever I tried to start the system. Online
+   research say I should use the older [42]LILO bootloader instead. LILO
+   is unsupported as of December 2015 but it is still able to load modern
+   Linux kernels.
+
+   This a snippet of the_ /etc/lilo.conf_ Lilo configuration file:
+image=/boot/vmlinuz-4.14.8-gentoo-r1
+    label=gentoo
+    read-only
+    root=/dev/sda3
+    vga=4 # This will set the VGA mode to 80x30
+
+image=/boot/vmlinuz-4.14.8-gentoo-r1
+    label=gentoo-ask-vga
+    read-only
+    root=/dev/sda3
+    vga=ask # Linux will ask you to pick the VGA mode on startup
+
+   I didn't install a GUI for obvious performance reasons so I have to
+   rely solely on text mode. I set the mode vga=4 to increase "text
+   resolution" to 80 columns x 30 rows of text. I also include a vga=ask
+   in case the first option fails.
+
+Step 7: Install additional software
+
+   Though not strictly necessary to do it right now, I felt it was better
+   to leverage on the performance of the compilation machine before moving
+   the CF card over.
+
+   If you have seen the video, I installed the latest versions (available
+   in the Portage repository) of Git, Python, nginx, ALSA and MOC (console
+   music player).
+
+Step 8: Initial bootup!
+
+   Now we power down the compilation PC and move the CF card to the
+   ancient PC for booting. Just pray and hope it works! :)
+
+Problems Faced
+
+   There were several expected and unexpected problems I faced that made
+   this project more time-consuming that it already was.
+
+Cannot boot from CD
+
+   Due to the age of the PC, the BIOS only supports booting from the
+   floppy drive or internal HDD. To boot from the CD, I used the [43]Plop
+   Boot Manager that booted off a floppy disk. This added extra
+   inconveniences when it came to using CD-ROM based utilities.
+
+   To prevent wear on the already ancient mechanical floppy drive, I used
+   the floppy disk emulator.
+
+Cannot use 80-pin PATA cable
+
+   This problem caused me a huge amount of unexpected pain!!!
+
+   Left: 80-conductor PATA cable, Right: 40-conductor PATA cable
+
+   The 80-pin cable on the left is a more modern PATA cable with extra
+   ground lines compared to the 40-pin ones. It supposedly allows the bus
+   to transmit at higher speed by eliminating crosstalk while remaining
+   backward compatible. Read [44]this for more info.
+
+   When I assembled the PC, I initially started with the 80-conductor
+   cable for the drives. I faced occasional intermittent problems. From
+   the BIOS not being able to detect the drive, to Linux halfway getting
+   disk access errors to outright disk corruption. It was hard to tell
+   then was it a software fault or hardware fault?
+
+   Here are the list of steps I did to troubleshoot:
+    1. Disconnect CD-ROM drive as primary slave
+    2. Replace the CF card as I thought it was faulty
+    3. Trying different 80-pin conductor cables
+    4. Recompiling the Linux kernel many times with different SATA/PATA
+       options in case I chose the incorrect one. This took hell a lot of
+       time.
+
+   Finally, I swapped back to the original 40-pin PATA cable that came
+   with the PC and the problems never came up. To double check my
+   assumption, I tried the other 40-pin PATA cables I have in my personal
+   stash and had no issue too.
+
+   Like WHAT THE HELL? I don't think it is a fault of the cables
+   themselves. I have dealt with many older PCs and none of them ever had
+   problems when I switched to 80-pin cables so I assumed it should not be
+   an issue at first. Probably the motherboard of this PC just does not
+   like the 80-pin cable.
+
+Tough Gentoo installation procedure
+
+   Installing Gentoo is tough and time-consuming under the best of times
+   even for modern PCs. Doing it for an ancient PC like this further adds
+   to the complexity.
+
+   To put things into perspective, this is how I would rate the relative
+   difficulty in installing the different Linux distributions
+
+   [45]Linux From Scratch > Gentoo > [46]Arch Linux > Fedora/Debian/Ubuntu
+     * Linux From Scratch: Compile every single thing from scratch. I have
+       not tried this before.
+     * Gentoo: Base system is ready. Just compile kernel, bootloader and
+       extra packages. Then configure everything manually.
+     * Arch Linux: Same as Gentoo just that everything already exists in
+       precompiled binaries.
+     * Fedora/Debian/Ubuntu: Distributions are based on point releases.
+       Configuration is largely taken care off, just configure personal
+       preferences.
+
+   This is compounded by the fact that this was the first time I installed
+   Gentoo Linux and was unfamiliar with the install steps.
+
+Long iteration cycle
+
+   Saying the ancient PC is slow is a huge understatement. It takes 11
+   minutes to boot up to the login prompt and 5.5 mins to shutdown. During
+   the lengthy startup especially, I had to dutifully observe the status
+   messages to ensure there are no issues.
+
+   If there were any issues, I have to move the CF card back to the
+   compilation PC to modify the installation or worse start the
+   installation from scratch. I did this countless times and spent many
+   hours.
+
+Faulty Power Supply Unit (PSU)
+
+   The PSU failed about 2 weeks after I wrote this post. Not unexpected
+   for an old piece of hardware. For a typical modern PC, we just get a
+   replacement! However, this PC uses the legacy [47]LPX form factor for
+   its PSU. Not only that, it does not use the modern ATX power connector.
+   It uses the [48]AT style P8/P9 connector.
+
+   LPX power supplies are not easily available this days and the ones that
+   are being sold are decades old as well.
+
+   picoPSU with ATX-AT Converter
+
+   I used 2 products to replace the LPX PSU
+    1. [49]ATX-AT P8/P9 converter with -5V output I bought on Ebay
+    2. [50]picoPSU-150-XT with 12V AC-DC power adapter
+
+   Everything is tied down to the case.
+
+   Small and neat and this power brick is 230V compatible too![/caption]
+
+   A cool LPX PSU replacement don't you think?
+
+Spectre and Meltdown
+
+   Given the age of the 486 (1989 technology), it does not support branch
+   prediction.
+
+     The 486 does not implement any form of branch prediction.
+
+     [51]Source 1: Pentium Pro and Pentium II System Architecture from
+     Google Books
+
+     When the 486 microprocessor makes a decision that results in a jump
+     to a different part of your program, there is often a delay as it
+     gathers the instructions from the new area of memory. Pentium seeks
+     to avoid this with a Branch Target Buffer (BTB). The BTB predicts
+     the results of the decision-making instructions... [52]Source 2:
+     Info World July 1993
+
+   Ironically this makes it safe from the [53]Meltdown and Spectre
+   attacks. If you want to be safe from those attacks, you can run your
+   modern software on the 486! Of course this is not looking at the big
+   picture, many other security features have been implemented on modern
+   processors since then.
+
+Concluding Remarks
+
+   Despite the many roadblocks I faced, I was impressed by the level of
+   support Linux has for ancient hardware like this. I'll not be surprised
+   if somewhere out there, there is a tester making sure that stuff still
+   works for old hardware.
+
+   Even though this involves ancient hardware, I have to admit I learned
+   quite a lot about the components used in Linux by virtue of setting up
+   Gentoo so I have some useful takeaways from this project.
+
+   You may wonder why did I title this post "A Science Project". This was
+   coined in a [54]blog post by a Microsoft software engineer Raymond Chen
+   to describe projects that fall into any of the following categories:
+    1. A feature that is really cool and challenging from a technological
+       standpoint but is overkill for the user-scenario.
+    2. Requires hardware few people have.
+    3. Trying to solve a problem that nobody really considers to be a
+       problem. You're doing it just for the Gee Whiz factor.
+
+   I believe my projects has all of these qualities.
+    1. I went through a difficult process to give an ancient PC modern
+       Linux and software features. It is overkill as no way one can do
+       any useful work on this slow PC. It is much more appropriate to
+       install a period-correct operating system like DOS and/or Win 3.x.
+    2. How many people have a 486 PC today?
+    3. Who has a problem of needing a modern OS on this ancient PC?
+
+   As mentioned earlier, if you want to replicate this project, you can
+   consult the [55]low-level detailed instructions I have documented on
+   Github.
+
+   I have related projects as well, [56]Windows 3.1 on a modern PC,
+   [57]Windows XP on a modern PC and the [58]using the Covox Speech Thing
+   with a modern pc. Everything so far involves getting old stuff to to
+   work on a modern PC, this is my first blog post that does the opposite.
+   Look out for more projects from me!
+
+Clarification:
+
+   In response to questions or comments made by readers, here are some
+   additional points I want to make
+    1.  I did not show it in the video but the 486 is not powerful enough
+       to play MP3 files in real time. It'll stutter like crazy hence I
+       stayed with WAV files.
+    2. This machine has no slot for me to add any L2 cache memory. :(
+    3. I have rebooted this machine several times before taking this
+       video. So the boot times have stabilised.
+    4. I did try to boot the Tiny Core Linux CD but it never fully loaded
+       before rebooting.
+    5. Given more time,  I could have optimised the bootup time or
+       installed a GUI. However, the objective of this project is to
+       explore the possibility of modern Linux in a 486 PC. Those are nice
+       to have but given the time (many sleepless nights and weekends
+       worth) and effort I had already spent on this project, I felt it
+       was time to stop and document my work.
+    6. 64MB RAM is not representative of 486-machines of that era. Sure I
+       agree, but this machine came with this much and I don't see any
+       benefit of reducing the RAM other than to make it "more
+       representative".
+    7. I did not go with the systemd as Gentoo by default uses init. Since
+       this is the first time I'm actually installing Gentoo, I just went
+       with the default instructions.
+    8. Ext4 is used as the main filesystem to see if it is usable on this
+       old system. I wanted as much modern features as I could. When I
+       installed Damn Small Linux during the hackathon, the installer
+       already warned us that the non-journaling Ext2 is more suitable for
+       older CPUs.
+    9. Why Linux and not BSD-based OSes? The point was to test if Linux
+       and modern software still works on the 486 as claimed. Not really
+       to make a usable PC out of it for day-to-day work. Besides,
+       according to the [59]FreeBSD's website, the minimum requirement is
+       96MB of RAM. So although FreeBSD may support 486 CPUs, I really
+       wonder what 486-era motherboard can take that amount of RAM?
+   10. Why was PCI/USB/X option enabled in the kernel configuration (thus
+       slightly slowing down boot time) even though the ancient PC does
+       not have any PCI/USB/X? This was because I had a plan of making the
+       same disk bootable and usable on my modern T430 as well should I
+       need to compile and install additional packages. Disabling PCI
+       might cause problems on my modern PC. I might just need USB on my
+       compilation PC, who knows?
+
+Presentation
+
+   I gave a talk about my project at the [60]Hackware v3.8 meetup. Here is
+   the video and the slides.
+
+   IFRAME: [61]https://www.youtube.com/embed/1dgc1oq5br8
+
+     *
+          + [62]retrocomputing
+          + [63]hacks
+     *
+          + None
+
+   Please enable JavaScript to view the [64]comments powered by Disqus.
+   [65]comments powered by Disqus
+   My First Conference Emcee Experience
+   Why I use the IBM Model M keyboard that is older than me?
+
+Recent posts
+
+[66]How do I produce my flight videos?
+
+   November 6, 2021
+
+[67]Review, usage and repair of the Framework laptop
+
+   September 21, 2021
+
+[68]Birthday 2021: Year in Review and going forward
+
+   September 5, 2021
+
+[69]My Dos and Don'ts when trying to convince the unvaccinated
+
+   August 17, 2021
+
+[70]My First Helicopter Ride
+
+   July 21, 2021 [71]See more
+
+[72]Categories
+
+     * [73]singapore25
+     * [74]hacks19
+     * [75]personal18
+     * [76]aviation14
+     * [77]politics14
+     * [78]school9
+     * [79]book-reviews8
+     * [80]retrocomputing8
+     * [81]teardowns8
+     * [82]hackathon4
+     * [83]admin3
+     * [84]product-reviews3
+     * [85]repair-kopitiam3
+     * [86]keyboards2
+     * [87]quiz2
+     * [88]dvorak1
+     * [89]flight-sim1
+     * [90]vaccination1
+
+    2021 YKM's Corner on the Web .
+   Theme: [91]Hugo Future Imperfect Slim
+   A [92]HTML5 UP port | Powered by [93]Hugo
+   [94]free hit counter
+
+References
+
+   Visible links:
+   1. https://yeokhengmeng.com/
+   2. https://yeokhengmeng.com/
+   3. https://yeokhengmeng.com/categories/aviation
+   4. https://yeokhengmeng.com/categories/retrocomputing
+   5. https://yeokhengmeng.com/categories/
+   6. https://yeokhengmeng.com/favourite-quotes/
+   7. https://yeokhengmeng.com/about-me/
+   8. https://yeokhengmeng.com/2018/01/make-the-486-great-again/#lang-menu
+   9. https://yeokhengmeng.com/2018/01/make-the-486-great-again/
+  10. https://yeokhengmeng.com/zh
+  11. https://yeokhengmeng.com/
+  12. https://yeokhengmeng.com/2018/01/make-the-486-great-again/
+  13. https://geekcamp.sg/
+  14. https://yeokhengmeng.com/2017/11/my-first-conference-emcee-experience/
+  15. https://en.wikipedia.org/wiki/Intel_80486
+  16. https://www.pcworld.com/article/2020196/linux-3-8-will-drop-support-for-intel-386-chips.html
+  17. https://www.youtube.com/embed/4qSziR6sD8Q
+  18. https://supersillyhackathon.sg/
+  19. https://www.chenhuijing.com/
+  20. https://www.chenhuijing.com/blog/hardware-hacks-super-silly-hackathon/
+  21. https://www.kernel.org/pub/linux/kernel/v2.4/
+  22. https://retrocomputing.stackexchange.com/a/4364
+  23. https://en.wikipedia.org/wiki/Gentoo_Linux
+  24. https://distrowatch.com/dwres.php?resource=showheadline&story=406
+  25. https://en.wikipedia.org/wiki/IBM_PS/1
+  26. https://en.wikichip.org/wiki/amd/am5x86
+  27. https://en.wikipedia.org/wiki/SIMM#72-pin_SIMMs
+  28. https://www.philscomputerlab.com/gotek-floppy-emulator.html
+  29. https://en.wikipedia.org/wiki/3Com_3c509
+  30. https://en.wikipedia.org/wiki/Sound_Blaster_16
+  31. https://www.philscomputerlab.com/gotek-floppy-emulator.html
+  32. https://en.wikipedia.org/wiki/Industry_Standard_Architecture
+  33. https://en.wikipedia.org/wiki/Conventional_PCI
+  34. http://www.vogons.org/viewtopic.php?t=28748
+  35. https://en.wikipedia.org/wiki/Sound_Blaster_16
+  36. https://en.wikipedia.org/wiki/3Com_3c509
+  37. http://www.thinkwiki.org/wiki/Category:T430
+  38. https://github.com/yeokm1/gentoo-on-486
+  39. https://www.gentoo.org/downloads/
+  40. https://wiki.gentoo.org/wiki/Stage_tarball
+  41. https://wiki.gentoo.org/wiki/GRUB2
+  42. https://en.wikipedia.org/wiki/LILO_(boot_loader)
+  43. https://www.plop.at/en/bootmanager/intro.html
+  44. http://www.pcguide.com/ref/hdd/if/ide/confCable80-c.html
+  45. http://www.linuxfromscratch.org/
+  46. https://www.archlinux.org/
+  47. http://www.pcguide.com/ref/power/sup/formLPX-c.html
+  48. https://www.computerhope.com/jargon/p/p8.htm
+  49. http://www.ebay.com.sg/itm/ATX-20-PIN-to-AT-P8-P9-CONVERTER-WITH-5V-ON-OFF-SWITCH-DUMMY-LOAD-USA-MADE/251025150787
+  50. http://www.mini-box.com/picoPSU-150-XT
+  51. https://books.google.com.sg/books?id=MLJClvCYh34C&pg=PA122&lpg=PA122&dq=486+branch+prediction&source=bl&ots=gcMvZFz2Pz&sig=FJ9fEmH426N7eoHxLupu5x2ZrdQ&hl=en&sa=X&ved=0ahUKEwi7k5aCucXYAhUHQY8KHcgACkUQ6AEILjAB#v=onepage&q=486%20branch%20prediction&f=false
+  52. https://books.google.com.sg/books?id=QzsEAAAAMBAJ&pg=PA59&lpg=PA59&dq=486+branch+prediction&source=bl&ots=LCXnhUpS83&sig=g59BBBuiCx-qM6bOjRW5mkq1Nug&hl=en&sa=X&ved=0ahUKEwi7k5aCucXYAhUHQY8KHcgACkUQ6AEIPDAD#v=onepage&q=486%20branch%20prediction&f=false
+  53. https://meltdownattack.com/
+  54. https://blogs.msdn.microsoft.com/oldnewthing/20130319-00/?p=4913
+  55. https://github.com/yeokm1/gentoo-on-486/
+  56. https://yeokhengmeng.com/2016/09/windows-for-workgroups-3-11-on-vintage-and-modern-hardware-in-2016/
+  57. https://yeokhengmeng.com/2016/04/installing-windows-xp-on-a-modern-unsupported-haswell-system-in-2016/
+  58. https://yeokhengmeng.com/2017/01/a-science-project-bringing-the-covox-speech-thing-to-2017/
+  59. https://www.freebsd.org/doc/handbook/bsdinstall-hardware.html
+  60. https://www.facebook.com/events/200105140541056/
+  61. https://www.youtube.com/embed/1dgc1oq5br8
+  62. http://yeokhengmeng.com/categories/retrocomputing
+  63. http://yeokhengmeng.com/categories/hacks
+  64. https://disqus.com/?ref_noscript
+  65. https://disqus.com/
+  66. https://yeokhengmeng.com/2021/11/how-do-i-produce-my-flight-videos/
+  67. https://yeokhengmeng.com/2021/09/review-usage-and-repair-of-the-framework-laptop/
+  68. https://yeokhengmeng.com/2021/09/birthday-2021-year-in-review-and-going-forward/
+  69. https://yeokhengmeng.com/2021/08/my-dos-and-donts-when-trying-to-convince-the-unvaccinated/
+  70. https://yeokhengmeng.com/2021/07/my-first-helicopter-ride/
+  71. https://yeokhengmeng.com/post/
+  72. https://yeokhengmeng.com/categories
+  73. https://yeokhengmeng.com/categories/singapore/
+  74. https://yeokhengmeng.com/categories/hacks/
+  75. https://yeokhengmeng.com/categories/personal/
+  76. https://yeokhengmeng.com/categories/aviation/
+  77. https://yeokhengmeng.com/categories/politics/
+  78. https://yeokhengmeng.com/categories/school/
+  79. https://yeokhengmeng.com/categories/book-reviews/
+  80. https://yeokhengmeng.com/categories/retrocomputing/
+  81. https://yeokhengmeng.com/categories/teardowns/
+  82. https://yeokhengmeng.com/categories/hackathon/
+  83. https://yeokhengmeng.com/categories/admin/
+  84. https://yeokhengmeng.com/categories/product-reviews/
+  85. https://yeokhengmeng.com/categories/repair-kopitiam/
+  86. https://yeokhengmeng.com/categories/keyboards/
+  87. https://yeokhengmeng.com/categories/quiz/
+  88. https://yeokhengmeng.com/categories/dvorak/
+  89. https://yeokhengmeng.com/categories/flight-sim/
+  90. https://yeokhengmeng.com/categories/vaccination/
+  91. https://github.com/pacollins/hugo-future-imperfect-slim
+  92. https://html5up.net/future-imperfect
+  93. https://gohugo.io/
+  94. https://statcounter.com/
+
+   Hidden links:
+  96. https://yeokhengmeng.com/2018/01/make-the-486-great-again/#site-nav
+  97. https://github.com/yeokm1
+  98. https://linkedin.com/in/yeokhengmeng
+  99. https://facebook.com/yeokhengmeng
+ 100. https://youtube.com/yeokm1
+ 101. https://instagram.com/yeokm1
+ 102. https://twitter.com/yeokm1
+ 103. https://telegram.me/yeokm1
+ 104. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-capabilities.jpg
+ 105. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/super-silly-hackathon-team486.jpg
+ 106. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-logo.png
+ 107. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-original-spec.jpg
+ 108. https://yeokhengmeng.com/2018/01/make-the-486-great-again/gentoo-486-innards-front.jpg
+ 109. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-isa-slots.jpg
+ 110. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-isa-cards.jpg
+ 111. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-innards.jpg
+ 112. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-back.jpg
+ 113. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-t430.jpg
+ 114. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-livecd-boot.jpg
+ 115. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-gentoo-default-partitioning.png
+ 116. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-bios.jpg
+ 117. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-disk-layout.png
+ 118. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-stage3.png
+ 119. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-kernel-64bit.png
+ 120. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-kernel-486.png
+ 121. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-kernel-isa.png
+ 122. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-isa-pnp.png
+ 123. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-kernel-isa-ata.png
+ 124. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-kernel-3com-support.png
+ 125. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-kernel-sb16.png
+ 126. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-ide.jpg
+ 127. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-pico-psu-at-converter.jpg
+ 128. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-pico-psu-at-converter-assembled.jpg
+ 129. https://yeokhengmeng.com/2018/01/make-the-486-great-again/images/gentoo-486-pico-psu-brick.jpg
+ 130. https://yeokhengmeng.com/2017/11/my-first-conference-emcee-experience/
+ 131. https://yeokhengmeng.com/2018/07/why-i-use-the-ibm-model-m-keyboard-that-is-older-than-me/
+ 132. https://yeokhengmeng.com/2021/11/how-do-i-produce-my-flight-videos/
+ 133. https://yeokhengmeng.com/2021/09/review-usage-and-repair-of-the-framework-laptop/
+ 134. https://yeokhengmeng.com/2021/09/birthday-2021-year-in-review-and-going-forward/
+ 135. https://yeokhengmeng.com/2021/08/my-dos-and-donts-when-trying-to-convince-the-unvaccinated/
+ 136. https://yeokhengmeng.com/2021/07/my-first-helicopter-ride/
+ 137. https://yeokhengmeng.com/2018/01/make-the-486-great-again/
diff --git a/floppy/lstar.c b/floppy/lstar.c
new file mode 100644
index 0000000..2a7d541
--- /dev/null
+++ b/floppy/lstar.c
@@ -0,0 +1,102 @@
+#include 
+#include 
+#include 
+#include 
+
+static int octal_to_int( char *s, int size )
+{
+	int n = 0;
+	char *c = s;
+	while( size > 0 ) {
+		n *= 8;
+		n += *c - '0';
+		c++;
+		size--;
+	}
+	
+	return n;
+}
+
+int main( int argc, char *argv[] )
+{
+	FILE *f = NULL;
+	char buf[512];
+	char filename[100];
+	char size_octal[12];
+	char cksum_octal[8];
+	int size;
+	unsigned int cksum;
+	unsigned int computed_cksum;
+	int i, n;
+	int terminate = 0;
+
+	if( argc != 2 ) {
+		fprintf( stderr, "usage: %s \n", argv[0] );
+		exit( EXIT_FAILURE );
+	}
+	
+	f = fopen( argv[1], "r" );
+	if( f == NULL ) {
+		fprintf( stderr, "ERROR: failed to open file '%s'\n", argv[1] );
+		exit( EXIT_FAILURE );
+	}
+	
+	do {
+		clearerr( f );
+		n = fread( buf, 512, 1, f );
+		if( n == 0 ) {
+			if( ferror( f ) ) {
+				fprintf( stderr, "ERR: read error\n" );
+				terminate = 1;
+			} else if( feof( f ) ) {
+				terminate = 1;
+				break;
+			}
+		}
+		
+		if( memcmp( &buf[257], "ustar", 5 ) == 0 ) {
+			strlcpy( filename, buf, 100 );
+			
+			if( strcmp( filename, "" ) != 0 ) {
+
+				printf( "file: %s\n", filename );
+			
+				strlcpy( size_octal, &buf[124], 12 );
+				printf( "size (octal): %s\n", size_octal );
+
+				size = octal_to_int( size_octal, 11 );
+				printf( "size (decimal): %d\n", size );
+
+				strlcpy( cksum_octal, &buf[148], 8 );
+				printf( "cksum (octal): %s\n", cksum_octal );
+				cksum = octal_to_int( cksum_octal, 6 );
+				printf( "cksum (decimal): %d\n", cksum );
+				
+				for( i = 148; i < 148+8; i++ ) {
+					buf[i] = ' ';
+				}
+				computed_cksum = 0;
+				for( i = 0; i < 512; i++ ) {
+					computed_cksum += (unsigned char)buf[i];
+				}
+				printf( "cksum (computed): %d\n", computed_cksum );
+				if( cksum != computed_cksum ) {
+					fprintf( stderr, "ERR: checksum mismatch in header!\n" );
+				}
+
+				while( size > 0 ) {
+					fread( buf, 512, 1, f );
+					size -= 512;
+				}
+			} else {
+				fprintf( stderr, "INFO: the end\n" );
+			}			
+		} else {
+			fprintf( stderr, "WARN: skipping non TAR header\n" );
+		}
+	} while( !terminate );
+	
+	fclose( f );
+	
+	exit( EXIT_SUCCESS );
+}
diff --git a/floppy/ramdisk/bin/ash b/floppy/ramdisk/bin/ash
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/ash
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/busybox b/floppy/ramdisk/bin/busybox
new file mode 100755
index 0000000..f4cd842
Binary files /dev/null and b/floppy/ramdisk/bin/busybox differ
diff --git a/floppy/ramdisk/bin/cat b/floppy/ramdisk/bin/cat
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/cat
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/chgrp b/floppy/ramdisk/bin/chgrp
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/chgrp
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/chmod b/floppy/ramdisk/bin/chmod
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/chmod
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/chown b/floppy/ramdisk/bin/chown
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/chown
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/cp b/floppy/ramdisk/bin/cp
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/cp
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/cttyhack b/floppy/ramdisk/bin/cttyhack
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/cttyhack
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/dd b/floppy/ramdisk/bin/dd
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/dd
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/df b/floppy/ramdisk/bin/df
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/df
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/dmesg b/floppy/ramdisk/bin/dmesg
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/dmesg
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/echo b/floppy/ramdisk/bin/echo
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/echo
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/false b/floppy/ramdisk/bin/false
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/false
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/grep b/floppy/ramdisk/bin/grep
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/grep
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/kill b/floppy/ramdisk/bin/kill
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/kill
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/ln b/floppy/ramdisk/bin/ln
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/ln
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/ls b/floppy/ramdisk/bin/ls
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/ls
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/mkdir b/floppy/ramdisk/bin/mkdir
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/mkdir
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/mknod b/floppy/ramdisk/bin/mknod
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/mknod
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/mktemp b/floppy/ramdisk/bin/mktemp
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/mktemp
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/mount b/floppy/ramdisk/bin/mount
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/mount
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/mv b/floppy/ramdisk/bin/mv
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/mv
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/pidof b/floppy/ramdisk/bin/pidof
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/pidof
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/ping b/floppy/ramdisk/bin/ping
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/ping
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/ps b/floppy/ramdisk/bin/ps
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/ps
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/rm b/floppy/ramdisk/bin/rm
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/rm
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/rmdir b/floppy/ramdisk/bin/rmdir
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/rmdir
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/sh b/floppy/ramdisk/bin/sh
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/sh
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/sleep b/floppy/ramdisk/bin/sleep
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/sleep
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/sync b/floppy/ramdisk/bin/sync
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/sync
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/true b/floppy/ramdisk/bin/true
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/true
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/umount b/floppy/ramdisk/bin/umount
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/umount
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/uname b/floppy/ramdisk/bin/uname
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/uname
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/bin/vi b/floppy/ramdisk/bin/vi
new file mode 120000
index 0000000..c3fa810
--- /dev/null
+++ b/floppy/ramdisk/bin/vi
@@ -0,0 +1 @@
+busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/dev/fd b/floppy/ramdisk/dev/fd
new file mode 120000
index 0000000..e15a8af
--- /dev/null
+++ b/floppy/ramdisk/dev/fd
@@ -0,0 +1 @@
+/proc/self/fd
\ No newline at end of file
diff --git a/floppy/ramdisk/dev/stderr b/floppy/ramdisk/dev/stderr
new file mode 120000
index 0000000..65e4e18
--- /dev/null
+++ b/floppy/ramdisk/dev/stderr
@@ -0,0 +1 @@
+/proc/self/fd/2
\ No newline at end of file
diff --git a/floppy/ramdisk/dev/stdin b/floppy/ramdisk/dev/stdin
new file mode 120000
index 0000000..0373e07
--- /dev/null
+++ b/floppy/ramdisk/dev/stdin
@@ -0,0 +1 @@
+/proc/self/fd/0
\ No newline at end of file
diff --git a/floppy/ramdisk/dev/stdout b/floppy/ramdisk/dev/stdout
new file mode 120000
index 0000000..ba4c572
--- /dev/null
+++ b/floppy/ramdisk/dev/stdout
@@ -0,0 +1 @@
+/proc/self/fd/1
\ No newline at end of file
diff --git a/floppy/ramdisk/etc/init.d/rc b/floppy/ramdisk/etc/init.d/rc
new file mode 100755
index 0000000..c923778
--- /dev/null
+++ b/floppy/ramdisk/etc/init.d/rc
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+echo "Starting RAMDisk.."
+mount -t proc none /proc
+mount -t sysfs none /sys
+mount -t devtmpfs none /dev
+mkdir /dev/pts
+mount -t devpts none /dev/pts
diff --git a/floppy/ramdisk/etc/inittab b/floppy/ramdisk/etc/inittab
new file mode 100644
index 0000000..30228cf
--- /dev/null
+++ b/floppy/ramdisk/etc/inittab
@@ -0,0 +1,6 @@
+::sysinit:/etc/init.d/rc
+::askfirst:-/bin/cttyhack /bin/sh
+::restart:/sbin/init
+::ctrlaltdel:/sbin/reboot
+::shutdown:/bin/umount -a
+tty1::askfirst:-/bin/sh
diff --git a/floppy/ramdisk/etc/modules.conf b/floppy/ramdisk/etc/modules.conf
new file mode 100644
index 0000000..df66d3f
--- /dev/null
+++ b/floppy/ramdisk/etc/modules.conf
@@ -0,0 +1 @@
+options ne io=0x300 irq=10
diff --git a/floppy/ramdisk/etc/mtab b/floppy/ramdisk/etc/mtab
new file mode 120000
index 0000000..5c4677a
--- /dev/null
+++ b/floppy/ramdisk/etc/mtab
@@ -0,0 +1 @@
+../proc/self/mounts
\ No newline at end of file
diff --git a/floppy/ramdisk/etc/resolv.conf b/floppy/ramdisk/etc/resolv.conf
new file mode 100644
index 0000000..1ea217a
--- /dev/null
+++ b/floppy/ramdisk/etc/resolv.conf
@@ -0,0 +1 @@
+nameserver 192.168.1.1
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/8139cp.ko b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/8139cp.ko
new file mode 100644
index 0000000..e38111a
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/8139cp.ko differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/8139too.ko b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/8139too.ko
new file mode 100644
index 0000000..2f18563
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/8139too.ko differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/8390p.ko b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/8390p.ko
new file mode 100644
index 0000000..91d14ca
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/8390p.ko differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/crc16.ko b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/crc16.ko
new file mode 100644
index 0000000..c054c63
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/crc16.ko differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/crc32c_generic.ko b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/crc32c_generic.ko
new file mode 100644
index 0000000..89f8ecd
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/crc32c_generic.ko differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/crypto.ko b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/crypto.ko
new file mode 100644
index 0000000..b50aeab
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/crypto.ko differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/crypto_algapi.ko b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/crypto_algapi.ko
new file mode 100644
index 0000000..8da57d7
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/crypto_algapi.ko differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/crypto_hash.ko b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/crypto_hash.ko
new file mode 100644
index 0000000..c64fad2
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/crypto_hash.ko differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/ext2.ko b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/ext2.ko
new file mode 100644
index 0000000..d938afa
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/ext2.ko differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/ext4.ko b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/ext4.ko
new file mode 100644
index 0000000..086317c
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/ext4.ko differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/fat.ko b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/fat.ko
new file mode 100644
index 0000000..993e27e
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/fat.ko differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/firmware_class.ko b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/firmware_class.ko
new file mode 100644
index 0000000..e0a9ccc
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/firmware_class.ko differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/floppy.ko b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/floppy.ko
new file mode 100644
index 0000000..d507fca
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/floppy.ko differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/isofs.ko b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/isofs.ko
new file mode 100644
index 0000000..f2fa483
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/isofs.ko differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/jbd2.ko b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/jbd2.ko
new file mode 100644
index 0000000..cddcf8c
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/jbd2.ko differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/libphy.ko b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/libphy.ko
new file mode 100644
index 0000000..5af8bfc
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/libphy.ko differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/loop.ko b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/loop.ko
new file mode 100644
index 0000000..0cc6604
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/loop.ko differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/mbcache.ko b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/mbcache.ko
new file mode 100644
index 0000000..9a0dd3a
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/mbcache.ko differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/mdio_devres.ko b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/mdio_devres.ko
new file mode 100644
index 0000000..9f6a7b8
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/mdio_devres.ko differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/mii.ko b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/mii.ko
new file mode 100644
index 0000000..6b45bfe
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/mii.ko differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.alias b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.alias
new file mode 100644
index 0000000..26f62f0
--- /dev/null
+++ b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.alias
@@ -0,0 +1,68 @@
+# Aliases extracted from modules themselves.
+alias iso9660 isofs
+alias fs-iso9660 isofs
+alias devname:loop-control loop
+alias char-major-10-237 loop
+alias block-major-7-* loop
+alias fs-vfat vfat
+alias pci:v00000357d0000000Asv*sd*bc*sc*i* 8139cp
+alias pci:v000010ECd00008139sv*sd*bc*sc*i* 8139cp
+alias mdio:0000000000011100110010?????????? realtek
+alias pci:v000010ECd00003000sv*sd*bc*sc*i* r8169
+alias pci:v000010ECd00008125sv*sd*bc*sc*i* r8169
+alias pci:v00000001d00008168sv*sd00002410bc*sc*i* r8169
+alias pci:v00001737d00001032sv*sd00000024bc*sc*i* r8169
+alias pci:v000016ECd00000116sv*sd*bc*sc*i* r8169
+alias pci:v00001259d0000C107sv*sd*bc*sc*i* r8169
+alias pci:v00001186d00004302sv*sd*bc*sc*i* r8169
+alias pci:v00001186d00004300sv*sd*bc*sc*i* r8169
+alias pci:v00001186d00004300sv00001186sd00004B10bc*sc*i* r8169
+alias pci:v000010ECd00008169sv*sd*bc*sc*i* r8169
+alias pci:v000010FFd00008168sv*sd*bc*sc*i* r8169
+alias pci:v000010ECd00008168sv*sd*bc*sc*i* r8169
+alias pci:v000010ECd00008167sv*sd*bc*sc*i* r8169
+alias pci:v000010ECd00008162sv*sd*bc*sc*i* r8169
+alias pci:v000010ECd00008161sv*sd*bc*sc*i* r8169
+alias pci:v000010ECd00008136sv*sd*bc*sc*i* r8169
+alias pci:v000010ECd00008129sv*sd*bc*sc*i* r8169
+alias pci:v000010ECd00002600sv*sd*bc*sc*i* r8169
+alias pci:v000010ECd00002502sv*sd*bc*sc*i* r8169
+alias fs-ext4 ext4
+alias ext3 ext4
+alias fs-ext3 ext4
+alias pnp:dPNP80d6* ne
+alias pnp:dEDI0216* ne
+alias pnp:dAXE2011* ne
+alias pci:v*d00008139sv000013D1sd0000AB06bc*sc*i* 8139too
+alias pci:v*d00008139sv00001186sd00001300bc*sc*i* 8139too
+alias pci:v*d00008139sv000010ECsd00008139bc*sc*i* 8139too
+alias pci:v000016ECd0000AB06sv*sd*bc*sc*i* 8139too
+alias pci:v0000021Bd00008139sv*sd*bc*sc*i* 8139too
+alias pci:v00001743d00008139sv*sd*bc*sc*i* 8139too
+alias pci:v0000126Cd00001211sv*sd*bc*sc*i* 8139too
+alias pci:v0000018Ad00000106sv*sd*bc*sc*i* 8139too
+alias pci:v000002ACd00001012sv*sd*bc*sc*i* 8139too
+alias pci:v00001432d00009130sv*sd*bc*sc*i* 8139too
+alias pci:v000011DBd00001234sv*sd*bc*sc*i* 8139too
+alias pci:v000014EAd0000AB07sv*sd*bc*sc*i* 8139too
+alias pci:v000014EAd0000AB06sv*sd*bc*sc*i* 8139too
+alias pci:v00001259d0000A11Esv*sd*bc*sc*i* 8139too
+alias pci:v00001259d0000A117sv*sd*bc*sc*i* 8139too
+alias pci:v000013D1d0000AB06sv*sd*bc*sc*i* 8139too
+alias pci:v00001186d00001340sv*sd*bc*sc*i* 8139too
+alias pci:v00001186d00001300sv*sd*bc*sc*i* 8139too
+alias pci:v00004033d00001360sv*sd*bc*sc*i* 8139too
+alias pci:v00001500d00001360sv*sd*bc*sc*i* 8139too
+alias pci:v00001113d00001211sv*sd*bc*sc*i* 8139too
+alias pci:v000010ECd00008138sv*sd*bc*sc*i* 8139too
+alias pci:v000010ECd00008139sv*sd*bc*sc*i* 8139too
+alias block-major-2-* floppy
+alias acpi*:PNP0700:* floppy
+alias pnp:dPNP0700* floppy
+alias net-pf-1 unix
+alias fs-ext2 ext2
+alias fs-msdos msdos
+alias crypto-crc32c-generic crc32c_generic
+alias crc32c-generic crc32c_generic
+alias crypto-crc32c crc32c_generic
+alias crc32c crc32c_generic
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.alias.bin b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.alias.bin
new file mode 100644
index 0000000..6049e5d
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.alias.bin differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.builtin.alias.bin b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.builtin.alias.bin
new file mode 100644
index 0000000..e69de29
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.builtin.bin b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.builtin.bin
new file mode 100644
index 0000000..e69de29
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.dep b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.dep
new file mode 100644
index 0000000..f08b597
--- /dev/null
+++ b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.dep
@@ -0,0 +1,28 @@
+fat.ko:
+isofs.ko:
+mdio_devres.ko: libphy.ko
+loop.ko:
+crc16.ko:
+vfat.ko: fat.ko
+8139cp.ko: mii.ko
+realtek.ko: libphy.ko
+crypto.ko:
+r8169.ko: mdio_devres.ko firmware_class.ko libphy.ko
+mbcache.ko:
+8390p.ko:
+crypto_algapi.ko: crypto.ko
+ext4.ko: crc16.ko mbcache.ko jbd2.ko crypto_hash.ko crypto_algapi.ko crypto.ko
+ne.ko: 8390p.ko
+jbd2.ko: crypto_hash.ko crypto_algapi.ko crypto.ko
+firmware_class.ko:
+nls_cp437.ko:
+crypto_hash.ko: crypto_algapi.ko crypto.ko
+8139too.ko: mii.ko
+selftests.ko: libphy.ko
+floppy.ko:
+unix.ko:
+ext2.ko:
+msdos.ko: fat.ko
+libphy.ko:
+mii.ko:
+crc32c_generic.ko: crypto_hash.ko crypto_algapi.ko crypto.ko
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.dep.bin b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.dep.bin
new file mode 100644
index 0000000..d57d38e
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.dep.bin differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.devname b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.devname
new file mode 100644
index 0000000..874e97a
--- /dev/null
+++ b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.devname
@@ -0,0 +1,2 @@
+# Device nodes to trigger on-demand module loading.
+loop loop-control c10:237
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.softdep b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.softdep
new file mode 100644
index 0000000..6a00950
--- /dev/null
+++ b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.softdep
@@ -0,0 +1,4 @@
+# Soft dependencies extracted from modules themselves.
+softdep r8169 pre: realtek
+softdep crypto_algapi pre: cryptomgr
+softdep ext4 pre: crc32c
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.symbols b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.symbols
new file mode 100644
index 0000000..a77a68e
--- /dev/null
+++ b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.symbols
@@ -0,0 +1,427 @@
+# Aliases for symbols, used by symbol_request().
+alias symbol:jbd2_journal_inode_ranged_write jbd2
+alias symbol:phy_write_mmd libphy
+alias symbol:shash_ahash_finup crypto_hash
+alias symbol:fat_build_inode fat
+alias symbol:phy_check_downshift libphy
+alias symbol:genphy_read_abilities libphy
+alias symbol:jbd2__journal_restart jbd2
+alias symbol:jbd2_fc_end_commit_fallback jbd2
+alias symbol:fat_dir_empty fat
+alias symbol:phy_start_cable_test libphy
+alias symbol:genphy_read_status libphy
+alias symbol:phy_get_eee_err libphy
+alias symbol:fat_free_clusters fat
+alias symbol:crypto_alg_list crypto
+alias symbol:crypto_boot_test_finished crypto
+alias symbol:crypto_shash_tfm_digest crypto_hash
+alias symbol:phy_free_interrupt libphy
+alias symbol:phy_set_sym_pause libphy
+alias symbol:__phy_write_mmd libphy
+alias symbol:crypto_enqueue_request_head crypto_algapi
+alias symbol:mdio_device_remove libphy
+alias symbol:crypto_unregister_ahashes crypto_hash
+alias symbol:crypto_cipher_setkey crypto
+alias symbol:mdio_device_reset libphy
+alias symbol:jbd2_fc_wait_bufs jbd2
+alias symbol:phy_speed_to_str libphy
+alias symbol:crypto_dequeue_request crypto_algapi
+alias symbol:crypto_alg_tested crypto_algapi
+alias symbol:mb_cache_entry_find_next mbcache
+alias symbol:jbd2_journal_finish_inode_data_buffers jbd2
+alias symbol:jbd2_fc_end_commit jbd2
+alias symbol:crypto_inst_setname crypto_algapi
+alias symbol:crc16 crc16
+alias symbol:crypto_alg_mod_lookup crypto
+alias symbol:genphy_soft_reset libphy
+alias symbol:fat_detach fat
+alias symbol:mdiobus_modify_changed libphy
+alias symbol:phy_ethtool_set_wol libphy
+alias symbol:eip_set_multicast_list 8390p
+alias symbol:phy_unregister_fixup_for_uid libphy
+alias symbol:phy_mii_ioctl libphy
+alias symbol:jbd2_journal_destroy jbd2
+alias symbol:jbd2_journal_submit_inode_data_buffers jbd2
+alias symbol:fat_getattr fat
+alias symbol:phy_package_leave libphy
+alias symbol:crypto_alloc_tfm_node crypto
+alias symbol:phy_start_cable_test_tdr libphy
+alias symbol:phy_attached_info libphy
+alias symbol:mdio_driver_register libphy
+alias symbol:phy_get_pause libphy
+alias symbol:crypto_register_ahashes crypto_hash
+alias symbol:jbd2_journal_forget jbd2
+alias symbol:fwnode_get_phy_node libphy
+alias symbol:fat_flush_inodes fat
+alias symbol:mdiobus_get_phy libphy
+alias symbol:__crypto_xor crypto_algapi
+alias symbol:jbd2_journal_start_reserved jbd2
+alias symbol:crypto_shash_update crypto_hash
+alias symbol:__mdiobus_modify_changed libphy
+alias symbol:phy_advertise_supported libphy
+alias symbol:__genphy_config_aneg libphy
+alias symbol:phy_config_aneg libphy
+alias symbol:genphy_c45_read_pma libphy
+alias symbol:mdio_bus_type libphy
+alias symbol:jbd2_journal_lock_updates jbd2
+alias symbol:genphy_read_status_fixed libphy
+alias symbol:mdiobus_write libphy
+alias symbol:genphy_c45_pma_resume libphy
+alias symbol:phy_set_asym_pause libphy
+alias symbol:crypto_shash_digest crypto_hash
+alias symbol:genphy_loopback libphy
+alias symbol:crypto_init_queue crypto_algapi
+alias symbol:phy_select_page libphy
+alias symbol:jbd2_log_start_commit jbd2
+alias symbol:crypto_comp_decompress crypto
+alias symbol:phy_modify_mmd_changed libphy
+alias symbol:crypto_spawn_tfm crypto_algapi
+alias symbol:crypto_wait_for_test crypto
+alias symbol:genphy_resume libphy
+alias symbol:get_phy_device libphy
+alias symbol:phy_mac_interrupt libphy
+alias symbol:phy_loopback libphy
+alias symbol:gen10g_config_aneg libphy
+alias symbol:phy_attach libphy
+alias symbol:mdiobus_is_registered_device libphy
+alias symbol:phy_do_ioctl_running libphy
+alias symbol:device_phy_find_device libphy
+alias symbol:phy_aneg_done libphy
+alias symbol:mb_cache_entry_find_first mbcache
+alias symbol:phy_unregister_fixup_for_id libphy
+alias symbol:mdiobus_free libphy
+alias symbol:phy_error libphy
+alias symbol:mb_cache_destroy mbcache
+alias symbol:phy_device_create libphy
+alias symbol:eip_open 8390p
+alias symbol:crypto_spawn_tfm2 crypto_algapi
+alias symbol:__crypto_memneq crypto
+alias symbol:crypto_unregister_template crypto_algapi
+alias symbol:jbd2_journal_extend jbd2
+alias symbol:crypto_type_has_alg crypto_algapi
+alias symbol:__phy_resume libphy
+alias symbol:phy_sfp_probe libphy
+alias symbol:crypto_create_tfm_node crypto
+alias symbol:genphy_aneg_done libphy
+alias symbol:crypto_attr_alg_name crypto_algapi
+alias symbol:genphy_write_mmd_unsupported libphy
+alias symbol:genphy_read_mmd_unsupported libphy
+alias symbol:genphy_config_eee_advert libphy
+alias symbol:phy_register_fixup_for_uid libphy
+alias symbol:mb_cache_entry_delete mbcache
+alias symbol:jbd2_journal_update_sb_errno jbd2
+alias symbol:phy_trigger_machine libphy
+alias symbol:phy_sfp_detach libphy
+alias symbol:__mb_cache_entry_free mbcache
+alias symbol:jbd2_journal_get_write_access jbd2
+alias symbol:jbd2_inode_cache jbd2
+alias symbol:crypto_register_notifier crypto_algapi
+alias symbol:jbd2_journal_ack_err jbd2
+alias symbol:crypto_register_alg crypto_algapi
+alias symbol:phy_unregister_fixup libphy
+alias symbol:phy_get_internal_delay libphy
+alias symbol:genphy_c45_check_and_restart_aneg libphy
+alias symbol:request_firmware_nowait firmware_class
+alias symbol:devm_mdiobus_alloc_size mdio_devres
+alias symbol:crypto_alloc_base crypto
+alias symbol:fwnode_phy_find_device libphy
+alias symbol:phy_restore_page libphy
+alias symbol:phy_ethtool_get_stats libphy
+alias symbol:genphy_update_link libphy
+alias symbol:phy_ethtool_nway_reset libphy
+alias symbol:crypto_has_alg crypto
+alias symbol:phy_lookup_setting libphy
+alias symbol:phy_sfp_attach libphy
+alias symbol:phy_10gbit_features libphy
+alias symbol:crypto_mod_get crypto
+alias symbol:jbd2__journal_start jbd2
+alias symbol:phy_basic_ports_array libphy
+alias symbol:mdio_device_register libphy
+alias symbol:phy_all_ports_features_array libphy
+alias symbol:phy_restart_aneg libphy
+alias symbol:crypto_probing_notify crypto
+alias symbol:crypto_cipher_encrypt_one crypto
+alias symbol:fat_search_long fat
+alias symbol:phy_queue_state_machine libphy
+alias symbol:firmware_request_nowarn firmware_class
+alias symbol:net_selftest_get_count selftests
+alias symbol:jbd2_journal_revoke jbd2
+alias symbol:jbd2_journal_free_reserved jbd2
+alias symbol:unix_table_locks unix
+alias symbol:genphy_c45_read_link libphy
+alias symbol:phy_package_join libphy
+alias symbol:phy_speed_up libphy
+alias symbol:request_firmware firmware_class
+alias symbol:phy_read_paged libphy
+alias symbol:fat_sync_inode fat
+alias symbol:mii_ethtool_sset mii
+alias symbol:jbd2_journal_flush jbd2
+alias symbol:genphy_c45_fast_retrain libphy
+alias symbol:phy_driver_is_genphy libphy
+alias symbol:fat_time_unix2fat fat
+alias symbol:phy_10_100_features_array libphy
+alias symbol:jbd2_journal_get_undo_access jbd2
+alias symbol:genphy_suspend libphy
+alias symbol:crypto_grab_shash crypto_hash
+alias symbol:jbd2_journal_get_create_access jbd2
+alias symbol:__phy_modify libphy
+alias symbol:__phy_modify_mmd_changed libphy
+alias symbol:mii_check_gmii_support mii
+alias symbol:phy_ethtool_get_sset_count libphy
+alias symbol:jbd2_journal_begin_ordered_truncate jbd2
+alias symbol:__mdiobus_read libphy
+alias symbol:phy_ethtool_get_wol libphy
+alias symbol:fat_attach fat
+alias symbol:crypto_register_ahash crypto_hash
+alias symbol:genphy_c45_read_lpa libphy
+alias symbol:phy_driver_is_genphy_10g libphy
+alias symbol:phy_resolve_aneg_linkmode libphy
+alias symbol:scatterwalk_copychunks crypto_algapi
+alias symbol:scatterwalk_ffwd crypto_algapi
+alias symbol:__devm_mdiobus_register mdio_devres
+alias symbol:phy_duplex_to_str libphy
+alias symbol:crypto_has_ahash crypto_hash
+alias symbol:phy_basic_features libphy
+alias symbol:NS8390p_init 8390p
+alias symbol:fat_get_dotdot_entry fat
+alias symbol:jbd2_journal_wipe jbd2
+alias symbol:crypto_register_algs crypto_algapi
+alias symbol:unix_socket_table unix
+alias symbol:jbd2_journal_init_inode jbd2
+alias symbol:phy_validate_pause libphy
+alias symbol:phy_ethtool_set_link_ksettings libphy
+alias symbol:__alloc_eip_netdev 8390p
+alias symbol:shash_ahash_update crypto_hash
+alias symbol:__crypto_alloc_tfm crypto
+alias symbol:jbd2_journal_check_used_features jbd2
+alias symbol:jbd2_journal_dirty_metadata jbd2
+alias symbol:phy_fibre_port_array libphy
+alias symbol:crypto_ahash_setkey crypto_hash
+alias symbol:mb_cache_entry_get mbcache
+alias symbol:firmware_request_platform firmware_class
+alias symbol:jbd2_journal_force_commit_nested jbd2
+alias symbol:phy_gbit_all_ports_features libphy
+alias symbol:fat_fill_super fat
+alias symbol:fat_truncate_time fat
+alias symbol:jbd2_log_wait_commit jbd2
+alias symbol:genphy_c45_config_aneg libphy
+alias symbol:genphy_c45_pma_read_abilities libphy
+alias symbol:jbd2_journal_stop jbd2
+alias symbol:phy_10gbit_features_array libphy
+alias symbol:phy_ethtool_get_link_ksettings libphy
+alias symbol:phy_ethtool_get_strings libphy
+alias symbol:crypto_chain crypto
+alias symbol:phy_basic_t1_features libphy
+alias symbol:shash_free_singlespawn_instance crypto_hash
+alias symbol:request_firmware_into_buf firmware_class
+alias symbol:crypto_ahash_finup crypto_hash
+alias symbol:phy_attach_direct libphy
+alias symbol:jbd2_journal_set_triggers jbd2
+alias symbol:mii_nway_restart mii
+alias symbol:crypto_grab_ahash crypto_hash
+alias symbol:mii_ethtool_set_link_ksettings mii
+alias symbol:mb_cache_entry_create mbcache
+alias symbol:phy_driver_register libphy
+alias symbol:phy_write_paged libphy
+alias symbol:fat_time_fat2unix fat
+alias symbol:jbd2_journal_release_jbd_inode jbd2
+alias symbol:mdiobus_scan libphy
+alias symbol:jbd2_journal_start_commit jbd2
+alias symbol:crypto_inc crypto_algapi
+alias symbol:phy_disconnect libphy
+alias symbol:crypto_alloc_ahash crypto_hash
+alias symbol:mdiobus_read libphy
+alias symbol:crypto_unregister_ahash crypto_hash
+alias symbol:phy_connect libphy
+alias symbol:phy_register_fixup_for_id libphy
+alias symbol:genphy_c37_config_aneg libphy
+alias symbol:crypto_larval_alloc crypto
+alias symbol:eip_netdev_ops 8390p
+alias symbol:jbd2_fc_begin_commit jbd2
+alias symbol:shash_register_instance crypto_hash
+alias symbol:crypto_unregister_algs crypto_algapi
+alias symbol:mdiobus_unregister libphy
+alias symbol:phy_start_machine libphy
+alias symbol:phy_device_register libphy
+alias symbol:mb_cache_create mbcache
+alias symbol:shash_ahash_digest crypto_hash
+alias symbol:jbd2_journal_grab_journal_head jbd2
+alias symbol:mb_cache_entry_touch mbcache
+alias symbol:phy_save_page libphy
+alias symbol:crypto_find_alg crypto
+alias symbol:fat_setattr fat
+alias symbol:mii_link_ok mii
+alias symbol:jbd2_fc_get_buf jbd2
+alias symbol:genphy_c37_read_status libphy
+alias symbol:fwnode_get_phy_id libphy
+alias symbol:phy_modify_changed libphy
+alias symbol:jbd2_journal_force_commit jbd2
+alias symbol:phy_init_eee libphy
+alias symbol:genphy_handle_interrupt_no_ack libphy
+alias symbol:crypto_alg_sem crypto
+alias symbol:crypto_get_attr_type crypto_algapi
+alias symbol:crypto_unregister_notifier crypto_algapi
+alias symbol:crypto_register_instance crypto_algapi
+alias symbol:crypto_alg_extsize crypto_algapi
+alias symbol:phy_init_hw libphy
+alias symbol:phy_gbit_features libphy
+alias symbol:genphy_c45_read_status libphy
+alias symbol:phy_resume libphy
+alias symbol:eip_get_stats 8390p
+alias symbol:phy_modify_mmd libphy
+alias symbol:phy_support_asym_pause libphy
+alias symbol:release_firmware firmware_class
+alias symbol:crypto_shash_alg_has_setkey crypto_hash
+alias symbol:phy_drivers_unregister libphy
+alias symbol:eip_start_xmit 8390p
+alias symbol:phy_modify_paged libphy
+alias symbol:genphy_read_lpa libphy
+alias symbol:devm_phy_package_join libphy
+alias symbol:mdiobus_unregister_device libphy
+alias symbol:unix_inq_len unix
+alias symbol:__mdiobus_write libphy
+alias symbol:phy_gbit_fibre_features libphy
+alias symbol:genphy_setup_forced libphy
+alias symbol:fat_scan fat
+alias symbol:phy_speed_down libphy
+alias symbol:crypto_lookup_template crypto_algapi
+alias symbol:mdiobus_read_nested libphy
+alias symbol:crypto_cipher_decrypt_one crypto
+alias symbol:crypto_unregister_shashes crypto_hash
+alias symbol:CRYPTO_INTERNAL crypto
+alias symbol:genphy_c45_an_config_aneg libphy
+alias symbol:crypto_grab_spawn crypto_algapi
+alias symbol:jbd2_journal_clear_features jbd2
+alias symbol:crypto_register_shashes crypto_hash
+alias symbol:phy_set_max_speed libphy
+alias symbol:crypto_register_templates crypto_algapi
+alias symbol:phy_device_free libphy
+alias symbol:ahash_register_instance crypto_hash
+alias symbol:phy_ethtool_get_eee libphy
+alias symbol:fat_add_entries fat
+alias symbol:eip_interrupt 8390p
+alias symbol:jbd2_journal_init_dev jbd2
+alias symbol:jbd2_wait_inode_data jbd2
+alias symbol:mdio_driver_unregister libphy
+alias symbol:eip_close 8390p
+alias symbol:phy_ethtool_ksettings_get libphy
+alias symbol:crypto_unregister_alg crypto_algapi
+alias symbol:net_selftest selftests
+alias symbol:phy_ethtool_set_eee libphy
+alias symbol:mii_ethtool_gset mii
+alias symbol:crypto_mod_put crypto
+alias symbol:phy_read_mmd libphy
+alias symbol:jbd2_journal_set_features jbd2
+alias symbol:mdiobus_modify libphy
+alias symbol:phy_ethtool_ksettings_set libphy
+alias symbol:phy_gbit_features_array libphy
+alias symbol:phy_attached_print libphy
+alias symbol:phy_support_sym_pause libphy
+alias symbol:phy_driver_unregister libphy
+alias symbol:request_firmware_direct firmware_class
+alias symbol:phy_attached_info_irq libphy
+alias symbol:crypto_hash_walk_first crypto_hash
+alias symbol:crypto_larval_kill crypto
+alias symbol:__phy_read_mmd libphy
+alias symbol:jbd2_journal_start jbd2
+alias symbol:crypto_enqueue_request crypto_algapi
+alias symbol:jbd2_journal_invalidate_folio jbd2
+alias symbol:net_selftest_get_strings selftests
+alias symbol:__fat_fs_error fat
+alias symbol:phy_stop libphy
+alias symbol:firmware_request_cache firmware_class
+alias symbol:phy_print_status libphy
+alias symbol:fat_alloc_new_dir fat
+alias symbol:genphy_read_master_slave libphy
+alias symbol:jbd2_complete_transaction jbd2
+alias symbol:genphy_c45_pma_setup_forced libphy
+alias symbol:crypto_alloc_shash crypto_hash
+alias symbol:phy_find_first libphy
+alias symbol:__phy_modify_mmd libphy
+alias symbol:crypto_register_template crypto_algapi
+alias symbol:phy_10gbit_full_features libphy
+alias symbol:eip_tx_timeout 8390p
+alias symbol:phy_drivers_register libphy
+alias symbol:crypto_shash_finup crypto_hash
+alias symbol:genphy_c45_an_disable_aneg libphy
+alias symbol:genphy_check_and_restart_aneg libphy
+alias symbol:phy_get_c45_ids libphy
+alias symbol:fat_remove_entries fat
+alias symbol:phy_device_remove libphy
+alias symbol:genphy_c45_restart_aneg libphy
+alias symbol:crypto_unregister_instance crypto_algapi
+alias symbol:crypto_drop_spawn crypto_algapi
+alias symbol:unix_peer_get unix
+alias symbol:genphy_restart_aneg libphy
+alias symbol:mdio_bus_init libphy
+alias symbol:phy_remove_link_mode libphy
+alias symbol:crypto_remove_final crypto_algapi
+alias symbol:crypto_unregister_templates crypto_algapi
+alias symbol:jbd2_journal_unlock_updates jbd2
+alias symbol:jbd2_journal_init_jbd_inode jbd2
+alias symbol:crypto_req_done crypto
+alias symbol:mdio_device_free libphy
+alias symbol:__mdiobus_register libphy
+alias symbol:crypto_shash_final crypto_hash
+alias symbol:crypto_check_attr_type crypto_algapi
+alias symbol:jbd2_journal_clear_err jbd2
+alias symbol:phy_start libphy
+alias symbol:phy_register_fixup libphy
+alias symbol:phy_10gbit_fec_features libphy
+alias symbol:jbd2_journal_inode_ranged_wait jbd2
+alias symbol:crypto_hash_walk_done crypto_hash
+alias symbol:mdiobus_register_device libphy
+alias symbol:phy_connect_direct libphy
+alias symbol:linkmode_resolve_pause libphy
+alias symbol:crypto_remove_spawns crypto_algapi
+alias symbol:jbd2_journal_restart jbd2
+alias symbol:jbd2_submit_inode_data jbd2
+alias symbol:phy_reset_after_clk_enable libphy
+alias symbol:crypto_hash_alg_has_setkey crypto_hash
+alias symbol:crypto_ahash_digest crypto_hash
+alias symbol:jbd2_fc_release_bufs jbd2
+alias symbol:jbd2_transaction_committed jbd2
+alias symbol:phy_basic_t1_features_array libphy
+alias symbol:jbd2_journal_load jbd2
+alias symbol:genphy_c45_loopback libphy
+alias symbol:phy_request_interrupt libphy
+alias symbol:crc16_table crc16
+alias symbol:mdiobus_alloc_size libphy
+alias symbol:mdio_device_create libphy
+alias symbol:phy_suspend libphy
+alias symbol:phy_start_aneg libphy
+alias symbol:mdio_bus_exit libphy
+alias symbol:generic_mii_ioctl mii
+alias symbol:jbd2_journal_check_available_features jbd2
+alias symbol:jbd2_journal_abort jbd2
+alias symbol:mii_check_media mii
+alias symbol:genphy_c45_read_mdix libphy
+alias symbol:request_partial_firmware_into_buf firmware_class
+alias symbol:mii_check_link mii
+alias symbol:linkmode_set_pause libphy
+alias symbol:crypto_unregister_shash crypto_hash
+alias symbol:crypto_comp_compress crypto
+alias symbol:jbd2_journal_blocks_per_page jbd2
+alias symbol:phy_do_ioctl libphy
+alias symbol:mdiobus_write_nested libphy
+alias symbol:jbd2_journal_try_to_free_buffers jbd2
+alias symbol:phy_detach libphy
+alias symbol:unix_outq_len unix
+alias symbol:crypto_destroy_tfm crypto
+alias symbol:crypto_register_shash crypto_hash
+alias symbol:phy_modify_paged_changed libphy
+alias symbol:genphy_c45_pma_suspend libphy
+alias symbol:crypto_ahash_final crypto_hash
+alias symbol:jbd2_trans_will_send_data_barrier jbd2
+alias symbol:crypto_shash_setkey crypto_hash
+alias symbol:scatterwalk_map_and_copy crypto_algapi
+alias symbol:jbd2_journal_put_journal_head jbd2
+alias symbol:mdio_find_bus libphy
+alias symbol:phy_modify libphy
+alias symbol:fat_update_time fat
+alias symbol:mii_ethtool_get_link_ksettings mii
+alias symbol:crypto_shoot_alg crypto
+alias symbol:genphy_c45_aneg_done libphy
+alias symbol:fwnode_mdio_find_device libphy
+alias symbol:jbd2_journal_errno jbd2
+alias symbol:phy_resolve_aneg_pause libphy
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.symbols.bin b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.symbols.bin
new file mode 100644
index 0000000..876e871
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/modules.symbols.bin differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/msdos.ko b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/msdos.ko
new file mode 100644
index 0000000..ed697b8
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/msdos.ko differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/ne.ko b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/ne.ko
new file mode 100644
index 0000000..bf738a7
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/ne.ko differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/nls_cp437.ko b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/nls_cp437.ko
new file mode 100644
index 0000000..f243704
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/nls_cp437.ko differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/r8169.ko b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/r8169.ko
new file mode 100644
index 0000000..dadae6f
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/r8169.ko differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/realtek.ko b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/realtek.ko
new file mode 100644
index 0000000..4d962dd
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/realtek.ko differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/selftests.ko b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/selftests.ko
new file mode 100644
index 0000000..57318b5
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/selftests.ko differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/unix.ko b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/unix.ko
new file mode 100644
index 0000000..596e081
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/unix.ko differ
diff --git a/floppy/ramdisk/lib/modules/5.18.1-arch1-1/vfat.ko b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/vfat.ko
new file mode 100644
index 0000000..32c1769
Binary files /dev/null and b/floppy/ramdisk/lib/modules/5.18.1-arch1-1/vfat.ko differ
diff --git a/floppy/ramdisk/sbin/blkid b/floppy/ramdisk/sbin/blkid
new file mode 120000
index 0000000..7125971
--- /dev/null
+++ b/floppy/ramdisk/sbin/blkid
@@ -0,0 +1 @@
+../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/sbin/depmod b/floppy/ramdisk/sbin/depmod
new file mode 120000
index 0000000..7125971
--- /dev/null
+++ b/floppy/ramdisk/sbin/depmod
@@ -0,0 +1 @@
+../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/sbin/fdisk b/floppy/ramdisk/sbin/fdisk
new file mode 120000
index 0000000..7125971
--- /dev/null
+++ b/floppy/ramdisk/sbin/fdisk
@@ -0,0 +1 @@
+../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/sbin/fsck b/floppy/ramdisk/sbin/fsck
new file mode 120000
index 0000000..7125971
--- /dev/null
+++ b/floppy/ramdisk/sbin/fsck
@@ -0,0 +1 @@
+../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/sbin/halt b/floppy/ramdisk/sbin/halt
new file mode 120000
index 0000000..7125971
--- /dev/null
+++ b/floppy/ramdisk/sbin/halt
@@ -0,0 +1 @@
+../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/sbin/ifconfig b/floppy/ramdisk/sbin/ifconfig
new file mode 120000
index 0000000..7125971
--- /dev/null
+++ b/floppy/ramdisk/sbin/ifconfig
@@ -0,0 +1 @@
+../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/sbin/init b/floppy/ramdisk/sbin/init
new file mode 120000
index 0000000..7125971
--- /dev/null
+++ b/floppy/ramdisk/sbin/init
@@ -0,0 +1 @@
+../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/sbin/insmod b/floppy/ramdisk/sbin/insmod
new file mode 120000
index 0000000..7125971
--- /dev/null
+++ b/floppy/ramdisk/sbin/insmod
@@ -0,0 +1 @@
+../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/sbin/ip b/floppy/ramdisk/sbin/ip
new file mode 120000
index 0000000..7125971
--- /dev/null
+++ b/floppy/ramdisk/sbin/ip
@@ -0,0 +1 @@
+../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/sbin/losetup b/floppy/ramdisk/sbin/losetup
new file mode 120000
index 0000000..7125971
--- /dev/null
+++ b/floppy/ramdisk/sbin/losetup
@@ -0,0 +1 @@
+../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/sbin/lsmod b/floppy/ramdisk/sbin/lsmod
new file mode 120000
index 0000000..7125971
--- /dev/null
+++ b/floppy/ramdisk/sbin/lsmod
@@ -0,0 +1 @@
+../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/sbin/mke2fs b/floppy/ramdisk/sbin/mke2fs
new file mode 120000
index 0000000..7125971
--- /dev/null
+++ b/floppy/ramdisk/sbin/mke2fs
@@ -0,0 +1 @@
+../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/sbin/mkfs.ext2 b/floppy/ramdisk/sbin/mkfs.ext2
new file mode 120000
index 0000000..7125971
--- /dev/null
+++ b/floppy/ramdisk/sbin/mkfs.ext2
@@ -0,0 +1 @@
+../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/sbin/mkswap b/floppy/ramdisk/sbin/mkswap
new file mode 120000
index 0000000..7125971
--- /dev/null
+++ b/floppy/ramdisk/sbin/mkswap
@@ -0,0 +1 @@
+../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/sbin/modprobe b/floppy/ramdisk/sbin/modprobe
new file mode 120000
index 0000000..7125971
--- /dev/null
+++ b/floppy/ramdisk/sbin/modprobe
@@ -0,0 +1 @@
+../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/sbin/pivot_root b/floppy/ramdisk/sbin/pivot_root
new file mode 120000
index 0000000..7125971
--- /dev/null
+++ b/floppy/ramdisk/sbin/pivot_root
@@ -0,0 +1 @@
+../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/sbin/poweroff b/floppy/ramdisk/sbin/poweroff
new file mode 120000
index 0000000..7125971
--- /dev/null
+++ b/floppy/ramdisk/sbin/poweroff
@@ -0,0 +1 @@
+../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/sbin/reboot b/floppy/ramdisk/sbin/reboot
new file mode 120000
index 0000000..7125971
--- /dev/null
+++ b/floppy/ramdisk/sbin/reboot
@@ -0,0 +1 @@
+../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/sbin/swapoff b/floppy/ramdisk/sbin/swapoff
new file mode 120000
index 0000000..7125971
--- /dev/null
+++ b/floppy/ramdisk/sbin/swapoff
@@ -0,0 +1 @@
+../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/sbin/swapon b/floppy/ramdisk/sbin/swapon
new file mode 120000
index 0000000..7125971
--- /dev/null
+++ b/floppy/ramdisk/sbin/swapon
@@ -0,0 +1 @@
+../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/sbin/sysctl b/floppy/ramdisk/sbin/sysctl
new file mode 120000
index 0000000..7125971
--- /dev/null
+++ b/floppy/ramdisk/sbin/sysctl
@@ -0,0 +1 @@
+../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/sbin/udhcpc b/floppy/ramdisk/sbin/udhcpc
new file mode 120000
index 0000000..7125971
--- /dev/null
+++ b/floppy/ramdisk/sbin/udhcpc
@@ -0,0 +1 @@
+../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/usr/bin/chvt b/floppy/ramdisk/usr/bin/chvt
new file mode 120000
index 0000000..f948f1a
--- /dev/null
+++ b/floppy/ramdisk/usr/bin/chvt
@@ -0,0 +1 @@
+../../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/usr/bin/clear b/floppy/ramdisk/usr/bin/clear
new file mode 120000
index 0000000..f948f1a
--- /dev/null
+++ b/floppy/ramdisk/usr/bin/clear
@@ -0,0 +1 @@
+../../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/usr/bin/du b/floppy/ramdisk/usr/bin/du
new file mode 120000
index 0000000..f948f1a
--- /dev/null
+++ b/floppy/ramdisk/usr/bin/du
@@ -0,0 +1 @@
+../../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/usr/bin/find b/floppy/ramdisk/usr/bin/find
new file mode 120000
index 0000000..f948f1a
--- /dev/null
+++ b/floppy/ramdisk/usr/bin/find
@@ -0,0 +1 @@
+../../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/usr/bin/free b/floppy/ramdisk/usr/bin/free
new file mode 120000
index 0000000..f948f1a
--- /dev/null
+++ b/floppy/ramdisk/usr/bin/free
@@ -0,0 +1 @@
+../../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/usr/bin/less b/floppy/ramdisk/usr/bin/less
new file mode 120000
index 0000000..f948f1a
--- /dev/null
+++ b/floppy/ramdisk/usr/bin/less
@@ -0,0 +1 @@
+../../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/usr/bin/tail b/floppy/ramdisk/usr/bin/tail
new file mode 120000
index 0000000..f948f1a
--- /dev/null
+++ b/floppy/ramdisk/usr/bin/tail
@@ -0,0 +1 @@
+../../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/usr/bin/test b/floppy/ramdisk/usr/bin/test
new file mode 120000
index 0000000..f948f1a
--- /dev/null
+++ b/floppy/ramdisk/usr/bin/test
@@ -0,0 +1 @@
+../../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/usr/bin/wget b/floppy/ramdisk/usr/bin/wget
new file mode 120000
index 0000000..f948f1a
--- /dev/null
+++ b/floppy/ramdisk/usr/bin/wget
@@ -0,0 +1 @@
+../../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/usr/bin/xargs b/floppy/ramdisk/usr/bin/xargs
new file mode 120000
index 0000000..f948f1a
--- /dev/null
+++ b/floppy/ramdisk/usr/bin/xargs
@@ -0,0 +1 @@
+../../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/usr/sbin/chroot b/floppy/ramdisk/usr/sbin/chroot
new file mode 120000
index 0000000..f948f1a
--- /dev/null
+++ b/floppy/ramdisk/usr/sbin/chroot
@@ -0,0 +1 @@
+../../bin/busybox
\ No newline at end of file
diff --git a/floppy/ramdisk/usr/sbin/partprobe b/floppy/ramdisk/usr/sbin/partprobe
new file mode 120000
index 0000000..f948f1a
--- /dev/null
+++ b/floppy/ramdisk/usr/sbin/partprobe
@@ -0,0 +1 @@
+../../bin/busybox
\ No newline at end of file
diff --git a/floppy/run_bochs.sh b/floppy/run_bochs.sh
new file mode 100755
index 0000000..507e598
--- /dev/null
+++ b/floppy/run_bochs.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+sleep 2
+bochs -q -f "bochs.config" 'boot:floppy' "floppya: 1_44=floppy1.img, status=inserted"
diff --git a/floppy/run_bochs_gdb.sh b/floppy/run_bochs_gdb.sh
new file mode 100755
index 0000000..7549c81
--- /dev/null
+++ b/floppy/run_bochs_gdb.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+sleep 2
+DIR=$(pwd)
+echo $DIR
+cd ~/i486/linux/src/archlinux-linux
+bochs-gdb -q -f "$DIR/bochs-gdb.config" 'boot:floppy' "floppya: 1_44=$DIR/floppy1.img, status=inserted"
diff --git a/floppy/run_qemu.sh b/floppy/run_qemu.sh
new file mode 100755
index 0000000..ebde263
--- /dev/null
+++ b/floppy/run_qemu.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+sleep 2 && \
+qemu-system-i386 -cpu 486 -m 32M \
+	-drive "file=floppy1.img,if=floppy,format=raw" \
+	-netdev user,id=net0,net=10.0.0.0/24,host=10.0.0.2,dhcpstart=10.0.0.16,hostfwd=tcp::8080-:80,hostfwd=udp::8081-:81 \
+	-device rtl8139,netdev=net0
diff --git a/floppy/run_serial_qemu.sh b/floppy/run_serial_qemu.sh
new file mode 100755
index 0000000..594b989
--- /dev/null
+++ b/floppy/run_serial_qemu.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+qemu-system-i386 -cpu 486 -m 32M -drive "file=floppy1.img,if=floppy,format=raw" -nographic
diff --git a/floppy/tests/test_a20.asm b/floppy/tests/test_a20.asm
new file mode 100644
index 0000000..43da6e3
--- /dev/null
+++ b/floppy/tests/test_a20.asm
@@ -0,0 +1,61 @@
+; The following code is public domain licensed
+ 
+[bits 16]
+ 
+; Function: check_a20
+;
+; Purpose: to check the status of the a20 line in a completely self-contained state-preserving way.
+;          The function can be modified as necessary by removing push's at the beginning and their
+;          respective pop's at the end if complete self-containment is not required.
+;
+; Returns: 0 in ax if the a20 line is disabled (memory wraps around)
+;          1 in ax if the a20 line is enabled (memory does not wrap around)
+ 
+check_a20:
+    pushf
+    push ds
+    push es
+    push di
+    push si
+ 
+    cli
+ 
+    xor ax, ax ; ax = 0
+    mov es, ax
+ 
+    not ax ; ax = 0xFFFF
+    mov ds, ax
+ 
+    mov di, 0x0500
+    mov si, 0x0510
+ 
+    mov al, byte [es:di]
+    push ax
+ 
+    mov al, byte [ds:si]
+    push ax
+ 
+    mov byte [es:di], 0x00
+    mov byte [ds:si], 0xFF
+ 
+    cmp byte [es:di], 0xFF
+ 
+    pop ax
+    mov byte [ds:si], al
+ 
+    pop ax
+    mov byte [es:di], al
+ 
+    mov ax, 0
+    je check_a20__exit
+ 
+    mov ax, 1
+ 
+check_a20__exit:
+    pop si
+    pop di
+    pop es
+    pop ds
+    popf
+ 
+    ret
diff --git a/floppy/tests/test_unreal.asm b/floppy/tests/test_unreal.asm
new file mode 100644
index 0000000..687a528
--- /dev/null
+++ b/floppy/tests/test_unreal.asm
@@ -0,0 +1,49 @@
+; Assembly example
+ 
+; nasm boot.asm -o boot.bin
+; partcopy boot.bin 0 200 -f0
+ 
+[ORG 0x7c00]              ; add to offsets
+ 
+start:   xor ax, ax       ; make it zero
+   mov ds, ax             ; DS=0
+   mov ss, ax             ; stack starts at seg 0
+   mov sp, 0x9c00         ; 2000h past code start, 
+                          ; making the stack 7.5k in size
+ 
+   cli                    ; no interrupts
+   push ds                ; save real mode
+ 
+   lgdt [gdtinfo]         ; load gdt register
+ 
+   mov  eax, cr0          ; switch to pmode by
+   or al,1                ; set pmode bit
+   mov  cr0, eax
+ 
+   jmp $+2                ; tell 386/486 to not crash
+ 
+   mov  bx, 0x08          ; select descriptor 1
+   mov  ds, bx            ; 8h = 1000b
+ 
+   and al,0xFE            ; back to realmode
+   mov  cr0, eax          ; by toggling bit again
+ 
+   pop ds                 ; get back old segment
+   sti
+ 
+   mov bx, 0x0f01         ; attrib/char of smiley
+   mov eax, 0x0b8000      ; note 32 bit offset
+   mov word [ds:eax], bx
+ 
+   jmp $                  ; loop forever
+ 
+gdtinfo:
+   dw gdt_end - gdt - 1   ;last byte in table
+   dd gdt                 ;start of table
+ 
+gdt         dd 0,0        ; entry 0 is always unused
+flatdesc    db 0xff, 0xff, 0, 0, 0, 10010010b, 11001111b, 0
+gdt_end:
+ 
+   times 510-($-$$) db 0  ; fill sector w/ 0's
+   dw 0xAA55              ; Required by some BIOSes
-- 
cgit v1.2.3-54-g00ecf