git.ucc.asn.au
/
uccvend-snackrom.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Deprecating main.c & other functions in order to be a dumb terminal.
[uccvend-snackrom.git]
/
ROM2
/
coinmech.c
diff --git
a/ROM2/coinmech.c
b/ROM2/coinmech.c
index
b52559d
..
a6c0e51
100644
(file)
--- a/
ROM2/coinmech.c
+++ b/
ROM2/coinmech.c
@@
-3,15
+3,15
@@
#define COINMECH_ID 0x20
#define COINMECH_ID 0x20
-u8 last_byte;
-u8 packet_pos = 0;
-u16 value_1 = 0;
-u8 value_2 = 0;
-u8 dec_point = 0;
+
volatile
u8 last_byte;
+
volatile
u8 packet_pos = 0;
+
volatile
u16 value_1 = 0;
+
volatile
u8 value_2 = 0;
+
volatile
u8 dec_point = 0;
-u16 coin_value = 0;
+
volatile
u16 coin_value = 0;
u8 item_cost = 0;
u8 item_cost = 0;
-bool have_change = 0;
+
volatile
bool have_change = 0;
u8 parity_test(u8 c) {
u8 parity = 0;
u8 parity_test(u8 c) {
u8 parity = 0;
@@
-31,6
+31,8
@@
bool parity_good(u8 c) {
* -----+---------
* R8 0 | 1 0
* 1 | 0 1
* -----+---------
* R8 0 | 1 0
* 1 | 0 1
+ *
+ * equates to even parity?
*/
u8 R8 = (_io_ports[M6811_SCCR1] & M6811_R8)?1:0;
*/
u8 R8 = (_io_ports[M6811_SCCR1] & M6811_R8)?1:0;
@@
-48,12
+50,6
@@
void send_byte(u8 c) {
bclr((void*)&_io_ports[M6811_SCCR1], M6811_T8);
}
bclr((void*)&_io_ports[M6811_SCCR1], M6811_T8);
}
-void ask_for_retrans() {
- /* sends an 0xff down the line */
- send_byte(0xff);
-}
-
-
#define IS_CTRL(x) (x & 0x10) /* true if this packet is a control packet */
void sci_interrupt() {
u8 in;
#define IS_CTRL(x) (x & 0x10) /* true if this packet is a control packet */
void sci_interrupt() {
u8 in;
@@
-62,7
+58,7
@@
void sci_interrupt() {
/* test for framing errors & parity bit */
if (_io_ports[M6811_SCSR] & M6811_FE || !parity_good(in)) {
_io_ports[M6811_SCDR]; /* read of register req'd to clear FE */
/* test for framing errors & parity bit */
if (_io_ports[M6811_SCSR] & M6811_FE || !parity_good(in)) {
_io_ports[M6811_SCDR]; /* read of register req'd to clear FE */
- ask_for_retrans();
+ send_byte(0xff); /* request a retransmit */
return;
}
return;
}
@@
-132,4
+128,5
@@
void coin_eat() {
void coin_cost(u16 cost) {
item_cost = cost;
void coin_cost(u16 cost) {
item_cost = cost;
+ while(coin_value); /* wait until coin mech cleared */
}
}
UCC
git Repository :: git.ucc.asn.au