home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / ENTERPRS / CPM / UTILS / F / F80.LBR / LPTDRV.MYC / LPTDRV.MYC
Text File  |  2000-06-30  |  1KB  |  112 lines

  1.     TITLE    LPTDRV - FORTRAN LINE PRINTER DRIVER
  2.  
  3.     .8080
  4.  
  5.     ENTRY    LPTDRV,$OPNFL
  6.     EXTRN    $IOERR,$BF,$BL,$CLSFL
  7.  
  8.     DSEG
  9.  
  10. $OPNFL:    DB    0
  11. CLSADR:    DS    2
  12.  
  13.     CSEG
  14.  
  15. LPTDRV:    DW    $IOERR
  16.     DW    LPTFWR
  17.     DW    $IOERR
  18.     DW    LPTBWR
  19.     DW    $IOERR
  20.     DW    $IOERR
  21.     DW    LPTCLS
  22.  
  23. LPTCLS:    LDA    $OPNFL        ;MAKE SURE ALREADY 'OPEN'
  24.     ORA    A
  25.     JZ    $IOERR
  26.     XRA    A        ;'CLOSE' BY SENDING
  27.     STA    $OPNFL        ;  FORM FEED
  28. OUTFF:    MVI    A,12
  29.     JMP    LPTOUT
  30.  
  31. CLSLPT:    LDA    $OPNFL
  32.     ORA    A
  33.     LHLD    CLSADR
  34.     PUSH    H
  35.     RZ
  36.     CALL    OUTCR        ;CR
  37. OUTLF:    MVI    A,10        ;LF
  38.     JMP    LPTOUT
  39.  
  40. MAKOPN:    LXI    H,$OPNFL
  41.     MOV    A,M
  42.     ORA    A
  43.     RZ
  44.     INR    M
  45. SETCLS:    LHLD    $CLSFL
  46.     LXI    D,CLSLPT
  47.     MOV    A,L
  48.     SUB    E
  49.     MOV    A,H
  50.     SBB    D
  51.     RZ
  52. STORAD:    SHLD    CLSADR
  53.     XCHG
  54.     SHLD    $CLSFL
  55.     RET
  56.  
  57. LPTFWR:    CALL    MAKOPN
  58.     LDA    $BL
  59.     ORA    A
  60.     RZ            ;NUTHIN HERE
  61.  
  62.     LHLD    $BF
  63.     DCR    A
  64.     MOV    E,A        ;INTO [E] FOR LPTLOP
  65.     MOV    A,M
  66.     CPI    '*'        ;DO NOTHING?
  67.     JZ    LPTNLF
  68.     CALL    OUTCR        ;OUTPUT CR
  69.     MOV    A,M
  70.     CPI    "+"
  71.     JZ    LPTNLF
  72.     CPI    "1"
  73.     JNZ    LPTLF
  74.     CALL    OUTFF        ;FORM FEED
  75.     JMP    LPTNLF
  76.  
  77. LPTLF:    CALL    OUTLF
  78.     MOV    A,M
  79.     CPI    "0"
  80.     CZ    OUTLF
  81.  
  82. LPTNLF:    INX    H
  83.     MVI    D,0
  84.  
  85. LPTLOP:    MOV    A,E
  86.     ORA    D
  87.     RZ
  88.     MOV    A,M
  89.     CALL    LPTOUT
  90.     INX    H
  91.     DCX    D
  92.     JMP    LPTLOP
  93.  
  94. LPTBWR:    CALL    MAKOPN
  95.     LHLD    $BL
  96.     XCHG
  97.     LHLD    $BF
  98.     JMP    LPTLOP
  99.  
  100. OUTCR:    MVI    A,13
  101.     
  102. LPTOUT:    PUSH    H
  103.     PUSH    D
  104.     MVI    C,5        ;CP/M LPT OUT FUNCTION
  105.     MOV    E,A
  106.     CALL    0005
  107.     POP    D
  108.     POP    H
  109.     RET
  110.  
  111.     END
  112.