It’s incredibly flexible. You can think of a channel as a “driver” and write your own. Fundamentally it’s just pointers to an input routine and an output routine. One byte at a time, but you can do what you want with it. It’s how many proportional font routines work, for example.
Robert
Did you know the ZX Spectrum had a surprisingly modern I/O system? Its channels and streams architecture let you redirect output between screen, printer, and custom devices - remarkably ahead of its time for a 1982 home computer. rk.nvg.ntnu.no/sinclair/faq/tech_48.html