Hace un tiempo encontre esta rutina para HP,
aun no la he probado asi que no se si funciona.
Suerte
Jose
/*
Esta fun‡„o tem como objetivo a impress„o em cores para a impressora HP.
Autor: Emerson Borges dos Santos
Fone:  041-961-5884
Compila‡„o     Clipper hp.prg
Linkedi‡„o     Rtlink  hp.obj
*/
cls
SIMNAO := SPACE(01)
@ 12,15 SAY "Confirma o Teste de Impress„o para a HP ?" GET SIMNAO PICTURE "!";
                                                        VALID(SIMNAO $ "SN")
?? chr(07)
READ
IF LASTKEY() = 27
   CLS
   QUIT
ENDIF
IF SIMNAO = "S"
   SET DEVICE TO PRINT
   SET CONSOLE OFF
   @ PROW()+1,1 SAY CHR(27)+'(s10H'
   @ PROW()+1,1 SAY "Teste de Impressao Letra Normal"
   @ PROW()+1,1 SAY CHR(27)+'(s17.5H'
   @ PROW()+1,1 SAY "Teste de Impressao Letra 17,5 Cpp"
   @ PROW()+1,1 SAY CHR(27)+'(s10H'
   @ PROW()+1,1 SAY "Teste de Impressao Letra Normal"
   @ PROW()+1,1 SAY CHR(27)+'(s12H'
   @ PROW()+1,1 SAY "Teste de Impressao Letra 12 Cpp"
   @ PROW()+1,1 SAY CHR(27)+'(s10H'
   @ PROW()+1,1 SAY "Teste de Impressao Letra Normal"
   @ PROW()+1,1 SAY CHR(27)+'(s3H'
   @ PROW()+1,1 SAY "Teste de Impressao Letra Expandida"
   @ PROW()+1,1 SAY CHR(27)+'(s10H'
   @ PROW()+1,1 SAY "Teste de Impressao Letra Normal"
   @ PROW()+1,1 SAY CHR(27)+'(s50H'
   @ PROW()+1,1 SAY "Teste de Impressao Letra Expandida"
   @ PROW()+1,1 SAY CHR(27)+'(s10H'
   @ PROW()+1,1 SAY "Teste de Impressao Letra Normal"
   @ PROW()+1,1 SAY CHR(27)+CHR(38)+CHR(108)+'#4#'+CHR(68)
   @ PROW()+1,1 SAY "Teste de Impress„o 4 Linhas por Polegada"
   @ PROW()+1,1 SAY CHR(27)+CHR(38)+CHR(108)+'#6#'+CHR(68)
   @ PROW()+1,1 SAY "Teste de Impress„o 6 Linhas por Polegada"
   @ PROW()+1,1 SAY CHR(27)+CHR(38)+CHR(108)+'#8#'+CHR(68)
   @ PROW()+1,1 SAY "Teste de Impress„o 8 Linhas por Polegada"
   @ PROW()+1,1 SAY CHR(27)+CHR(38)+CHR(108)+'#2#'+CHR(68)
   @ PROW()+1,1 SAY "Teste de Impress„o 2 Linhas por Polegada"
   EJECT
   SET CONSOLE ON
   SET DEVICE TO SCREEN
   // HP 600 e HP 660
   OFICIO := CHR(27)+CHR(38)+CHR(108)+CHR(51)+CHR(65)
   LENGH  := CHR(27)+CHR(38)+CHR(108)+'#070#'+CHR(80)
   LENTXT := CHR(27)+CHR(38)+CHR(108)+'#070#'+CHR(70)
   TOPO   := CHR(27)+CHR(38)+CHR(108)+'#000#'+CHR(69)
   ELITE  := CHR(27)+CHR(40)+CHR(115)+CHR(51)+CHR(84)
   VERTIC := CHR(27)+CHR(40)+CHR(115)+CHR(48)+CHR(83)
   ITALIC := CHR(27)+CHR(40)+CHR(115)+CHR(49)+CHR(83)
   NORMAL := CHR(27)+CHR(40)+CHR(115)+CHR(48)+CHR(66)
   PC850  := CHR(27)+CHR(40)+CHR(115)+'#06#'+CHR(72)
   // Tamanho dos Caracteres CPP - Caracteres por Polegadas
   Tam04 := CHR(27)+CHR(40)+CHR(115)+'04'+CHR(86)
   Tam10 := CHR(27)+CHR(40)+CHR(115)+'10'+CHR(86)
   // Tamanho dos Pontos - Altura do Caractere
   Normal10 := Tam04+CHR(27)+CHR(40)+CHR(115)+'10'+CHR(72)
   Normal11 := Tam04+CHR(27)+CHR(40)+CHR(115)+'11'+CHR(72)
   Reduzido := Tam04+CHR(27)+CHR(40)+CHR(115)+'15'+CHR(72)
   Defaut   := CHR(27)+CHR(40)+CHR(115)+CHR(48)+CHR(66)+VERTIC
   Cor_Des  := CHR(27)+CHR(42)+CHR(114)+CHR(49)+CHR(85)
   Cor      := CHR(27)+CHR(42)+CHR(114)+CHR(45)+CHR(51)+CHR(85)
   Azul     := CHR(27)+CHR(42)+CHR(118)+'1'+CHR(83)
   Magenta  := CHR(27)+CHR(42)+CHR(118)+'2'+CHR(83)
   Cyan     := CHR(27)+CHR(42)+CHR(118)+'3'+CHR(83)
   Amarelo  := CHR(27)+CHR(42)+CHR(118)+'4'+CHR(83)
   Verde    := CHR(27)+CHR(42)+CHR(118)+'5'+CHR(83)
   Vermelho := CHR(27)+CHR(42)+CHR(118)+'6'+CHR(83)
   Preto    := CHR(27)+CHR(42)+CHR(118)+'7'+CHR(83)
   SET DEVICE TO PRINT
   @ 00,00 SAY Defaut+OFICIO+LENGH+LENTXT+PC850+ELITE+TOPO+NORMAL10+''
   @ 01,00 SAY Cor+Azul     + "Teste de Impressao de Cor - Azul"
   @ 02,00 SAY Cor+Magenta  + "Teste de Impressao de Cor - Magenta"
   @ 03,00 SAY Cor+Cyan     + "Teste de Impressao de Cor - Cyan"
   @ 04,00 SAY Cor+Amarelo  + "Teste de Impressao de Cor - Amarelo"
   @ 05,00 SAY Cor+Verde    + "Teste de Impressao de Cor - Verde"
   @ 06,00 SAY Cor+Vermelho + "Teste de Impressao de Cor - Vermelho"
   EJECT
   SET DEVICE TO SCREEN
ELSE
   CLS
   QUIT
ENDIF