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 / SIMTEL / CPMUG / CPMUG078.ARK / LPRINT.ASM < prev    next >
Assembly Source File  |  1984-04-29  |  2KB  |  74 lines

  1. ; 22/2/80: 1117
  2. ; P.P.H. LEE,
  3. ; ROYAL MELBOURNE INSTITUTE OF TECHNOLOGY,
  4. ; APPLIED PHYSICS DEPARTMENT,
  5. ; 124 LATROBE STREET, MELBOURNE,
  6. ; VICTORIA 3000, AUSTRALIA.
  7.  
  8. ; PROGRAM TO SET THE LIST DEVICE BITS OF THE SYSTEM'S
  9. ; IOBYTE TO LINE PRINTER OR TTY.
  10. ; TO EXECUTE TYPE:
  11. ; LPRINT ON    - EQUIVALENT TO STAT LST:=LPT:
  12. ; LPRINT OFF    - EQUIVALENT TO STAT LST:=TTY:
  13.  
  14. ; EQUATES:
  15. IOBYTE    EQU    3    ; SYSTEM'S IOBYTE
  16. BDOS    EQU    5    ; CP/M BDOS ENTRY POINT
  17. PRINT    EQU    9    ; BDOS PRINT BUFFER
  18. TFCB    EQU    5CH    ; DEFAULT FCB
  19.  
  20.     ORG    100H
  21.  
  22. LPRINT:    LXI    H,0    ; GET OLD STACK
  23.     DAD    SP
  24.     SHLD    STACK    ; AND SAVE IT
  25.     LXI    SP,STACK ; SET NEW STACK POINTER
  26.     LDA    IOBYTE    ; GET SYSTEM'S IOBYTE
  27.     ANI    3FH    ; CLEAR LST: BITS
  28.     MOV    B,A    ; SAVE IT FOR LATER
  29.     LXI    H,TFCB+1
  30.     LXI    D,ON    ; CHECK FOR ON
  31.     CALL    COMP
  32.     JNZ    LPRNT1    ; BRIF NOT
  33.     MOV    A,B    ; GET CLEARED IOBYTE TO A
  34.     ORI    80H    ; SET IT TO LPT:
  35.     STA    IOBYTE    ; REPLACE
  36.     CALL    EXIT
  37.     DB    'LST:=LPT:',0DH,0AH,'$'
  38.  
  39. LPRNT1:    LXI    H,TFCB+1
  40.     LXI    D,OFF    ; CHECK FOR OFF
  41.     CALL    COMP
  42.     JNZ    LPRNT2    ; BRIF NOT
  43.     MOV    A,B    ; GET CLEARED IOBYTE TO A
  44.     STA    IOBYTE    ; REPLACE
  45.     CALL    EXIT
  46.     DB    'LST:=TTY:',0DH,0AH,'$'
  47.  
  48. LPRNT2:    CALL    EXIT
  49.     DB    '++ NO ON/OFF',0DH,0AH,'$'
  50.  
  51. EXIT:    POP    D    ; GET START OF MESSAGE
  52.     MVI    C,PRINT    ; PRINT MESSAGE
  53.     CALL    BDOS
  54.     LHLD    STACK    ; GET OLD STACK
  55.     SPHL        ; RESTORE
  56.     RET        ; EXIT BACK TO CP/M
  57.  
  58. COMP:    MVI    C,3    ; SET CHARACTER COUNT
  59. COMP1:    LDAX    D    ; GET TEST CHAR
  60.     CMP    M    ; COMPARE WITH INPUT CHAR
  61.     RNZ        ; RIF NOT SAME
  62.     INX    D
  63.     INX    H
  64.     DCR    C
  65.     JNZ    COMP1    ; BRIF SOME MORE
  66.     RET
  67.  
  68. ; DATA:
  69. ON:    DB    'ON '
  70. OFF:    DB    'OFF'
  71.     DS    128    ; STACK AREA
  72. STACK:    DS    2    ; OLD STACK
  73.     END
  74.