X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=ROM2%2Fhelpers.c;fp=ROM2%2Fhelpers.c;h=71c10072b4131e405b14b16179385068a6ef358f;hb=0f822a5a37e6e17e027b5a83b8d231a6c0de13eb;hp=283ca30a37531b355a050157cfa5b261c9fe87f8;hpb=ae4ef2d247312bebaa1054a7ab46219146b39a08;p=uccvend-snackrom.git diff --git a/ROM2/helpers.c b/ROM2/helpers.c index 283ca30..71c1007 100644 --- a/ROM2/helpers.c +++ b/ROM2/helpers.c @@ -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)