summaryrefslogtreecommitdiff
path: root/baud.c
diff options
context:
space:
mode:
authorJeffrey Armstrong <jeffrey.armstrong@approximatrix.com>2015-10-05 08:38:46 -0400
committerJeffrey Armstrong <jeffrey.armstrong@approximatrix.com>2015-10-05 08:38:46 -0400
commit99cf9c4dc5855b1f5f26d00267fdbbe672ee27a7 (patch)
tree83a11a0dc0f87198e251ca7ec19504aeec152bc1 /baud.c
downloadfoslib-master.tar.gz
foslib-master.zip
Initial commitHEADmaster
Diffstat (limited to 'baud.c')
-rw-r--r--baud.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/baud.c b/baud.c
new file mode 100644
index 0000000..f80ce13
--- /dev/null
+++ b/baud.c
@@ -0,0 +1,44 @@
+#include "fossil.h"
+#include <dos.h>
+#include <stdlib.h>
+
+int F_Set_Baud(long baud)
+{
+ union REGS regs;
+ int value;
+
+ switch (baud) {
+ case 300:
+ value = 0x43; /* sets also 8 bit words, No parity, 1 stopbit */
+ break;
+ case 600:
+ value = 0x63;
+ break;
+ case 1200:
+ value = 0x83;
+ break;
+ case 2400:
+ value = 0xA3;
+ break;
+ case 4800:
+ value = 0xC3;
+ break;
+ case 9600:
+ value = 0xE3;
+ break;
+ case 19200:
+ value = 3;
+ break;
+ case 38400:
+ value = 0x23;
+ break;
+ default:
+ return (FALSE);
+ }
+
+ regs.h.ah = 0x00;
+ regs.h.al = (unsigned char) value;
+ regs.x.dx = (unsigned char) port;
+ int86(FOSSIL_INT, &regs, &regs);
+ return (regs.x.ax);
+}