//Program Is grabmenus.c /* * readmenus.c - read menu data from EEPROM * * Compile with a command like: * catalina grabmenus.c -C C3 -C TTY -lci -C XEPROM -C SMALL -C CACHED_1K -D MENU_ADDR=16384 * catalina grabmenus.c -C FLIP -C TTY -lci -C XEPROM -C SMALL -C CACHED_1K -D MENU_ADDR=16384 -y * * Note that MENU_ADDR must be specified as a decimal number. The menus must * have been previously loaded into EEPROM using loadmenus.c * * Load with a command like: * payload EEPROM readmenus.binary -i */ //catalina grabmenus.c -C FLIP -C TTY -lci -C XEPROM -C SMALL -C CACHED_1K -D MENU_ADDR=16384 unsigned long GetMemAddr(unsigned long Address) { PASM("mov RI, r2"); PASM("jmp #RLNG"); return PASM("mov r0, BC"); } char GetMemChar(unsigned long Address) { PASM("mov RI, r2"); PASM("jmp #RBYT"); return PASM("mov r0, BC"); } /* These are the Menus to be loaded from eeprom: MENU_ADDR 0x4000 DECLARE_MENU(HELLO, "HELLO AND WELCOME!!!"); 0x4004 DECLARE_MENU(M0I0, "\x1b[1m\x1b[40m\x1b[2J"); 0x4008 DECLARE_MENU(M0I1, "\x1b[6;30H\x1b[37;40mMiniPlate Participant"); 0x400C DECLARE_MENU(M0I2, "\x1b[8;20H\x1b[37;40mFirmWare Version 1.0, Rev Data: 14 Sep 22"); 0x4010 DECLARE_MENU(M0I3, "\x1b[10;21H\x1b[37;40mCopyright(c) 2022, All Rights Reserved"); 0x4014 DECLARE_MENU(M0I4, "\x1b[12;31H\x1b[37;40m(1) WiFi Main Menu"); 0x4018 DECLARE_MENU(M0I5, "\x1b[14;31H\x1b[37;40m(2) GPS Main Menu "); 0x401C DECLARE_MENU(M0I6, "\x1b[16;31H\x1b[37;40m(3) Diagnostics "); 0x4020 DECLARE_MENU(M0I7, "\x1b[18;28H\x1b[37;40mMake Selection (1 To 3):"); */ //Purpose: Display Selective (or even Random) Menus //Want To Only Show Menus: M0I0, M0I1, M0I3, M0I4, M0I7 //Offset from MENU_ADDR: 4 8 16 20 32 void main(void) { char idex; char mdex; char menuchar; unsigned long addr; unsigned char menutable[]={4,8,12,16,20,24,28,32}; forever: for(idex=0; idex<8; idex++) { addr=GetMemAddr(MENU_ADDR + menutable[idex]); for(mdex=0; mdex<255; mdex++) //put a limit of 255 here -- don't want an infinite loop! { menuchar=GetMemChar(addr + mdex); if(menuchar == 0x00) break; t_printf("%c",menuchar); } } k_wait(); goto forever; }