; 22/2/80: 1117 ; P.P.H. LEE, ; ROYAL MELBOURNE INSTITUTE OF TECHNOLOGY, ; APPLIED PHYSICS DEPARTMENT, ; 124 LATROBE STREET, MELBOURNE, ; VICTORIA 3000, AUSTRALIA. ; PROGRAM TO SET THE LIST DEVICE BITS OF THE SYSTEM'S ; IOBYTE TO LINE PRINTER OR TTY. ; TO EXECUTE TYPE: ; LPRINT ON - EQUIVALENT TO STAT LST:=LPT: ; LPRINT OFF - EQUIVALENT TO STAT LST:=TTY: ; EQUATES: IOBYTE EQU 3 ; SYSTEM'S IOBYTE BDOS EQU 5 ; CP/M BDOS ENTRY POINT PRINT EQU 9 ; BDOS PRINT BUFFER TFCB EQU 5CH ; DEFAULT FCB ORG 100H LPRINT: LXI H,0 ; GET OLD STACK DAD SP SHLD STACK ; AND SAVE IT LXI SP,STACK ; SET NEW STACK POINTER LDA IOBYTE ; GET SYSTEM'S IOBYTE ANI 3FH ; CLEAR LST: BITS MOV B,A ; SAVE IT FOR LATER LXI H,TFCB+1 LXI D,ON ; CHECK FOR ON CALL COMP JNZ LPRNT1 ; BRIF NOT MOV A,B ; GET CLEARED IOBYTE TO A ORI 80H ; SET IT TO LPT: STA IOBYTE ; REPLACE CALL EXIT DB 'LST:=LPT:',0DH,0AH,'$' LPRNT1: LXI H,TFCB+1 LXI D,OFF ; CHECK FOR OFF CALL COMP JNZ LPRNT2 ; BRIF NOT MOV A,B ; GET CLEARED IOBYTE TO A STA IOBYTE ; REPLACE CALL EXIT DB 'LST:=TTY:',0DH,0AH,'$' LPRNT2: CALL EXIT DB '++ NO ON/OFF',0DH,0AH,'$' EXIT: POP D ; GET START OF MESSAGE MVI C,PRINT ; PRINT MESSAGE CALL BDOS LHLD STACK ; GET OLD STACK SPHL ; RESTORE RET ; EXIT BACK TO CP/M COMP: MVI C,3 ; SET CHARACTER COUNT COMP1: LDAX D ; GET TEST CHAR CMP M ; COMPARE WITH INPUT CHAR RNZ ; RIF NOT SAME INX D INX H DCR C JNZ COMP1 ; BRIF SOME MORE RET ; DATA: ON: DB 'ON ' OFF: DB 'OFF' DS 128 ; STACK AREA STACK: DS 2 ; OLD STACK END