Initial go at pulling things together.
[uccvend-snackrom.git] / ROM2 / helpers.c
diff --git a/ROM2/helpers.c b/ROM2/helpers.c
new file mode 100644 (file)
index 0000000..283ca30
--- /dev/null
@@ -0,0 +1,45 @@
+#include "vend.h"
+
+/* some IO addresses require buffering, so we create some generic buffering
+ * functions here
+ */
+
+/* create port-specific #defines: */
+#define buffered_port(p) \
+       u8   addr_##p##_buffer = 0; \
+       \
+       void __inline__ outb_##p(u8 b) { \
+               addr_##p##_buffer = b; \
+               outb(p, b); \
+       } \
+       \
+       void __inline__ bset_##p(u8 mask) { \
+               bset((addr_t)&addr_##p##_buffer, mask); \
+               outb(p, addr_##p##_buffer); \
+       } \
+       \
+       void __inline__ bclr_##p(u8 mask) { \
+               bclr((addr_t)&addr_##p##_buffer, mask); \
+               outb(p, addr_##p##_buffer); \
+       } 
+
+void __inline__ outb(addr_t addr, u8 byte) {
+       /* FIXME hmmm */
+       /* asm? */
+}
+
+void __inline__ bset(addr_t addr, u8 mask) {
+       /* FIXME again. asm? */
+}
+
+void __inline__ bclr(addr_t addr, u8 mask) {
+       /* FIXME again. asm? */
+}
+
+void delay(u16 ms) {
+       /* FIXME fill me in */
+}
+
+/* ports declared here must be defined with buffered_port_h() in vend.h too */
+buffered_port(3800);
+

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