X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=ROM2%2Fmain_basic.c;h=ff8687bf6af101b5f967c314b61c52bd5ea39fe0;hb=2e7a8beb908896930042bc0564fbd16f3e0b0b62;hp=8d54ee99e6c4441d04dadaf1a95b6441b3dcc791;hpb=81ad17d2164523859d14464b9950a39f87e04937;p=uccvend-snackrom.git diff --git a/ROM2/main_basic.c b/ROM2/main_basic.c index 8d54ee9..ff8687b 100644 --- a/ROM2/main_basic.c +++ b/ROM2/main_basic.c @@ -9,39 +9,61 @@ #include "chime.h" #include "server.h" #include "coinmech.h" +#include "comm.h" #include "vend.h" +extern inline void enable_rti() { +} + void _start() { set_bus_expanded(); - display_init(); - /* enable RTI & set rate */ - /* init coin mech */ - /* scan for motors */ + /* enable RTI */ + _io_ports[M6811_TMSK2] = 0x40; + /* powerup ADC, set IRQ' for edge-sensitive operation */ + _io_ports[M6811_OPTION] = 0xA0; + /* set the stack pointer */ + //asm volatile ("lds %1":: "i"(_stack):"sp"); + main(); + +loop_forever: + goto loop_forever; /* wait for an interrupt to wake us up again */ } int main() { + u16 last_coin_value = coin_value; + + /* init coin mech */ + comm_init(); + display_init(); while(1) { - /* - * have serial packet? - * - * decode msg & process: - * - dispense motor - * - display string - * - give change - * - beep - */ - - /* - * have keypress? - * - beep - * - send via serial - */ - - /* - * have coin balance change? - * - send via serial - */ + if (rx_queue_state) { + switch (msg_buf[0]) { + case 'V': /* dispense something */ + break; + case 'D': /* write string to display */ + break; + case 'B': /* beep */ + break; + case 'U': /* query current coin balance */ + break; + case 'G': /* give change */ + break; + default: + /* shrug */ + break; + } + msg_clr(); + } + keypad_read(); + if (keypad_pressed()) { + /* send packet about it */ + /* beep? */ + } + + if (coin_value != last_coin_value) { + /* send a packet about it */ + } } }