new initrd format work, bigger keypad

master
Clyne Sullivan 7 years ago
parent 93396d69eb
commit 50233fff40

@ -28,7 +28,7 @@ STRIP = strip
MCUFLAGS = -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16
AFLAGS = $(MCUFLAGS)
CFLAGS = $(MCUFLAGS) -ggdb \
-Iinclude -Iinclude/it -Iinclude/cmsis \
-Iinclude -Iinclude/cmsis \
-fno-builtin -fsigned-char -ffreestanding \
-Wall -Werror -Wextra -pedantic \
-Wno-overlength-strings -Wno-discarded-qualifiers

@ -0,0 +1,3 @@
choice = filemenu
print("\nChoice: ")
print(choice)

@ -21,7 +21,7 @@
#ifndef SCRIPT_H_
#define SCRIPT_H_
#include <parser.h>
#include <it/parser.h>
/**
* Loads the library for the given interpreter instance.

@ -0,0 +1,42 @@
#include <stdint.h>
#include <string.h>
extern uint8_t *initrd_start;
extern uint32_t initrd_size;
char *getfile(uint32_t offset)
{
char *ptr = initrd_start;
for (uint32_t i = 0; i < offset; i++) {
uint32_t len = *((uint32_t *)ptr);
uint32_t datalen = *((uint32_t *)(ptr + 4 + len));
ptr += len + datalen + 8;
if (ptr >= (char *)(initrd_start + initrd_size))
return 0;
}
return ptr;
}
char *readfile(const char *name)
{
char *ptr;
for (uint32_t i = 0; ptr = getfile(i), ptr != 0; i++) {
uint32_t len = *((uint32_t *)ptr);
if (!strncmp(name, ptr + 4, len))
return ptr + len + 8;
}
return 0;
}
uint32_t filesize(const char *name)
{
char *ptr;
for (uint32_t i = 0; ptr = getfile(i), ptr != 0; i++) {
uint32_t len = *((uint32_t *)ptr);
if (!strncmp(name, ptr + 4, len))
return *((uint32_t *)ptr + len + 4);
}
return 0;
}

@ -1,8 +0,0 @@
while (1) {
print("> ")
input = gets()
answer = solve(input)
print("\n")
print(answer)
print("\n")
}

@ -1,3 +1,8 @@
choice = filemenu
print("\nChoice: ")
print(choice)
while (1) {
print("> ")
input = gets()
answer = solve(input)
print("\n")
print(answer)
print("\n")
}

BIN
rba

Binary file not shown.

@ -23,17 +23,19 @@
#include <gpio.h>
#include <task.h>
#define ROW_0 GPIO_PORT(A, 12)
#define ROW_1 GPIO_PORT(B, 12)
#define ROW_2 GPIO_PORT(B, 11)
#define ROW_3 GPIO_PORT(C, 4)
#define COL_0 GPIO_PORT(B, 13)
#define COL_1 GPIO_PORT(B, 14)
#define COL_2 GPIO_PORT(B, 15)
#define COL_3 GPIO_PORT(B, 1)
#define COL_4 GPIO_PORT(B, 2)
#define ROW_0 GPIO_PORT(B, 2)
#define ROW_1 GPIO_PORT(B, 1)
#define ROW_2 GPIO_PORT(B, 15)
#define ROW_3 GPIO_PORT(B, 14)
#define ROW_4 GPIO_PORT(B, 13)
#define ROW_5 GPIO_PORT(C, 4)
#define COL_0 GPIO_PORT(B, 11)
#define COL_1 GPIO_PORT(B, 12)
#define COL_2 GPIO_PORT(A, 11)
#define COL_3 GPIO_PORT(A, 12)
#define COL_4 GPIO_PORT(C, 5)
#define ROWS 4
#define ROWS 6
#define COLS 5
typedef struct {
@ -42,17 +44,21 @@ typedef struct {
} port_t;
static const port_t keypad_rows[ROWS] = {
{ ROW_0 }, { ROW_1 }, { ROW_2 }, { ROW_3 }
{ ROW_0 }, { ROW_1 }, { ROW_2 },
{ ROW_3 }, { ROW_4 }, { ROW_5 }
};
static const port_t keypad_cols[COLS] = {
{ COL_0 }, { COL_1 }, { COL_2 }, { COL_3 }, { COL_4 }
{ COL_0 }, { COL_1 }, { COL_2 },
{ COL_3 }, { COL_4 }
};
static const int keypad_map[ROWS][COLS] = {
{ '7', '8', '9', 'x', '/' },
{ '4', '5', '6', 'y', '*' },
{ '1', '2', '3', '=', '-' },
{ '&', '|', '^', ' ', ' ' },
{ 'x', 'y', 'z', '=', ' ' },
{ '7', '8', '9', '(', ')' },
{ '4', '5', '6', '/', '%' },
{ '1', '2', '3', '*', '-' },
{ '.', '0', '\b', '\n', '+' }
};

@ -27,7 +27,7 @@
#include <initrd.h>
#include <keypad.h>
#include <lcd.h>
#include <parser.h>
#include <it/parser.h>
#include <random.h>
#include <script.h>
#include <serial.h>

@ -20,7 +20,7 @@
#include <script.h>
#include <builtins.h>
#include <it/builtins.h>
#include <clock.h>
#include <display.h>
#include <display_draw.h>
@ -29,10 +29,9 @@
#include <random.h>
#include <serial.h>
#include <stdlib.h>
#include <it/string.h>
#include <keypad.h>
#include <string.h>
#define igetarg_integer(it, n) ((int)igetarg(it, n)->value.f)
int script_puts(instance *it);

Loading…
Cancel
Save