+#include "display.h"
#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? */
-}
-
+#define DELAY_MAGIC 20 /* FIXME: number of loops for ~ 1 millisecond (< 256) */
void delay(u16 ms) {
- /* FIXME fill me in */
+ u8 i;
+ for (;ms;ms--) {
+ for (i=0;i<DELAY_MAGIC; i++)
+ asm("nop\nnop\nnop\nnop\nnop\n");
+ }
}
-/* ports declared here must be defined with buffered_port_h() in vend.h too */
-buffered_port(3800);
-
+void print_amount(u16 amt) {
+ /* take amt and show it on screen with a $ sign */
+ char str[10] = {' ', '$', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '};
+ u8 pos;
+ for (pos = 7; amt; pos--, amt/=10);
+ str[pos] = amt%10 + '0';
+ }
+ set_msg(str, WRAP_NONE);
+}