home *** CD-ROM | disk | FTP | other *** search
- ;
- ; NEWBAUD.ASM
- ; (revised 12/11/80)
- ; by Keith Petersen and Dave Hardy
- ;
- ;REMOTE BAUD RATE CHANGE UTILITY FOR PMMI MODEMS
- ;
- ;Allows a remote user to change baud rate without
- ;having to call back.
- ;
- ;This program is compatible with CP/M 1.4, 2.x., and MP/M
- ;
- ;PMMI modem port equates
- ;
- ;Set TPORT to the base address of your PMMI modem
- ;(all other modem equates are based on this value).
- ;
- TPORT EQU 0C0H ;UART CONTROL/STATUS PORT
- DPORT EQU TPORT+1 ;MODEM DATA PORT
- RPORT EQU TPORT+2 ;RATE GEN/MODEM STATUS
- CPORT EQU TPORT+3 ;MODEM CONTROL
- ;
- ;The following equates are used to set up the PMMI modem
- ;
- P08BIT EQU 0CH ;8 DATA BITS
- P0NOPY EQU 10H ;NO PARITY
- P0TSB EQU 40H ;2 STOP BITS
- P0NORM EQU P08BIT+P0NOPY ;USE 8 BITS, NO PARITY
- P0110 EQU P08BIT+P0NOPY+P0TSB ;SAME W/2 STOP BITS
- ;
- ;Baud rate divisors
- ;
- B110 EQU 142 ;110 BAUD
- B300 EQU 52 ;300 BAUD
- B450 EQU 35 ;450 BAUD
- B600 EQU 26 ;600 BAUD
- B710 EQU 22 ;710 BAUD
- ;
- ORG 100H
- ;
- ;This program uses the CP/M default stack
- ;
- START LXI D,MSG ;SEND MESSAGE TO CONSOLE
- MVI C,PRINT ;VIA BDOS "PRINT STRING" FUNCTION
- CALL BDOS
- ;
- ;Now wait until last character of message
- ;is finished before changing baud rate
- ;
- LXI H,0
- LXI D,1 ;DELAY VALUE
- ;
- SLO DAD D ;ADD ONE
- JNC SLO ;NO CARRY YET, COUNT MORE
- ;
- ;Now read the modem at different baud rates until a CR is found
- ;
- CHANGE IN DPORT ;CLEAR ANY GARBAGE FROM MODEM PORT
- IN DPORT ;CLEAR IT TWICE JUST TO BE SURE
- ;
- MVI A,B110 ;SELECT 110 BAUD INITIALLY
- OUT RPORT ;SET BAUD RATE IN MODEM
- MVI A,P0110 ;SELECT 8 DATA, NO PARITY, 2 STOP BITS FOR 110 BAUD
- OUT TPORT
- MVI A,7FH ;SET MODEM FILTER FOR <300
- OUT CPORT
- CALL TSTBAUD ;SEE IF BAUD = 110
- RZ ;YES, EXIT TO CP/M
- ;
- MVI A,P0NORM ;SET FOR 1 STOP BIT, ETC., FOR >110 BAUD
- OUT TPORT
- MVI A,B300 ;SET MODEM TO 300 BAUD
- OUT RPORT
- CALL TSTBAUD ;SEE IF BAUD = 300
- RZ ;YES, EXIT TO CP/M
- ;
- MVI A,B450 ;SET MODEM TO 450 BAUD
- OUT RPORT
- MVI A,5FH ;SET MODEM FILTER FOR >300
- OUT CPORT
- CALL TSTBAUD ;SEE IF BAUD = 450
- RZ ;YES, EXIT TO CP/M
- ;
- MVI A,B600 ;SET MODEM TO 600 BAUD
- OUT RPORT
- CALL TSTBAUD ;SEE IF BAUD = 600
- RZ ;YES, EXIT TO CP/M
- ;
- MVI A,B710 ;SET MODEM TO 710 BAUD
- OUT RPORT
- CALL TSTBAUD ;SEE IF BAUD = 710
- RZ ;YES, EXIT TO CP/M
- ;
- JMP CHANGE ;KEEP TRYING UNTIL CR IS FOUND
- ;
- ;TSTBAUD reads one character from console input and returns
- ;with the zero flag set if the character is a CR.
- ;
- TSTBAUD CALL CONIN ;GET CHARACTER DIRECT FROM CONSOLE
- CPI CR ;SET ZERO FLAG IF CHARACTER IS CR
- RET ;THEN RETURN
- ;
- ;This routine does a direct console input without echo
- ;
- CONIN LHLD 1 ;GET CBIOS VECTOR
- LXI D,6 ;ADD OFFSET TO CONIN VECTOR
- DAD D ;HL NOW = CONIN VECTOR
- PCHL ;GO THERE
- ;
- MSG DB CR,LF,'Change to new Baud rate,',CR,LF
- DB 'THEN type RETURNs until the system responds.'
- DB CR,LF,CR,LF,'$'
- ;
- BDOS EQU 5 ;BDOS ENTRY ADDRESS
- CR EQU 0DH ;CARRIAGE RETURN
- LF EQU 0AH ;LINEFEED
- PRINT EQU 9 ;PRINT STRING FUNCTION
- CI EQU 1 ;CONSOLE INPUT FUNCTION
- ;
- END
-
-