minor tweaks
[uccvend-snackrom.git] / ROM2 / helpers.c
index 71c1007..a35073c 100644 (file)
@@ -1,18 +1,32 @@
+#include "display_basic.h"
 #include "vend.h"
 
+#define DELAY_MAGIC 20 /* FIXME: number of loops for ~ 1 millisecond (< 256) */
 void delay(u16 ms) {
-       /* FIXME fill me in */
+       u8 i;
+       for (;ms;ms--) {
+               for (i=0;i<DELAY_MAGIC; i++)
+                       asm("nop\nnop\nnop\nnop\nnop\n");
+       }
 }
 
-#define buffered_addr(a) \
-       u8 a; \
-       inline void set_##a(u8 b) { a = *_##a = b; } \
-       inline void bset_##a(u8 m) { a |= m; *_##a = a; } \
-       inline void bclr_##a(u8 m) { a &= ~m ; *_##a = a; }
+void print_amount(u16 amt) {
+       /* take amt and show it on screen with a $ sign */
+       char str[10] = {' ', '$', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '};
+       u8 pos;
+       for (pos = 7; amt; pos--, amt/=10) {
+               str[pos] = amt%10 + '0';
+       }
+       set_msg(str);
+}
 
-buffered_addr(switch_input)
-buffered_addr(misc_input)
-buffered_addr(home_sensors)
-buffered_addr(changer_output)
-buffered_addr(misc_output)
+void my_strncpy(char* dst, char* src, u8 max_size) {
+       u8 i;
+       for (i = 0; src[i] && i < max_size; i++) dst[i] = src[i];
+       if (src[i] == 0 && i < max_size) dst[i] = 0; /* null terminator */
+}
 
+void my_memcpy(char* dst, char* src, u8 size) {
+       u8 i = 0;
+       for (i = 0; i < size; i++) dst[i] = src[i];
+}

UCC git Repository :: git.ucc.asn.au