forked from mattgodbolt/jsbeeb
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserial.js
35 lines (29 loc) · 858 Bytes
/
serial.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
define(['utils'], function (utils) {
"use strict";
return function Serial(acia) {
var self = this;
function reset() {
self.reg = 0;
self.transmitRate = 0;
self.receiveRate = 0;
}
var table = [19200, 9600, 4800, 2400, 1200, 300, 150, 75];
function write(addr, val) {
val &= 0xff;
self.reg = val;
self.transmitRate = val & 0x07;
self.receiveRate = (val >>> 3) & 0x07;
acia.setSerialReceive(table[self.receiveRate]);
acia.setMotor(!!(val & 0x80));
acia.selectRs423(!!(val & 0x40));
}
function read() {
write(0, 0xfe);
return 0;
}
self.reset = reset;
self.write = write;
self.read = read;
reset();
};
});