home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol073 / daisydrv.asm < prev    next >
Assembly Source File  |  1984-04-29  |  2KB  |  58 lines

  1. ;********************************************************
  2. ;*                            *
  3. ;*    Minimal effective BIOS driver for Diablo    *
  4. ;*    1610/1620 Daisywheel printer using EXT/ACK    *
  5. ;*    software handshaking. This driver relies    *
  6. ;*    on the fact that the printer is always taking    *
  7. ;*    characters out of its buffer so 99.99% of     *
  8. ;*    the time there is room to fit in an escape    *
  9. ;*    sequence into the buffer even if it has        *
  10. ;*    "counted" to nearly full. It certainly        *
  11. ;*    works 100% OK in practice.            *
  12. ;*                            *
  13. ;********************************************************
  14. ;
  15. ;    By    Bill Bolton
  16. ;        Software Tools
  17. ;        P.O. Box 80,
  18. ;        Newport Beach
  19. ;        NSW, 2106
  20. ;        Australia
  21. ;
  22. ;    First coded sometime in 1979
  23. ;    Tidied up for publication 26/Jun/1982
  24. ;
  25. ;INPORT    ----> Your port driver routine for inputing from printer
  26. ;OUTPORT ---> Your port driver routine for sending to printer
  27. ;
  28. AESC    EQU    01BH        ;Ascii escape
  29. AETX    EQU    3        ;Ascii end of text
  30. AACK    EQU    6        ;Ascii acknowlege
  31. MAXESC    EQU    3        ;Maximum length of ESC sequence
  32. COUNT    EQU    154        ;No. characters for Diablo buffer
  33.  
  34. DIABLO:
  35.     CALL    OUTPORT        ;SEND THE CHARACTER
  36.     CPI    AESC        ;WAS IT AN ESCAPE?
  37.     LDA    OUTCNT        ; (CHARS SENT SINCE O/P COUNT RESET)
  38.     JNZ    DIAB2        ;NO
  39.     ADI    MAXESC        ;ENSURE ESC SEQUENCE SENT BEFORE ETX
  40. DIAB2:
  41.     DCR    A
  42.     STA    OUTCNT        ;SAVE UPDATED COUNT
  43.     MOV    A,C        ;A <---- CHAR SENT TO KEEPP CP/M HAPPY 
  44.     RNZ            ;NO, RETURN
  45.     MVI    A,COUNT        ;SET COUNT
  46.     STA    OUTCNT
  47.     MVI    C,AETX        ;YES, GET ETX
  48.     CALL    OUTPORT        ;SEND IT
  49. ACKLOOP:
  50.     CALL    INPORT        ;GET CHARACTER FROM PRINTER
  51.     CPI    AACK        ;DIABLO SENDS ACK WHEN IT GETS ETX
  52.                 ;FROM ITS CHARACTER BUFFER
  53.     JNZ    ACKLOOP        ;NOT FOUND, KEEP LOOKING
  54.     RET
  55. ;
  56. OUTCNT:    DB    154        ;COUNT OF CHARACTERS SENT
  57. ;
  58.