Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extern "C" {
- #define __KEYBIOS_H__
- #include "fxlib.h"
- }
- #include <iostream>
- #include "screen.hpp"
- #include "compatibilityscripts.cpp"
- #include "syscall.h"
- #include "string.h"
- #define keypressed(code,min,maj,nbr) \
- if(KeyDown(code)){ \
- (writemode==0)?sendbyte=(min):((writemode==1)?sendbyte=(maj):sendbyte=(nbr)); \
- Serial_WriteByte(sendbyte); \
- if(showSended)screen.write(sendbyte); \
- while(KeyDown(code) && !repetition){Sleep(1);}}
- int main()
- {
- //defaults settings
- bool hex = false;
- bool repetition = false;
- bool showSended = true;
- unsigned char writemode = 0;//0:min , 1:maj, 2:nombres
- //init
- unsigned char readbyte = 0;
- unsigned char sendbyte = 0;
- //start and prepare screen
- Screen screen;
- screen.setString(" The Official ACHAT",0);
- screen.setString(" By AC & Pilou",1);
- screen.setString("Et Planete-casio",2);
- screen.setString("F1: min, MAJ, Nb",3);
- screen.setString("F2: Mode hexa/ascii",4);
- screen.setString("F3: clear",5);
- screen.setString("F4: Key Repeat",6);
- screen.setString("F5: Montrer txt Env",7);
- screen.setString("F6: Quitter",8);
- screen.setActualLine(9);
- screen.rewritescreen();
- //open com port
- unsigned char conf[]={0,5,0,0,0,0};
- Serial_Open(conf);
- //Keys
- while(1)
- {
- //F1:Send in Min, Maj, Nbr
- if(KeyDown(KEY_CTRL_F1)){
- writemode = (writemode+1)%3;
- switch(writemode)
- {
- case 0 : screen.writeLine("Envoi Minuscule"); break;
- case 1 : screen.writeLine("Envoi Majuscule"); break;
- case 2 : screen.writeLine("Envoi Nombre"); break;
- }
- while(KeyDown(KEY_CTRL_F1)){Sleep(1);}}
- //F2:Receive in hex or not
- if(KeyDown(KEY_CTRL_F2)){
- hex=!hex;
- if(hex)screen.writeLine("Mode Hexa");
- else screen.writeLine("Mode ASCII");
- while(KeyDown(KEY_CTRL_F2)){Sleep(1);}}
- //F3:Clear screen
- if(KeyDown(KEY_CTRL_F3)){
- screen.clear();
- while(KeyDown(KEY_CTRL_F3)){Sleep(1);}}
- //F4:authorize or not key repetition
- if(KeyDown(KEY_CTRL_F4)){
- repetition=!repetition;
- if(repetition)screen.writeLine("KKey Repeat ON");
- else screen.writeLine("Key Repeat OFF");
- while(KeyDown(KEY_CTRL_F4)){Sleep(1);}}
- //F5:Show sended chars
- if(KeyDown(KEY_CTRL_F5)){
- showSended=!showSended;
- if(showSended)screen.writeLine("Montre le texte");
- else screen.writeLine("Cache le Texte");
- while(KeyDown(KEY_CTRL_F5)){Sleep(1);}}
- //F6:Quit
- if(KeyDown(KEY_CTRL_F6)){
- break;
- while(KeyDown(KEY_CTRL_F6)){Sleep(1);}}
- //MENU:Quit
- if(KeyDown(KEY_CTRL_MENU)){
- break;
- while(KeyDown(KEY_CTRL_MENU)){Sleep(1);}}
- //EXE:NewLine
- keypressed(KEY_CTRL_EXE,0xA,0xA,0xA);
- //Letters
- keypressed(KEY_CHAR_0,'z','Z','0');
- keypressed(KEY_CHAR_1,'u','U','1');
- keypressed(KEY_CHAR_2,'v','V','2');
- keypressed(KEY_CHAR_3,'w','W','3');
- keypressed(KEY_CHAR_4,'p','P','4');
- keypressed(KEY_CHAR_5,'q','Q','5');
- keypressed(KEY_CHAR_6,'r','R','6');
- keypressed(KEY_CHAR_7,'m','M','7');
- keypressed(KEY_CHAR_8,'n','N','8');
- keypressed(KEY_CHAR_9,'o','O','9');
- keypressed(KEY_CTRL_XTT,'a','A','A');
- keypressed(KEY_CHAR_LOG,'b','B','B');
- keypressed(KEY_CHAR_LN,'c','C','C');
- keypressed(KEY_CHAR_SIN,'d','D','D');
- keypressed(KEY_CHAR_COS,'e','E','E');
- keypressed(KEY_CHAR_TAN,'f','F','F');
- keypressed(KEY_CHAR_FRAC,'g','G','G');
- keypressed(KEY_CTRL_FD,'h','H','H');
- keypressed(KEY_CHAR_LPAR,'i','I','I');
- keypressed(KEY_CHAR_RPAR,'j','J','J');
- keypressed(KEY_CHAR_COMMA,'k','K','K');
- keypressed(KEY_CHAR_STORE,'l','L','L');
- keypressed(KEY_CHAR_DP,' ',' ',',');
- keypressed(KEY_CHAR_PLUS,'x','X','+');
- keypressed(KEY_CHAR_MINUS,'y','y','-');
- keypressed(KEY_CHAR_MULT,'s','S','*');
- keypressed(KEY_CHAR_DIV, 't', 'T', '/');
- keypressed(KEY_CHAR_EXP, '!' 0xA, '!' 0xA, 'e');
- keypressed(KEY_CHAR_SQUARE, 0xA'debut:', 0xA'debut:', 0xA'debut:');
- keypressed(KEY_CHAR_POW, 0xA'Fin.', 0xA'Fin.', 0xA'Fin.');
- //Read serial
- if(Serial_ReadByte(&readbyte)==0)
- {
- if(!hex)
- {
- screen.write(readbyte);
- }
- else
- {
- //hex (string) conversion
- screen.write(' ');//delete this if you don't want space between hex bytes
- //First 4 bits
- if((readbyte>>4) <10)
- screen.write((readbyte>>4)+48);
- else
- screen.write((readbyte>>4)+87);
- //Last 4 bits
- if((readbyte&15) <10)
- screen.write((readbyte&15)+48);
- else
- screen.write((readbyte&15)+87);
- }
- }
- }
- Serial_Close(1);
- }
- extern "C"
- {
- int AddIn_main(int isAppli, unsigned short OptionNum)
- {
- return main();
- }
- #pragma section _BR_Size
- unsigned long BR_Size;
- #pragma section
- #pragma section _TOP
- int InitializeSystem(int isAppli, unsigned short OptionNum){
- return INIT_ADDIN_APPLICATION(isAppli, OptionNum);
- }
- #pragma section
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement