home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol008 / newbaud.asm < prev    next >
Encoding:
Assembly Source File  |  1984-04-29  |  3.0 KB  |  122 lines

  1. ;
  2. ;           NEWBAUD.ASM
  3. ;        (revised 12/11/80)
  4. ;    by Keith Petersen and Dave Hardy
  5. ;
  6. ;REMOTE BAUD RATE CHANGE UTILITY FOR PMMI MODEMS
  7. ;
  8. ;Allows a remote user to change baud rate without
  9. ;having to call back.
  10. ;
  11. ;This program is compatible with CP/M 1.4, 2.x., and MP/M
  12. ;
  13. ;PMMI modem port equates
  14. ;
  15. ;Set TPORT to the base address of your PMMI modem
  16. ;(all other modem equates are based on this value).
  17. ;
  18. TPORT    EQU    0C0H    ;UART CONTROL/STATUS PORT
  19. DPORT    EQU    TPORT+1 ;MODEM DATA PORT
  20. RPORT    EQU    TPORT+2 ;RATE GEN/MODEM STATUS
  21. CPORT    EQU    TPORT+3 ;MODEM CONTROL
  22. ;
  23. ;The following equates are used to set up the PMMI modem
  24. ;
  25. P08BIT    EQU    0CH    ;8 DATA BITS
  26. P0NOPY    EQU    10H    ;NO PARITY
  27. P0TSB    EQU    40H    ;2 STOP BITS
  28. P0NORM    EQU    P08BIT+P0NOPY        ;USE 8 BITS, NO PARITY
  29. P0110    EQU    P08BIT+P0NOPY+P0TSB ;SAME W/2 STOP BITS
  30. ;
  31. ;Baud rate divisors
  32. ;
  33. B110    EQU    142    ;110 BAUD
  34. B300    EQU    52    ;300 BAUD
  35. B450    EQU    35    ;450 BAUD
  36. B600    EQU    26    ;600 BAUD
  37. B710    EQU    22    ;710 BAUD
  38. ;
  39.     ORG    100H
  40. ;
  41. ;This program uses the CP/M default stack
  42. ;
  43. START    LXI    D,MSG     ;SEND MESSAGE TO CONSOLE
  44.     MVI    C,PRINT     ;VIA BDOS "PRINT STRING" FUNCTION
  45.     CALL    BDOS
  46. ;
  47. ;Now wait until last character of message
  48. ;is finished before changing baud rate
  49. ;
  50.     LXI    H,0
  51.     LXI    D,1    ;DELAY VALUE
  52. ;
  53. SLO    DAD    D    ;ADD ONE
  54.     JNC    SLO    ;NO CARRY YET, COUNT MORE
  55. ;
  56. ;Now read the modem at different baud rates until a CR is found
  57. ;
  58. CHANGE    IN    DPORT     ;CLEAR ANY GARBAGE FROM MODEM PORT
  59.     IN    DPORT     ;CLEAR IT TWICE JUST TO BE SURE
  60. ;
  61.     MVI    A,B110     ;SELECT 110 BAUD INITIALLY
  62.     OUT    RPORT     ;SET BAUD RATE IN MODEM
  63.     MVI    A,P0110  ;SELECT 8 DATA, NO PARITY, 2 STOP BITS FOR 110 BAUD
  64.     OUT    TPORT
  65.     MVI    A,7FH     ;SET MODEM FILTER FOR <300
  66.     OUT    CPORT
  67.     CALL    TSTBAUD  ;SEE IF BAUD = 110
  68.     RZ         ;YES, EXIT TO CP/M
  69. ;
  70.     MVI    A,P0NORM ;SET FOR 1 STOP BIT, ETC., FOR >110 BAUD
  71.     OUT    TPORT
  72.     MVI    A,B300     ;SET MODEM TO 300 BAUD
  73.     OUT    RPORT
  74.     CALL    TSTBAUD  ;SEE IF BAUD = 300
  75.     RZ         ;YES, EXIT TO CP/M
  76. ;
  77.     MVI    A,B450     ;SET MODEM TO 450 BAUD
  78.     OUT    RPORT
  79.     MVI    A,5FH     ;SET MODEM FILTER FOR >300
  80.     OUT    CPORT
  81.     CALL    TSTBAUD  ;SEE IF BAUD = 450
  82.     RZ         ;YES, EXIT TO CP/M
  83. ;
  84.     MVI    A,B600     ;SET MODEM TO 600 BAUD
  85.     OUT    RPORT
  86.     CALL    TSTBAUD  ;SEE IF BAUD = 600
  87.     RZ         ;YES, EXIT TO CP/M
  88. ;
  89.     MVI    A,B710     ;SET MODEM TO 710 BAUD
  90.     OUT    RPORT
  91.     CALL    TSTBAUD  ;SEE IF BAUD = 710
  92.     RZ         ;YES, EXIT TO CP/M
  93. ;
  94.     JMP    CHANGE     ;KEEP TRYING UNTIL CR IS FOUND
  95. ;
  96. ;TSTBAUD reads one character from console input and returns
  97. ;with the zero flag set if the character is a CR.
  98. ;
  99. TSTBAUD    CALL    CONIN    ;GET CHARACTER DIRECT FROM CONSOLE
  100.     CPI    CR    ;SET ZERO FLAG IF CHARACTER IS CR
  101.     RET        ;THEN RETURN
  102. ;
  103. ;This routine does a direct console input without echo
  104. ;
  105. CONIN    LHLD    1    ;GET CBIOS VECTOR
  106.     LXI    D,6    ;ADD OFFSET TO CONIN VECTOR
  107.     DAD    D    ;HL NOW = CONIN VECTOR
  108.     PCHL        ;GO THERE
  109. ;
  110. MSG    DB    CR,LF,'Change to new Baud rate,',CR,LF
  111.     DB    'THEN type RETURNs until the system responds.'
  112.     DB    CR,LF,CR,LF,'$'
  113. ;
  114. BDOS    EQU    5    ;BDOS ENTRY ADDRESS
  115. CR    EQU    0DH    ;CARRIAGE RETURN
  116. LF    EQU    0AH    ;LINEFEED
  117. PRINT    EQU    9    ;PRINT STRING FUNCTION
  118. CI    EQU    1    ;CONSOLE INPUT FUNCTION
  119. ;
  120.     END
  121.  
  122.