Here's some more information on DOS 2.0 interrupts: The DOS critical section flag may be interrogated from within an interrupt handler before requesting DOS services: MOV AH,34h INT 21h returns in ES:BX the address of a byte indicating (when set) that DOS is in an uninterruptible state, and no DOS calls should be made. To access DOS' PRINT capabilities: MOV AH,func INT 2Fh where: AH = 0 adds the file specified by DS:DX to the print queue. DS:DX must point to valid opened FCB. AH = 1 cancels the file indicated by DS:DX. DS:DX must point to an FCB, opened or unopened. The drive byte must not be 0. Wildcards are restricted: ? is okay, * isn't. AH > 1 do nothing. Return with registers set as follows: DS,SI,DI,CX preserved, all others destroyed. AH = number of files currently in queue. AL = for AH=0, return 1 if queue was full. For all other cases, return 0. ES:BX = pointer to list of 10 FCBs in queue, 38 bytes/FCB. If the first byte of an FCB is -1, that FCB is unused. ES:DX = pointer to currently printing FCB. If the queue is empty, DX = -1.  that FCB is unused. ES:DX = pointer to currently printing FCB. If the queue is empty, DX = -1.