You want the complete package; you want a complete installation of the IDE and GCGB.
This is the latest build with the Great Cow Basic compiler, the IDE and Great Cow Basic. This is a complete package. This release includes the complete build , a minimal build, a core build, a GCGB build, MacOS, BSD Linux and a standard Linux build.
Enjoy
Last edit: Anobium 2021-08-15
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
You cannot, and should not, selectively use files from the v0.98.07 release with any other version of Great Cow BASIC before v0.98.07
So, please keep the release consistent in terms of the build.
If you are adapting the build for your own needs then there are lots of methods to keep the build consistent and enable you to customise – there postings in the forum on how to accomplish this.
Evan
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Minorupdatetocontroltheappendingof"";HEXfilegeneratedbyGreatCowBASIC""tohex.[1229,1230]-Newentryininifile[gcbasic]section-hexappendGCBmessge=Y|1-Thiswillappendlastrecordtohexfile."";HEXfilegeneratedbyGreatCowBASIC""-ThisenabledtheusertounderstandifHEXisproducedbyGCASM(thisisnotappendedwhenMPASMorPIC-ASorotherassembler)."Minor update to Programmer Editor to manage HEX comments in hexfile. See the compile tab.[1230]Minor change to improve PIC-AS - change to transform config items fron xxK to decimal values.[1231]Minor change - Improved handling of Direct Bit setting. Now issues error when trying to set bit with array(element).bit[1132]Corrected 18FDefaultASMConfigs. [1223] Please see the attached note for full details.Minor compiler fix to improve BIT setting when using arrays elements by adding a error handler.[1234]Minor language change to support array element bit setting.[1235]Minor update to improve display of the 'Options tab'. Now version 2.90dButton Open IDE now opens .DAT file.Minor update to 'ChipDat Tab' to improve layout."UpdatedtocorrectINTOSCfrequencies[1236]:18f04q40,18f04q41,18f05q40,18f05q41,18f06q40,18f06q41,18f14q40,18f14q41,18f15q40,18f15q41,18f16q40,18f16q41,18f24k40,18f24k42,18f24q10,18f25k40,18f25k42,18f25k83,18f25q10,18f25q43,18f26k40,18f26k42,18f26k83,18f26q10,18f26q43,18f27k40,18f27k42,18f27q10,18f27q43,18f27q84,18f45k40,18f45k42,18f45q10,18f45q43,18f46k40,18f46k42,18f46q10,18f46q43,18f47k40,18f47k42,18f47q10,18f47q43,18f55k42,18f55q43,18f56k42,18f56q43,18f57k42,18f57q43,18f65k40,18f66k40,18f67k40,18lf24k40,18lf24k42,18lf25k40,18lf25k42,18lf25k83,18lf26k40,18lf26k42,18lf26k83,18lf27k40,18lf27k42,18lf45k40,18lf45k42,18lf46k40,18lf46k42,18lf47k40,18lf47k42,18lf55k42,18lf56k42,18lf57k42,18lf65k40,18lf66k40,18lf67k40Revised24MHzOSCCON1Settingto0x10toexclude18F(Family16)chips,andAddChipFamily18FxxQ40[1237]&revert.DATfrom#[1236]"
Enjoy
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
These changes related to the creation of RAM arrays that can be used for DMA buffers, a tweak to the PIC-AS post-processor and fix to stop a silent failure.
This example program will create a RAM buffer (than can be used for any purpose including a DMA buffer). The ALLOC will use the specified number of bytes at a specific address.
//ervupdateddemocodetotable====Alloc*AboutAlloc*Alloccreatesaspecialtypeofvariable-anarrayvariant.  Thisarrayvariantcanstorevalues.  Thevaluesstoredinthisarrayvariantmustbeofthesametype.Essentially,ALLOCatewillreserveamemoryrangeasdescribedbythegivenlayoutthatcanbeusedanarrayoraRAMbuffer.Layout:----Dimvariable_nameasALLOC*memory_sizeatmemory_location----Theallocatedblockofmemorywillnotbeinitialized.ExampleUsage:----Dimmy256bytebufferasalloc*256at0x2400----Thereisapointertoallocatedmemory.Use@variable_name.ExamplePointer----HSerPrint@my256bytebuffer----*Extents*Thismethodcanbeunsafebecauseundefinedbehaviourcanresultifthecallerdoesnotensurethatbufferextentsarenotmaintained.  Bufferextentsare0(zero)tothememory_size-1ExampleExtents:----my256bytebuffer(0)=some_variable.Willaddresslocation0x2400my256bytebuffer(255)=some_variable.Willaddresslocation0x24FF' the 256th byte of the allocated memory----Implementers of ALLOC must ensure memory constraints remain true.*Safety*This method is unsafe because undefined behaviour can result if the caller does not ensure that buffer extents are not maintained.    If buffer extents are exceeded the program may address areas of memory that have adverse impact on the operation of the microcontroller.Examples of unsafe usage:---- my256bytebuffer(256) = some_variable. Will address location 0x2500 'thisisthefirstbyteofBUFFERRAMonthe18FxxQ43chips...badthingsmayhappenmy256bytebuffer(65535)=some_variable.Willaddresslocation0x123FF' this is the beyond the memory limit and the operation will write an SFR.----*Example Program*The following example program shows the ALLOCation of a 256 byte buffer at a specific address.  The array variant is then populated with data and then shown on a serial terminal.---- 'ChipSettingsandpreamble#CHIP18f27q43#OPTIONExplicit'Generated by PIC PPS Tool for Great Cow Basic 'PPSToolversion:0.0.6.2'PinManager data: v1.81.0 'Generatedfor18f27q43' 'Templatecommentatthestartoftheconfigfile' #startup InitPPS, 85 #define PPSToolPart 18f27q43 Sub InitPPS 'Module:UARTpindirectionsDirPORTC.6Out' Make TX1 pin an output 'Module:UART1RC6PPS=0x0020'TX1 > RC6 End Sub 'Templatecommentattheendoftheconfigfile' USART settings for USART1 #DEFINE USART_BAUD_RATE 9600 #DEFINE USART_TX_BLOCKING #DEFINE USART_DELAY 0 '---------------------------' Main Program #DEFINE BUFFERSIZE 256 'givesrangeof0to255'DIMension an ArrayVariant using ALLOC to create an ArrayVariant with the size of BUFFERSIZE. 'Thisarrayiscreatedatmemorylocation0x2400.Thismemorylocationisspecifictothischip(youmustensureothermicrocontrollersaddressarevalid).Dimmybuffer1asALLOC*BUFFERSIZEat0x2400'A data table Table myDataTable 0,1,2,3,4,5,6,7,8,9,0x0A,0X0B,0X0C,0X0D,0X0E,0X0F 0,1,2,3,4,5,6,7,8,9,0x0A,0X0B,0X0C,0X0D,0X0E,0X0F 0,1,2,3,4,5,6,7,8,9,0x0A,0X0B,0X0C,0X0D,0X0E,0X0F 0,1,2,3,4,5,6,7,8,9,0x0A,0X0B,0X0C,0X0D,0X0E,0X0F 0,1,2,3,4,5,6,7,8,9,0x0A,0X0B,0X0C,0X0D,0X0E,0X0F 0,1,2,3,4,5,6,7,8,9,0x0A,0X0B,0X0C,0X0D,0X0E,0X0F 0,1,2,3,4,5,6,7,8,9,0x0A,0X0B,0X0C,0X0D,0X0E,0X0F 0,1,2,3,4,5,6,7,8,9,0x0A,0X0B,0X0C,0X0D,0X0E,0X0F 0,1,2,3,4,5,6,7,8,9,0x0A,0X0B,0X0C,0X0D,0X0E,0X0F 0,1,2,3,4,5,6,7,8,9,0x0A,0X0B,0X0C,0X0D,0X0E,0X0F 0,1,2,3,4,5,6,7,8,9,0x0A,0X0B,0X0C,0X0D,0X0E,0X0F 0,1,2,3,4,5,6,7,8,9,0x0A,0X0B,0X0C,0X0D,0X0E,0X0F 0,1,2,3,4,5,6,7,8,9,0x0A,0X0B,0X0C,0X0D,0X0E,0X0F 0,1,2,3,4,5,6,7,8,9,0x0A,0X0B,0X0C,0X0D,0X0E,0X0F 0,1,2,3,4,5,6,7,8,9,0x0A,0X0B,0X0C,0X0D,0X0E,0X0F 0,1,2,3,4,5,6,7,8,9,0x0A,0X0B,0X0C,0X0D,0X0E,0X0F End Table Dim iLoop, tableDataValue, memoryDataValue as byte Dim mybuffer1startaddress, mybuffer1endaddress as word 'thisONLYrequiredtodemonstratetheshowingoftheaddressmybuffer1startaddress=@mybuffer1mybuffer1endaddress=mybuffer1startaddress+BUFFERSIZE-1HSerPrintCRLF2HSerPrint"Buffer test - 256 bytes "HSerPrint" at address: 0x"HSerPrinthex(mybuffer1startaddress_h)HSerPrinthex(mybuffer1startaddress)HSerPrint" to 0x"HSerPrinthex(mybuffer1endaddress_h)HSerPrinthex(mybuffer1endaddress)HSerPrintCRLF2'LoadbufferwithtabledataforiLoop=0to255ReadTablemyDataTable,[word]iLoop+1,tableDataValuemybuffer1(iLoop)=tableDataValuenextwait100msHserPrint"Print dataDump array to serial terminal"HSerPrintCRLFforiLoop=0to255HSerPrintleftpad(str(myBuffer1(iLoop)),3)IfiLoop%16=15ThenHSerPrintCRLFnextWait100msHSerPrintCRLFHserPrint"Print memory to serial terminal using PEEK to get the memory location byte value"HSerPrintCRLFforiLoop=0to255memoryDataValue=PEEK(@myBuffer1+iLoop)HSerPrintleftpad(str(memoryDataValue),3)IfiLoop%16=15ThenHSerPrintCRLFnextHSerPrintCRLFWait100msEnd----*Formorehelp,see*<<_dim,DeclaringarrayswithDIM>>
The allocated block of memory will not be initialized.
Example:
Dim my256bytebuffer as alloc * 256 at 0x2400
There is a pointer to allocated memory. Use @variable_name.
Example:
HSerPrint@my256bytebuffer
Extents
This method is unsafe because undefined behaviour can result if the caller does not ensure that buffer extents are not maintained. Buffer extent are 0 (zero) to the memory_size - 1
Example:
my256bytebuffer(0)=some_variable.Willaddresslocation0x2400my256bytebuffer(255)=some_variable.Willaddresslocation0x24FF' the 256th byte of the allocated memory
Implementers of ALLOC must ensure memory constraints remain true.
New: Added Family 15 ( 12F and 16F advance chips ) interrupt handler to use shadow locations for system variables. This reduces the interrupt latency therefore improving the overall interrupt handler.
Chip required STATUS_SHAD for this capability to be enabled.
New: Improved interrupt latency for all Family 16 ( 18F ), was just K42 chips, interrupt handler to use shadow locations for system variables, therefore use chips automatic context saving . The 18FChip requires register STATUS_SHAD for this capability to be enabled.
Fix: Resolves issue with creation of constants that are not required. Library contains development guideline for the creation of library constants.
New: Compiler now issues a warning when config MVECEN=on is used. This warning is consistent as the compiler does not support interrupt priority.
Index Type Scope Library Func MCU Docs Description
1036 FIX COMPILER N/A Yes AVR/PIC/LGT Not required Fix: Resolve out of bounds memory array in compiler in 32bit version only in VARADDRESS(), and, resolve pointer warning during compilation [1273]
Great Cow BASIC Version 0.98.07 new build is released.
Simply select the link below to download the latest release of Great Cow BASIC.
Click here to download GCB_Installer v0.98.07
You want the complete package; you want a complete installation of the IDE and GCGB.
This is the latest build with the Great Cow Basic compiler, the IDE and Great Cow Basic. This is a complete package. This release includes the complete build , a minimal build, a core build, a GCGB build, MacOS, BSD Linux and a standard Linux build.
Enjoy
Last edit: Anobium 2021-08-15
The Great Cow BASIC development team have released another version of the software to enhance the Great Cow BASIC toolchain capabilities.
This release includes major changes in the support of PIC/AVR and LGT microcontrollers.
For the full list details of the changes see https://onedrive.live.com/edit.aspx?resid=2F87FFE77F3DBEC7!67634&authkey=!ADmkT3exl5l4Pkc
Compiler
Device Files
LCD
GLCD
PPSTOOL
Lowlevel
Timers
Programmers
Tool Chain
PICInfo
HELP
Converters
Sensors
Enjoy
Last edit: Anobium 2021-06-05
See here for the online release note https://1drv.ms/x/s!Ase-PX_n_4cvhJAysbPF3VJAnYaj3A?e=lgkZnV
This is an Excel spreadsheet - you can search, take a copy and edit.
Enjoy
I plan to issue patches to the release as this should be the new baseline and to stop you from having to reinstall.
See https://sourceforge.net/projects/gcbasic/files/Release%20Candidates/Patches/ take the ZIP and apply to your installation.
Please note
You cannot, and should not, selectively use files from the v0.98.07 release with any other version of Great Cow BASIC before v0.98.07
So, please keep the release consistent in terms of the build.
If you are adapting the build for your own needs then there are lots of methods to keep the build consistent and enable you to customise – there postings in the forum on how to accomplish this.
Evan
Please see here to see the Software Bill of Materials (SBOM) to meet the US.gov Executive Order May 2021 requirement.
New Chipfiles for this release for the following chips -some new and all updated with a new register bit.
16f15214, 16f15223, 16f15224, 16f15225, 16f15243, 16f15244, 16f15245, 16f15254, 16f15255, 16f15256, 16f15274, 16f15275, 16f15213, 16f15276
See https://sourceforge.net/projects/gcbasic/files/Release%20Candidates/Patches/GCB%40Syn/GreatCowBASIC/chipdata/
Add to your chipdata folder.
See https://sourceforge.net/projects/gcbasic/files/Release%20Candidates/Patches/ for new patches.
Changes to CHIPDATA to correct page sizes for some 18f parts.
See here for the online release note https://1drv.ms/x/s!Ase-PX_n_4cvhJAysbPF3VJAnYaj3A?e=lgkZnV
Enjoy
See https://sourceforge.net/projects/gcbasic/files/Release%20Candidates/Patches/ for new patches.
Changes to 237 PIC CHIPDATA files. Corrected PWRTS=PWRT_OFF error in 18FDefaultASMConfigs. Impacted 237 18f chips[1228]
See here for the online release note https://1drv.ms/x/s!Ase-PX_n_4cvhJAysbPF3VJAnYaj3A?e=lgkZnV
Enjoy
More patches, see https://sourceforge.net/projects/gcbasic/files/Release%20Candidates/Patches/ for a ZIP that you can apply to you v0.98.07 release - unzip to your installation and then rename the GCBASIC64.exe or GCBASIC32.exe to GCBASIC.exe for your specific operating system.
See here for the full online release note https://1drv.ms/x/s!Ase-PX_n_4cvhJAysbPF3VJAnYaj3A?e=lgkZnV
Changes
Enjoy
More changes to the compiler v0.98.07 build 1003.
https://sourceforge.net/projects/gcbasic/files/Release%20Candidates/Patches/ for a ZIP that you can apply to you v0.98.07 release - unzip to your installation and then rename the GCBASIC64.exe or GCBASIC32.exe to GCBASIC.exe for your specific operating system.
See here for the full online release note https://1drv.ms/x/s!Ase-PX_n_4cvhJAysbPF3VJAnYaj3A?e=lgkZnV
These changes related to the creation of RAM arrays that can be used for DMA buffers, a tweak to the PIC-AS post-processor and fix to stop a silent failure.
Example code when using ALLOC
This example program will create a RAM buffer (than can be used for any purpose including a DMA buffer). The ALLOC will use the specified number of bytes at a specific address.
Help
Allocate memory as described by the given layout.
The allocated block of memory will not be initialized.
Example:
There is a pointer to allocated memory. Use @variable_name.
Example:
Extents
This method is unsafe because undefined behaviour can result if the caller does not ensure that buffer extents are not maintained. Buffer extent are 0 (zero) to the memory_size - 1
Example:
Implementers of ALLOC must ensure memory constraints remain true.
Last edit: William Roth 2021-07-19
See https://sourceforge.net/projects/gcbasic/files/Release%20Candidates/Patches/ for new patches.
Patch 1004
Minor fix to prevent assignment of decimal values to non float variables
See here for the online release note https://1drv.ms/x/s!Ase-PX_n_4cvhJAysbPF3VJAnYaj3A?e=lgkZnV
Enjoy
Critical Update to the compiler - update any previous installation
Critical Fix - Resolves for-next loop issues where the loop variable was not the same type as the source variable.[1243]
This so serious I have updated the main release code and removed all the patches. So, download the latest installer and update your installation.
The release also includes ALL previous patches from 984 to 1006. See here for the online release note https://1drv.ms/x/s!Ase-PX_n_4cvhJAysbPF3VJAnYaj3A?e=lgkZnV
Update and enjoy
Update to the compiler - update any previous installation
EEPROM Fix for 18FxxQ4x - Resolves reading of EEProm error.
See here for the online release note https://1drv.ms/x/s!Ase-PX_n_4cvhJAysbPF3VJAnYaj3A?e=lgkZnV
Download from https://sourceforge.net/projects/gcbasic/files/Release%20Candidates/Patches/
Update and enjoy
Is there a way to download all the updates in a single zipped file instead of downloading them individually?
Is there a way to download all the files? Yes... see the same URL .. https://sourceforge.net/projects/gcbasic/files/Release%20Candidates/Patches/ there is a ZIP.
Update to the Q40 chipdata file. The memory map was incorrect.
See here for the online release note https://1drv.ms/x/s!Ase-PX_n_4cvhJAysbPF3VJAnYaj3A?e=lgkZnV
Download from https://sourceforge.net/projects/gcbasic/files/Release%20Candidates/Patches/
Update and enjoy
New: Added Family 15 ( 12F and 16F advance chips ) interrupt handler to use shadow locations for system variables. This reduces the interrupt latency therefore improving the overall interrupt handler.
Chip required STATUS_SHAD for this capability to be enabled.
See here for the online release note https://1drv.ms/x/s!Ase-PX_n_4cvhJAysbPF3VJAnYaj3A?e=lgkZnV
Download from https://sourceforge.net/projects/gcbasic/files/Release%20Candidates/Patches/
New: Improved interrupt latency for all Family 16 ( 18F ), was just K42 chips, interrupt handler to use shadow locations for system variables, therefore use chips automatic context saving . The 18FChip requires register STATUS_SHAD for this capability to be enabled.
Fix: Resolves issue with creation of constants that are not required. Library contains development guideline for the creation of library constants.
New: Compiler now issues a warning when config MVECEN=on is used. This warning is consistent as the compiler does not support interrupt priority.
See here for the online release note https://1drv.ms/x/s!Ase-PX_n_4cvhJAysbPF3VJAnYaj3A?e=lgkZnV
Download from https://sourceforge.net/projects/gcbasic/files/Release%20Candidates/Patches/
Last edit: Anobium 2021-08-25
New: Fix for Q43 when using I2C discovery. The fix ensures the correct register is used.
See here for the online release note https://1drv.ms/x/s!Ase-PX_n_4cvhJAysbPF3VJAnYaj3A?e=lgkZnV
Download from https://sourceforge.net/projects/gcbasic/files/Release%20Candidates/Patches/
Fix: Errata and Programming now work after the Microchip website changes... tool now uses an improved Regex to determine the PDFs. Now version v2.90i
The reality is the PICINFO.EXE was updated only.
See here for the online release note https://1drv.ms/x/s!Ase-PX_n_4cvhJAysbPF3VJAnYaj3A?e=lgkZnV
Download from https://sourceforge.net/projects/gcbasic/files/Release%20Candidates/Patches/
Fix: Q41 EEPROM: Resolves Q41 family chip EEPROM write error caused by bit naming[1270]
Fix: COMPILER: Resolves silent crash when two functions of same name exists. Now handles and issues correct error message[1269]
New: PICINFO: Now launches web page if cannot find ERRATA or PROGRAMMING PDF. Now version v2.90L
See here for the online release note https://1drv.ms/x/s!Ase-PX_n_4cvhJAysbPF3VJAnYaj3A?e=lgkZnV
Download from https://sourceforge.net/projects/gcbasic/files/Release%20Candidates/Patches/
Last edit: Anobium 2021-10-04
Critical fix for 32 bit compiler. See item #1033
See here for the online release note https://1drv.ms/x/s!Ase-PX_n_4cvhJAysbPF3VJAnYaj3A?e=lgkZnV
Download from https://sourceforge.net/projects/gcbasic/files/Release%20Candidates/Patches/
Last edit: Anobium 2021-10-04
Fix for compiler. See item #1036
See here for the online release note https://1drv.ms/x/s!Ase-PX_n_4cvhJAysbPF3VJAnYaj3A?e=lgkZnV
Download from https://sourceforge.net/projects/gcbasic/files/Release%20Candidates/Patches/
Last edit: Anobium 2021-10-17
Lots of changes over the last week. Mostly to the compiler to resolve some long standing bugs, and, an updated USART library.
Just WAIT() to resolve for 31k frequency and the very long list of bugs will be empty.
See https://sourceforge.net/projects/gcbasic/files/Release%20Candidates/Patches/ for new patches.
See here for the online release note https://1drv.ms/x/s!Ase-PX_n_4cvhJAysbPF3VJAnYaj3A?e=lgkZnV
Enjoy
Last edit: Anobium 2021-10-17