[comp.sys.apple] sending all 256 characters to printer port

AWCTTYPA@UIAMVS.BITNET ("David A. Lyons") (12/27/88)

>Date:         Wed, 21 Dec 88 23:36:44 GMT
>From:         Mark Litscher <marque!lakesys!barak@CSD1.MILW.WISC.EDU>
>Subject:      Apple //c serial port

>I need to find a machine language routine that can send a character
>to my Brother M-1109 printer without setting the hi-bit. I have
>checked the setup of the printer and the computer, neither are using
>parity. I know it can be done, I have utilities that can do it, but I
>need to print all 255 graphics characters.

The following is untested, but I think it'll work (I've done similar
things in the past):

   500 POKE 768,169 : POKE 770,76 : POKE 771,237 : POKE 772,253
   510 REM      LDA #          JMP           $ED            $FD

  1000 ?CHR$(4);"PR#1": REM send output to port 1
  1010 ?CHR$(9);"Z";  : REM tell serial port to pass everything thru

  2000 REM * print character X
  2010 POKE 769,X : CALL 768

The idea is to use the following little machine language subroutine
at $300:

  $300: LDA #$xx
  $303: JMP $FDED  ;"cout"

The POKE 769 stores a value in the operand of the LDA instruction;
when the CALL 768 is executed, the character is loaded into A & fed
to COUT (character out).  This avoids the problem of Applesoft
turning on the high bit before calling COUT from a PRINT statement.

>Mark Litscher
>barak@lakesys.UUCP
>{backbone,uwvax}!uwmcsd1!lakesys!barak

--David A. Lyons              bitnet: awcttypa@uiamvs
  DAL Systems                 CompuServe:  72177,3233
  P.O. Box 287                GEnie mail:    D.LYONS2
  North Liberty, IA 52317     AppleLinkPE: Dave Lyons