Ok, I stuck some code to measure the time between writes to C004 in the ap2000's e05a30 which change ack and busy:

Code
#define LASTPASSDIFFERENCE(t, name, func, str) \
  { static t staticlast##name; \
  t last##name = staticlast##name; \
  t diff##name; \
  t cur##name = func; \
  diff##name = cur##name - staticlast##name; diff##name = diff##name; \
  printf(#name": "); \
  printf(str "\n",cur##name-last##name);\
  printf("\n");\
  staticlast##name = cur##name; }
Code
        case 0x04:
                m_centronics_nack = BIT(data,5);
                m_centronics_busy = BIT(data,0);

LASTPASSDIFFERENCE(double,   WRITE_C004_TIME,   machine().time().as_double(), "time = %e");
printf("nack=%d  busy=%d    datalatched=%x\n",m_centronics_nack,m_centronics_busy,m_centronics_data_latch);

The timing looks like it takes at least 10 us:

(booting the combined graphics disk and just choosing 8 - new page (form feed)
Code
nack=0  busy=0    datalatched=0
WRITE_C004_TIME: time = 2.349610e+01

nack=1  busy=1    datalatched=c
WRITE_C004_TIME: time = 5.289714e-06   (5.2 us)

nack=1  busy=0    datalatched=c
WRITE_C004_TIME: time = 5.289714e-06     (5.2 us)

nack=0  busy=0    datalatched=c
WRITE_C004_TIME: time = 9.358724e-05            (93 us)

nack=0  busy=0    datalatched=c
it looks like it's actually quite long to drop the nack (the ap2000 must have hit an interrupt to slow it down a little)

[Linked Image from i.imgur.com]

trying to print a screen gets ESC K 18 01 (adds up to 0118 = 280 pixels wide) then 00 and it hangs reading from $c1c1

Code
nack=0  busy=0    datalatched=d
WRITE_C004_TIME: time = 9.358724e-05

nack=0  busy=1    datalatched=1b             ESC
WRITE_C004_TIME: time = 3.420003e-04

nack=1  busy=1    datalatched=1b
WRITE_C004_TIME: time = 5.289714e-06

nack=1  busy=0    datalatched=1b
WRITE_C004_TIME: time = 5.289714e-06

nack=0  busy=0    datalatched=1b
WRITE_C004_TIME: time = 1.228841e-04

nack=0  busy=1    datalatched=4b                   K
WRITE_C004_TIME: time = 2.583822e-04

nack=1  busy=1    datalatched=4b
WRITE_C004_TIME: time = 5.289714e-06

nack=1  busy=0    datalatched=4b
WRITE_C004_TIME: time = 5.289714e-06

nack=0  busy=0    datalatched=4b                         
WRITE_C004_TIME: time = 9.358724e-05

nack=0  busy=1    datalatched=18                18
WRITE_C004_TIME: time = 2.740479e-04

nack=1  busy=1    datalatched=18
WRITE_C004_TIME: time = 5.289714e-06

nack=1  busy=0    datalatched=18
WRITE_C004_TIME: time = 5.289714e-06

nack=0  busy=0    datalatched=18
WRITE_C004_TIME: time = 9.358724e-05

nack=0  busy=1    datalatched=1                 01
WRITE_C004_TIME: time = 2.307129e-04

nack=1  busy=1    datalatched=1
WRITE_C004_TIME: time = 5.289714e-06

nack=1  busy=0    datalatched=1
WRITE_C004_TIME: time = 5.289714e-06

nack=0  busy=0    datalatched=1
WRITE_C004_TIME: time = 9.358724e-05

nack=0  busy=0    datalatched=1
WRITE_C004_TIME: time = 5.853271e-04

nack=1  busy=1    datalatched=0                    00
WRITE_C004_TIME: time = 5.289714e-06

nack=1  busy=0    datalatched=0
WRITE_C004_TIME: time = 5.289714e-06

nack=0  busy=0    datalatched=0
WRITE_C004_TIME: time = 1.607259e-04

nack=1  busy=1    datalatched=0
WRITE_C004_TIME: time = 5.289714e-06

nack=1  busy=0    datalatched=0
WRITE_C004_TIME: time = 5.289714e-06

nack=0  busy=0    datalatched=0