
void comando_dir(byte cmd) { 
   // send DIR command  
   send_byte_to_MCU(cmd);  
   if(TIMEOUT) return;

   // send filename
   send_string_to_MCU(filename);
   if(TIMEOUT) return;

   // get MCU response 
   byte data = receive_byte_from_MCU();
   if(data == ERR_RESPONSE) {
      print_string_response();
      return;
   }

   byte paused = 0;
   while(1) {
      if(!paused) {
         // ask for a text line
         send_byte_to_MCU(OK_RESPONSE);
         if(TIMEOUT) break;

         // get MCU response byte
         data = receive_byte_from_MCU();
         if(TIMEOUT) break;

         if(data == ERR_RESPONSE) break;  // no more lines of text         

         // OK_RESPONSE, MCU will send a line of text terminated by '\r'
         
         while(1) {
            data = receive_byte_from_MCU();
            if(TIMEOUT) return;
            woz_putc(data);
            if(data == '\r') break;  // line terminator                        
            data = apple1_readkey();
            if(data==27) paused = 27;                              
            else if(data!=0) paused = 1;
         }
      }
      else {
         if(paused==27) {
            send_byte_to_MCU(ERR_RESPONSE);
            break;
         }
         else {
            send_byte_to_MCU(WAIT_RESPONSE);
            data = apple1_readkey();
            if(data == 13) paused = 0;         
            else if(data == 27) paused = 27;
         }        
      }
   }
}
