If you want you VIA respond to address in the $8000 or $9FFF range then you need to decode the 3 address lines A13 to A15, not just A15.
A15 high decodes every address from $8000 to $FFFF.
IF you want just the $8000 to $8FFF then you'll need to include A12 as well.
If you look at the binary values
Code:
$8000-$8FFF = 1000 xxxx xxxx xxxx
$9000-$9FFF = 1001 xxxx xxxx xxxx
then it becomes obvious what address lines need to be dcodes, and at what level.
For the larger range you need A15 high, A14 and A13 low. So if A15 goes to the active high chip select then that means (A13 OR A14) needs to be fed to the active low, as if either of the address lines is high the address is out of the range required.
For the smaller block, that would A15 again to the active high select, with (A14 OR A13 OR A12) to the ative low.
For running at slow speeds, the simplest decode method to add IO devices to Grant's design is to use the 74HCT138. The 138 has 3 selects one high and two low. So will decode the $8000 to &9FFF memory area without any additional support. Wiring A10 to A12 to the A, B & C inputs gives you 8 device selects each for a 1k block within that range.