Rename VAR16_32 to VAR16VISIBLE.

Sometimes VAR16_32 is used to export a definition to assembler, so
    clarify its naming.
diff --git a/README b/README
index ea734fd..8f1bd20 100644
--- a/README
+++ b/README
@@ -118,17 +118,17 @@
 to simplify these accesses.
 
 Global variables defined in the C code can be read in 16bit mode if
-the variable declaration is marked with VAR16, VAR16_32, VAR16EXPORT,
-or VAR16FIXED.  The GET_GLOBAL macro will then allow read access to
-the variable.  Global variables are stored in the 0xf000 segment, and
-their values are persistent across soft resets.  Because the f-segment
-is marked read-only during run-time, the 16bit code is not permitted
-to change the value of 16bit variables (use of the SET_GLOBAL macro
-from 16bit mode will cause a link error).  Code running in 32bit mode
-can not access variables with VAR16, but can access variables marked
-with VAR16_32, VAR16EXPORT, VAR16FIXED, or with no marking at all.
-The 32bit code can use the GET/SET_GLOBAL macros, but they are not
-required.
+the variable declaration is marked with VAR16, VAR16VISIBLE,
+VAR16EXPORT, or VAR16FIXED.  The GET_GLOBAL macro will then allow read
+access to the variable.  Global variables are stored in the 0xf000
+segment, and their values are persistent across soft resets.  Because
+the f-segment is marked read-only during run-time, the 16bit code is
+not permitted to change the value of 16bit variables (use of the
+SET_GLOBAL macro from 16bit mode will cause a link error).  Code
+running in 32bit mode can not access variables with VAR16, but can
+access variables marked with VAR16VISIBLE, VAR16EXPORT, VAR16FIXED, or
+with no marking at all.  The 32bit code can use the GET/SET_GLOBAL
+macros, but they are not required.
 
 
 GCC 16 bit stack limitations:
diff --git a/src/ata.c b/src/ata.c
index c82e8a3..98d1141 100644
--- a/src/ata.c
+++ b/src/ata.c
@@ -23,7 +23,7 @@
 
 #define IDE_TIMEOUT 32000 //32 seconds max for IDE ops
 
-struct ata_channel_s ATA_channels[CONFIG_MAX_ATA_INTERFACES] VAR16_32;
+struct ata_channel_s ATA_channels[CONFIG_MAX_ATA_INTERFACES] VAR16VISIBLE;
 
 
 /****************************************************************
diff --git a/src/block.c b/src/block.c
index aa341a2..c96daaf 100644
--- a/src/block.c
+++ b/src/block.c
@@ -11,7 +11,7 @@
 #include "util.h" // dprintf
 #include "ata.h" // process_ata_op
 
-struct drives_s Drives VAR16_32;
+struct drives_s Drives VAR16VISIBLE;
 
 
 /****************************************************************
@@ -280,6 +280,7 @@
 {
     if (! CONFIG_DRIVES)
         return -1;
+    ASSERT16();
 
     return stack_hop((u32)op, GET_SEG(SS), 0, __send_disk_op);
 }
diff --git a/src/clock.c b/src/clock.c
index 55b8f95..c95f0a1 100644
--- a/src/clock.c
+++ b/src/clock.c
@@ -56,7 +56,7 @@
 #define PIT_TICK_RATE 1193182 // Underlying HZ of PIT
 #define CALIBRATE_COUNT 0x800 // Approx 1.7ms
 
-u32 cpu_khz VAR16_32;
+u32 cpu_khz VAR16VISIBLE;
 
 static void
 calibrate_tsc()
diff --git a/src/floppy.c b/src/floppy.c
index a71c9eb..3d8d07d 100644
--- a/src/floppy.c
+++ b/src/floppy.c
@@ -26,7 +26,7 @@
 // Since no provisions are made for multiple drive types, most
 // values in this table are ignored.  I set parameters for 1.44M
 // floppy here
-struct floppy_ext_dbt_s diskette_param_table2 VAR16_32 = {
+struct floppy_ext_dbt_s diskette_param_table2 VAR16VISIBLE = {
     .dbt = {
         .specify1       = 0xAF, // step rate 12ms, head unload 240ms
         .specify2       = 0x02, // head load time 4ms, DMA used
@@ -68,7 +68,7 @@
     u8 media_state;
 };
 
-struct floppyinfo_s FloppyInfo[] VAR16_32 = {
+struct floppyinfo_s FloppyInfo[] VAR16VISIBLE = {
     // Unknown
     { {0, 0, 0}, 0x00, 0x00},
     // 1 - 360KB, 5.25" - 2 heads, 40 tracks, 9 sectors
diff --git a/src/misc.c b/src/misc.c
index 2d702a4..b12e860 100644
--- a/src/misc.c
+++ b/src/misc.c
@@ -11,11 +11,11 @@
 #include "pic.h" // enable_hwirq
 
 // Amount of continuous ram under 4Gig
-u32 RamSize VAR16_32;
+u32 RamSize VAR16VISIBLE;
 // Amount of continuous ram >4Gig
 u64 RamSizeOver4G;
 // Space for bios tables built an run-time.
-char BiosTableSpace[CONFIG_MAX_BIOSTABLE] __aligned(MALLOC_MIN_ALIGN) VAR16_32;
+char BiosTableSpace[CONFIG_MAX_BIOSTABLE] __aligned(MALLOC_MIN_ALIGN) VAR16VISIBLE;
 
 
 /****************************************************************
@@ -134,23 +134,23 @@
 } PACKED;
 
 // Real mode IDT descriptor
-struct descloc_s rmode_IDT_info VAR16_32 = {
+struct descloc_s rmode_IDT_info VAR16VISIBLE = {
     .length = sizeof(struct rmode_IVT) - 1,
     .addr = (u32)MAKE_FLATPTR(SEG_IVT, 0),
 };
 
 // Dummy IDT that forces a machine shutdown if an irq happens in
 // protected mode.
-u8 dummy_IDT VAR16_32;
+u8 dummy_IDT VAR16VISIBLE;
 
 // Protected mode IDT descriptor
-struct descloc_s pmode_IDT_info VAR16_32 = {
+struct descloc_s pmode_IDT_info VAR16VISIBLE = {
     .length = sizeof(dummy_IDT) - 1,
     .addr = (u32)MAKE_FLATPTR(SEG_BIOS, &dummy_IDT),
 };
 
 // GDT
-u64 rombios32_gdt[] VAR16_32 __aligned(8) = {
+u64 rombios32_gdt[] VAR16VISIBLE __aligned(8) = {
     // First entry can't be used.
     0x0000000000000000LL,
     // 32 bit flat code segment (SEG32_MODE32_CS)
@@ -168,7 +168,7 @@
 };
 
 // GDT descriptor
-struct descloc_s rombios32_gdt_48 VAR16_32 = {
+struct descloc_s rombios32_gdt_48 VAR16VISIBLE = {
     .length = sizeof(rombios32_gdt) - 1,
     .addr = (u32)MAKE_FLATPTR(SEG_BIOS, rombios32_gdt),
 };
diff --git a/src/pirtable.c b/src/pirtable.c
index a83d4f7..18d3ff5 100644
--- a/src/pirtable.c
+++ b/src/pirtable.c
@@ -9,7 +9,7 @@
 #include "util.h" // checksum
 #include "biosvar.h" // SET_EBDA
 
-u16 PirOffset VAR16_32;
+u16 PirOffset VAR16VISIBLE;
 
 struct pir_table {
     struct pir_header pir;
diff --git a/src/pnpbios.c b/src/pnpbios.c
index 7d9ece5..4e7abc6 100644
--- a/src/pnpbios.c
+++ b/src/pnpbios.c
@@ -41,7 +41,7 @@
 // We need a copy of this string in the 0xf000 segment, but we are not
 // actually a PnP BIOS, so make sure it is *not* aligned, so OSes will
 // not see it if they scan.
-char pnp_string[] __aligned(2) VAR16_32 = " $PnP";
+char pnp_string[] __aligned(2) VAR16VISIBLE = " $PnP";
 #endif
 
 #define FUNCTION_NOT_SUPPORTED 0x82
diff --git a/src/smp.c b/src/smp.c
index 49e5631..44a7929 100644
--- a/src/smp.c
+++ b/src/smp.c
@@ -45,8 +45,8 @@
     return *(volatile const u8 *)addr;
 }
 
-struct { u32 ecx, eax, edx; } smp_mtrr[16] VAR16_32;
-u32 smp_mtrr_count VAR16_32;
+struct { u32 ecx, eax, edx; } smp_mtrr[16] VAR16VISIBLE;
+u32 smp_mtrr_count VAR16VISIBLE;
 
 void
 wrmsr_smp(u32 index, u64 val)
@@ -60,7 +60,7 @@
     smp_mtrr_count++;
 }
 
-u32 CountCPUs VAR16_32;
+u32 CountCPUs VAR16VISIBLE;
 extern void smp_ap_boot_code();
 ASM16(
     "  .global smp_ap_boot_code\n"
diff --git a/src/system.c b/src/system.c
index 8236cf0..a9f271e 100644
--- a/src/system.c
+++ b/src/system.c
@@ -247,8 +247,8 @@
 }
 
 // Info on e820 map location and size.
-struct e820entry e820_list[CONFIG_MAX_E820] VAR16_32;
-int e820_count VAR16_32;
+struct e820entry e820_list[CONFIG_MAX_E820] VAR16VISIBLE;
+int e820_count VAR16VISIBLE;
 
 static void
 handle_15e820(struct bregs *regs)
diff --git a/src/types.h b/src/types.h
index 215b666..7edd809 100644
--- a/src/types.h
+++ b/src/types.h
@@ -42,9 +42,9 @@
 # define VISIBLE32
 // Designate a variable as (only) visible to 16bit code.
 # define VAR16 __section(".data16." UNIQSEC)
-// Designate a variable as visible to both 32bit and 16bit code.
-# define VAR16_32 VAR16 __VISIBLE
-// Designate a variable visible externally.
+// Designate a variable as visible to 16bit, 32bit, and assembler code.
+# define VAR16VISIBLE VAR16 __VISIBLE
+// Designate a variable as externally visible (in addition to all internal code).
 # define VAR16EXPORT __section(".data16.export." UNIQSEC) __VISIBLE
 // Designate a variable at a specific 16bit address
 # define VAR16FIXED(addr) __aligned(1) __VISIBLE __section(".fixedaddr." __stringify(addr))
@@ -58,9 +58,9 @@
 # define VISIBLE16
 # define VISIBLE32 __VISIBLE
 # define VAR16 __section(".discard.var16." UNIQSEC)
-# define VAR16_32 VAR16 __VISIBLE __weak
-# define VAR16EXPORT VAR16_32
-# define VAR16FIXED(addr) VAR16_32
+# define VAR16VISIBLE VAR16 __VISIBLE __weak
+# define VAR16EXPORT VAR16VISIBLE
+# define VAR16FIXED(addr) VAR16VISIBLE
 # define VAR32VISIBLE __VISIBLE
 # define ASM16(code)
 # define ASM32(code) __ASM(code)
diff --git a/src/vgahooks.c b/src/vgahooks.c
index ddeb1d3..701e83c 100644
--- a/src/vgahooks.c
+++ b/src/vgahooks.c
@@ -13,9 +13,9 @@
 #include "config.h" // CONFIG_*
 
 // The Bus/Dev/Fn of the primary VGA device.
-int VGAbdf VAR16_32;
+int VGAbdf VAR16VISIBLE;
 // Coreboot board detected.
-int CBmainboard VAR16_32;
+int CBmainboard VAR16VISIBLE;
 
 static void
 handle_155fXX(struct bregs *regs)