home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / dsp / dspgroup / bell212.arc / DMAIN1.ASM < prev    next >
Encoding:
Assembly Source File  |  1986-07-25  |  8.5 KB  |  237 lines

  1.         TITL    ' TMS 7041 MODEM INTERFACE PROGRAM'
  2.         OPTION  XREF,TUNLST
  3. ************************************************************
  4. **  DTEA.MPO IS THE COLLECTION OF THE TMS7041 CODE OF     **
  5. **  MODEM SYSTEM.  THIS CODE INCLUDES THE FOLLOWING:      **
  6. **                                                        **
  7. **       DINIT1.ASM    POWER UP INITIALIZATION            **
  8. **       DRUN1.ASM     RUN 1200BPS PSK MODEM              **
  9. **       DRUN2.ASM     RUN 300BPS PSK MODEM               **
  10. **       DSCRM1.ASM    PSK SCRAMBLER/DESCRAMBLER          **
  11. **       DCMND1.ASM    COMMAND HANDLER                    **
  12. **       DDIAL4.ASM    DTMF/PULSE DIALER                  **
  13. **                                                        **
  14. **  PROGRAM WRITTEN BY AL LOVERICK AND PETER EHLIG        **
  15. **                                                        **
  16. **  SYSTEM REVISION A: PETER EHLIG                        **
  17. **                                                        **
  18. **  SYSTEM REVISION B: RAJ CHIRAYIL                       **
  19. **                                                        **
  20. **  SYSTEM REVISION C: PETER EHLIG                        **
  21. **                                                        **
  22. **  PROGRAM MAIN REVISION 1.0   11/12/85 PETER EHLIG      **
  23. **               REVISION 1.1    1/28/86 RAJ CHIRAYIL     **
  24. **               REVISION 1.2    5/20/86 PETER EHLIG      **
  25. **                                                        **
  26. **  COPYRIGHT TEXAS INSTRUMENTS,  07/25/86                **
  27. **                                                        **
  28. ************************************************************
  29.           PAGE
  30. *
  31. *              7041 PORT ASSIGNMENTS
  32. *                                                 INIT TO
  33. * APORT                                           -------
  34. *       A7   A6   A5   A4   A3   A2   A1   A0
  35. *       OHR_ N.C. RCVD N.C. A_/O N.C. N.C. N.C.
  36. *       (O)  (I)  (I)  (O)  (O)  (O)  (I)  (I)      >1C
  37. *
  38. * BPORT
  39. *       B7    B6    B5   B4   B3   B2   B1   B0
  40. *       WACK- RACK- NC   NC   TXD  ALB- NSEL PDN-
  41. *       (O)   (O)   (O)  (O)  (O)  (O)  (O)  (O)    >FE
  42. *
  43. * CPORT
  44. *       C7   C6   C5   C4   C3   C2   C1   C0
  45. *       NC   NC   NC   NC   NC   NC   DSR  CD
  46. *       (O)  (O)  (O)  (O)  (O)  (O)  (O)  (O)      >FB
  47. *
  48. * DPORT  (READ)
  49. *       D7   D6   D5   D4   D3   D2   D1   D0
  50. *      DSPW DSPR DCD  EDT  RDB3 RDB2 RDB1 RDB0
  51. *       (I)  (I)  (I)  (I)  (I)  (I)  (I)  (I)
  52. *
  53. * DPORT  (WRITE)
  54. *       D7   D6   D5   D4   D3   D2   D1   D0
  55. *      DSPW DSPR CB2  CB1  RDB3 RDB2 RDB1 RDB0
  56. *       (I)  (I)  (O)  (O)  (O)  (O)  (O)  (O)      >0F
  57. *
  58. *----------------------------------------------------
  59. *          +-------------------------------+
  60. * SWSTAT   | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
  61. *          +-------------------------------+
  62. *
  63. * BIT7: modem type      0= B103 mode
  64. *                       1= B212 mode
  65. *
  66. * BIT6: timer flag      0= carrier wait timer enabled
  67. *                       1= 1200 Hz timer enabled
  68. *
  69. * BIT5: 1st dibit flag  0= flag reset
  70. *                       1= flag set
  71. *
  72. * BIT4: ESC flag        0= ESC code disabled
  73. *                       1= ESC code enabled
  74. *
  75. * BIT2: A-/O Mode       0= ANS. mode
  76. *                       1= ORG. mode
  77. *
  78. * BIT1: AUTOANS flag    0= auto answer disabled
  79. *                       1= auto answer enabled
  80. * BIT0: CD  flag        0= Carrier detect not set
  81. *                       1= Carrier detect set
  82. *----------------------------------------------------
  83.           IDT 'DMAIN1'
  84. *         OPTION  XREF
  85.           RORG    0
  86. *
  87. *   SUBROUTINE REFERENCES AND DEFINITIONS
  88.        REF  INIT,GO320,COMLIS,INT1,INT2
  89.        DEF  TOP,PRINT
  90.        PAGE
  91. *
  92.        COPY DTE2.EQU
  93. *
  94. * main routine
  95. *
  96.        BR     @INIT             ; INITIALIZE ALL PARAMETERS
  97. *
  98. TOP    MOVD   %HELLO,MSGL       ; Send hello message
  99.        CALL   @PRINT
  100. *
  101. * look for input commands.
  102. *
  103. *LOOK   CALL   @CLEAR            ; clear the command buffer
  104. *       MOVD   %ADDTOP,ADDRES    ; point to top of buffer
  105. LOOK   CLR    B             ; clear buffer command pointer
  106. LK4COM BTJZP  %BIT1,SSTAT,LK4COM ; command received?
  107.        MOVP   RXBUF,A
  108.        MOVP   A,TXBUF           ; echo
  109. WAIT4  BTJZP  %BIT2,SSTAT,WAIT4
  110.        CMP    %CR,A             ; carriage return?
  111.        JEQ    EXEC              ; yes, go execute command
  112. *
  113.        CMP    %BS,A             ; Check for back space
  114.        JEQ    BACKUP            ; clear current loc. and
  115. *                               ; decrement pointer
  116.        CMP    %>20,A            ; Check for control chars
  117.        JL     LK4COM            ; Ignore all except BS
  118.        CMP    %>7F,A            ; DEL same as BS
  119.        JEQ    BACKUP
  120.        JC     LK4COM            ; Ignore if greater
  121. NXTSTG STA    @COMBUF(B)        ; location for command
  122.        INC    B                 ; location for next command
  123.        CMP    %40,B             ; allow 40 chars maximum
  124.        JEQ    ERR               ; if > 40..clear buffer
  125.        JMP    LK4COM            ; keep going till <CR>
  126. *
  127. BACKUP CMP    %0,B              ; do we have anything yet?
  128.        JEQ    LK4COM            ; no, return
  129.        DEC    B                 ; point to previous buffer
  130.        CLR    A                 ; write 0 in comand buffer
  131.        STA    @COMBUF(B)        ;
  132.        MOV    %BLANK,A          ; write space over last chr
  133.        MOVP   A,TXBUF
  134. ECHSP  BTJZP  %BIT2,SSTAT,ECHSP ; wait for echo
  135.        MOV    %BS,A             ; write BS to adjust cursor
  136.        MOVP   A,TXBUF           ; wait for echo
  137. ECHBS  BTJZP  %BIT2,SSTAT,ECHBS ;
  138.        BR     @LK4COM           ; wait for next char
  139. *
  140. ERR    CALL   @CLEAR            ; clear command buffer
  141.        MOVD   %ERROR,MSGL       ; send error message
  142.        CALL   @PRINT
  143.        MOV    %STACK,B          ; reset the stack pointer
  144.        LDSP
  145.        BR     @LOOK
  146. *
  147. EXEC   CLR    A               ; write 0 in combuf
  148.        STA    @COMBUF(B)      ;
  149.        CLR    B               ; clear pointer
  150.        LDA    @COMBUF(B)      ; get first letter of command
  151.        CMP   %'A',A
  152.        JL    ERR               ; Check for A thru Z
  153.        CMP   %'Z'+1,A
  154.        JHS   ERR
  155.        MOV   A,CMDCHR          ; store first character
  156.        CLR   B                 ; look thru COMLIS for match
  157. SEARCH LDA   @COMLIS(B)        ;
  158.        CMP   CMDCHR,A          ; do we have a match yet?
  159.        JEQ   GOTCMD            ; yes,execute it
  160.        CMP   'Z',A             ; no, end yet?
  161.        JEQ   ERR               ; yes, invalid command
  162.        ADD   %4,B        ; no, increment CMDLIS pointer by
  163.        JMP   SEARCH      ; 4 to point to next command
  164. *
  165. GOTCMD ADD   %2,B              ; point B to the address of
  166. *                              ; the routine
  167.        LDA   @COMLIS(B)        ; Get MSB of address
  168.        MOV   A,LOCHI           ; save it
  169.        INC   B                 ; move pointer to LSB
  170.        LDA   @COMLIS(B)        ; read it
  171.        MOV   A,LOCLO           ; and save it
  172.        BR    *LOCLO            ; execute command
  173. *
  174.        PAGE
  175. *******----------------------------------------*******
  176. *****            Clear command buffer            *****
  177. *******----------------------------------------*******
  178. CLEAR  CLR    A
  179.        CLR    B
  180. MORE   STA    @COMBUF(B)         ; zero command register
  181.        INC    B
  182.        CMP    %30,B              ; are we done yet?
  183.        JNE    MORE
  184.        RETS
  185. *
  186.        PAGE
  187. *******----------------------------------------*******
  188. *****             PRINT  subroutine              *****
  189. *******----------------------------------------*******
  190. * MSGM and MSGL contain the address of text to print
  191. * for messages to the screen
  192. *
  193. PRINT  CALL   @CRLF
  194. PRINT1 LDA    *MSGL
  195.        JZ     WAIT6
  196.        MOVP   A,TXBUF           ; print each character in
  197. *                               ; text statement
  198. WAIT5  BTJZP  %BIT0,SSTAT,WAIT5 ; wait for txbuf ready
  199.        INC    MSGL
  200.        ADC    %0,MSGM
  201.        JMP    PRINT1
  202. WAIT6  CALL   @CRLF
  203.        RETS
  204. *
  205. * send carriage return/line feed
  206. *
  207. CRLF   MOV    %>0D,A
  208.        MOVP   A,TXBUF           ; send carriage return
  209. CRWAIT BTJZP  %BIT0,SSTAT,CRWAIT
  210.        MOV    %>0A,A
  211.        MOVP   A,TXBUF           ; send line feed
  212. LFWAIT BTJZP  %BIT2,SSTAT,LFWAIT
  213.        RETS
  214. *
  215.        PAGE
  216. *
  217. HELLO  TEXT   'DSP MODEM. VERSION 1.0'
  218.        BYTE   0
  219. *
  220. ERROR  TEXT   'ERROR'
  221.        BYTE   0
  222. *
  223.        PAGE
  224. *
  225. INT3   EQU   $
  226. INT4   EQU   $
  227. INT5   RETI
  228.        AORG   >FFF4
  229. VECT5  DATA   INT5
  230. VECT4  DATA   INT4
  231. VECT3  DATA   INT3
  232. VECT2  DATA   INT2
  233. VECT1  DATA   INT1
  234. VECT0  DATA   INIT
  235. *
  236.        END
  237.