Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.
|
Forum Index : Microcontroller and PC projects : Picomite/PicoMiteVGA V5.07.05 release candidates
Page 7 of 9 | |||||
Author | Message | ||||
disco4now Guru Joined: 18/12/2014 Location: AustraliaPosts: 906 |
A minor /cosmetic issue. Option List does not show the HRes and VRes for a USER LCDPANEL if it is set from a CSub. I think using HRES and VRES in the code below in lieu of DisplayHRes and DisplayVRes will fix it.(file MM_Misc.c) PicoMite MMBasic Version 5.07.05RC7 OPTION LCDPANEL USER 0, 0 void printoptions(void){ ... if(Option.DISPLAY_TYPE == DISP_USER) PO3Int("LCDPANEL USER", DisplayHRes, DisplayVRes); becomes void printoptions(void){ ... if(Option.DISPLAY_TYPE == DISP_USER) PO3Int("LCDPANEL USER", HRes, VRes); Latest F4 Latest H7 |
||||
Volhout Guru Joined: 05/03/2018 Location: NetherlandsPosts: 4293 |
@Peter, RC7: Have not seen any more problems with PS2 keyboard. Not sure what you fixed, but you fixed it. Thanks, Vohout PicomiteVGA PETSCII ROBOTS |
||||
phil99 Guru Joined: 11/02/2018 Location: AustraliaPosts: 2160 |
Q. When does Erase not Erase? A. When you do this. PicoMite MMBasic Version 5.07.05RC7 Copyright 2011-2022 Geoff Graham Copyright 2016-2022 Peter Mather > clear:for n=1 to 100:dim a(3000):erase a():?n:memory :next 1 Program: 1K ( 1%) Program (18 lines) 119K (99%) Free RAM: 1K ( 1%) 1 Variable 24K (15%) General 127K (84%) Free 2 Program: 1K ( 1%) Program (18 lines) 119K (99%) Free RAM: 1K ( 1%) 1 Variable 47K (30%) General 104K (69%) Free 3 Program: 1K ( 1%) Program (18 lines) 119K (99%) Free RAM: 1K ( 1%) 1 Variable 71K (46%) General 80K (53%) Free 4 Program: 1K ( 1%) Program (18 lines) 119K (99%) Free RAM: 1K ( 1%) 1 Variable 94K (61%) General 57K (38%) Free 5 Program: 1K ( 1%) Program (18 lines) 119K (99%) Free RAM: 1K ( 1%) 1 Variable 118K (77%) General 33K (22%) Free Error : Not enough memory > PS. Clear won't get it going again either Edited 2022-10-17 14:43 by phil99 |
||||
matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 9201 |
Thanks - will fix |
||||
coliscip Newbie Joined: 16/05/2022 Location: RomaniaPosts: 5 |
Hi! Is there a chance so in a next firmware to use/load a file stored in Raspberry pi Pico (copied there from computer) so not need to use SD card? Or save a file in Rasperry Pi Pico to be visible from computer and can use it Picomite later not using SD card Edited 2022-10-17 20:46 by coliscip |
||||
JohnS Guru Joined: 18/11/2011 Location: United KingdomPosts: 3820 |
Best bet is to assume not and work around the limitation. John |
||||
karlelch Senior Member Joined: 30/10/2014 Location: GermanyPosts: 172 |
xmodem? Works for me quite well (via Teraterm) |
||||
lizby Guru Joined: 17/05/2016 Location: United StatesPosts: 3161 |
Are you talking about something different from the flash slots? (See FLASH in the manual for options). You can store 7 programs in flash slots with no need for an SD card. PicoMite, Armmite F4, SensorKits, MMBasic Hardware, Games, etc. on fruitoftheshed |
||||
Amnesie Guru Joined: 30/06/2020 Location: GermanyPosts: 396 |
Found a problem with "PicoMiteVGAV5.07.05RC7" Play wav "example" doen't work anymore. No audio. I tried it with my previous version (PicoMite firmware V5.07.04) from Geoffg.net and on this version audio works. Configuration is the same on both versions: OPTION KEYBOARD GR OPTION SDCARD GP13,GP10,GP11,GP12 OPTION AUDIO GP6, GP7 I tried it three times, even with different Picos... No wav audio on the latest release candidate Greetings Daniel |
||||
matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 9201 |
Audio does work but is killed when you return to the command prompt Try play tone 400,400:pause 1000 This was introduced because Tom wanted all program ends to kill audio but I overdid it Will fix in next release |
||||
Amnesie Guru Joined: 30/06/2020 Location: GermanyPosts: 396 |
Ahh... I see. Thank you for your hint. I was just checking my new PCB and found out that play wav via command prompt doesn't work anymore. So I have to try this with a real program + pause... ok. Greetings Daniel |
||||
matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 9201 |
PicoMite V5.07.05RC8 https://geoffg.net/Downloads/picomite/PicoMite_Beta.zip Corrects reporting of MM.HRES and MM.VRES by OPTION LIST when a user driver is loaded Fixes bug in PLAY TONE n. m. d, interrupt which caused the interrupt not to fire Fixes bug in ERASE command when erasing arrays Fixes bug in audio commands executed at the command line - introduced in previous RC Implements mm.info$(sound) to report status of the audio channel Implements ON PS2 interrupt. This triggers an interrupt whenever the PicoMite sees a message from the PS2 interface. Use MM.info(PS2) to report the raw message received. This allows the programmer to trap both keypress and release. See https://wiki.osdev.org/PS/2_Keyboard for the scan codes (Set 2). Resets default fonts when a new program is loaded or the NEW command is executed. |
||||
disco4now Guru Joined: 18/12/2014 Location: AustraliaPosts: 906 |
Hi Peter, Updated PicoCFunctions.h The one in RC8 download does not use the new Baseaddress of 0x10000310. Also the option_s definition has been updated to match the definition in fileIO.h, not sure when these become different but a couple options have been added. V1.6.3 struct option_s updated to match 5.07.05 as defined in fileIO.h /******************************************************************************************* * * Definitions used when calling MMBasic Interpreter API Functions from CFunctions * For PicoMite MMBasic V5.07.05 * * This file is public domain and may be used without license. * * Use with AMRCFGENV144.bas * * V1.6.2 * NB: Base address has changed from previous versions to match V5.07.05 * V1.6.3 struct option_s updated to match 5.07.05 as defined in fileIO.h ******************************************************************************************/ #define MAXVARLEN 32 // maximum length of a variable name #define MAXDIM 5 // maximum nbr of dimensions to an array #define MMFLOAT double #define MAXKEYLEN 64 //Addresses in the API Table for the pointers to each function #define BaseAddress 0x10000310 #define Vector_uSec (*(unsigned int *)(BaseAddress+0x00)) // void uSec(unsigned int us) #define Vector_putConsole (*(unsigned int *)(BaseAddress+0x04)) // void putConsole(int C)) #define Vector_getConsole (*(unsigned int *)(BaseAddress+0x08)) // int getConsole(void) #define Vector_ExtCfg (*(unsigned int *)(BaseAddress+0x0C)) // void ExtCfg(int pin, int cfg, int option) #define Vector_ExtSet (*(unsigned int *)(BaseAddress+0x10)) // void ExtSet(int pin, int val) #define Vector_ExtInp (*(unsigned int *)(BaseAddress+0x14)) // int ExtInp(int pin) #define Vector_PinSetBit (*(unsigned int *)(BaseAddress+0x18)) // void PinSetBit(int pin, unsigned int offset) #define Vector_PinRead (*(unsigned int *)(BaseAddress+0x1C)) // int PinRead(int pin) #define Vector_MMPrintString (*(unsigned int *)(BaseAddress+0x20)) // void MMPrintString(char* s) #define Vector_IntToStr (*(unsigned int *)(BaseAddress+0x24)) // void IntToStr(char *strr, long long int nbr, unsigned int base) #define Vector_CheckAbort (*(unsigned int *)(BaseAddress+0x28)) // void CheckAbort(void) #define Vector_GetMemory (*(unsigned int *)(BaseAddress+0x2C)) // void *GetMemory(size_t msize); #define Vector_GetTempMemory (*(unsigned int *)(BaseAddress+0x30)) // void *GetTempMemory(int NbrBytes) #define Vector_FreeMemory (*(unsigned int *)(BaseAddress+0x34)) // void FreeMemory(void *addr) #define Vector_DrawRectangle *(unsigned int *)(BaseAddress+0x38 ) // void DrawRectangle(int x1, int y1, int x2, int y2, int C)) #define Vector_DrawBitmap *(unsigned int *)(BaseAddress+0x3c ) // void DrawBitmap(int x1, int y1, int width, int height, int scale, int fg, int bg, unsigned char *bitmap ) #define Vector_DrawLine (*(unsigned int *)(BaseAddress+0x40)) // void DrawLine(int x1, int y1, int x2, int y2, int w, int C)) #define Vector_FontTable (*(unsigned int *)(BaseAddress+0x44)) // const unsigned char *FontTable[FONT_NBR] #define Vector_ExtCurrentConfig (*(unsigned int *)(BaseAddress+0x48)) // int ExtCurrentConfig[NBRPINS + 1]; #define Vector_HRes (*(unsigned int *)(BaseAddress+0x4C)) // HRes #define Vector_VRes (*(unsigned int *)(BaseAddress+0x50)) // VRes #define Vector_SoftReset (*(unsigned int *)(BaseAddress+0x54)) // void SoftReset(void) #define Vector_error (*(unsigned int *)(BaseAddress+0x58)) // void error(char *msg) #define Vector_ProgFlash (*(unsigned int *)(BaseAddress+0x5C)) // ProgFlash #define Vector_vartbl (*(unsigned int *)(BaseAddress+0x60)) // vartbl #define Vector_varcnt (*(unsigned int *)(BaseAddress+0x64)) // varcnt #define Vector_DrawBuffer *(unsigned int *)(BaseAddress+0x68 ) // void DrawRectangle(int x1, int y1, int x2, int y2, int C)) #define Vector_ReadBuffer *(unsigned int *)(BaseAddress+0x6c ) // void DrawRectangle(int x1, int y1, int x2, int y2, int C)) #define Vector_FloatToStr (*(unsigned int *)(BaseAddress+0x70)) // convert a float to a string including scientific notation if necessary #define Vector_ExecuteProgram (*(unsigned int *)(BaseAddress+0x74)) // void ExecuteProgram(char *fname) #define Vector_CFuncmSec (*(unsigned int *)(BaseAddress+0x78)) // CFuncmSec #define Vector_CFuncRam (*(unsigned int *)(BaseAddress+0x7C)) // StartOfCFuncRam #define Vector_ScrollLCD *(unsigned int *)(BaseAddress+0x80 ) // void scrollLCD(int lines, int blank) #define Vector_IntToFloat (*(unsigned int *)(BaseAddress+0x84)) // MMFLOAT IntToFloat(long long int a) #define Vector_FloatToInt (*(unsigned int *)(BaseAddress+0x88)) // long long int FloatToInt64(MMFLOAT x) #define Vector_Option (*(unsigned int *)(BaseAddress+0x8C)) // Option #define Vector_Sine (*(unsigned int *)(BaseAddress+0x90)) // MMFLOAT sin(MMFLOAT) #define Vector_DrawCircle (*(unsigned int *)(BaseAddress+0x94)) // DrawCircle(int x, int y, int radius, int w, int c, int fill, MMFLOAT aspect) #define Vector_DrawTriangle (*(unsigned int *)(BaseAddress+0x98)) // DrawTriangle(int x0, int y0, int x1, int y1, int x2, int y2, int c, int fill) #define Vector_Timer (*(unsigned int *)(BaseAddress+0x9C)) // uint64_t timer(void) #define Vector_FMul (*(unsigned int *)(BaseAddress+0xA0)) // MMFLOAT FMul(MMFLOAT a, MMFLOAT b){ return a * b; } #define Vector_FAdd (*(unsigned int *)(BaseAddress+0xA4)) // MMFLOAT FAdd(MMFLOAT a, MMFLOAT b){ return a + b; } #define Vector_FSub (*(unsigned int *)(BaseAddress+0xA8)) // MMFLOAT FSub(MMFLOAT a, MMFLOAT b){ return a - b; } #define Vector_FDiv (*(unsigned int *)(BaseAddress+0xAC)) // MMFLOAT FDiv(MMFLOAT a, MMFLOAT b){ return a / b; } #define Vector_FCmp (*(unsigned int *)(BaseAddress+0xB0)) // int FCmp(MMFLOAT a,MMFLOAT b){if(a>b) return 1;else if(a<b)return -1; else return 0;} #define Vector_LoadFloat (*(unsigned int *)(BaseAddress+0xB4)) /* MMFLOAT LoadFloat(unsigned long long C)){union ftype{ unsigned long long a; MMFLOAT b;}f;f.a=c;return f.b; }*/ #define Vector_CFuncInt1 *(unsigned int *)(BaseAddress+0xB8 ) // CFuncInt1 #define Vector_CFuncInt2 *(unsigned int *)(BaseAddress+0xBC) // CFuncInt2 #define Vector_CSubComplete (*(unsigned int *)(BaseAddress+0xC0)) // CSubComplete //Macros to call each function. //#define uSec(a) ((void (*)(unsigned int )) Vector_uSec) (a) #define uSec(a) ((void (*)(unsigned long long )) Vector_uSec) (a) #define putConsole(a,b) ((void(*)(int, int)) Vector_putConsole) (a,b) #define getConsole() ((int (*)(void)) Vector_getConsole) () #define ExtCfg(a,b,c) ((void (*)(int, int, int)) Vector_ExtCfg) (a,b,c) #define ExtSet(a,b) ((void(*)(int, int)) Vector_ExtSet) (a,b) #define ExtInp(a) ((int(*)(int)) Vector_ExtInp) (a) #define PinSetBit(a,b) ((void(*)(int, int)) Vector_PinSetBit) (a,b) #define PinRead(a) ((int(*)(int)) Vector_PinRead) (a) #define MMPrintString(a) ((void (*)(char*)) Vector_MMPrintString) (a) #define IntToStr(a,b,c) ((void (*)(char *, long long int, unsigned int)) Vector_IntToStr) (a,b,c) #define CheckAbort() ((void (*)(void)) Vector_CheckAbort) () #define GetMemory(a) ((void* (*)(int)) Vector_GetMemory) (a) #define GetTempMemory(a) ((void* (*)(int)) Vector_GetTempMemory) (a) #define FreeMemory(a) ((void (*)(void *)) Vector_FreeMemory) (a) #define DrawRectangle(a,b,c,d,e) ((void (*)(int,int,int,int,int)) (*(unsigned int *)Vector_DrawRectangle)) (a,b,c,d,e) #define DrawRectangleVector (*(unsigned int *)Vector_DrawRectangle) #define DrawBitmap(a,b,c,d,e,f,g,h) ((void (*)(int,int,int,int,int,int,int, char*)) (*(unsigned int *)Vector_DrawBitmap)) (a,b,c,d,e,f,g,h) #define DrawBitmapVector (*(unsigned int *)Vector_DrawBitmap) #define DrawLine(a,b,c,d,e,f) ((void (*)(int,int,int,int,int,int)) Vector_DrawLine) (a,b,c,d,e,f) #define FontTable (void*)((int*)(Vector_FontTable)) #define ExtCurrentConfig ((int *) Vector_ExtCurrentConfig) #define HRes (*(unsigned int *) Vector_HRes) #define VRes (*(unsigned int *) Vector_VRes) #define SoftReset() ((void (*)(void)) Vector_SoftReset) () #define error(a) ((void (*)(char *)) Vector_error) (a) #define ProgFlash ((int *) Vector_ProgFlash) #define vartbl (*(struct s_vartbl *) Vector_vartbl) #define varcnt (*(unsigned int *) Vector_varcnt) #define DrawBuffer(a,b,c,d,e) ((void (*)(int,int,int,int,char *)) (*(unsigned int *)Vector_DrawBuffer)) (a,b,c,d,e) #define DrawBufferVector (*(unsigned int *)Vector_DrawBuffer) #define ReadBuffer(a,b,c,d,e) ((void (*)(int,int,int,int,char *)) (*(unsigned int *)Vector_ReadBuffer)) (a,b,c,d,e) #define ReadBufferVector (*(unsigned int *)Vector_ReadBuffer) #define FloatToStr(a,b,c,d,e) ((void (*)(char *, MMFLOAT, int, int, char)) Vector_FloatToStr) (a,b,c,d,e) // NOTE: The argument to RunBasicSub is a string specifying the name of the BASIC subroutine to be executed. // It MUST be terminated with TWO null chars. #define RunBasicSub(a) ((void (*)(char *)) Vector_ExecuteProgram) (a) #define CFuncmSec (*(unsigned int *) Vector_CFuncmSec) #define CFuncRam ((int *) Vector_CFuncRam) #define ScrollLCD(a,b) ((void (*)(int, int)) (*(unsigned int *)Vector_ScrollLCD)) (a, b) #define ScrollLCDVector (*(unsigned int *)Vector_ScrollLCD) #define ScrollBufferV(a,b) ((void (*)(int, int)) (*(unsigned int *)Vector_ScrollBufferV)) (a, b) #define ScrollBufferVVector (*(unsigned int *)Vector_ScrollBufferV) #define ScrollBufferH(a) ((void (*)(int)) (*(unsigned int *)Vector_ScrollBufferH)) (a) #define ScrollBufferHVector (*(unsigned int *)Vector_ScrollBufferH) #define DrawBufferFast(a,b,c,d,e) ((void (*)(int,int,int,int, char*)) (*(unsigned int *)Vector_DrawBufferFast)) (a,b,c,d,e) #define DrawBufferFastVector (*(unsigned int *)Vector_DrawBufferFast) #define ReadBufferFast(a,b,c,d,e) ((void (*)(int,int,int,int, char*)) (*(unsigned int *)Vector_ReadBufferFast)) (a,b,c,d,e) #define ReadBufferFastVector (*(unsigned int *)Vector_ReadBufferFast) #define MoveBufferFast(a,b,c,d,e,f,g) ((void (*)(int,int,int,int, int,int,int)) (*(unsigned int *)Vector_MoveBuffer)) (a,b,c,d,e,f,g) #define MoveBufferFastVector (*(unsigned int *)Vector_MoveBuffer) #define DrawPixel(a,b,c) ((void(*)(int, int, int)) Vector_DrawPixel) (a,b,c) #define RoutineChecks() ((void (*)(void)) Vector_RoutineChecks) () #define GetPageAddress(a) ((int(*)(int)) Vector_GetPageAddress) (a) #define memcpy(a,b,c) ((void (*)(void *, void *, int)) Vector_mycopysafe) (a,b,c) #define IntToFloat(a) ((MMFLOAT (*)(long long)) Vector_IntToFloat) (a) #define FloatToInt(a) ((long long (*)(MMFLOAT)) Vector_FloatToInt) (a) #define Option (*(struct option_s *)(unsigned int)Vector_Option) #define ReadPageAddress (*(unsigned int *) Vector_ReadPageAddress) #define WritePageAddress (*(unsigned int *) Vector_WritePageAddress) #define uSecTimer ((unsigned long long (*)(void)) Vector_Timer) #define FastTimer ((unsigned long long (*)(void)) Vector_FastTimer) #define TicksPerUsec (*(unsigned int *) Vector_TicksPerUsec) #define map(a) ((int(*)(int)) Vector_Map) (a) #define Sine(a) ((MMFLOAT (*)(MMFLOAT)) Vector_Sine) (a) #define VideoColour (*(int *) Vector_VideoColour) #define DrawCircle(a,b,c,d,e,f,g) ((void (*)(int,int,int,int,int,int,MMFLOAT)) Vector_DrawCircle) (a,b,c,d,e,f,g) #define DrawTriangle(a,b,c,d,e,f,g,h) ((void (*)(int,int,int,int,int,int,int,int)) Vector_DrawTriangle) (a,b,c,d,e,f,g,h) #define LoadFloat(a) ((MMFLOAT (*)(unsigned int)) Vector_LoadFloat) (a) #define FMul(a,b) ((MMFLOAT (*)(MMFLOAT, MMFLOAT)) Vector_FMul) (a,b) #define FAdd(a,b) ((MMFLOAT (*)(MMFLOAT, MMFLOAT)) Vector_FAdd) (a,b) #define FSub(a,b) ((MMFLOAT (*)(MMFLOAT, MMFLOAT)) Vector_FSub) (a,b) #define FDiv(a,b) ((MMFLOAT (*)(MMFLOAT, MMFLOAT)) Vector_FDiv) (a,b) #define FCmp(a,b) ((int (*)(MMFLOAT, MMFLOAT)) Vector_FCmp) (a,b) #define CFuncInt1 (*(unsigned int *) Vector_CFuncInt1) #define CFuncInt2 (*(unsigned int *) Vector_CFuncInt2) #define Interrupt (*(unsigned int *) Vector_CSubComplete) // the structure of the variable table, passed to the CFunction as a pointer Vector_vartbl which is #defined as vartbl struct s_vartbl { // structure of the variable table char name[MAXVARLEN]; // variable's name char type; // its type (T_NUM, T_INT or T_STR) char level; // its subroutine or function level (used to track local variables) unsigned char size; // the number of chars to allocate for each element in a string array char dummy; int __attribute__ ((aligned (4))) dims[MAXDIM]; // the dimensions. it is an array if the first dimension is NOT zero union u_val{ MMFLOAT f; // the value if it is a float long long int i; // the value if it is an integer MMFLOAT *fa; // pointer to the allocated memory if it is an array of floats long long int *ia; // pointer to the allocated memory if it is an array of integers char *s; // pointer to the allocated memory if it is a string } __attribute__ ((aligned (8))) val; } __attribute__ ((aligned (8))) val; // Useful macros // Types used to define a variable in the variable table (vartbl). Often they are ORed together. // Also used in tokens and arguments to functions #define T_NOTYPE 0 // type not set or discovered #define T_NBR 0x01 // number (or float) type #define T_STR 0x02 // string type #define T_INT 0x04 // 64 bit integer type #define T_PTR 0x08 // the variable points to another variable's data #define T_IMPLIED 0x10 // the variables type does not have to be specified with a suffix #define T_CONST 0x20 // the contents of this variable cannot be changed #define T_BLOCKED 0x40 // Hash table entry blocked after ERASE //*************************************************************************************************** // Constants and definitions copied from the Micromite MkII and Micromite Plus source //*************************************************************************************************** //The Option structure struct option_s { int Magic; char Autorun; char Tab; char Invert; char Listcase; //4 // unsigned int PROG_FLASH_SIZE; unsigned int HEAP_SIZE; char Height; char Width; char DISPLAY_TYPE; char DISPLAY_ORIENTATION; //8 // int PIN; int Baudrate; int ColourCode; int CPU_Speed; unsigned int Dummyint; // used to store the size of the program flash (also start of the LIBRARY code) int DefaultFC, DefaultBC; // the default colours int DefaultBrightness; // default backlight brightness //40 // uint16_t VGAFC, VGABC; // the default colours unsigned short VGAFC, VGABC; // the default colours // // display related unsigned char DefaultFont; unsigned char KeyboardConfig; unsigned char RTC_Clock, RTC_Data; //44 // int MaxCtrls; // maximum number of controls allowed //48 // for the SPI LCDs unsigned char LCD_CD; unsigned char LCD_CS; unsigned char LCD_Reset; // touch related unsigned char TOUCH_CS; unsigned char TOUCH_IRQ; char TOUCH_SWAPXY; unsigned char repeat; char dummy;//56 int TOUCH_XZERO; int TOUCH_YZERO; float TOUCH_XSCALE; float TOUCH_YSCALE; //72 unsigned int fullrefresh; unsigned int FlashSize; // these are only used in the MX470 version unsigned char SD_CS; unsigned char SYSTEM_MOSI; unsigned char SYSTEM_MISO; unsigned char SYSTEM_CLK; unsigned char DISPLAY_BL; unsigned char DISPLAY_CONSOLE; unsigned char TOUCH_Click; char LCD_RD; // used for the RD pin for SSD1963 //78 unsigned char AUDIO_L; unsigned char AUDIO_R; unsigned char AUDIO_SLICE; unsigned char pins[8]; // general use storage for CFunctions written by PeterM //86 unsigned char SDspeed; char LCDVOP; char I2Coffset; unsigned char NoHeartbeat; char Refresh; unsigned char SYSTEM_I2C_SDA; unsigned char SYSTEM_I2C_SCL; unsigned char RTC; char PWM; unsigned char INT1pin; unsigned char INT2pin; unsigned char INT3pin; unsigned char INT4pin; unsigned char SD_CLK_PIN; unsigned char SD_MOSI_PIN; unsigned char SD_MISO_PIN; unsigned char SerialConsole; unsigned char SerialTX; unsigned char SerialRX; unsigned char numlock; unsigned char capslock; unsigned char F1key[MAXKEYLEN]; unsigned char F5key[MAXKEYLEN]; unsigned char F6key[MAXKEYLEN]; unsigned char F7key[MAXKEYLEN]; unsigned char F8key[MAXKEYLEN]; unsigned char F9key[MAXKEYLEN]; // To enable older CFunctions to run any new options *MUST* be added at the end of the list } __attribute__((packed)); // Define the offsets from the PORT address // these are used by GetPortAddr(a,b) #define ANSEL -8 #define ANSELCLR -7 #define ANSELSET -6 #define ANSELINV -5 #define TRIS -4 #define TRISCLR -3 #define TRISSET -2 #define TRISINV -1 #define PORT 0 #define PORTCLR 1 #define PORTSET 2 #define PORTINV 3 #define LAT 4 #define LATCLR 5 #define LATSET 6 #define LATINV 7 #define ODC 8 #define ODCCLR 9 #define ODCSET 10 #define ODCINV 11 #define CNPU 12 #define CNPUCLR 13 #define CNPUSET 14 #define CNPUINV 15 #define CNPD 16 #define CNPDCLR 17 #define CNPDSET 18 #define CNPDINV 19 #define CNCON 20 #define CNCONCLR 21 #define CNCONSET 22 #define CNCONINV 23 #define CNEN 24 #define CNENCLR 25 #define CNENSET 26 #define CNENINV 27 #define CNSTAT 28 #define CNSTATCLR 29 #define CNSTATSET 30 #define CNSTATINV 31 // configurations for an I/O pin // these are used by ExtCfg(a,b,c) #define EXT_NOT_CONFIG 0 #define EXT_ANA_IN 1 #define EXT_DIG_IN 2 #define EXT_FREQ_IN 3 #define EXT_PER_IN 4 #define EXT_CNT_IN 5 #define EXT_INT_HI 6 #define EXT_INT_LO 7 #define EXT_DIG_OUT 8 #define EXT_HEARTBEAT 9 #define EXT_INT_BOTH 10 #define EXT_UART0TX 11 #define EXT_UART0RX 12 #define EXT_UART1TX 13 #define EXT_UART1RX 14 #define EXT_I2C0SDA 15 #define EXT_I2C0SCL 16 #define EXT_I2C1SDA 17 #define EXT_I2C1SCL 18 #define EXT_SPI0RX 19 #define EXT_SPI0TX 20 #define EXT_SPI0SCK 21 #define EXT_SPI1RX 22 #define EXT_SPI1TX 23 #define EXT_SPI1SCK 24 #define EXT_IR 25 #define EXT_INT1 26 #define EXT_INT2 27 #define EXT_INT3 28 #define EXT_INT4 29 #define EXT_PWM0A 30 #define EXT_PWM0B 31 #define EXT_PWM1A 32 #define EXT_PWM1B 33 #define EXT_PWM2A 34 #define EXT_PWM2B 35 #define EXT_PWM3A 36 #define EXT_PWM3B 37 #define EXT_PWM4A 38 #define EXT_PWM4B 39 #define EXT_PWM5A 40 #define EXT_PWM5B 41 #define EXT_PWM6A 42 #define EXT_PWM6B 43 #define EXT_PWM7A 44 #define EXT_PWM7B 45 #define EXT_PIO0_OUT 46 #define EXT_PIO1_OUT 47 #define EXT_DS18B20_RESERVED 0x100 // this pin is reserved for DS18B20 and cannot be used #define EXT_COM_RESERVED 0x200 // this pin is reserved and SETPIN and PIN cannot be used #define EXT_BOOT_RESERVED 0x400 // this pin is reserved at bootup and cannot be used #define NOP() __asm volatile ("nop") #define USERLCDPANEL 25 Latest F4 Latest H7 |
||||
vegipete Guru Joined: 29/01/2013 Location: CanadaPosts: 1110 |
What do "transparent pixels" mean with regards BLITE (or SPRITE) WRITE? Could there be a means to specify which colour number is to be treated as transparent? This comes about from Martin H's 'On the Road Again' demo code. His car sprites include the colour black for the tyres, so using black as transparent won't work well. This would be solved if we could specify which of the colours [white, yellow, lilac, brown, fuchsia, rust, magenta, red, cyan, green, cerulean, midgreen, cobalt, myrtle, blue and black] is to be transparent. Visit Vegipete's *Mite Library for cool programs. |
||||
Martin H. Guru Joined: 04/06/2022 Location: GermanyPosts: 1120 |
that would be a great addition. If the sprite now touches the edge or the grass, the background shines through the tires (because they are black). Another possibility, but certainly more complex, would be to create a binary mask, which decides what remains visible from the background. The calculation would be BG-Pixel AND Mask-Pixel OR Sprite-Pixel but that would be a whole new program function. I'm glad that we got the possibility of layers and framebuffers in the new version at all. Edited 2022-10-25 16:18 by Martin H. 'no comment |
||||
JohnS Guru Joined: 18/11/2011 Location: United KingdomPosts: 3820 |
Instead of black (for tyres etc) could use a near-black (so the transparent black can stay as is)? John |
||||
Martin H. Guru Joined: 04/06/2022 Location: GermanyPosts: 1120 |
Surely I can, I tryed the darkest color possible RGB (0,64,0). This looks a little flat and low-contrast, but it works. Vegipetes proposal, to be able to choose the transparent color, would still have a charm . Edited 2022-10-25 18:21 by Martin H. 'no comment |
||||
phil99 Guru Joined: 11/02/2018 Location: AustraliaPosts: 2160 |
Put a 4k7 trim-pot in series with GP19 - the Green Low bit pin. You can then adjust RGB(0,64,0) to look almost black when needed. It will only have a small effect on other colours. Edited 2022-10-26 13:55 by phil99 |
||||
Martin H. Guru Joined: 04/06/2022 Location: GermanyPosts: 1120 |
Dark-Green is the new Black I could also do something like using an OR Gate for Red,GreenHigh,Blue and connect the Output together with GreenLow to an AND Gate, so that the Output (New GreenLow) is always 0 if non of the other ColorBits are 1. Compared to your approach, you only lose one color (Dark Green) and not 8 --- nice but with both ideas, you'll lose the Compatibility. It would only look good on your Pico. Thus, the program would be not, or limited usable for all others. Edited 2022-10-26 23:09 by Martin H. 'no comment |
||||
Volhout Guru Joined: 05/03/2018 Location: NetherlandsPosts: 4293 |
Please note that the dot clock (pixel clock) is 25MHz(40ns). You need fast logic to do this (with gate delay of 10ns, 2 gates = 20ns, you loose half the pixel). Or you "delay" the other 3 color signals by the same amount (3 x 2 gates), and potentially Hsync (1 x 2 gates). Vsync may not be that critical. PicomiteVGA PETSCII ROBOTS |
||||
Page 7 of 9 |
Print this page |