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 MCUFLAGS = -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16
AFLAGS = $(MCUFLAGS) AFLAGS = $(MCUFLAGS)
CFLAGS = $(MCUFLAGS) -ggdb \ CFLAGS = $(MCUFLAGS) -ggdb \
-Iinclude -Iinclude/it -Iinclude/cmsis \ -Iinclude -Iinclude/cmsis \
-fno-builtin -fsigned-char -ffreestanding \ -fno-builtin -fsigned-char -ffreestanding \
-Wall -Werror -Wextra -pedantic \ -Wall -Werror -Wextra -pedantic \
-Wno-overlength-strings -Wno-discarded-qualifiers -Wno-overlength-strings -Wno-discarded-qualifiers

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

@ -21,7 +21,7 @@
#ifndef SCRIPT_H_ #ifndef SCRIPT_H_
#define SCRIPT_H_ #define SCRIPT_H_
#include <parser.h> #include <it/parser.h>
/** /**
* Loads the library for the given interpreter instance. * 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 while (1) {
print("\nChoice: ") print("> ")
print(choice) 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 <gpio.h>
#include <task.h> #include <task.h>
#define ROW_0 GPIO_PORT(A, 12) #define ROW_0 GPIO_PORT(B, 2)
#define ROW_1 GPIO_PORT(B, 12) #define ROW_1 GPIO_PORT(B, 1)
#define ROW_2 GPIO_PORT(B, 11) #define ROW_2 GPIO_PORT(B, 15)
#define ROW_3 GPIO_PORT(C, 4) #define ROW_3 GPIO_PORT(B, 14)
#define COL_0 GPIO_PORT(B, 13) #define ROW_4 GPIO_PORT(B, 13)
#define COL_1 GPIO_PORT(B, 14) #define ROW_5 GPIO_PORT(C, 4)
#define COL_2 GPIO_PORT(B, 15) #define COL_0 GPIO_PORT(B, 11)
#define COL_3 GPIO_PORT(B, 1) #define COL_1 GPIO_PORT(B, 12)
#define COL_4 GPIO_PORT(B, 2) #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 #define COLS 5
typedef struct { typedef struct {
@ -42,17 +44,21 @@ typedef struct {
} port_t; } port_t;
static const port_t keypad_rows[ROWS] = { 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] = { 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] = { static const int keypad_map[ROWS][COLS] = {
{ '7', '8', '9', 'x', '/' }, { '&', '|', '^', ' ', ' ' },
{ '4', '5', '6', 'y', '*' }, { 'x', 'y', 'z', '=', ' ' },
{ '1', '2', '3', '=', '-' }, { '7', '8', '9', '(', ')' },
{ '4', '5', '6', '/', '%' },
{ '1', '2', '3', '*', '-' },
{ '.', '0', '\b', '\n', '+' } { '.', '0', '\b', '\n', '+' }
}; };

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

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

Loading…
Cancel
Save