gr.text_base must be updated 30fps in your Fs->draw_it() callback. You probably want GrPrint() or just Print(). The DolDoc code takes care of plotting text to gr.text_base. Bits 0-7 8-Bit ASCII Scrn Code Bits 8-11 Foreground color Bits 12-15 Background color Bits 16-20 Signed X pos shift val Bits 21-25 Signed Y pos shift val Bit 28 Blink Bit 29 Inverted (Swap foreground and background) Bit 30 Sel (XOR colors with FF) Bit 31 Underline GrUpdateTaskWin() calls DocUpdateTaskDocs() which calls DocRecalc() where the document text is plotted into gr.text_base. Then, GrUpdateTextBG() and GrUpdateTextFG() render the gr.text_base onto gr.dc2, a raw graphic bitmap. See ::/Demo/Games/Maze.HC.