Initial go at pulling things together.
[uccvend-snackrom.git] / ROM2 / helpers.c
1 #include "vend.h"
2
3 /* some IO addresses require buffering, so we create some generic buffering
4  * functions here
5  */
6
7 /* create port-specific #defines: */
8 #define buffered_port(p) \
9         u8   addr_##p##_buffer = 0; \
10         \
11         void __inline__ outb_##p(u8 b) { \
12                 addr_##p##_buffer = b; \
13                 outb(p, b); \
14         } \
15         \
16         void __inline__ bset_##p(u8 mask) { \
17                 bset((addr_t)&addr_##p##_buffer, mask); \
18                 outb(p, addr_##p##_buffer); \
19         } \
20         \
21         void __inline__ bclr_##p(u8 mask) { \
22                 bclr((addr_t)&addr_##p##_buffer, mask); \
23                 outb(p, addr_##p##_buffer); \
24         } 
25
26 void __inline__ outb(addr_t addr, u8 byte) {
27         /* FIXME hmmm */
28         /* asm? */
29 }
30
31 void __inline__ bset(addr_t addr, u8 mask) {
32         /* FIXME again. asm? */
33 }
34
35 void __inline__ bclr(addr_t addr, u8 mask) {
36         /* FIXME again. asm? */
37 }
38
39 void delay(u16 ms) {
40         /* FIXME fill me in */
41 }
42
43 /* ports declared here must be defined with buffered_port_h() in vend.h too */
44 buffered_port(3800);
45

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