CUSTOM DRIVERS
If you are writing your own drivers the following locations are used to access the card CY = NO where N = slot#)
Printer Status — $CØSl,Y (READ)
Output Latch - $CØ8l,Y (WRITE)
Strobe Low — $CØ82,Y (WRITE)
Strobe High — $CØ84,Y (WRITE)
The following routine gives an example of how to output a character using these locations:
| PHA | ; SAVE OUTPUT CHARACTER ON STACK |
| LDY lØ | ; SET UP |
PAPER? | LDA $CØ8l,Y | ; CHECK STATUS FOR PAPER |
| AND Ø4 | ; CHECK SIT 2 |
| BNE PAPER? | ; IF SET THEN NO PAPER, RECHECK |
SLCT? | LDA $CØ8l,Y | ; CHECK STATUS FOR PRINTER SELECT |
| AND Ø2 | ; CHECK BIT 1 |
| BEQ SLCT? | ; IF ZERO THEN NOT SELECTED |
BUSY? | LDA $CØSl,Y | ; CHECK STATUS FOR PRINTER BUSY |
| AND Ø8 | ; CHECK BIT 3 |
| BNE BUSY? | ; IF SET THEN PRINTER IS BUSY |
OUTPUT? | PLA | ; REGET OUTPUT CHARACTER |
| STA $CØ81,Y | ; STORE TO OUTPUT LATCH |
| STA $CØ82,Y | ; PULL STROBE LINE LOW |
| STA SCØ84,Y | ; RESET STROBE LINE HIGH |
| RTS | ; RETURN FROM SUBROUTINE |