X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=ROM2%2Fhelpers.c;fp=ROM2%2Fhelpers.c;h=283ca30a37531b355a050157cfa5b261c9fe87f8;hb=4f35424978e202fff48c2331eee9fd01e3da244f;hp=0000000000000000000000000000000000000000;hpb=3ab9c6bfa526db3e2d5c9ac5bbbef0517b977364;p=uccvend-snackrom.git diff --git a/ROM2/helpers.c b/ROM2/helpers.c new file mode 100644 index 0000000..283ca30 --- /dev/null +++ b/ROM2/helpers.c @@ -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); +