mirror of
https://github.com/mist-devel/mist-firmware.git
synced 2026-01-11 23:43:04 +00:00
boot.c: use the global font
This commit is contained in:
parent
56a1a0888f
commit
faeb1a4f7b
115
boot.c
115
boot.c
@ -10,6 +10,7 @@
|
||||
#include "osd.h"
|
||||
#include "spi.h"
|
||||
#include "fat_compat.h"
|
||||
#include "font.h"
|
||||
|
||||
// TODO!
|
||||
#define SPIN() asm volatile ( "mov r0, r0\n\t" \
|
||||
@ -47,107 +48,6 @@ void BootHome() {
|
||||
bootscreen_adr = 0x80000 + /*120*/112*640/8;
|
||||
}
|
||||
|
||||
//// boot font ////
|
||||
static const char boot_font [96][8] = {
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // SPACE
|
||||
{0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18, 0x00}, // !
|
||||
{0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // "
|
||||
{0x6C, 0x6C, 0xFE, 0x6C, 0xFE, 0x6C, 0x6C, 0x00}, // #
|
||||
{0x18, 0x3E, 0x60, 0x3C, 0x06, 0x7C, 0x18, 0x00}, // $
|
||||
{0x00, 0x66, 0xAC, 0xD8, 0x36, 0x6A, 0xCC, 0x00}, // %
|
||||
{0x38, 0x6C, 0x68, 0x76, 0xDC, 0xCE, 0x7B, 0x00}, // &
|
||||
{0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00}, // '
|
||||
{0x0C, 0x18, 0x30, 0x30, 0x30, 0x18, 0x0C, 0x00}, // (
|
||||
{0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x18, 0x30, 0x00}, // )
|
||||
{0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, // *
|
||||
{0x00, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x00}, // +
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30}, // ,
|
||||
{0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00}, // -
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00}, // .
|
||||
{0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x00}, // /
|
||||
{0x3C, 0x66, 0x6E, 0x7E, 0x76, 0x66, 0x3C, 0x00}, // 0
|
||||
{0x18, 0x38, 0x78, 0x18, 0x18, 0x18, 0x18, 0x00}, // 1
|
||||
{0x3C, 0x66, 0x06, 0x0C, 0x18, 0x30, 0x7E, 0x00}, // 2
|
||||
{0x3C, 0x66, 0x06, 0x1C, 0x06, 0x66, 0x3C, 0x00}, // 3
|
||||
{0x1C, 0x3C, 0x6C, 0xCC, 0xFE, 0x0C, 0x0C, 0x00}, // 4
|
||||
{0x7E, 0x60, 0x7C, 0x06, 0x06, 0x66, 0x3C, 0x00}, // 5
|
||||
{0x1C, 0x30, 0x60, 0x7C, 0x66, 0x66, 0x3C, 0x00}, // 6
|
||||
{0x7E, 0x06, 0x06, 0x0C, 0x18, 0x18, 0x18, 0x00}, // 7
|
||||
{0x3C, 0x66, 0x66, 0x3C, 0x66, 0x66, 0x3C, 0x00}, // 8
|
||||
{0x3C, 0x66, 0x66, 0x3E, 0x06, 0x0C, 0x38, 0x00}, // 9
|
||||
{0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00}, // :
|
||||
{0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x30}, // ;
|
||||
{0x00, 0x06, 0x18, 0x60, 0x18, 0x06, 0x00, 0x00}, // <
|
||||
{0x00, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x00, 0x00}, // =
|
||||
{0x00, 0x60, 0x18, 0x06, 0x18, 0x60, 0x00, 0x00}, // >
|
||||
{0x3C, 0x66, 0x06, 0x0C, 0x18, 0x00, 0x18, 0x00}, // ?
|
||||
{0x7C, 0xC6, 0xDE, 0xD6, 0xDE, 0xC0, 0x78, 0x00}, // @
|
||||
{0x3C, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x66, 0x00}, // A
|
||||
{0x7C, 0x66, 0x66, 0x7C, 0x66, 0x66, 0x7C, 0x00}, // B
|
||||
{0x1E, 0x30, 0x60, 0x60, 0x60, 0x30, 0x1E, 0x00}, // C
|
||||
{0x78, 0x6C, 0x66, 0x66, 0x66, 0x6C, 0x78, 0x00}, // D
|
||||
{0x7E, 0x60, 0x60, 0x78, 0x60, 0x60, 0x7E, 0x00}, // E
|
||||
{0x7E, 0x60, 0x60, 0x78, 0x60, 0x60, 0x60, 0x00}, // F
|
||||
{0x3C, 0x66, 0x60, 0x6E, 0x66, 0x66, 0x3E, 0x00}, // G
|
||||
{0x66, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x66, 0x00}, // H
|
||||
{0x3C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00}, // I
|
||||
{0x06, 0x06, 0x06, 0x06, 0x06, 0x66, 0x3C, 0x00}, // J
|
||||
{0xC6, 0xCC, 0xD8, 0xF0, 0xD8, 0xCC, 0xC6, 0x00}, // K
|
||||
{0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7E, 0x00}, // L
|
||||
{0xC6, 0xEE, 0xFE, 0xD6, 0xC6, 0xC6, 0xC6, 0x00}, // M
|
||||
{0xC6, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0xC6, 0x00}, // N
|
||||
{0x3C, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00}, // O
|
||||
{0x7C, 0x66, 0x66, 0x7C, 0x60, 0x60, 0x60, 0x00}, // P
|
||||
{0x78, 0xCC, 0xCC, 0xCC, 0xCC, 0xDC, 0x7E, 0x00}, // Q
|
||||
{0x7C, 0x66, 0x66, 0x7C, 0x6C, 0x66, 0x66, 0x00}, // R
|
||||
{0x3C, 0x66, 0x70, 0x3C, 0x0E, 0x66, 0x3C, 0x00}, // S
|
||||
{0x7E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00}, // T
|
||||
{0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00}, // U
|
||||
{0x66, 0x66, 0x66, 0x66, 0x3C, 0x3C, 0x18, 0x00}, // V
|
||||
{0xC6, 0xC6, 0xC6, 0xD6, 0xFE, 0xEE, 0xC6, 0x00}, // W
|
||||
{0xC3, 0x66, 0x3C, 0x18, 0x3C, 0x66, 0xC3, 0x00}, // X
|
||||
{0xC3, 0x66, 0x3C, 0x18, 0x18, 0x18, 0x18, 0x00}, // Y
|
||||
{0xFE, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0xFE, 0x00}, // Z
|
||||
{0x3C, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3C, 0x00}, // [
|
||||
{0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x00}, // Backslash
|
||||
{0x3C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x3C, 0x00}, // ]
|
||||
{0x10, 0x38, 0x6C, 0xC6, 0x00, 0x00, 0x00, 0x00}, // ^
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE}, // _
|
||||
{0x18, 0x18, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00}, // `
|
||||
{0x00, 0x00, 0x3C, 0x06, 0x3E, 0x66, 0x3E, 0x00}, // a
|
||||
{0x60, 0x60, 0x7C, 0x66, 0x66, 0x66, 0x7C, 0x00}, // b
|
||||
{0x00, 0x00, 0x3C, 0x60, 0x60, 0x60, 0x3C, 0x00}, // c
|
||||
{0x06, 0x06, 0x3E, 0x66, 0x66, 0x66, 0x3E, 0x00}, // d
|
||||
{0x00, 0x00, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00}, // e
|
||||
{0x1C, 0x30, 0x7C, 0x30, 0x30, 0x30, 0x30, 0x00}, // f
|
||||
{0x00, 0x00, 0x3E, 0x66, 0x66, 0x3E, 0x06, 0x3C}, // g
|
||||
{0x60, 0x60, 0x7C, 0x66, 0x66, 0x66, 0x66, 0x00}, // h
|
||||
{0x18, 0x00, 0x18, 0x18, 0x18, 0x18, 0x0C, 0x00}, // i
|
||||
{0x0C, 0x00, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x78}, // j
|
||||
{0x60, 0x60, 0x66, 0x6C, 0x78, 0x6C, 0x66, 0x00}, // k
|
||||
{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0C, 0x00}, // l
|
||||
{0x00, 0x00, 0xEC, 0xFE, 0xD6, 0xC6, 0xC6, 0x00}, // m
|
||||
{0x00, 0x00, 0x7C, 0x66, 0x66, 0x66, 0x66, 0x00}, // n
|
||||
{0x00, 0x00, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x00}, // o
|
||||
{0x00, 0x00, 0x7C, 0x66, 0x66, 0x7C, 0x60, 0x60}, // p
|
||||
{0x00, 0x00, 0x3E, 0x66, 0x66, 0x3E, 0x06, 0x06}, // q
|
||||
{0x00, 0x00, 0x7C, 0x66, 0x60, 0x60, 0x60, 0x00}, // r
|
||||
{0x00, 0x00, 0x3C, 0x60, 0x3C, 0x06, 0x7C, 0x00}, // s
|
||||
{0x30, 0x30, 0x7C, 0x30, 0x30, 0x30, 0x1C, 0x00}, // t
|
||||
{0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3E, 0x00}, // u
|
||||
{0x00, 0x00, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x00}, // v
|
||||
{0x00, 0x00, 0xC6, 0xC6, 0xD6, 0xFE, 0x6C, 0x00}, // w
|
||||
{0x00, 0x00, 0xC6, 0x6C, 0x38, 0x6C, 0xC6, 0x00}, // x
|
||||
{0x00, 0x00, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x30}, // y
|
||||
{0x00, 0x00, 0x7E, 0x0C, 0x18, 0x30, 0x7E, 0x00}, // z
|
||||
{0x0E, 0x18, 0x18, 0x70, 0x18, 0x18, 0x0E, 0x00}, // {
|
||||
{0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00}, // |
|
||||
{0x70, 0x18, 0x18, 0x0E, 0x18, 0x18, 0x70, 0x00}, // }
|
||||
{0x72, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // ~
|
||||
{0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x00} //
|
||||
};
|
||||
|
||||
|
||||
//// BootEnableMem() ////
|
||||
void BootEnableMem()
|
||||
{
|
||||
@ -425,28 +325,27 @@ void BootInit()
|
||||
//}
|
||||
}
|
||||
|
||||
|
||||
//// BootPrint() ////
|
||||
void BootPrintEx(char * str)
|
||||
{
|
||||
char buf[2];
|
||||
unsigned char i,j;
|
||||
unsigned char len;
|
||||
|
||||
|
||||
iprintf(str);
|
||||
iprintf("\r");
|
||||
|
||||
|
||||
len = strlen(str);
|
||||
len = (len>80) ? 80 : len;
|
||||
|
||||
|
||||
for(j=0; j<8; j++) {
|
||||
mem_upload_init(bootscreen_adr);
|
||||
for(i=0; i<len; i+=2) {
|
||||
SPI(boot_font[str[i]-32][j]);
|
||||
SPI(char_row(str[i],j));
|
||||
if (i==(len-1))
|
||||
SPI(boot_font[0][j]);
|
||||
SPI(char_row(0,j));
|
||||
else
|
||||
SPI(boot_font[str[i+1]-32][j]);
|
||||
SPI(char_row(str[i+1],j));
|
||||
SPIN(); SPIN(); SPIN(); SPIN();
|
||||
}
|
||||
mem_upload_fini();
|
||||
|
||||
8
font.c
8
font.c
@ -7,6 +7,14 @@
|
||||
|
||||
unsigned char charfont[128][8];
|
||||
|
||||
char char_row(char c, char row) {
|
||||
char r=0;
|
||||
for(int i=0;i<8;i++) {
|
||||
r |= (((charfont[c & 0x7f][7-i]>>row) & 0x01)<<i);
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
void font_load() {
|
||||
memcpy(&charfont, &charrom, 128*8);
|
||||
|
||||
|
||||
1
font.h
1
font.h
@ -6,5 +6,6 @@
|
||||
#define FONT_H
|
||||
|
||||
void font_load();
|
||||
char char_row(char c, char row);
|
||||
|
||||
#endif // FONT_H
|
||||
|
||||
16
tos.c
16
tos.c
@ -14,6 +14,7 @@
|
||||
#include "mmc.h"
|
||||
#include "ikbd.h"
|
||||
#include "idxfile.h"
|
||||
#include "font.h"
|
||||
|
||||
#define CONFIG_FILENAME "MIST CFG"
|
||||
|
||||
@ -645,17 +646,6 @@ static void tos_color_test() {
|
||||
#endif
|
||||
}
|
||||
|
||||
extern unsigned char charfont[128][8];
|
||||
|
||||
static char tos_writechar(char c, char l) {
|
||||
char r=0;
|
||||
for(int i=0;i<8;i++) {
|
||||
r |= (((charfont[c & 0x7f][7-i]>>l) & 0x01)<<i);
|
||||
}
|
||||
return r;
|
||||
|
||||
}
|
||||
|
||||
static void tos_write(char *str) {
|
||||
static int y = 0;
|
||||
int l;
|
||||
@ -675,8 +665,8 @@ static void tos_write(char *str) {
|
||||
// 16 pixel lines
|
||||
for(l=0;l<16;l++) {
|
||||
char *p = str, *f=buffer;
|
||||
while(*p) *f++ = tos_writechar(*p++, l>>1);
|
||||
while(f < buffer+c) *f++ = tos_writechar(' ', l>>1);
|
||||
while(*p) *f++ = char_row(*p++, l>>1);
|
||||
while(f < buffer+c) *f++ = char_row(' ', l>>1);
|
||||
|
||||
mist_memory_set_address(VIDEO_BASE_ADDRESS + 80*(y+l), 1, 0);
|
||||
mist_memory_write(buffer, c/2);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user