reworkings
[uccvend-snackrom.git] / ROM2 / helpers.c
index 283ca30..71c1007 100644 (file)
@@ -1,45 +1,18 @@
 #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);
+#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; }
+
+buffered_addr(switch_input)
+buffered_addr(misc_input)
+buffered_addr(home_sensors)
+buffered_addr(changer_output)
+buffered_addr(misc_output)
 

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