+ // return 0;
+ {UDI_PIO_END_IMM, UDI_PIO_2BYTE, 0},
+ // }
+ // else {
+ {UDI_PIO_LABEL, 0, 3},
+ // buf_ofs = 0;
+ PIO_MOV_RI2(R2, 0), // Buffer offset
+ // do {
+ {UDI_PIO_LABEL, 0, 4},
+ // buffer[buf_ofs] = inb(SERIAL_PORT+0);
+ PIO_IN_RI1(R0, 0),
+ {UDI_PIO_STORE+UDI_PIO_BUF+UDI_PIO_R2, UDI_PIO_1BYTE, UDI_PIO_R0},
+ // buf_ofs ++;
+ PIO_op_RI(ADD_IMM, R2, 1, 0x01),
+ // } while( inb(SERIAL_PORT+5) & 0x01 );
+ PIO_IN_RI1(R0, 5),
+ PIO_op_RI(AND_IMM, R0, 1, 0x01),
+ {UDI_PIO_CSKIP+UDI_PIO_R0, UDI_PIO_1BYTE, UDI_PIO_Z},
+ {UDI_PIO_BRANCH, 0, 4},
+ // return 0;
+ {UDI_PIO_END, UDI_PIO_1BYTE, UDI_PIO_R2},
+ // }