home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a081 / 2.ddi / CTFXX.EXE / CTF2ISR.PRG < prev    next >
Encoding:
Text File  |  1993-05-14  |  2.4 KB  |  87 lines

  1. *.............................................................................
  2. *
  3. *   Program Name: CTF2ISR          Copyright: Magna Carta Software, Inc.
  4. *   Date Created: 12-29-92         Language:  FoxPro 2.x
  5. *.............................................................................
  6. * Description: Attmpt to share an IRQ between two active ports.
  7. * CommTools reports an error if the serial card(s) do not support
  8. * interrupt-sharing.
  9. * Inspired by an original idea by David Wohlferd.
  10. *.............................................................................
  11. CLEAR ALL
  12. SET TALK OFF
  13. SET ESCAPE OFF
  14.  
  15. * Load the right library
  16. foxid = VERS()
  17. IF "2.0" $ foxid
  18.     SET LIBR TO ctf                 && Identified FoxPro 2.0
  19. ELSE
  20.     IF "2.5" $ VERS()
  21.         IF "Windows" $ foxid        && Identified FoxPro 2.5 for Windows
  22.             CANCEL
  23.         ELSE
  24.             SET LIBR TO ctf25       && Identified FoxPro 2.5 for DOS
  25.         ENDIF
  26.     ENDIF
  27. ENDIF
  28.  
  29. SET COLOR OF SCHEME 17 TO SCHEME 1
  30. SET COLOR OF SCHEME 18 TO SCHEME 2
  31. DO ctfhdr
  32.  
  33. =set_up_port(0, 4, x2d("3f8"))
  34. =set_up_port(1, 4, x2d("3e8"))
  35.  
  36. =c_term(0)
  37. =c_term(1)
  38. =inkey()
  39.  
  40.  
  41. * -------------------------
  42. PROC set_up_port
  43.     PARAMETERS portid, irq, addr
  44.  
  45.     ret = u8250_init(portid, addr, 2400, 8, 0, 1)
  46.     IF ret < 0
  47.         =INKEY(0)
  48.         CANCEL
  49.     ENDIF
  50.     =CT_SET_WIN(portid)
  51.  
  52.     ret = install_ipr(portid, TRANSMIT, 0 ,2048)
  53.     IF ret < 0
  54.         =INKEY(0)
  55.         CANCEL
  56.     ENDIF
  57.     ret = install_isr(portid, irq, 0)
  58.     IF ret < 0
  59.         =INKEY(0)
  60.         CANCEL
  61.     ENDIF
  62. RETURN
  63.  
  64. * --------------------------
  65. PROCEDURE c_term
  66.     PARAMETERS portid
  67.     PRIVATE c
  68.  
  69.     ?
  70.     DO WHILE .T.
  71.         * CHECK SERIAL PORT FOR BYTE *
  72.         c = c_getc(portid)                    && check the serial port for a byte
  73.         IF c <> -1                            && if a valid character display it
  74.             ?? CHR(c)
  75.         ENDIF
  76.         * CHECK KEYBOARD FOR A KEY PRESS *
  77.         c = INKEY()                             && check keyboard for a key
  78.         DO CASE                                 && evaluate the received key
  79.             CASE c == 27                        && ESC was pressed
  80.                 RETURN
  81.             CASE c <> 0
  82.                 =c_putc(portid, c)
  83.         ENDCASE
  84.     ENDDO                                       && do while .t.
  85.     @02,00 SAY "Exiting c_term()"
  86. RETURN
  87.