diff --git a/src/Makefile b/src/Makefile index dc5703700..d6eed4013 100644 --- a/src/Makefile +++ b/src/Makefile @@ -254,7 +254,6 @@ ifeq ($(PCB), SKY9X) endif ifeq ($(PCB), X9D) - CPPDEFS += -DREVB LDSCRIPT = sky9x/sam3s4c_flash.ld TRGT = arm-none-eabi- MCU = cortex-m4 @@ -447,7 +446,7 @@ RUN_FROM_FLASH = 1 ifeq ($(PCB), X9D) # X9D, so ... OPT = 2 - CPPDEFS += -DPCBX9D -DPCBSKY9X -DEEPROM_VARIANT=0 -DAUDIO -DHAPTIC -DPXX -DDSM2 -DDSM2_PPM -DROTARY_ENCODERS=1 -DLCD212 + CPPDEFS += -DPCBX9D -DPCBSKY9X -DREVB -DCPUARM -DEEPROM_VARIANT=0 -DAUDIO -DHAPTIC -DPXX -DDSM2 -DDSM2_PPM -DROTARY_ENCODERS=1 -DLCD212 EXTRAINCDIRS += sky9x CoOS/kernel CoOS/portable BOARDSRC = board_sky9x.cpp SRC += sky9x/core_cm3.c sky9x/board_lowlevel.c sky9x/crt.c sky9x/vectors_sam3s.c @@ -460,6 +459,7 @@ ifeq ($(PCB), X9D) PULSESSRC = pulses_arm.cpp CPPSRC += sky9x/audio.cpp haptic.cpp CPPSRC += sky9x/sound_driver.cpp sky9x/haptic_driver.cpp sky9x/sdcard_driver.cpp + CPPSRC += bmp.cpp ifeq ($(SDCARD), YES) EXTRABOARDSRC += FatFs/ff.c FatFs/fattime.c FatFs/option/ccsbcs.c sky9x/diskio.cpp @@ -481,7 +481,7 @@ endif ifeq ($(PCB), SKY9X) # SKY9X, so ... OPT = 2 - CPPDEFS += -DPCBSKY9X -DEEPROM_VARIANT=0 -DAUDIO -DHAPTIC -DRTCLOCK -DPXX -DDSM2 -DDSM2_PPM -DROTARY_ENCODERS=1 + CPPDEFS += -DPCBSKY9X -DCPUARM -DEEPROM_VARIANT=0 -DAUDIO -DHAPTIC -DRTCLOCK -DPXX -DDSM2 -DDSM2_PPM -DROTARY_ENCODERS=1 EXTRAINCDIRS += sky9x CoOS/kernel CoOS/portable BOARDSRC = board_sky9x.cpp SRC += sky9x/core_cm3.c sky9x/board_lowlevel.c sky9x/crt.c sky9x/vectors_sam3s.c @@ -542,7 +542,7 @@ endif ifeq ($(PCB), STD128) # STD PCB with Atmega 128, so ... OPT = 2 - CPPDEFS += -DPCBSTD -DM128 -DEEPROM_VARIANT=0x8000 + CPPDEFS += -DPCBSTD -DCPUM128 -DEEPROM_VARIANT=0x8000 EXTRAINCDIRS += stock BOARDSRC = board_stock.cpp EEPROMSRC = eeprom_avr.cpp @@ -578,7 +578,7 @@ ifeq ($(PCB), STD) # STD PCB, so ... OPT = s EXTRAINCDIRS += stock - CPPDEFS += -DPCBSTD -DM64 -DEEPROM_VARIANT=$(shell echo ${EEPROM_VARIANT} | bc) + CPPDEFS += -DPCBSTD -DCPUM64 -DEEPROM_VARIANT=$(shell echo ${EEPROM_VARIANT} | bc) BOARDSRC = board_stock.cpp EEPROMSRC = eeprom_avr.cpp PULSESSRC = pulses_avr.cpp @@ -745,7 +745,7 @@ eep: $(TARGET).eep lss: $(TARGET).lss sym: $(TARGET).sym -lbm: font.lbm font_dblsize.lbm sticks.lbm splash_9x.lbm splash_X9D.lbm asterisk.lbm +lbm: font.lbm font_midsize.lbm font_dblsize.lbm sticks.lbm splash_9x.lbm splash_X9D.lbm asterisk.lbm # Build stamp-file stamp_header: @@ -781,28 +781,33 @@ arm-stamp: @echo "#define SVN_VERS \"open9x-r$(SVNREV)\"" >> stamp-open9x-arm.txt @cat stamp-open9x-arm.txt -font.lbm: font_6x1.xbm font_extra_6x1.xbm translations/font_se.xbm translations/font_de.xbm translations/font_it.xbm translations/font_cz.xbm translations/font_fr.xbm translations/font_es.xbm +font.lbm: font.xbm font_extra.xbm translations/font_se.xbm translations/font_de.xbm translations/font_it.xbm translations/font_cz.xbm translations/font_fr.xbm translations/font_es.xbm @echo @echo "Convert font from xbm to lbm:" - $(IMG2LBM) $< $@ char - $(IMG2LBM) font_extra_6x1.xbm font_extra.lbm char - $(IMG2LBM) translations/font_se.xbm translations/font_se.lbm char - $(IMG2LBM) translations/font_de.xbm translations/font_de.lbm char - $(IMG2LBM) translations/font_it.xbm translations/font_it.lbm char - $(IMG2LBM) translations/font_cz.xbm translations/font_cz.lbm char - $(IMG2LBM) translations/font_fr.xbm translations/font_fr.lbm char - $(IMG2LBM) translations/font_es.xbm translations/font_es.lbm char + $(IMG2LBM) font.xbm font.lbm 5x7 + $(IMG2LBM) font_extra.xbm font_extra.lbm 5x7 + $(IMG2LBM) translations/font_se.xbm translations/font_se.lbm 5x7 + $(IMG2LBM) translations/font_de.xbm translations/font_de.lbm 5x7 + $(IMG2LBM) translations/font_it.xbm translations/font_it.lbm 5x7 + $(IMG2LBM) translations/font_cz.xbm translations/font_cz.lbm 5x7 + $(IMG2LBM) translations/font_fr.xbm translations/font_fr.lbm 5x7 + $(IMG2LBM) translations/font_es.xbm translations/font_es.lbm 5x7 -font_dblsize.lbm: font_dblsize.xbm font_extra_dblsize.xbm translations/font_dblsize_se.xbm translations/font_dblsize_de.xbm translations/font_dblsize_it.xbm translations/font_dblsize_fr.xbm translations/font_dblsize_es.xbm +font_midsize.lbm: font_midsize.xbm @echo @echo "Convert font from xbm to lbm:" - $(IMG2LBM) $< $@ dblsize - $(IMG2LBM) font_extra_dblsize.xbm font_extra_dblsize.lbm dblsize - $(IMG2LBM) translations/font_dblsize_se.xbm translations/font_dblsize_se.lbm dblsize - $(IMG2LBM) translations/font_dblsize_de.xbm translations/font_dblsize_de.lbm dblsize - $(IMG2LBM) translations/font_dblsize_it.xbm translations/font_dblsize_it.lbm dblsize - $(IMG2LBM) translations/font_dblsize_fr.xbm translations/font_dblsize_fr.lbm dblsize - $(IMG2LBM) translations/font_dblsize_es.xbm translations/font_dblsize_es.lbm dblsize + $(IMG2LBM) $< $@ 8x10 + +font_dblsize.lbm: font_dblsize.xbm font_dblsize_extra.xbm translations/font_dblsize_se.xbm translations/font_dblsize_de.xbm translations/font_dblsize_it.xbm translations/font_dblsize_fr.xbm translations/font_dblsize_es.xbm + @echo + @echo "Convert font from xbm to lbm:" + $(IMG2LBM) font_dblsize.xbm font_dblsize.lbm 10x14 + $(IMG2LBM) font_dblsize_extra.xbm font_dblsize_extra.lbm 10x14 + $(IMG2LBM) translations/font_dblsize_se.xbm translations/font_dblsize_se.lbm 10x14 + $(IMG2LBM) translations/font_dblsize_de.xbm translations/font_dblsize_de.lbm 10x14 + $(IMG2LBM) translations/font_dblsize_it.xbm translations/font_dblsize_it.lbm 10x14 + $(IMG2LBM) translations/font_dblsize_fr.xbm translations/font_dblsize_fr.lbm 10x14 + $(IMG2LBM) translations/font_dblsize_es.xbm translations/font_dblsize_es.lbm 10x14 sticks.lbm: sticks_4x1.xbm @echo @@ -866,7 +871,7 @@ FOXLIB=-L/usr/local/lib \ -Wl,-rpath,$(FOXPATH)/src/.libs simu: stamp_header $(BOARDSRC) $(CPPSRC) Makefile simu.cpp simpgmspace.cpp *.h *.lbm eeprom.bin - g++ $(CPPFLAGS) simu.cpp $(BOARDSRC) $(CPPSRC) simpgmspace.cpp -MD -DSIMU -O1 -o simu $(FOXINC) $(FOXLIB) -pthread + g++ $(CPPFLAGS) simu.cpp $(BOARDSRC) $(CPPSRC) simpgmspace.cpp -MD -DSIMU -O0 -o simu $(FOXINC) $(FOXLIB) -pthread eeprom.bin: dd if=/dev/zero of=$@ bs=1 count=2048 diff --git a/src/beeper.h b/src/beeper.h index 6c8ac0f8c..367e6048b 100644 --- a/src/beeper.h +++ b/src/beeper.h @@ -87,7 +87,7 @@ extern void beep(uint8_t val); #define AUDIO_RESET() #if !defined(PCBSKY9X) -FORCEINLINE void AUDIO_HEARTBEAT() +inline void AUDIO_HEARTBEAT() { if(g_beepCnt) { if(!beepAgainOrig) { diff --git a/src/bmp.cpp b/src/bmp.cpp new file mode 100644 index 000000000..0ac67709e --- /dev/null +++ b/src/bmp.cpp @@ -0,0 +1,179 @@ +/* + * Authors (alphabetical order) + * - Bertrand Songis + * - Bryan J. Rentoul (Gruvin) + * - Cameron Weeks + * - Erez Raviv + * - Jean-Pierre Parisy + * - Karl Szmutny + * - Michael Blandford + * - Michal Hlavinka + * - Pat Mackenzie + * - Philip Moss + * - Rob Thomson + * - Romolo Manfredini + * - Thomas Husterer + * + * open9x is based on code named + * gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/, + * er9x by Erez Raviv: http://code.google.com/p/er9x/, + * and the original (and ongoing) project by + * Thomas Husterer, th9x: http://code.google.com/p/th9x/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +#include "open9x.h" + +const pm_char * bmpLoad(uint8_t *dest, const char *filename) +{ + FIL bmpFile; + UINT read; + uint8_t bmpBuf[64]; /* maximum with 64px for 1-bit bitmaps */ + uint8_t *buf = &bmpBuf[0]; + + FRESULT result = f_open(&bmpFile, filename, FA_OPEN_EXISTING | FA_READ); + if (result != FR_OK) { + return SDCARD_ERROR(result); + } + + if (f_size(&bmpFile) < 14) { + f_close(&bmpFile); + return STR_INCOMPATIBLE; + } + + result = f_read(&bmpFile, buf, 14, &read); + if (result != FR_OK || read != 14) { + f_close(&bmpFile); + return SDCARD_ERROR(result); + } + + if (buf[0] != 'B' || buf[1] != 'M') { + f_close(&bmpFile); + return STR_INCOMPATIBLE; + } + + uint32_t fsize = *((uint32_t *)&buf[2]); + uint32_t hsize = *((uint32_t *)&buf[10]); /* header size */ + + uint32_t len = limit((uint32_t)0, (uint32_t)(hsize-14), (uint32_t)32); + result = f_read(&bmpFile, buf, len, &read); + if (result != FR_OK || read != len) { + f_close(&bmpFile); + return SDCARD_ERROR(result); + } + + uint32_t ihsize = *((uint32_t *)&buf[0]); /* more header size */ + + /* invalid header size */ + if (ihsize + 14 > hsize) { + f_close(&bmpFile); + return STR_INCOMPATIBLE; + } + + /* sometimes file size is set to some headers size, set a real size in that case */ + if (fsize == 14 || fsize == ihsize + 14) + fsize = f_size(&bmpFile) - 2; + + /* declared file size less than header size */ + if (fsize <= hsize) { + f_close(&bmpFile); + return STR_INCOMPATIBLE; + } + + uint32_t width, height; + + switch (ihsize){ + case 40: // windib + case 56: // windib v3 + case 64: // OS/2 v2 + case 108: // windib v4 + case 124: // windib v5 + width = *((uint32_t *)&buf[4]); + height = *((uint32_t *)&buf[8]); + buf += 12; + break; + case 12: // OS/2 v1 + width = *((uint16_t *)&buf[4]); + height = *((uint16_t *)&buf[6]); + buf += 8; + break; + default: + f_close(&bmpFile); + return STR_INCOMPATIBLE; + } + + if (*((uint16_t *)&buf[0]) != 1) { /* planes */ + f_close(&bmpFile); + return STR_INCOMPATIBLE; + } + + if (width > 64 || height > 32) { + f_close(&bmpFile); + return STR_INCOMPATIBLE; + } + + uint16_t depth = *((uint16_t *)&buf[2]); + + if (f_lseek(&bmpFile, hsize) != FR_OK) { + f_close(&bmpFile); + return SDCARD_ERROR(result); + } + + *dest++ = width; + *dest++ = height; + + uint32_t n; + buf = &bmpBuf[0]; + + switch (depth) { + case 1: + n = width/8; + for (uint32_t i=0; i> 7) + ((buf[j+1*n] >> 7) << 1) + ((buf[j+2*n] >> 7) << 2) + ((buf[j+3*n] >> 7) << 3) + ((buf[j+4*n] >> 7) << 4) + ((buf[j+5*n] >> 7) << 5) + ((buf[j+6*n] >> 7) << 6) + ((buf[j+7*n] >> 7) << 7); + *dest++ = ((buf[j+0*n] >> 6) & 1) + (((buf[j+1*n] >> 6) & 1) << 1) + (((buf[j+2*n] >> 6) & 1) << 2) + (((buf[j+3*n] >> 6) & 1) << 3) + (((buf[j+4*n] >> 6) & 1) << 4) + (((buf[j+5*n] >> 6) & 1) << 5) + (((buf[j+6*n] >> 6) & 1) << 6) + (((buf[j+7*n] >> 6) & 1) << 7); + *dest++ = ((buf[j+0*n] >> 5) & 1) + (((buf[j+1*n] >> 5) & 1) << 1) + (((buf[j+2*n] >> 5) & 1) << 2) + (((buf[j+3*n] >> 5) & 1) << 3) + (((buf[j+4*n] >> 5) & 1) << 4) + (((buf[j+5*n] >> 5) & 1) << 5) + (((buf[j+6*n] >> 5) & 1) << 6) + (((buf[j+7*n] >> 5) & 1) << 7); + *dest++ = ((buf[j+0*n] >> 4) & 1) + (((buf[j+1*n] >> 4) & 1) << 1) + (((buf[j+2*n] >> 4) & 1) << 2) + (((buf[j+3*n] >> 4) & 1) << 3) + (((buf[j+4*n] >> 4) & 1) << 4) + (((buf[j+5*n] >> 4) & 1) << 5) + (((buf[j+6*n] >> 4) & 1) << 6) + (((buf[j+7*n] >> 4) & 1) << 7); + *dest++ = ((buf[j+0*n] >> 3) & 1) + (((buf[j+1*n] >> 3) & 1) << 1) + (((buf[j+2*n] >> 3) & 1) << 2) + (((buf[j+3*n] >> 3) & 1) << 3) + (((buf[j+4*n] >> 3) & 1) << 4) + (((buf[j+5*n] >> 3) & 1) << 5) + (((buf[j+6*n] >> 3) & 1) << 6) + (((buf[j+7*n] >> 3) & 1) << 7); + *dest++ = ((buf[j+0*n] >> 2) & 1) + (((buf[j+1*n] >> 2) & 1) << 1) + (((buf[j+2*n] >> 2) & 1) << 2) + (((buf[j+3*n] >> 2) & 1) << 3) + (((buf[j+4*n] >> 2) & 1) << 4) + (((buf[j+5*n] >> 2) & 1) << 5) + (((buf[j+6*n] >> 2) & 1) << 6) + (((buf[j+7*n] >> 2) & 1) << 7); + *dest++ = ((buf[j+0*n] >> 1) & 1) + (((buf[j+1*n] >> 1) & 1) << 1) + (((buf[j+2*n] >> 1) & 1) << 2) + (((buf[j+3*n] >> 1) & 1) << 3) + (((buf[j+4*n] >> 1) & 1) << 4) + (((buf[j+5*n] >> 1) & 1) << 5) + (((buf[j+6*n] >> 1) & 1) << 6) + (((buf[j+7*n] >> 1) & 1) << 7); + *dest++ = ((buf[j+0*n] >> 0) & 1) + (((buf[j+1*n] >> 0) & 1) << 1) + (((buf[j+2*n] >> 0) & 1) << 2) + (((buf[j+3*n] >> 0) & 1) << 3) + (((buf[j+4*n] >> 0) & 1) << 4) + (((buf[j+5*n] >> 0) & 1) << 5) + (((buf[j+6*n] >> 0) & 1) << 6) + (((buf[j+7*n] >> 0) & 1) << 7); + } + } + break; + + /* case 4: + for (uint32_t i=0; i> 4) & 0xF; + ptr[j*2+1] = buf[j] & 0xF; + } + buf += n; + ptr += linesize; + } + break; + */ + + default: + f_close(&bmpFile); + return STR_INCOMPATIBLE; + } + + f_close(&bmpFile); + return 0; +} diff --git a/src/eeprom_arm.cpp b/src/eeprom_arm.cpp index b5b781252..e4be9225d 100644 --- a/src/eeprom_arm.cpp +++ b/src/eeprom_arm.cpp @@ -14,7 +14,6 @@ * */ - #include #include "open9x.h" #include "inttypes.h" @@ -486,7 +485,7 @@ void eeLoadModel(uint8_t id) eeCheck(true); } else { - read32_eeprom_data( ( File_system[id+1].block_no << 12) + sizeof( struct t_eeprom_header), ( uint8_t *)&g_model, size) ; + read32_eeprom_data((File_system[id+1].block_no << 12) + sizeof(struct t_eeprom_header), (uint8_t *)&g_model, size) ; } resetAll(); @@ -511,6 +510,11 @@ void eeLoadModel(uint8_t id) resumeMixerCalculations(); // TODO pulses should be started after mixer calculations ... + +#if defined(PCBX9D) + // TODO BMP_DIR + bmpLoad(modelBitmap, "./f16.bmp"); +#endif } } diff --git a/src/eeprom_avr.cpp b/src/eeprom_avr.cpp index 040a99b84..e1c31d74c 100644 --- a/src/eeprom_avr.cpp +++ b/src/eeprom_avr.cpp @@ -821,7 +821,7 @@ bool eeLoadGeneral() if (theFile.readRlc((uint8_t*)&g_eeGeneral, 1) == 1 && g_eeGeneral.version == EEPROM_VER) { theFile.openRlc(FILE_GENERAL); if (theFile.readRlc((uint8_t*)&g_eeGeneral, sizeof(g_eeGeneral)) <= sizeof(EEGeneral)) { -#if defined(M64) +#if defined(CPUM64) if (g_eeGeneral.variant == EEPROM_VARIANT && g_eeGeneral.chkSum == evalChkSum()) { return true; } diff --git a/src/eeprom_avr.h b/src/eeprom_avr.h index ac227c825..8d830b3c6 100644 --- a/src/eeprom_avr.h +++ b/src/eeprom_avr.h @@ -47,7 +47,7 @@ extern uint16_t s_eeDirtyTime10ms; // bs=16 128 blocks verlust link:128 16files:16*8 128 sum 256 // bs=32 64 blocks verlust link: 64 16files:16*16 256 sum 320 // -#if defined(PCBGRUVIN9X) || defined(M128) +#if defined(PCBGRUVIN9X) || defined(CPUM128) #define EESIZE 4096 #define EEFS_VERS 5 #define MAXFILES 36 @@ -84,7 +84,7 @@ PACK(struct EeFs{ #define RESV sizeof(EeFs) //reserv for eeprom header with directory (eeFs) -#if defined(PCBGRUVIN9X) || defined(M128) +#if defined(PCBGRUVIN9X) || defined(CPUM128) #define FIRSTBLK 1 #define BLOCKS (1+(EESIZE-RESV)/BS) #define BLOCKS_OFFSET (RESV-BS) diff --git a/src/font_6x1.xbm b/src/font.xbm similarity index 100% rename from src/font_6x1.xbm rename to src/font.xbm diff --git a/src/font_dblsize.lbm b/src/font_dblsize.lbm index 639bcffa9..cd6e036ed 100644 --- a/src/font_dblsize.lbm +++ b/src/font_dblsize.lbm @@ -1,4 +1,4 @@ -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x71,0xfe,0x71,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0x60,0x18,0xf0,0x18,0x98,0x19,0x98,0x19,0xfe,0x7f,0xfe,0x7f,0x98,0x19,0x98,0x19,0x18,0x0f,0x18,0x06,0x0c,0x18,0x1e,0x1c,0x1e,0x0e,0x0c,0x07,0x80,0x03,0xc0,0x01,0xe0,0x30,0x70,0x78,0x38,0x78,0x18,0x30,0x78,0x1e,0xfc,0x3f,0x8e,0x71,0xc6,0x63,0xe6,0x67,0x76,0x66,0x3c,0x3c,0x18,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xc0,0x03,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0xc0,0x03,0x60,0x06,0x60,0x06,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x07,0x80,0x03,0xc0,0x01,0xe0,0x00,0x70,0x00,0x38,0x00,0x18,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x71,0xfe,0x71,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0xfe,0x7f,0xfe,0x7f,0x60,0x06,0x60,0x06,0x60,0x18,0xf0,0x18,0x98,0x19,0x98,0x19,0xfe,0x7f,0xfe,0x7f,0x98,0x19,0x98,0x19,0x18,0x0f,0x18,0x06,0x0c,0x18,0x1e,0x1c,0x1e,0x0e,0x0c,0x07,0x80,0x03,0xc0,0x01,0xe0,0x30,0x70,0x78,0x38,0x78,0x18,0x30,0x78,0x1e,0xfc,0x3f,0x8e,0x71,0xc6,0x63,0xe6,0x67,0x76,0x66,0x3c,0x3c,0x18,0x3c,0x00,0x66,0x00,0x66,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x07,0xf0,0x0f,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0x00,0x00,0x00,0x00,0x60,0x06,0x60,0x06,0xc0,0x03,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0xc0,0x03,0x60,0x06,0x60,0x06,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xf8,0x1f,0xf8,0x1f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x66,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x07,0x80,0x03,0xc0,0x01,0xe0,0x00,0x70,0x00,0x38,0x00,0x18,0x00, 0x00,0x00,0x00,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f,0x00,0x00,0x00,0x00,0x18,0x60,0x1c,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x78,0x1c,0x7c,0x0e,0x6e,0x06,0x67,0x86,0x63,0xce,0x61,0xfc,0x60,0x78,0x60,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0x00,0x00,0x00,0x00,0x80,0x07,0xc0,0x07,0xe0,0x06,0x70,0x06,0x38,0x06,0x1c,0x06,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x7e,0x18,0x7e,0x38,0x66,0x70,0x66,0x60,0x66,0x60,0xe6,0x70,0xc6,0x3f,0x86,0x1f,0x00,0x00,0x00,0x00,0xf8,0x1f,0xfc,0x3f,0x8e,0x71,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x86,0x7f,0xc6,0x7f,0xe6,0x00,0x76,0x00,0x3e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x78,0x1e,0xfc,0x3f,0xce,0x73,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0x00,0x00,0x00,0x00,0x78,0x00,0xfc,0x00,0xce,0x61,0x86,0x71,0x86,0x39,0xce,0x1d,0xfc,0x0f,0xf8,0x07,0x00,0x00,0x00,0x00,0x30,0x0c,0x78,0x1e,0x78,0x1e,0x30,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x66,0x78,0x76,0x78,0x3e,0x30,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0x80,0x01,0x00,0x00,0x00,0x00,0x18,0x00,0x1c,0x00,0x0e,0x00,0x06,0x00,0x06,0x66,0x06,0x67,0x86,0x03,0xce,0x01,0xfc,0x00,0x78,0x00, 0x78,0x00,0xfc,0x00,0xce,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0xe0,0x7f,0xf0,0x7f,0xb8,0x01,0x9c,0x01,0x8e,0x01,0x8e,0x01,0x9c,0x01,0xb8,0x01,0xf0,0x7f,0xe0,0x7f,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0xce,0x73,0xfc,0x3f,0x78,0x1e,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x18,0x18,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0x1c,0x38,0x38,0x1c,0xf0,0x0f,0xe0,0x07,0xfe,0x7f,0xfe,0x7f,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x06,0x00,0x06,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x71,0x9c,0x7f,0x98,0x3f,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0x60,0x06,0x60,0x06,0x70,0xfe,0x3f,0xfe,0x1f,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x80,0x01,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x38,0x1c,0x1c,0x38,0x0e,0x70,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0xfe,0x7f,0xfe,0x7f,0x1c,0x00,0x38,0x00,0xf0,0x01,0xf0,0x01,0x38,0x00,0x1c,0x00,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0xfe,0x7f,0xfe,0x7f,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x0e,0x70,0xfc,0x3f,0xf8,0x1f, 0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0x86,0x01,0xce,0x01,0xfc,0x00,0x78,0x00,0xf8,0x1f,0xfc,0x3f,0x0e,0x70,0x06,0x60,0x06,0x66,0x06,0x6e,0x06,0x3c,0x0e,0x38,0xfc,0x7f,0xf8,0x67,0xfe,0x7f,0xfe,0x7f,0x86,0x01,0x86,0x01,0x86,0x07,0x86,0x0f,0x86,0x1d,0xce,0x39,0xfc,0x70,0x78,0x60,0x78,0x18,0xfc,0x38,0xce,0x71,0x86,0x61,0x86,0x61,0x86,0x61,0x86,0x61,0x8e,0x73,0x1c,0x3f,0x18,0x1e,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0xfe,0x07,0xfe,0x0f,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x1c,0xfe,0x0f,0xfe,0x07,0xfe,0x1f,0xfe,0x3f,0x00,0x70,0x00,0x70,0x00,0x3e,0x00,0x3e,0x00,0x70,0x00,0x70,0xfe,0x3f,0xfe,0x1f,0x1e,0x78,0x3e,0x7c,0x70,0x0e,0xe0,0x07,0xc0,0x03,0xc0,0x03,0xe0,0x07,0x70,0x0e,0x3e,0x7c,0x1e,0x78,0x7e,0x00,0xfe,0x00,0xc0,0x01,0x80,0x03,0x00,0x7f,0x00,0x7f,0x80,0x03,0xc0,0x01,0xfe,0x00,0x7e,0x00,0x06,0x78,0x06,0x7c,0x06,0x6e,0x06,0x67,0x86,0x63,0xc6,0x61,0xe6,0x60,0x76,0x60,0x3e,0x60,0x1e,0x60,0x00,0x00,0x00,0x00,0xfe,0x7f,0xfe,0x7f,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x18,0x00,0x38,0x00,0x70,0x00,0xe0,0x00,0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0e,0x00,0x1c,0x00,0x18,0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x7f,0xfe,0x7f,0x00,0x00,0x00,0x00,0x60,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x0e,0x00,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60, diff --git a/src/font_dblsize.xbm b/src/font_dblsize.xbm index 730187d0a..6ed67f39e 100644 --- a/src/font_dblsize.xbm +++ b/src/font_dblsize.xbm @@ -14,8 +14,8 @@ static unsigned char font_dblsize_bits[] = { 0x00, 0xc0, 0x80, 0xc4, 0xff, 0x33, 0x80, 0xb3, 0x03, 0x03, 0x0c, 0x00, 0x73, 0x3b, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0xc0, 0x00, 0x00, 0x33, 0xfe, 0xc0, 0xe1, 0x01, 0x00, 0x0c, 0x00, 0xc3, 0xcf, 0xff, 0x00, - 0xe0, 0x0f, 0x00, 0x1c, 0x00, 0xc0, 0x00, 0x00, 0x33, 0xfc, 0xe1, 0xe0, - 0x01, 0x00, 0x0c, 0x00, 0xc3, 0xcf, 0xff, 0x00, 0xe0, 0x0f, 0x00, 0x0e, + 0xf0, 0x0f, 0x00, 0x1c, 0x00, 0xc0, 0x00, 0x00, 0x33, 0xfc, 0xe1, 0xe0, + 0x01, 0x00, 0x0c, 0x00, 0xc3, 0xcf, 0xff, 0x00, 0xf0, 0x0f, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x30, 0x73, 0xb0, 0x33, 0x00, 0x0c, 0x00, 0x73, 0x3b, 0x0c, 0x3c, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x30, 0x3b, 0x30, 0x3f, 0x00, 0x1c, 0x80, 0x33, 0x33, 0x0c, 0x3c, diff --git a/src/font_dblsize_extra.lbm b/src/font_dblsize_extra.lbm new file mode 100644 index 000000000..c71947df1 --- /dev/null +++ b/src/font_dblsize_extra.lbm @@ -0,0 +1 @@ +0x60,0x00,0x70,0x00,0x38,0x00,0x1c,0x00,0xce,0x7f,0xce,0x7f,0x1c,0x00,0x38,0x00,0x70,0x00,0x60,0x00,0x00,0x06,0x00,0x0e,0x00,0x1c,0x00,0x38,0xfe,0x73,0xfe,0x73,0x00,0x38,0x00,0x1c,0x00,0x0e,0x00,0x06,0x00,0x18,0x00,0x1c,0x00,0x0e,0x18,0x07,0x98,0x03,0xd8,0x01,0xd8,0x00,0x18,0x00,0xf8,0x03,0xf8,0x03,0x18,0x00,0x38,0x00,0x70,0x00,0xe0,0x18,0xc0,0x19,0x80,0x1b,0x00,0x1b,0x00,0x18,0xc0,0x1f,0xc0,0x1f,0xc0,0x1f,0xc0,0x1f,0x00,0x18,0x00,0x1b,0x80,0x1b,0xc0,0x19,0xe0,0x18,0x70,0x00,0x38,0x00,0x18,0x00,0xf8,0x03,0xf8,0x03,0x18,0x00,0xd8,0x00,0xd8,0x01,0x98,0x03,0x18,0x07,0x00,0x0e,0x00,0x1c,0x00,0x18, diff --git a/src/font_extra_dblsize.xbm b/src/font_dblsize_extra.xbm similarity index 100% rename from src/font_extra_dblsize.xbm rename to src/font_dblsize_extra.xbm diff --git a/src/font_extra.lbm b/src/font_extra.lbm new file mode 100644 index 000000000..ea644215a --- /dev/null +++ b/src/font_extra.lbm @@ -0,0 +1 @@ +0x04,0x02,0x7b,0x02,0x04,0x10,0x20,0x6f,0x20,0x10,0x20,0x12,0x0a,0x02,0x1e,0x02,0x24,0x28,0x20,0x3c,0x3c,0x20,0x28,0x24,0x02,0x1e,0x02,0x0a,0x12,0x20, diff --git a/src/font_extra_6x1.xbm b/src/font_extra.xbm similarity index 100% rename from src/font_extra_6x1.xbm rename to src/font_extra.xbm diff --git a/src/font_midsize.lbm b/src/font_midsize.lbm new file mode 100644 index 000000000..b186d185c --- /dev/null +++ b/src/font_midsize.lbm @@ -0,0 +1,6 @@ +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x05,0xfe,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x0e,0x00,0x00,0x00,0x0e,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0xfc,0x03,0xfc,0x03,0x90,0x00,0xfc,0x03,0xfc,0x03,0x90,0x00,0x00,0x00,0x38,0x02,0x7c,0x06,0x64,0x04,0xfe,0x0f,0xc4,0x04,0xcc,0x07,0x88,0x03,0x0c,0x04,0x1e,0x07,0x8c,0x03,0xe0,0x00,0x70,0x00,0x1c,0x03,0x8e,0x07,0x02,0x03,0x80,0x03,0xdc,0x07,0x7e,0x04,0x72,0x04,0xde,0x06,0x8c,0x03,0x80,0x07,0xc0,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x1e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0xfc,0x03,0x0e,0x07,0x03,0x0c,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x08,0x03,0x0c,0x0e,0x07,0xfc,0x03,0xf0,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x50,0x01,0xf0,0x01,0xe0,0x00,0xf0,0x01,0x50,0x01,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0xf8,0x03,0xf8,0x03,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x09,0x80,0x0f,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x0e,0x00,0x0e,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x07,0x80,0x03,0xe0,0x00,0x70,0x00,0x1c,0x00,0x0e,0x00,0x02,0x00, +0xf0,0x00,0xf8,0x01,0x0c,0x03,0x06,0x06,0x06,0x06,0x0c,0x03,0xf8,0x01,0xf0,0x00,0x00,0x00,0x08,0x04,0x0c,0x04,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0x00,0x00,0x08,0x04,0x0c,0x06,0x06,0x07,0x82,0x05,0xc2,0x04,0x66,0x04,0x3c,0x04,0x18,0x04,0x04,0x02,0x06,0x06,0x02,0x04,0x22,0x04,0x22,0x04,0x76,0x06,0xdc,0x03,0x88,0x01,0xc0,0x00,0xe0,0x00,0xb0,0x00,0x98,0x00,0x8c,0x00,0xfe,0x07,0xfe,0x07,0x80,0x00,0x3e,0x01,0x3e,0x03,0x22,0x06,0x12,0x04,0x12,0x04,0x32,0x06,0xe2,0x03,0xc0,0x01,0xf8,0x01,0xfc,0x03,0x46,0x06,0x22,0x04,0x22,0x04,0x66,0x06,0xcc,0x03,0x80,0x01,0x02,0x00,0x02,0x00,0x02,0x00,0x82,0x07,0xe2,0x07,0x72,0x00,0x1e,0x00,0x0e,0x00,0x88,0x01,0xdc,0x03,0x76,0x06,0x22,0x04,0x22,0x04,0x76,0x06,0xdc,0x03,0x88,0x01,0x18,0x00,0x3c,0x03,0x66,0x06,0x42,0x04,0x42,0x04,0x26,0x06,0xfc,0x03,0xf8,0x01,0x00,0x00,0x00,0x00,0x08,0x01,0x9c,0x03,0x9c,0x03,0x08,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x9c,0x09,0x9c,0x0f,0x88,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xf0,0x00,0x98,0x01,0x0c,0x03,0x06,0x06,0x02,0x04,0x00,0x00,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x20,0x01,0x00,0x00,0x02,0x04,0x06,0x06,0x0c,0x03,0x98,0x01,0xf0,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x0e,0x00,0x82,0x06,0xc2,0x06,0x62,0x00,0x3e,0x00,0x1c,0x00, +0x00,0x00,0x00,0x00,0x0c,0x00,0x1e,0x00,0x12,0x00,0x12,0x00,0x1e,0x00,0x0c,0x00,0xf0,0x07,0xf8,0x07,0x8c,0x00,0x86,0x00,0x86,0x00,0x8c,0x00,0xf8,0x07,0xf0,0x07,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x76,0x06,0xdc,0x03,0x88,0x01,0xf8,0x01,0xfc,0x03,0x06,0x06,0x02,0x04,0x02,0x04,0x02,0x04,0x06,0x06,0x0c,0x03,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0x02,0x04,0x06,0x06,0xfc,0x03,0xf8,0x01,0x00,0x00,0xfe,0x07,0xfe,0x07,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x22,0x00,0x22,0x00,0x22,0x00,0x22,0x00,0x02,0x00,0x02,0x00,0xf8,0x01,0xfc,0x03,0x06,0x06,0x02,0x04,0x02,0x04,0x42,0x04,0xc6,0x07,0xc4,0x03,0xfe,0x07,0xfe,0x07,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0xfe,0x07,0xfe,0x07,0x00,0x00,0x02,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x02,0x04,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x06,0x02,0x04,0x02,0x06,0xfe,0x03,0xfe,0x01,0x00,0x00,0xfe,0x07,0xfe,0x07,0x60,0x00,0xf0,0x00,0x98,0x01,0x0c,0x03,0x06,0x06,0x02,0x04,0x00,0x00,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x04,0xfe,0x07,0xfe,0x07,0x0c,0x00,0x78,0x00,0x78,0x00,0x0c,0x00,0xfe,0x07,0xfe,0x07,0xfe,0x07,0xfe,0x07,0x1c,0x00,0x78,0x00,0xe0,0x00,0x80,0x03,0xfe,0x07,0xfe,0x07,0xf8,0x01,0xfc,0x03,0x06,0x06,0x02,0x04,0x02,0x04,0x06,0x06,0xfc,0x03,0xf8,0x01, +0xfe,0x07,0xfe,0x07,0x22,0x00,0x22,0x00,0x22,0x00,0x22,0x00,0x3e,0x00,0x1c,0x00,0xf8,0x01,0xfc,0x03,0x06,0x06,0x82,0x04,0x82,0x05,0x06,0x07,0xfc,0x03,0xf8,0x05,0xfe,0x07,0xfe,0x07,0x62,0x00,0x62,0x00,0xe2,0x00,0xa2,0x01,0x3e,0x07,0x1c,0x06,0x1c,0x02,0x3e,0x06,0x22,0x04,0x22,0x04,0x22,0x04,0x22,0x04,0xe6,0x07,0xc4,0x03,0x02,0x00,0x02,0x00,0x02,0x00,0xfe,0x07,0xfe,0x07,0x02,0x00,0x02,0x00,0x02,0x00,0xfe,0x01,0xfe,0x03,0x00,0x06,0x00,0x04,0x00,0x04,0x00,0x06,0xfe,0x03,0xfe,0x01,0x0e,0x00,0x7e,0x00,0xf0,0x01,0x80,0x07,0x80,0x07,0xf0,0x01,0x7e,0x00,0x0e,0x00,0xfe,0x07,0xfe,0x07,0x00,0x03,0xe0,0x01,0xe0,0x01,0x00,0x03,0xfe,0x07,0xfe,0x07,0x06,0x06,0x0e,0x07,0x98,0x01,0xf0,0x00,0xf0,0x00,0x98,0x01,0x0e,0x07,0x06,0x06,0x06,0x00,0x0e,0x00,0x18,0x00,0xf0,0x07,0xf0,0x07,0x18,0x00,0x0e,0x00,0x06,0x00,0x00,0x00,0x02,0x07,0x82,0x07,0xc2,0x04,0x62,0x04,0x32,0x04,0x1e,0x04,0x0e,0x04,0x00,0x00,0x00,0x00,0xff,0x0f,0xff,0x0f,0x01,0x08,0x01,0x08,0x01,0x08,0x00,0x00,0x02,0x00,0x0e,0x00,0x1c,0x00,0x70,0x00,0xe0,0x00,0x80,0x03,0x00,0x07,0x00,0x04,0x00,0x00,0x00,0x00,0x01,0x08,0x01,0x08,0x01,0x08,0xff,0x0f,0xff,0x0f,0x00,0x00,0x00,0x00,0x18,0x00,0x0c,0x00,0x06,0x00,0x06,0x00,0x0c,0x00,0x18,0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08, +0x00,0x00,0x00,0x00,0x01,0x00,0x03,0x00,0x06,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xa0,0x07,0xb0,0x04,0x90,0x04,0x90,0x04,0x90,0x02,0xf0,0x07,0xe0,0x07,0xfe,0x07,0xfe,0x07,0x20,0x02,0x10,0x04,0x10,0x04,0x30,0x06,0xe0,0x03,0xc0,0x01,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0x10,0x04,0x10,0x04,0x30,0x06,0x20,0x02,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0x10,0x04,0x20,0x02,0xfe,0x07,0xfe,0x07,0xc0,0x01,0xe0,0x03,0xb0,0x06,0x90,0x04,0x90,0x04,0xb0,0x04,0xe0,0x06,0xc0,0x02,0x40,0x00,0x40,0x00,0xfc,0x07,0xfe,0x07,0x42,0x00,0x42,0x00,0x0e,0x00,0x0c,0x00,0x60,0x05,0xf0,0x0f,0x90,0x0a,0x90,0x0a,0x90,0x0a,0xf0,0x0a,0x60,0x0e,0x30,0x04,0xfe,0x07,0xfe,0x07,0x20,0x00,0x10,0x00,0x10,0x00,0x30,0x00,0xe0,0x07,0xc0,0x07,0x00,0x00,0x00,0x04,0x10,0x04,0xf6,0x07,0xf6,0x07,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x0f,0x00,0x08,0x10,0x08,0x10,0x08,0xf6,0x0f,0xf6,0x07,0x00,0x00,0xfe,0x07,0xfe,0x07,0xc0,0x00,0xe0,0x01,0x30,0x03,0x10,0x06,0x00,0x04,0x00,0x00,0x00,0x04,0x02,0x04,0xfe,0x07,0xfe,0x07,0x00,0x04,0x00,0x04,0x00,0x00,0xf0,0x07,0xe0,0x07,0x10,0x00,0xf0,0x07,0xe0,0x07,0x10,0x00,0xf0,0x07,0xe0,0x07,0xf0,0x07,0xf0,0x07,0x20,0x00,0x10,0x00,0x10,0x00,0x30,0x00,0xe0,0x07,0xc0,0x07,0xc0,0x01,0xe0,0x03,0x30,0x06,0x10,0x04,0x10,0x04,0x30,0x06,0xe0,0x03,0xc0,0x01, +0xf0,0x0f,0xf0,0x0f,0xa0,0x00,0x10,0x01,0x10,0x01,0xb0,0x01,0xe0,0x00,0xc0,0x00,0xc0,0x00,0xe0,0x00,0xb0,0x01,0x10,0x01,0x10,0x01,0xa0,0x00,0xf0,0x0f,0xf0,0x0f,0x10,0x00,0xf0,0x07,0xe0,0x07,0x30,0x00,0x10,0x00,0x10,0x00,0x30,0x00,0x20,0x00,0x60,0x02,0xf0,0x06,0x90,0x04,0x90,0x04,0x90,0x04,0x90,0x04,0xb0,0x07,0x20,0x03,0x10,0x00,0x10,0x00,0xfc,0x03,0xfc,0x07,0x10,0x04,0x10,0x04,0x00,0x06,0x00,0x02,0xf0,0x01,0xf0,0x03,0x00,0x06,0x00,0x04,0x00,0x04,0x00,0x02,0xf0,0x07,0xf0,0x07,0x30,0x00,0xf0,0x00,0xc0,0x03,0x00,0x07,0x00,0x07,0xc0,0x03,0xf0,0x00,0x30,0x00,0xf0,0x03,0xf0,0x07,0x00,0x06,0xc0,0x03,0xc0,0x03,0x00,0x06,0xf0,0x07,0xf0,0x03,0x10,0x04,0x30,0x06,0x60,0x03,0xc0,0x01,0xc0,0x01,0x60,0x03,0x30,0x06,0x10,0x04,0xf0,0x04,0xf0,0x0c,0x80,0x09,0x00,0x09,0x00,0x09,0x80,0x0c,0xf0,0x07,0xf0,0x03,0x00,0x00,0x10,0x06,0x10,0x07,0x90,0x05,0xd0,0x04,0x70,0x04,0x30,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xfe,0x07,0x9f,0x0f,0x01,0x08,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x07,0xfe,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x08,0x01,0x08,0x9f,0x0f,0xfe,0x07,0x60,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x64,0x02,0x68,0x01,0xf0,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xf0,0x00,0x68,0x01,0x64,0x02,0x60,0x00,0x60,0x00,0x60,0x00, diff --git a/src/font_midsize.xbm b/src/font_midsize.xbm new file mode 100644 index 000000000..c2d9b8ff6 --- /dev/null +++ b/src/font_midsize.xbm @@ -0,0 +1,99 @@ +#define font_8x10_width 128 +#define font_8x10_height 72 +static unsigned char font_8x10_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x0c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x6c, 0x00, 0x10, 0xc2, 0x1c, 0x18, + 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x18, 0x6c, 0x6c, + 0x7c, 0x67, 0x36, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, + 0x00, 0x18, 0x6c, 0x6c, 0xd6, 0x67, 0x36, 0x18, 0x18, 0x30, 0x00, 0x18, + 0x00, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, 0xfe, 0x16, 0x32, 0x1e, 0x18, + 0x0c, 0x60, 0x6c, 0x18, 0x00, 0x00, 0x00, 0x30, 0x00, 0x18, 0x00, 0x6c, + 0x1e, 0x18, 0x0c, 0x00, 0x0c, 0x60, 0x38, 0x18, 0x00, 0x00, 0x00, 0x18, + 0x00, 0x18, 0x00, 0x6c, 0x7c, 0x18, 0x9e, 0x00, 0x0c, 0x60, 0xfe, 0xff, + 0x00, 0x1e, 0x00, 0x18, 0x00, 0x18, 0x00, 0xfe, 0xf0, 0x4c, 0xf3, 0x00, + 0x0c, 0x60, 0x38, 0x18, 0x38, 0x00, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x6c, + 0xd0, 0xe6, 0x63, 0x00, 0x18, 0x30, 0x6c, 0x18, 0x38, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x00, 0x6c, 0xd6, 0xe6, 0x73, 0x00, 0x18, 0x30, 0x00, 0x18, + 0x30, 0x00, 0x18, 0x06, 0x00, 0x18, 0x00, 0x00, 0x7c, 0x43, 0xde, 0x00, + 0x30, 0x18, 0x00, 0x00, 0x30, 0x00, 0x3c, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x60, 0x0c, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x3c, 0x3e, 0x60, 0x7f, 0x3c, 0xff, + 0x3c, 0x3c, 0x00, 0x00, 0x60, 0x00, 0x06, 0x7c, 0x3c, 0x1c, 0x66, 0x63, + 0x70, 0x03, 0x66, 0xc0, 0x66, 0x66, 0x18, 0x18, 0x30, 0x00, 0x0c, 0xc6, + 0x66, 0x1e, 0xc3, 0xc0, 0x78, 0x03, 0x43, 0xc0, 0xc3, 0xc3, 0x3c, 0x3c, + 0x18, 0x00, 0x18, 0xc6, 0xc3, 0x18, 0xc0, 0x60, 0x6c, 0x3b, 0x03, 0x60, + 0x66, 0xc3, 0x18, 0x18, 0x0c, 0x00, 0x30, 0xc0, 0xc3, 0x18, 0x60, 0x38, + 0x66, 0x67, 0x3b, 0x30, 0x3c, 0xe6, 0x00, 0x00, 0x06, 0xff, 0x60, 0x60, + 0xc3, 0x18, 0x30, 0x60, 0x63, 0xc0, 0x67, 0x30, 0x66, 0xdc, 0x00, 0x00, + 0x06, 0x00, 0x60, 0x30, 0xc3, 0x18, 0x18, 0xc0, 0xff, 0xc0, 0xc3, 0x18, + 0xc3, 0xc0, 0x18, 0x38, 0x0c, 0x00, 0x30, 0x18, 0x66, 0x18, 0x0c, 0xc0, + 0x60, 0xc3, 0xc3, 0x18, 0xc3, 0xc2, 0x3c, 0x38, 0x18, 0xff, 0x18, 0x00, + 0x3c, 0x18, 0x06, 0x63, 0x60, 0x66, 0x66, 0x18, 0x66, 0x66, 0x18, 0x30, + 0x30, 0x00, 0x0c, 0x18, 0x18, 0x7e, 0xff, 0x3e, 0x60, 0x3c, 0x3c, 0x18, + 0x3c, 0x3c, 0x00, 0x30, 0x60, 0x00, 0x06, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x78, 0x18, 0x3f, 0x7c, 0x3f, 0xfe, 0xff, 0x7c, + 0xc3, 0x7e, 0x78, 0xc3, 0x06, 0xc3, 0xc3, 0x3c, 0xcc, 0x3c, 0x63, 0xc6, + 0x63, 0x06, 0x03, 0xc6, 0xc3, 0x18, 0x60, 0x63, 0x06, 0xe7, 0xc7, 0x66, + 0xcc, 0x66, 0xc3, 0x83, 0xc3, 0x06, 0x03, 0x03, 0xc3, 0x18, 0x60, 0x33, + 0x06, 0xff, 0xcf, 0xc3, 0x78, 0xc3, 0x63, 0x03, 0xc3, 0x06, 0x03, 0x03, + 0xc3, 0x18, 0x60, 0x1b, 0x06, 0xdb, 0xcf, 0xc3, 0x00, 0xc3, 0x3f, 0x03, + 0xc3, 0x7e, 0x3f, 0x03, 0xff, 0x18, 0x60, 0x0f, 0x06, 0xdb, 0xdb, 0xc3, + 0x00, 0xc3, 0x63, 0x03, 0xc3, 0x06, 0x03, 0xe3, 0xc3, 0x18, 0x60, 0x0f, + 0x06, 0xdb, 0xdb, 0xc3, 0x00, 0xff, 0xc3, 0x03, 0xc3, 0x06, 0x03, 0xc3, + 0xc3, 0x18, 0x60, 0x1b, 0x06, 0xc3, 0xf3, 0xc3, 0x00, 0xc3, 0xc3, 0x83, + 0xc3, 0x06, 0x03, 0xc3, 0xc3, 0x18, 0x62, 0x33, 0x06, 0xc3, 0xe3, 0xc3, + 0x00, 0xc3, 0x63, 0xc6, 0x63, 0x06, 0x03, 0xc6, 0xc3, 0x18, 0x36, 0x63, + 0x06, 0xc3, 0xe3, 0x66, 0x00, 0xc3, 0x3f, 0x7c, 0x3f, 0xfe, 0x03, 0x7c, + 0xc3, 0x7e, 0x1c, 0xc3, 0xfe, 0xc3, 0xc3, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, + 0x00, 0x7c, 0x00, 0x00, 0x7f, 0x3c, 0x7f, 0x7e, 0xff, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0xfe, 0x0c, 0x03, 0x60, 0x18, 0x00, 0xc3, 0x66, 0xc3, 0xc3, + 0x18, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc0, 0x0c, 0x06, 0x60, 0x3c, 0x00, + 0xc3, 0xc3, 0xc3, 0x03, 0x18, 0xc3, 0xc3, 0xc3, 0x66, 0x66, 0xc0, 0x0c, + 0x06, 0x60, 0x66, 0x00, 0xc3, 0xc3, 0xc3, 0x03, 0x18, 0xc3, 0x66, 0xc3, + 0x3c, 0x3c, 0x60, 0x0c, 0x0c, 0x60, 0x42, 0x00, 0x7f, 0xc3, 0x7f, 0x7e, + 0x18, 0xc3, 0x66, 0xdb, 0x18, 0x18, 0x30, 0x0c, 0x18, 0x60, 0x00, 0x00, + 0x03, 0xc3, 0x1f, 0xc0, 0x18, 0xc3, 0x66, 0xdb, 0x18, 0x18, 0x18, 0x0c, + 0x18, 0x60, 0x00, 0x00, 0x03, 0xdb, 0x33, 0xc0, 0x18, 0xc3, 0x3c, 0xdb, + 0x3c, 0x18, 0x0c, 0x0c, 0x30, 0x60, 0x00, 0x00, 0x03, 0xf3, 0x63, 0xc0, + 0x18, 0xc3, 0x3c, 0xff, 0x66, 0x18, 0x06, 0x0c, 0x60, 0x60, 0x00, 0x00, + 0x03, 0x66, 0xc3, 0xc3, 0x18, 0x66, 0x18, 0xe7, 0xc3, 0x18, 0x06, 0x0c, + 0x60, 0x60, 0x00, 0x00, 0x03, 0xbc, 0xc3, 0x7e, 0x18, 0x3c, 0x18, 0xc3, + 0xc3, 0x18, 0xfe, 0x0c, 0xc0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0xff, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x03, 0x00, 0xc0, 0x00, 0x78, 0x00, + 0x03, 0x18, 0xc0, 0x06, 0x1c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, + 0xc0, 0x00, 0xcc, 0x00, 0x03, 0x18, 0xc0, 0x06, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x00, 0xc0, 0x00, 0xcc, 0x00, 0x03, 0x00, 0x00, 0x06, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x3b, 0x7c, 0xdc, 0x3c, 0x0c, 0xbe, + 0x3b, 0x1c, 0xf0, 0x66, 0x18, 0x6d, 0x3b, 0x3c, 0x00, 0xc6, 0x67, 0xc6, + 0xe6, 0x66, 0x0c, 0xe3, 0x67, 0x18, 0xc0, 0x36, 0x18, 0xdb, 0x67, 0x66, + 0x00, 0xc0, 0xc3, 0x03, 0xc3, 0xc3, 0x3f, 0x63, 0xc3, 0x18, 0xc0, 0x1e, + 0x18, 0xdb, 0xc3, 0xc3, 0x00, 0xfe, 0xc3, 0x03, 0xc3, 0xff, 0x0c, 0x3e, + 0xc3, 0x18, 0xc0, 0x1e, 0x18, 0xdb, 0xc3, 0xc3, 0x00, 0xc3, 0xc3, 0x03, + 0xc3, 0x03, 0x0c, 0x03, 0xc3, 0x18, 0xc6, 0x36, 0x18, 0xdb, 0xc3, 0xc3, + 0x00, 0xe3, 0x67, 0xc6, 0xe6, 0xc6, 0x0c, 0x7e, 0xc3, 0x18, 0xc6, 0x66, + 0x18, 0xdb, 0xc3, 0x66, 0x00, 0xde, 0x3b, 0x7c, 0xdc, 0x7c, 0x0c, 0xc3, + 0xc3, 0x7e, 0xc6, 0xc6, 0x7e, 0xdb, 0xc3, 0x3c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x08, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, + 0x18, 0x30, 0x10, 0x08, 0x3b, 0xdc, 0x7b, 0x7e, 0x3f, 0xc3, 0xc3, 0xc3, + 0xc3, 0xc3, 0x7e, 0x18, 0x18, 0x30, 0x20, 0x04, 0x67, 0xe6, 0xce, 0xc3, + 0x0c, 0xc3, 0xc3, 0xc3, 0x66, 0xc3, 0x60, 0x0c, 0x18, 0x60, 0x7f, 0xfe, + 0xc3, 0xc3, 0x06, 0x03, 0x0c, 0xc3, 0x66, 0xdb, 0x3c, 0xc3, 0x30, 0x0c, + 0x18, 0x60, 0x7f, 0xfe, 0xe7, 0xe7, 0x06, 0x7e, 0x0c, 0xc3, 0x66, 0xdb, + 0x18, 0xe7, 0x18, 0x18, 0x18, 0x30, 0x20, 0x04, 0x3b, 0xdc, 0x06, 0xc0, + 0x0c, 0xc3, 0x3c, 0xdb, 0x3c, 0xdc, 0x0c, 0x18, 0x18, 0x30, 0x10, 0x08, + 0x03, 0xc0, 0x06, 0xc3, 0xcc, 0xe6, 0x3c, 0xff, 0x66, 0xc0, 0x06, 0x18, + 0x18, 0x30, 0x08, 0x10, 0x03, 0xc0, 0x06, 0x7e, 0x78, 0xdc, 0x18, 0x66, + 0xc3, 0x63, 0x7e, 0x18, 0x18, 0x30, 0x00, 0x00, 0x03, 0xc0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x70, 0x00, 0x1c, 0x00, 0x00 }; diff --git a/src/general_menus.cpp b/src/general_menus.cpp index 513dd7bbb..f8ebd165f 100644 --- a/src/general_menus.cpp +++ b/src/general_menus.cpp @@ -1019,5 +1019,5 @@ void menuGeneralCalib(uint8_t event) break; } - doMainScreenGrphics(); + doMainScreenGraphics(); } diff --git a/src/lcd.cpp b/src/lcd.cpp index 83da71830..ad33b0c4b 100644 --- a/src/lcd.cpp +++ b/src/lcd.cpp @@ -71,14 +71,14 @@ uint8_t lcdLock; uint32_t lcdInputs; #endif -void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, uint8_t mode) +void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags mode) { uint8_t *p = &displayBuf[ y / 8 * DISPLAY_W + x ]; #if defined(PCBX9D) - const pm_uchar *q = (c < 0xC0) ? &font[(c-0x20)*5+4] : &font_extra[(c-0xC0)*5+4]; + const pm_uchar *q = (c < 0xC0) ? &font_5x7[(c-0x20)*5+4] : &font_5x7_extra[(c-0xC0)*5+4]; #else - const pm_uchar *q = &font[(c-0x20)*5+4]; + const pm_uchar *q = &font_5x7[(c-0x20)*5+4]; #endif bool inv = false; @@ -97,7 +97,7 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, uint8_t mode) if (mode & DBLSIZE) { /* each letter consists of ten top bytes followed by * by ten bottom bytes (20 bytes per * char) */ - q = &font_dblsize[((uint16_t)c-0x20)*20]; + q = &font_10x14[((uint16_t)c-0x20)*20]; for (int8_t i=11; i>=0; i--) { if (mode & CONDENSED && i<=1) break; uint8_t b1=0, b2=0; @@ -118,6 +118,43 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, uint8_t mode) } } } +#if defined(PCBX9D) + if (mode & MIDSIZE) { + /* each letter consists of ten top bytes followed by + * by ten bottom bytes (20 bytes per * char) */ + q = &font_8x10[((uint16_t)c-0x20)*16]; + for (int8_t i=9; i>=0; i--) { + // TODO? if (mode & CONDENSED && i<=1) break; + uint8_t b1=0, b2=0; + if (i!=0 && i!= 9) { + b1 = pgm_read_byte(q++); /*top byte*/ + b2 = pgm_read_byte(q++); /*top byte*/ + } + if (inv) { + b1=~b1; + b2=~b2; + } + uint8_t ym8 = (y % 8); + if (&p[DISPLAY_W+1] < DISPLAY_END) { + ASSERT_IN_DISPLAY(p); + ASSERT_IN_DISPLAY(p+DISPLAY_W); + *p = (*p & (~(0xff << ym8))) + (b1 << ym8); + uint8_t *r = p + DISPLAY_W; + if (r> (8-ym8)))) + (b1 >> (8-ym8)); + *r = (*r & (~(0x0f << ym8))) + ((b2&0x0f) << ym8); + if (ym8) { + r = r + DISPLAY_W; + if (r> (8-ym8)))) + ((b2&0x0f) >> (8-ym8)); + } + } + p++; + } + } + } +#endif else { uint8_t condense=0; @@ -152,7 +189,6 @@ void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, uint8_t mode) *(p+1) &= (b << ym8); else *(p+1) |= (b << ym8); - } #endif } @@ -166,14 +202,14 @@ void lcd_putc(xcoord_t x, uint8_t y, const unsigned char c) lcd_putcAtt(x,y,c,0); } -void lcd_putsiAtt(xcoord_t x,uint8_t y,const pm_char * s,uint8_t idx, uint8_t flags) +void lcd_putsiAtt(xcoord_t x, uint8_t y,const pm_char * s,uint8_t idx, LcdFlags flags) { uint8_t length; length = pgm_read_byte(s++) ; lcd_putsnAtt(x,y,s+length*idx,length,flags & ~(BSS|ZCHAR)); } -void lcd_putsnAtt(xcoord_t x,uint8_t y,const pm_char * s,uint8_t len,uint8_t mode) +void lcd_putsnAtt(xcoord_t x, uint8_t y, const pm_char * s, uint8_t len, LcdFlags mode) { while(len!=0) { unsigned char c; @@ -191,8 +227,9 @@ void lcd_putsnAtt(xcoord_t x,uint8_t y,const pm_char * s,uint8_t len,uint8_t mod if (!c || x>DISPLAY_W-6) break; if (c >= 0x20) { lcd_putcAtt(x,y,c,mode); - x += FW; + x += FW - (mode&CONDENSED ? 1 : 0); if (mode&DBLSIZE) x += FW-1; + else if (mode&MIDSIZE) x += FW-3; } else { x += (c*FW/2); @@ -203,17 +240,17 @@ void lcd_putsnAtt(xcoord_t x,uint8_t y,const pm_char * s,uint8_t len,uint8_t mod lcdLastPos = x; } -void lcd_putsn(xcoord_t x,uint8_t y,const pm_char * s,uint8_t len) +void lcd_putsn(xcoord_t x, uint8_t y, const pm_char * s, uint8_t len) { lcd_putsnAtt(x, y, s, len, 0); } -void lcd_putsAtt(xcoord_t x,uint8_t y,const pm_char * s,uint8_t mode) +void lcd_putsAtt(xcoord_t x, uint8_t y, const pm_char * s, LcdFlags flags) { - lcd_putsnAtt(x, y, s, 255, mode); + lcd_putsnAtt(x, y, s, 255, flags); } -void lcd_puts(xcoord_t x,uint8_t y,const pm_char * s) +void lcd_puts(xcoord_t x, uint8_t y, const pm_char * s) { lcd_putsAtt(x, y, s, 0); } @@ -223,7 +260,7 @@ void lcd_putsLeft(uint8_t y, const pm_char * s) lcd_puts(0, y, s); } -void lcd_outhex4(xcoord_t x,uint8_t y,uint16_t val) +void lcd_outhex4(xcoord_t x, uint8_t y, uint16_t val) { x+=FWNUM*4; for(int i=0; i<4; i++) @@ -235,6 +272,7 @@ void lcd_outhex4(xcoord_t x,uint8_t y,uint16_t val) val>>=4; } } + void lcd_outdez8(xcoord_t x, uint8_t y, int8_t val) { lcd_outdezAtt(x, y, val); @@ -250,6 +288,11 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, int16_t val, LcdFlags flags, uint8_t uint8_t fw = FWNUM; int8_t mode = MODE(flags); bool dblsize = flags & DBLSIZE; +#if defined(PCBX9D) + bool midsize = flags & MIDSIZE; +#else +#define midsize 0 +#endif bool neg = false; if (flags & UNSIGN) { flags -= UNSIGN; } @@ -272,6 +315,9 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, int16_t val, LcdFlags flags, uint8_t if (dblsize) { fw += FWNUM; } + else if (midsize) { + fw += FWNUM-1; + } else { if (flags & LEFT) { if (mode > 0) @@ -282,7 +328,7 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, int16_t val, LcdFlags flags, uint8_t if (flags & LEFT) { x += len * fw; if (neg) - x += (dblsize ? 7 : FWNUM); + x += ((dblsize|midsize) ? 7 : FWNUM); } lcdLastPos = x; @@ -291,7 +337,7 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, int16_t val, LcdFlags flags, uint8_t for (uint8_t i=1; i<=len; i++) { div_t qr = div((uint16_t)val, 10); char c = qr.rem + '0'; - uint8_t f = flags; + LcdFlags f = flags; if (dblsize) { if (c=='1' && i==len && xn>x+10) { x+=2; f|=CONDENSED; } if ((uint16_t)val >= 1000) { x+=FWNUM; f&=~DBLSIZE; } @@ -308,6 +354,10 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, int16_t val, LcdFlags flags, uint8_t else { xn--; ln++; } } } + else if (midsize) { + x -= 2; + xn = x; + } else { x--; lcd_plot(x, y+6); @@ -322,9 +372,17 @@ void lcd_outdezNAtt(xcoord_t x, uint8_t y, int16_t val, LcdFlags flags, uint8_t } if (xn) { - y &= ~0x07; - lcd_hline(xn, (y & ~0x07)+2*FH-3, ln); - lcd_hline(xn, y+2*FH-2, ln); + if (midsize) { + if ((flags&INVERS) && ((~flags & BLINK) || BLINK_ON_PHASE)) + lcd_vline(xn+1, y, 12); + lcd_hline(xn, y+9, 2); + lcd_hline(xn, y+10, 2); + } + else { + y &= ~0x07; + lcd_hline(xn, (y & ~0x07)+2*FH-3, ln); + lcd_hline(xn, y+2*FH-2, ln); + } } if (neg) lcd_putcAtt(x, y, '-', flags); @@ -342,7 +400,7 @@ void lcd_mask(uint8_t *p, uint8_t mask, uint8_t att) *p ^= mask; } -void lcd_plot(xcoord_t x,uint8_t y, uint8_t att) +void lcd_plot(xcoord_t x, uint8_t y, uint8_t att) { uint8_t *p = &displayBuf[ y / 8 * DISPLAY_W + x ]; if (p0 && !name[len-1]) --len; @@ -570,7 +640,7 @@ void putsModelName(xcoord_t x, uint8_t y, char *name, uint8_t id, uint8_t att) } } -void putsSwitches(xcoord_t x, uint8_t y, int8_t idx, uint8_t att) +void putsSwitches(xcoord_t x, uint8_t y, int8_t idx, LcdFlags att) { if (idx == 0) return lcd_putsiAtt(x, y, STR_MMMINV, 0, att); @@ -597,13 +667,13 @@ void putsSwitches(xcoord_t x, uint8_t y, int8_t idx, uint8_t att) } } #endif - if (~att & SWCONDENSED) lcd_putcAtt(x+3*FW, y, suffix, att); + if (~att & CONDENSED) lcd_putcAtt(x+3*FW, y, suffix, att); } lcd_putsiAtt(x, y, STR_VSWITCHES, idx-1, att); } #ifdef FLIGHT_PHASES -void putsFlightPhase(xcoord_t x, uint8_t y, int8_t idx, uint8_t att) +void putsFlightPhase(xcoord_t x, uint8_t y, int8_t idx, LcdFlags att) { if (idx==0) { lcd_putsiAtt(x, y, STR_MMMINV, 0, att); return; } if (idx < 0) { lcd_vlineStip(x-2, y, 8, 0x5E/*'!'*/); idx = -idx; } @@ -614,7 +684,7 @@ void putsFlightPhase(xcoord_t x, uint8_t y, int8_t idx, uint8_t att) } #endif -void putsCurve(xcoord_t x, uint8_t y, int8_t idx, uint8_t att) +void putsCurve(xcoord_t x, uint8_t y, int8_t idx, LcdFlags att) { if (idx < 0) { lcd_putcAtt(x-1*FW, y, '!', att); @@ -626,7 +696,7 @@ void putsCurve(xcoord_t x, uint8_t y, int8_t idx, uint8_t att) putsStrIdx(x, y, PSTR("c"), idx-CURVE_BASE+1, att); } -void putsTmrMode(xcoord_t x, uint8_t y, int8_t mode, uint8_t att) +void putsTmrMode(xcoord_t x, uint8_t y, int8_t mode, LcdFlags att) { if (mode < 0) { mode = TMR_VAROFS - mode - 1; @@ -640,7 +710,7 @@ void putsTmrMode(xcoord_t x, uint8_t y, int8_t mode, uint8_t att) putsSwitches(x, y, mode-(TMR_VAROFS-1), att); } -void putsTrimMode(xcoord_t x, uint8_t y, uint8_t phase, uint8_t idx, uint8_t att) +void putsTrimMode(xcoord_t x, uint8_t y, uint8_t phase, uint8_t idx, LcdFlags att) { int16_t v = getRawTrimValue(phase, idx); @@ -655,7 +725,7 @@ void putsTrimMode(xcoord_t x, uint8_t y, uint8_t phase, uint8_t idx, uint8_t att } #if defined(ROTARY_ENCODERS) -void putsRotaryEncoderMode(xcoord_t x, uint8_t y, uint8_t phase, uint8_t idx, uint8_t att) +void putsRotaryEncoderMode(xcoord_t x, uint8_t y, uint8_t phase, uint8_t idx, LcdFlags att) { #if defined(EXTRA_ROTARY_ENCODERS) int16_t v; diff --git a/src/lcd.h b/src/lcd.h index 91a9a8e03..81c85e877 100644 --- a/src/lcd.h +++ b/src/lcd.h @@ -88,15 +88,18 @@ /* switches flags */ #define SWONOFF 0x10 /* means inlude ON OFF in switches */ -#define SWCONDENSED 0x20 /* means that THRm will be displayed as THR */ /* telemetry flags */ #define NO_UNIT 0x40 -#if defined(PCBSKY9X) +#if defined(PCBX9D) +#define MIDSIZE 0x0100 +#else +#define MIDSIZE DBLSIZE +#endif + +#if defined(CPUARM) #define LcdFlags uint32_t -#elif defined(PCBGRUVIN9X) -#define LcdFlags uint16_t #else #define LcdFlags uint8_t #endif @@ -113,49 +116,46 @@ extern uint8_t lcdLock ; extern uint32_t lcdInputs ; #endif -extern void lcd_putc(xcoord_t x,uint8_t y,const unsigned char c); -extern void lcd_putcAtt(xcoord_t x,uint8_t y,const unsigned char c,uint8_t mode); - -extern void lcd_putsAtt(xcoord_t x,uint8_t y,const pm_char * s,uint8_t mode); -extern void lcd_putsiAtt(xcoord_t x,uint8_t y,const pm_char * s,uint8_t idx, uint8_t mode); -extern void lcd_putsnAtt(xcoord_t x,uint8_t y,const pm_char * s,unsigned char len,uint8_t mode); -extern void lcd_puts(xcoord_t x,uint8_t y,const pm_char * s); +extern void lcd_putc(xcoord_t x, uint8_t y, const unsigned char c); +extern void lcd_putcAtt(xcoord_t x, uint8_t y, const unsigned char c, LcdFlags mode); +extern void lcd_putsAtt(xcoord_t x, uint8_t y, const pm_char * s, LcdFlags mode); +extern void lcd_putsiAtt(xcoord_t x, uint8_t y, const pm_char * s,uint8_t idx, LcdFlags mode); +extern void lcd_putsnAtt(xcoord_t x, uint8_t y, const pm_char * s,unsigned char len, LcdFlags mode); +extern void lcd_puts(xcoord_t x, uint8_t y, const pm_char * s); extern void lcd_putsLeft(uint8_t y, const pm_char * s); -extern void lcd_putsn(xcoord_t x,uint8_t y,const pm_char * s,unsigned char len); - -extern void lcd_outhex4(xcoord_t x,uint8_t y,uint16_t val); +extern void lcd_putsn(xcoord_t x, uint8_t y, const pm_char * s, unsigned char len); +extern void lcd_outhex4(xcoord_t x, uint8_t y, uint16_t val); extern void lcd_outdezAtt(xcoord_t x, uint8_t y, int16_t val, LcdFlags mode=0); extern void lcd_outdezNAtt(xcoord_t x, uint8_t y, int16_t val, LcdFlags mode=0, uint8_t len=0); extern void lcd_outdez8(xcoord_t x, uint8_t y, int8_t val); -extern void putsStrIdx(xcoord_t x, uint8_t y, const pm_char *str, uint8_t idx, uint8_t att=0); - -extern void putsModelName(xcoord_t x, uint8_t y, char *name, uint8_t id, uint8_t att); -extern void putsSwitches(xcoord_t x, uint8_t y, int8_t swtch, uint8_t att=0); -extern void putsMixerSource(xcoord_t x, uint8_t y, uint8_t idx, uint8_t att=0); -extern void putsFlightPhase(xcoord_t x, uint8_t y, int8_t idx, uint8_t att=0); -extern void putsCurve(xcoord_t x, uint8_t y, int8_t idx, uint8_t att=0); -extern void putsTmrMode(xcoord_t x, uint8_t y, int8_t mode, uint8_t att); -extern void putsTrimMode(xcoord_t x, uint8_t y, uint8_t phase, uint8_t idx, uint8_t att); +extern void putsStrIdx(xcoord_t x, uint8_t y, const pm_char *str, uint8_t idx, LcdFlags att=0); +extern void putsModelName(xcoord_t x, uint8_t y, char *name, uint8_t id, LcdFlags att); +extern void putsSwitches(xcoord_t x, uint8_t y, int8_t swtch, LcdFlags att=0); +extern void putsMixerSource(xcoord_t x, uint8_t y, uint8_t idx, LcdFlags att=0); +extern void putsFlightPhase(xcoord_t x, uint8_t y, int8_t idx, LcdFlags att=0); +extern void putsCurve(xcoord_t x, uint8_t y, int8_t idx, LcdFlags att=0); +extern void putsTmrMode(xcoord_t x, uint8_t y, int8_t mode, LcdFlags att); +extern void putsTrimMode(xcoord_t x, uint8_t y, uint8_t phase, uint8_t idx, LcdFlags att); #if defined(ROTARY_ENCODERS) -void putsRotaryEncoderMode(xcoord_t x, uint8_t y, uint8_t phase, uint8_t idx, uint8_t att); +void putsRotaryEncoderMode(xcoord_t x, uint8_t y, uint8_t phase, uint8_t idx, LcdFlags att); #endif -extern void putsChnRaw(xcoord_t x,uint8_t y,uint8_t idx1,uint8_t att); +extern void putsChnRaw(xcoord_t x, uint8_t y, uint8_t idx1, LcdFlags att); #define putsChn(x, y, idx, att) putsChnRaw(x, y, (idx)+(NUM_STICKS+NUM_POTS+NUM_ROTARY_ENCODERS+NUM_STICKS+1+NUM_SW_SRCRAW+NUM_CYC+NUM_PPM), att) -extern void putsChnLetter(xcoord_t x, uint8_t y, uint8_t idx, uint8_t attr); +extern void putsChnLetter(xcoord_t x, uint8_t y, uint8_t idx, LcdFlags attr); -extern void putsVolts(xcoord_t x, uint8_t y, uint16_t volts, uint8_t att); -extern void putsVBat(xcoord_t x, uint8_t y, uint8_t att); +extern void putsVolts(xcoord_t x, uint8_t y, uint16_t volts, LcdFlags att); +extern void putsVBat(xcoord_t x, uint8_t y, LcdFlags att); -#if defined(PCBSKY9X) +#if defined(CPUARM) #define putstime_t int32_t #else #define putstime_t int16_t #endif -extern void putsTime(xcoord_t x, uint8_t y, putstime_t tme, uint8_t att, uint8_t att2); +extern void putsTime(xcoord_t x, uint8_t y, putstime_t tme, LcdFlags att, LcdFlags att2); #define SOLID 0xff #define DOTTED 0x55 @@ -194,6 +194,10 @@ extern void lcdSetContrast(); extern void refreshDisplay(); +#if defined(PCBX9D) +const pm_char * bmpLoad(uint8_t *dest, const char *filename); +#endif + #define BLINK_ON_PHASE (g_blinkTmr10ms & (1<<6)) #ifdef SIMU diff --git a/src/main_views.cpp b/src/main_views.cpp index 16df2541a..c96c6aaae 100644 --- a/src/main_views.cpp +++ b/src/main_views.cpp @@ -33,22 +33,50 @@ #include "open9x.h" +#if defined(LCD212) +#define BOX_WIDTH 31 +#define LBOX_CENTERX (BOX_WIDTH/2 + 17) +#define LBOX_CENTERY (DISPLAY_H-BOX_WIDTH/2-10) +#define RBOX_CENTERX (DISPLAY_W-LBOX_CENTERX) +#define RBOX_CENTERY LBOX_CENTERY +#define MODELNAME_X (13) +#define VBATT_X (MODELNAME_X+30) +#define VBATT_Y (FH+3) +#define VBATTUNIT_X (VBATT_X-2) +#define VBATTUNIT_Y VBATT_Y +#define BITMAP_X ((DISPLAY_W-64)/2) +#define BITMAP_Y (DISPLAY_H/2) +#define PHASE_X BITMAP_X +#define PHASE_Y (3*FH) +#define TIMERS_X (24*FW+9) +#define REBOOT_X (DISPLAY_W-FW) +#else #define BOX_WIDTH 23 -#define BAR_HEIGHT (BOX_WIDTH-1l) -#define MARKER_WIDTH 5 -#define BOX_LIMIT (BOX_WIDTH-MARKER_WIDTH) #define LBOX_CENTERX (DISPLAY_W/4 + 10) #define LBOX_CENTERY (DISPLAY_H-9-BOX_WIDTH/2) #define RBOX_CENTERX (3*DISPLAY_W/4 - 10) -#define RBOX_CENTERY (DISPLAY_H-9-BOX_WIDTH/2) +#define RBOX_CENTERY LBOX_CENTERY +#define MODELNAME_X (2*FW-2) +#define PHASE_X (6*FW) +#define PHASE_Y (2*FH) +#define VBATT_X (6*FW) +#define VBATT_Y (2*FH) +#define VBATTUNIT_X (VBATT_X-1) +#define VBATTUNIT_Y (3*FH) +#define REBOOT_X (20*FW-3) +#endif -void doMainScreenGrphics() +#define BAR_HEIGHT (BOX_WIDTH-1l) +#define MARKER_WIDTH 5 +#define BOX_LIMIT (BOX_WIDTH-MARKER_WIDTH) + +void doMainScreenGraphics() { lcd_square(LBOX_CENTERX-BOX_WIDTH/2, LBOX_CENTERY-BOX_WIDTH/2, BOX_WIDTH); lcd_square(RBOX_CENTERX-BOX_WIDTH/2, RBOX_CENTERY-BOX_WIDTH/2, BOX_WIDTH); - DO_CROSS(LBOX_CENTERX,LBOX_CENTERY,3) - DO_CROSS(RBOX_CENTERX,RBOX_CENTERY,3) + DO_CROSS(LBOX_CENTERX, LBOX_CENTERY, 3) + DO_CROSS(RBOX_CENTERX, RBOX_CENTERY, 3) int16_t calibStickVert = calibratedStick[CONVERT_MODE(1+1)-1]; if (g_eeGeneral.throttleReversed && CONVERT_MODE(1+1)-1 == THR_STICK) @@ -59,15 +87,26 @@ void doMainScreenGrphics() calibStickVert = -calibStickVert; lcd_square(RBOX_CENTERX+(calibratedStick[CONVERT_MODE(3+1)-1]*BOX_LIMIT/(2*RESX))-MARKER_WIDTH/2, RBOX_CENTERY-(calibStickVert*BOX_LIMIT/(2*RESX))-MARKER_WIDTH/2, MARKER_WIDTH, ROUND); +#if defined(PCBX9D) + for (uint8_t i=NUM_STICKS; iNUM_STICKS+1 ? DISPLAY_W-5 : 3); + int8_t y = (i%2 ? DISPLAY_H/2+1 : 1); + lcd_vline(x, y, DISPLAY_H/2-2); + lcd_vline(x+1, y, DISPLAY_H/2-2); + y += ((calibratedStick[i]+RESX)*(DISPLAY_H/2-4)/(RESX*2)); // calculate once per loop + lcd_vline(x-1, y, 2); + lcd_vline(x+2, y, 2); + } +#else // Optimization by Mike Blandford { uint8_t x, y, len ; // declare temporary variables - for( x = -5, y = 4 ; y < 7 ; x += 5, y += 1 ) - { + for (x = -5, y = 4 ; y < 7 ; x += 5, y += 1) { len = ((calibratedStick[y]+RESX)*BAR_HEIGHT/(RESX*2))+1l; // calculate once per loop - V_BAR(DISPLAY_W/2+x,DISPLAY_H-8, len) + V_BAR(DISPLAY_W/2+x, DISPLAY_H-8, len) } } +#endif } #if defined(PCBX9D) @@ -204,19 +243,10 @@ void menuMainView(uint8_t event) { // Flight Phase Name uint8_t phase = s_perout_flight_phase; -#if defined(LCD212) - uint8_t len = ZLEN(g_model.phaseData[phase].name); - if (len > 0) { - uint8_t tmp = (DISPLAY_W - 6*FW - 2 - len*FW/2); - lcd_putsnAtt(tmp, 5, g_model.phaseData[phase].name, sizeof(g_model.phaseData[phase].name), ZCHAR); - lcd_rect(tmp-2, 5-2, 3+FW*len, FH+3); - } -#else - lcd_putsnAtt(6*FW, 2*FH, g_model.phaseData[phase].name, sizeof(g_model.phaseData[phase].name), ZCHAR); -#endif + lcd_putsnAtt(PHASE_X, PHASE_Y, g_model.phaseData[phase].name, sizeof(g_model.phaseData[phase].name), ZCHAR); // Model Name - putsModelName(2*FW-2, 0*FH, g_model.name, g_eeGeneral.currModel, DBLSIZE); + putsModelName(MODELNAME_X, 0*FH, g_model.name, g_eeGeneral.currModel, MIDSIZE); // Voltage (or alarm if any) #if defined(PCBSKY9X) @@ -229,45 +259,49 @@ void menuMainView(uint8_t event) else #endif { - uint8_t att = (g_vbat100mV <= g_eeGeneral.vBatWarn ? BLINK|INVERS : 0) | DBLSIZE; - putsVBat(6*FW-1, 2*FH, att|NO_UNIT); - lcd_putc(6*FW, 3*FH, 'V'); - } - - // And ! in case of unexpected shutdown - if (unexpectedShutdown) { - lcd_putcAtt(20*FW-3, 0*FH, '!', INVERS); + LcdFlags att = (g_vbat100mV <= g_eeGeneral.vBatWarn ? BLINK|INVERS : 0) | MIDSIZE; + putsVBat(VBATT_X-1, VBATT_Y, att|NO_UNIT); +#if defined(PCBX9D) + lcd_putcAtt(VBATTUNIT_X, VBATTUNIT_Y, 'v', MIDSIZE); +#else + lcd_putc(VBATT_X, VBATTUNIT_Y, 'V'); +#endif } #if defined(LCD212) // Main timer if (g_model.timers[0].mode) { - uint8_t att = DBLSIZE | (s_timerState[0]==TMR_BEEPING ? BLINK|INVERS : 0); - putsTime(12*FW-2, FH*2, s_timerVal[0], att, att); - putsTmrMode(s_timerVal[0] >= 0 ? 9*FW-FW/2 : 9*FW-FW/2-7, FH*3, g_model.timers[0].mode, SWCONDENSED); + LcdFlags att = MIDSIZE | (s_timerState[0]==TMR_BEEPING ? BLINK|INVERS : 0); + putsTime(TIMERS_X, 0, s_timerVal[0], att, att); + putsTmrMode(TIMERS_X-23, 4, g_model.timers[0].mode, CONDENSED); + if (g_model.timers[0].remanent) lcd_putc(TIMERS_X+42, 1, 'R'); } // Second timer if (g_model.timers[1].mode) { - uint8_t att = DBLSIZE | (s_timerState[1]==TMR_BEEPING ? BLINK|INVERS : 0); - putsTime(23*FW+1, FH*2, s_timerVal[1], att, att); - putsTmrMode(s_timerVal[1] >= 0 ? 20*FW-FW/2+4 : 20*FW-FW/2-3, FH*3, g_model.timers[1].mode, SWCONDENSED); + LcdFlags att = MIDSIZE | (s_timerState[1]==TMR_BEEPING ? BLINK|INVERS : 0); + putsTime(TIMERS_X, (FH+3), s_timerVal[1], att, att); + putsTmrMode(TIMERS_X-23, FH+7, g_model.timers[1].mode, CONDENSED); + if (g_model.timers[1].remanent) lcd_putc(TIMERS_X+42, FH+4, 'R'); } #else // Main timer if (g_model.timers[0].mode) { uint8_t att = DBLSIZE | (s_timerState[0]==TMR_BEEPING ? BLINK|INVERS : 0); - putsTime(12*FW+3, FH*2, s_timerVal[0], att, att); - putsTmrMode(s_timerVal[0] >= 0 ? 9*FW-FW/2+5 : 9*FW-FW/2-2, FH*3, g_model.timers[0].mode, SWCONDENSED); + putsTime(12*FW+2, FH*2, s_timerVal[0], att, att); + putsTmrMode(s_timerVal[0] >= 0 ? 9*FW-FW/2+5 : 9*FW-FW/2-2, FH*3, g_model.timers[0].mode, CONDENSED); } #endif // Trim sliders - for(uint8_t i=0; i<4; i++) - { + for (uint8_t i=0; i<4; i++) { #define TL 27 // LH LV RV RH - static uint8_t x[4] = {DISPLAY_W*1/4+2, 3, DISPLAY_W-4, DISPLAY_W*3/4-2}; +#if defined(LCD212) + static xcoord_t x[4] = {32+9, 10, DISPLAY_W-11, DISPLAY_W-32-9}; +#else + static uint8_t x[4] = {DISPLAY_W*1/4+2, 3, DISPLAY_W-4, DISPLAY_W*3/4-2}; +#endif static uint8_t vert[4] = {0,1,1,0}; uint8_t xm, ym; xm = x[CONVERT_MODE(i+1)-1]; @@ -305,6 +339,10 @@ void menuMainView(uint8_t event) } } +#if defined(PCBX9D) + lcd_img(BITMAP_X, BITMAP_Y, modelBitmap, 0, 0); +#endif + if (view_base < e_inputs) { // scroll bar lcd_hlineStip(38, 34, 54, DOTTED); @@ -347,11 +385,10 @@ void menuMainView(uint8_t event) if(len>WBAR2) len = WBAR2; // prevent bars from going over the end - comment for debugging lcd_hlineStip(x0-WBAR2, y0, WBAR2*2+1, DOTTED); lcd_vline(x0,y0-2,5); - if (val>0){ + if (val>0) x0+=1; - }else{ + else x0-=len; - } lcd_hline(x0,y0+1,len); lcd_hline(x0,y0-1,len); break; @@ -361,12 +398,33 @@ void menuMainView(uint8_t event) else if (view_base == e_inputs) { if (view == e_inputs) { // hardware inputs - doMainScreenGrphics(); + doMainScreenGraphics(); +#if defined(PCBX9D) + for (uint8_t i=0; i<8; i++) { + uint8_t sw; + switch(i) { + case 0: + sw = getValue(MIXSRC_SA) > 0 ? 2 : 1; + break; + case 7: + sw = getValue(MIXSRC_SH) > 0 ? 2+2+3*6 : 1+3*6; + break; + default: + { + int8_t val = getValue(MIXSRC_SA+i); + sw = ((val > 0) ? 3*i+2 : ((val < 0) ? 3*i+1 : 3*i)); + break; + } + } + putsSwitches(i<4 ? 8*FW+3: 24*FW+1, (i%4)*FH+3*FH, sw, 0); + } +#else for (uint8_t i=0; i<6; i++) { int8_t sw1 = (i<3 ? 1+i : 4+i); int8_t sw2 = (sw1 == 9 ? (getSwitch(4, 0) ? 4 : (getSwitch(5, 0) ? 5 : 6)) : sw1); - putsSwitches(i<3 ? 2*FW-2: 17*FW-1, (i%3)*FH+4*FH+1, sw2, getSwitch(sw1, 0) ? INVERS : 0); + putsSwitches(i<3 ? 2*FW-3: 17*FW+2, (i%3)*FH+4*FH+1, sw2, getSwitch(sw1, 0) ? INVERS : 0); } +#endif } else { #if defined(ROTARY_ENCODERS) @@ -402,10 +460,15 @@ void menuMainView(uint8_t event) } else { // timer2 putsTime(33+FW+2, FH*5, s_timerVal[1], DBLSIZE, DBLSIZE); - putsTmrMode(s_timerVal[1] >= 0 ? 20-FW/2+5 : 20-FW/2-2, FH*6, g_model.timers[1].mode, SWCONDENSED); + putsTmrMode(s_timerVal[1] >= 0 ? 20-FW/2+5 : 20-FW/2-2, FH*6, g_model.timers[1].mode, CONDENSED); // lcd_outdezNAtt(33+11*FW, FH*6, s_timerVal_10ms[1], LEADING0, 2); // 1/100s } + // And ! in case of unexpected shutdown + if (unexpectedShutdown) { + lcd_putcAtt(REBOOT_X, 0*FH, '!', INVERS); + } + if (s_global_warning) { s_warning = s_global_warning; displayWarning(_event); @@ -418,7 +481,7 @@ void menuMainView(uint8_t event) s_gvar_timer--; s_warning = PSTR("Global Variable"); displayBox(); -#if defined(M64) +#if defined(CPUM64) lcd_putsAtt(16+4*FW, 5*FH, PSTR("[\010]"), BOLD); lcd_outdezAtt(16+4*FW+4*FW+FW/2, 5*FH, GVAR_VALUE(s_gvar_last, s_perout_flight_phase), BOLD); #else @@ -430,8 +493,9 @@ void menuMainView(uint8_t event) } #endif -#ifdef DSM2 +#if defined(DSM2) if (s_bind_mode) // Issue 98 lcd_putsAtt(15*FW, 0, PSTR("BIND"), 0); #endif + } diff --git a/src/menus.h b/src/menus.h index e2e9c1444..269b3e30e 100644 --- a/src/menus.h +++ b/src/menus.h @@ -80,7 +80,7 @@ inline MenuFuncP lastPopMenu() return g_menuStack[g_menuStackPtr+1]; } -void doMainScreenGrphics(); +void doMainScreenGraphics(); void menuMainView(uint8_t event); void menuGeneralDiagAna(uint8_t event); #ifdef FRSKY diff --git a/src/model_menus.cpp b/src/model_menus.cpp index b351aac01..e53d6e2d0 100644 --- a/src/model_menus.cpp +++ b/src/model_menus.cpp @@ -932,7 +932,7 @@ enum menuModelPhaseItems { IF_ROTARY_ENCODERS(ITEM_MODEL_PHASE_ROTARY_ENCODERS) ITEM_MODEL_PHASE_FADE_IN, ITEM_MODEL_PHASE_FADE_OUT, -#if defined(GVARS) && !defined(M64) +#if defined(GVARS) && !defined(CPUM64) ITEM_MODEL_PHASE_GVARS_LABEL, ITEM_MODEL_PHASE_GV1, ITEM_MODEL_PHASE_GV2, @@ -948,7 +948,7 @@ void menuModelPhaseOne(uint8_t event) PhaseData *phase = phaseaddress(s_currIdx); putsFlightPhase(13*FW, 0, s_currIdx+1, (getFlightPhase()==s_currIdx ? BOLD : 0)); -#if defined(GVARS) && !defined(M64) +#if defined(GVARS) && !defined(CPUM64) static bool editingName = false; if (editingName && s_editMode <= 0) editingName = false; if (!editingName && s_editMode > 0 && m_posHorz == 0) editingName = true; @@ -969,7 +969,7 @@ void menuModelPhaseOne(uint8_t event) int8_t sub = m_posVert; int8_t editMode = s_editMode; -#if defined(GVARS) && !defined(M64) +#if defined(GVARS) && !defined(CPUM64) if (s_currIdx == 0 && sub>=ITEM_MODEL_PHASE_SWITCH) sub += ITEM_MODEL_PHASE_FADE_IN-ITEM_MODEL_PHASE_SWITCH; for (uint8_t k=0; k<7; k++) { @@ -1045,7 +1045,7 @@ void menuModelPhaseOne(uint8_t event) phase->fadeOut = editDelay(y, event, attr, STR_FADEOUT, phase->fadeOut); break; -#if defined(GVARS) && !defined(M64) +#if defined(GVARS) && !defined(CPUM64) case ITEM_MODEL_PHASE_GVARS_LABEL: lcd_putsLeft(y, STR_GLOBAL_VARS); @@ -2388,7 +2388,7 @@ void menuModelLimits(uint8_t event) void menuModelCurvesAll(uint8_t event) { -#if defined(GVARS) && defined(M64) +#if defined(GVARS) && defined(CPUM64) SIMPLE_MENU(STR_MENUCURVES, menuTabModel, e_CurvesAll, 1+MAX_CURVES+MAX_GVARS); #else SIMPLE_MENU(STR_MENUCURVES, menuTabModel, e_CurvesAll, 1+MAX_CURVES); @@ -2419,7 +2419,7 @@ void menuModelCurvesAll(uint8_t event) uint8_t y = FH + i*FH; uint8_t k = i + s_pgOfs; uint8_t attr = (sub == k ? INVERS : 0); -#if defined(GVARS) && defined(M64) +#if defined(GVARS) && defined(CPUM64) if (k < MAX_CURVES) { putsStrIdx(0, y, STR_CV, k+1, attr); } diff --git a/src/myeeprom.h b/src/myeeprom.h index 546253e39..4f32b4ea8 100644 --- a/src/myeeprom.h +++ b/src/myeeprom.h @@ -174,17 +174,16 @@ PACK(typedef struct t_EEGeneral { }) EEGeneral; -// eeprom modelspec - -#define LEN_MODEL_NAME 10 - #if defined(PCBX9D) +#define LEN_MODEL_NAME 12 #define LEN_EXPOMIX_NAME 10 #define LEN_FP_NAME 10 #elif defined(PCBSKY9X) +#define LEN_MODEL_NAME 10 #define LEN_EXPOMIX_NAME 6 #define LEN_FP_NAME 6 #else +#define LEN_MODEL_NAME 10 #define LEN_FP_NAME 6 #endif @@ -633,7 +632,7 @@ PACK(typedef struct t_SwashRingData { // Swash Ring data #define ROTARY_ENCODER_ARRAY_EXTRA #endif -#if defined(M64) +#if defined(CPUM64) #define TRIM_ARRAY int8_t trim[4]; int8_t trim_ext:8 #else #define TRIM_ARRAY int16_t trim[4] @@ -641,17 +640,17 @@ PACK(typedef struct t_SwashRingData { // Swash Ring data typedef int16_t gvar_t; -#if !defined(M64) +#if !defined(CPUM64) typedef char gvar_name_t[6]; #define GVAR_MAX 1024 #endif -#if defined(M64) && defined(GVARS) +#if defined(CPUM64) && defined(GVARS) #define MAX_GVARS 5 #define MODEL_GVARS_DATA gvar_t gvars[MAX_GVARS] #define PHASE_GVARS_DATA #define GVAR_VALUE(x, p) g_model.gvars[x] -#elif defined(M64) +#elif defined(CPUM64) #define MAX_GVARS 0 #define MODEL_GVARS_DATA #define PHASE_GVARS_DATA @@ -684,7 +683,7 @@ PACK(typedef struct t_PhaseData { #define MAX_EXPOS 32 #define NUM_CSW 32 // number of custom switches #define NUM_FSW 32 // number of functions assigned to switches -#elif defined(PCBGRUVIN9X) || defined(M128) +#elif defined(PCBGRUVIN9X) || defined(CPUM128) #define MAX_MODELS 30 #define NUM_CHNOUT 16 // number of real output channels CH1-CH16 #define MAX_PHASES 5 @@ -765,7 +764,7 @@ enum Dsm2Variants { #if defined(MAVLINK) #define TELEMETRY_DATA MavlinkData mavlink -#elif defined(FRSKY) || !defined(M64) +#elif defined(FRSKY) || !defined(CPUM64) #define TELEMETRY_DATA FrSkyData frsky #else #define TELEMETRY_DATA diff --git a/src/open9x.cpp b/src/open9x.cpp index 7e50964f4..737ae95d0 100644 --- a/src/open9x.cpp +++ b/src/open9x.cpp @@ -77,7 +77,7 @@ const pm_uchar splashdata[] PROGMEM = { 'S','P','S',0, const pm_uchar * splash_lbm = splashdata+4; #endif -#if !defined(M64) || defined(EXTSTD) +#if !defined(CPUM64) || defined(EXTSTD) const pm_uchar asterisk_lbm[] PROGMEM = { #include "asterisk.lbm" }; @@ -88,6 +88,10 @@ const pm_uchar asterisk_lbm[] PROGMEM = { EEGeneral g_eeGeneral; ModelData g_model; +#if defined(PCBX9D) +uint8_t modelBitmap[64*32/8]; +#endif + #if !defined(PCBSKY9X) uint8_t g_tmr1Latency_max; uint8_t g_tmr1Latency_min; @@ -273,7 +277,7 @@ CustomSwData *cswaddress(uint8_t idx) return &g_model.customSw[idx]; } -#if defined(M64) +#if defined(CPUM64) void memclear(void *ptr, uint8_t size) { memset(ptr, 0, size); @@ -917,7 +921,7 @@ uint8_t getFlightPhase() int16_t getRawTrimValue(uint8_t phase, uint8_t idx) { PhaseData *p = phaseaddress(phase); -#if defined(M64) +#if defined(CPUM64) return (((int16_t)p->trim[idx]) << 2) + ((p->trim_ext >> (2*idx)) & 0x03); #else return p->trim[idx]; @@ -932,7 +936,7 @@ int16_t getTrimValue(uint8_t phase, uint8_t idx) void setTrimValue(uint8_t phase, uint8_t idx, int16_t trim) { PhaseData *p = phaseaddress(phase); -#if defined(M64) +#if defined(CPUM64) p->trim[idx] = (int8_t)(trim >> 2); p->trim_ext = (p->trim_ext & ~(0x03 << (2*idx))) + (((trim & 0x03) << (2*idx))); #else @@ -1007,7 +1011,7 @@ void incRotaryEncoder(uint8_t idx, int8_t inc) uint8_t s_gvar_timer = 0; uint8_t s_gvar_last = 0; -#if defined(M64) +#if defined(CPUM64) int16_t getGVarValue(int8_t x, int16_t min, int16_t max) { return (x >= 126 || x <= -126) ? limit(min, GVAR_VALUE((uint8_t)x - 126, -1), max) : x; @@ -1324,7 +1328,7 @@ void message(const pm_char *title, const pm_char *t, const char *last MESSAGE_SO #if defined(LCD212) lcd_img(DISPLAY_W-29, 0, asterisk_lbm, 0, 0); #endif -#if !defined(M64) || defined(EXTSTD) +#if !defined(CPUM64) || defined(EXTSTD) lcd_img(2, 0, asterisk_lbm, 0, 0); #else lcd_putsAtt(0, 0, PSTR("(!)"), DBLSIZE); @@ -1374,7 +1378,7 @@ uint8_t checkTrim(uint8_t event) #if defined(GVARS) #define TRIM_REUSED() trimGvar[idx] >= 0 if (TRIM_REUSED()) { -#if defined(M64) +#if defined(CPUM64) phase = 0; #else phase = getGVarFlightPhase(s_perout_flight_phase, trimGvar[idx]); @@ -2938,8 +2942,11 @@ void perMain() } if (counter-- == 0) { counter = 10; - -#if defined(PCBSKY9X) +#if defined(PCBX9D) + int32_t instant_vbat = anaIn(8); + instant_vbat = ( instant_vbat + instant_vbat*(g_eeGeneral.vBatCalib)/128 ) * 4191 ; + instant_vbat /= 55296 ; +#elif defined(PCBSKY9X) int32_t instant_vbat = anaIn(7); instant_vbat = ( instant_vbat + instant_vbat*(g_eeGeneral.vBatCalib)/128 ) * 4191 ; instant_vbat /= 55296 ; diff --git a/src/open9x.h b/src/open9x.h index a2d21fc93..0b159041b 100644 --- a/src/open9x.h +++ b/src/open9x.h @@ -206,6 +206,10 @@ extern void board_init(); #include "pulses_avr.h" #endif +#if defined(PCBX9D) +extern uint8_t modelBitmap[64*32/8]; +#endif + #if defined(DSM2) extern bool s_bind_mode; extern bool s_rangecheck_mode; @@ -451,7 +455,8 @@ enum EnumKeys { //SW_NC, //SW_ON, #if defined(PCBX9D) - SW_SA=SW_BASE, + SW_SA0=SW_BASE, + SW_SA2, SW_SB0, SW_SB1, SW_SB2, @@ -470,7 +475,8 @@ enum EnumKeys { SW_SG0, SW_SG1, SW_SG2, - SW_SH, + SW_SH0, + SW_SH2, #else SW_ThrCt=SW_BASE, SW_RuddDR, @@ -566,7 +572,7 @@ enum CswFunctions { #define NUM_STICKS 4 #if defined(PCBX9D) -#define MAX_PSWITCH (SW_SH-SW_SA+1) +#define MAX_PSWITCH (SW_SH2-SW_SA0+1) #define NUM_POTS 4 #define NUM_SW_SRCRAW 8 #else @@ -786,7 +792,7 @@ inline bool navigationRotaryEncoder(uint8_t event) #endif #if defined(GVARS) -#if defined(M64) +#if defined(CPUM64) int16_t getGVarValue(int8_t x, int16_t min, int16_t max); void setGVarValue(uint8_t x, int8_t value); #define GET_GVAR(x, min, max, p) getGVarValue(x, min, max) @@ -847,7 +853,7 @@ uint16_t stack_free(uint8_t tid); uint16_t stack_free(); #endif -#if defined(M64) +#if defined(CPUM64) void memclear(void *ptr, uint8_t size); #else #define memclear(p, s) memset(p, 0, s) diff --git a/src/simpgmspace.cpp b/src/simpgmspace.cpp index c51535e6d..796bc2026 100644 --- a/src/simpgmspace.cpp +++ b/src/simpgmspace.cpp @@ -338,8 +338,9 @@ FRESULT f_write (FIL* fil, const void* data, UINT size, UINT* written) return FR_OK; } -FRESULT f_lseek (FIL*, DWORD) +FRESULT f_lseek (FIL* fil, DWORD offset) { + fseek((FILE*)fil->fs, offset, SEEK_SET); return FR_OK; } diff --git a/src/simu.cpp b/src/simu.cpp index 0bcc6f25d..8de963bcc 100644 --- a/src/simu.cpp +++ b/src/simu.cpp @@ -136,8 +136,8 @@ Open9xSim::Open9xSim(FXApp* a) arrow[2]= new FXArrowButton(hf10,this,1000,ARROW_RIGHT); for(int i=4; i<8; i++){ knobs[i]= new FXKnob(hf11,NULL,0,KNOB_TICKS|LAYOUT_LEFT); - knobs[i]->setRange(0,1023); - knobs[i]->setValue(512); + knobs[i]->setRange(-1024, 1024); + knobs[i]->setValue(0); } arrow2[0]= new FXArrowButton(hf00,this,1000,ARROW_LEFT); @@ -239,7 +239,7 @@ long Open9xSim::onTimeout(FXObject*,FXSelector,void*) if(hasFocus()) { -#ifdef REVB +#if defined(PCBX9D) || defined(REVB) #define ERSKY9X_RETURN_MASK (0x20) #define ERSKY9X_EXIT_MASK (0x01000000) #define ERSKY9X_EXIT_PIO PIOC @@ -530,13 +530,17 @@ int main(int argc,char **argv) uint16_t anaIn(uint8_t chan) { +#if defined(PCBX9D) + if (chan == 8) + return 1500; +#elif defined(PCBGRUVIN9X) if (chan == 7) -#ifdef PCBGRUVIN9X return 150; #else + if (chan == 7) return 1500; #endif - else if (chan<4) + else if (chansliders[chan]->getValue(); else return th9xSim->knobs[chan]->getValue(); diff --git a/src/stamp.cpp b/src/stamp.cpp index c9f787035..b98f5b434 100644 --- a/src/stamp.cpp +++ b/src/stamp.cpp @@ -40,7 +40,7 @@ const pm_char stamp1[] PROGMEM = " SVN: " SVN_STR; const pm_char stamp2[] PROGMEM = "DATE: " DATE_STR; const pm_char stamp3[] PROGMEM = "TIME: " TIME_STR; -#if defined(M64) +#if defined(CPUM64) const pm_char eeprom_stamp[] PROGMEM = "EEPR: " DEFNUMSTR(EEPROM_VER) "-" DEFNUMSTR(EEPROM_VARIANT); #else const pm_char eeprom_stamp[] PROGMEM = "EEPR: " DEFNUMSTR(EEPROM_VER); diff --git a/src/translations.cpp b/src/translations.cpp index 826e49b4d..3cd772e86 100644 --- a/src/translations.cpp +++ b/src/translations.cpp @@ -374,7 +374,7 @@ const pm_char STR_OWN[] PROGMEM = TR_OWN; const pm_char STR_ROTARY_ENCODER[] PROGMEM = TR_ROTARY_ENCODER; const pm_char STR_DATE[] PROGMEM = TR_DATE; -const pm_uchar font[] PROGMEM = { +const pm_uchar font_5x7[] PROGMEM = { #include "font.lbm" #if defined(TRANSLATIONS_SE) #include "font_se.lbm" @@ -391,7 +391,7 @@ const pm_uchar font[] PROGMEM = { #endif }; -const pm_uchar font_dblsize[] PROGMEM = { +const pm_uchar font_10x14[] PROGMEM = { #include "font_dblsize.lbm" #if defined(TRANSLATIONS_SE) #include "font_dblsize_se.lbm" @@ -407,12 +407,16 @@ const pm_uchar font_dblsize[] PROGMEM = { }; #if defined(PCBX9D) -const pm_uchar font_extra[] PROGMEM = { +const pm_uchar font_8x10[] PROGMEM = { +#include "font_midsize.lbm" +}; + +const pm_uchar font_5x7_extra[] PROGMEM = { #include "font_extra.lbm" }; -const pm_uchar font_extra_dblsize[] PROGMEM = { -#include "font_extra_dblsize.lbm" +const pm_uchar font_10x14_extra[] PROGMEM = { +#include "font_dblsize_extra.lbm" }; #endif diff --git a/src/translations.h b/src/translations.h index 478d62e7d..0414bc9a8 100644 --- a/src/translations.h +++ b/src/translations.h @@ -418,12 +418,13 @@ extern const pm_char STR_MODELS_EXT[]; #define STR_UPDATE_LIST STR_DELAYDOWN #endif -extern const pm_uchar font[]; -extern const pm_uchar font_dblsize[]; +extern const pm_uchar font_5x7[]; +extern const pm_uchar font_10x14[]; #if defined(PCBX9D) -extern const pm_uchar font_extra[]; -extern const pm_uchar font_extra_dblsize[]; +extern const pm_uchar font_8x10[]; +extern const pm_uchar font_5x7_extra[]; +extern const pm_uchar font_10x14_extra[]; #endif extern const pm_char STR_WARNING[]; diff --git a/src/translations/en.h b/src/translations/en.h index 5d2d70a63..701b26006 100644 --- a/src/translations/en.h +++ b/src/translations/en.h @@ -200,7 +200,7 @@ #define LEN_VSWITCHES "\003" #if defined(PCBX9D) -#define TR_VSWITCHES "SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\301""CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC""CSD""CSE""CSF""CSG""CSH""CSI""CSJ""CSK""CSL""CSM""CSN""CSO""CSP""CSQ""CSR""CSS""CST""CSU""CSV""CSW"" ON" +#define TR_VSWITCHES "SA\300""SA\301""SB\300""SB-""SB\301""SC\300""SC-""SC\301""SD\300""SD-""SD\301""SE\300""SE-""SE\301""SF\300""SF-""SF\301""SG\300""SG-""SG\301""SH\300""SH\301""CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC""CSD""CSE""CSF""CSG""CSH""CSI""CSJ""CSK""CSL""CSM""CSN""CSO""CSP""CSQ""CSR""CSS""CST""CSU""CSV""CSW"" ON" #elif defined(PCBSKY9X) #define TR_VSWITCHES "THR""RUD""ELE""ID0""ID1""ID2""AIL""GEA""TRN""CS1""CS2""CS3""CS4""CS5""CS6""CS7""CS8""CS9""CSA""CSB""CSC""CSD""CSE""CSF""CSG""CSH""CSI""CSJ""CSK""CSL""CSM""CSN""CSO""CSP""CSQ""CSR""CSS""CST""CSU""CSV""CSW"" ON" #else