Compilerversionen / Korrekturen

These NEWS informs about compiler & simulator updates/upgrades and bugfixes.
Date is formatted as

Ver. 5.6-14 22.01.2006
  • WRITE and READ activated for 16F648
  • DEBUG functionality for 16F628, 16F88, 16F87x and iL-TROLL.
  • Bugfix: LOOKUP and LOOKDN worked wrong on iL_TROLL
  • new documentation (manuals etc.) on download section

Ver. 5.6-13 26.11.2005
  • Implementation of 16F627A and 16F648A, 16F877A is now available in iL-BAS16SEP too

Ver 5.6-12 03.11.2005
  • Bugfix: After a SLEEP or DOZE the Option register wasn't reload correctly (for PIC 12X5xx and 16X5xx)

Ver 5.6-11 26.10.2005
  • Bugfix: LET var= --- > now we get an error
  • error message when a '#' should format a constant (LCDWRITE y,x,number,#)

Ver 5.6-10 08.06.2005
  • bugfix in OUTPUT RB,xx and same with HIGH,LOW,REVERS
  • PIC10Fxxx wasn't reachable in STANDARD version, soory

Ver 5.6-09 07.05.2005
  • Bugfix in LCDWRITE yvar,xvar,....
  • TRIS statement is now useable behind ELSE

Ver 5.6-08 14.04.2005 - 27.04.2005
several bugfixes:
  • Error message if you try to calculate with arrays
  • Error message if no TO variable is defined
  • Error message if you assign values above 255 to a byte
  • Bugfix when handling $80000000
  • Assembler generates now a COD file with long symbol names
  • conditional compiling. If condition is FALSE the source lines are remarked
  • FOR-NEXT with 16 bit variable and +- variable/constant can be used
  • SET and RES for var16 and const/var16/var8 are available, also BITPOS for 16 bit variables
  • Access to bits within a 16 bit variable is possible now.
  • now you can use DEFINE array = var1 + const
  • Priority of STACK is higher than priority of GIED -> bs(c)f 11,7 will be suppressed
  • iL_EDy has now a reload function. To reload the visible file click right mouse key and select topic "file reload"
  • iL_EDy: If the compiler found an error in a file which is not opened in iL_EDy, it is open automatically
  • Two additional topics for iL_PRG16: Programming -> PIC erase + code and PIC erase + code +data
  • PORT bit access optimized for page 0

Ver. 5.6-07 24.02.2005
  • Bugfix: ADConverter didn't work in 16F676 (bank switching for ADCON1) ANSEL at 16F676 and ADCFG>9 must be corrected.
  • new: SELFPROG: If amount of words to program are 0 or invalid address contoller exits SP_BIOS.
  • CPD_ON and CPD_OFF for CONFIG and DEVICE are implemented.

Ver. 5.6-06 12.02.2005
  • Reading serial number and id of iL_BAS16 by HELP "Info about iL_BAS16".
  • Bugfix: If no printer is installed, iL_EDy could not start.

Ver. 5.6-05 04.02.2005
  • Bugfix: Under some circumstances READDATA interfered with INKEY.

Ver. 5.6-04 28.01.05
  • Now you can use 16 bit variables for loop counting in FOR-NEXT loops.
  • I2C: When writing an I2C address the ACK bit will be checked by the master correctly now. If the slave answers NAK the bit 3 in the ERR variable will be set.
  • Extention of SELFPROG. The protokoll (date 24.04.2002) had to be redefined. The hardware adaption (schematic) isn't changed. Protokoll: All values send to SELFPROG are 16 bit with LSB first. After the controller has enterd the SP_BIOS he waits for datas. At first he attempts the start address (lsb, msb) and then the amount of words to program. From now on he must get all these words because he cannot be interrupted. The SP-BIOS echoes the lsb byte at once the msb byte after programming of that word is finished. By this way, the PIC controls the communication speed while the transmitter has to wait. There are serveral modes for SELFPROG. You define SELFPROG by $SELFPRGx. If x = 0 then you enter SP_BIOS by the basic statement SELFPROG. If x = 1 SP_BIOS will be entered immediately after RESET. If x = 2 then the same procedure as under 1 is performed except of the continuing when finished the programming. x = 0 means jump to address 0 and x = 2 means jump to the statement following SELFPROG.

Ver. 5.6-03 18.01.05

  • We extented the I2C routines around the basic instructions I2CRDB and I2CWRB. Now you can access I2C bus without addressing sequence. This is useful when reading or writing the bus within a loop. Both instructions do not generate a start or stop condition.
  • Meanwhile the list of arguments for DEVICE became very long. This is why we implemented an new keyword CONFIG. All entries for the configuration word can be defined by CONFIG. One argument each line. This increases readability. Switches for the compiler such as ADCFGx must remain in the DEVICE statement.
  • The new basic keyword AUTO makes declarations of variables more simple. iL_BAS16 assigns the addresses and varaibles by itself. The type of variable (byte, word or doubleword) must defined by the author.

Example: Bsp. DEFINE count = AUTO AS WORD.

If you want to access the low or high byte of a word variable define as follows:

DEFINE countl = count as byte 'access to LSB of count

DEFINE counth = count + 1 as byte 'access to MSB of count

Ver. 5.6-02 17.12.04
  • OPTION_MASKE and CLOCK command had set RBPU always to 1 ( = inactive )

Ver. 5.6-01 10.12.2004 -> NEW RELEASE 5.6
  • The smallest microcontrollers PIC10F200, PIC10F202, PIC10F204 and PIC10204 can be programmed by iL_BAS16STD or iL_BAS16PRO.
  • Bugfix: If using CLOCK with TMR0 RBPU bit in option register was always on --> no pullups.
  • Bugfix: PRINT a decimal value wasn't correct.

Ver. 5.5-26 18.11.2004
  • A new timebase for the CLOCK command was implemented. Instead of TMR0 you can use TMR1 as the timebase for the internal and interrupt driven real time clock. The syntax is CLOCK1 the parameter list is quite the same like CLOCK.

Ver. 5.5-25 11.11.2004
  • Standard LCDs with up to 2 x 40 characters can be connected via a parallel-serial converter e.g. 74LS164.
  • to do this, the new BASIC command "LCDTYPE" had to be implemented

Ver. 5.5-24 28.09.2004
  • Bugfix: Up to now it wasn't possible to use the ELSE case if an LCDWRITE followed the THEN case. The compiler produced wrong code started at ELSE. Now IF cond. THEN LCDWRITE... ELSE ... works fine.

Ver. 5.5-23 06.09.2004
  • Bugfix: On PICs with program memory larger then page size an error message (missing label) was generated when using ON x GOSUB.

Ver. 5.5-22 21.08.2004
  • Bugfix: When writing LET VAR=VAR+CONST or LET VAR = CONST - VAR on a 12 bit core PIC the assembler generated an error message.

Ver. 5.5-21 21.07.2004
  • Bugfix: Compiler generated an error message if you wanted to use the GOSUB command on a 12 bit PIC with program memory less or equal to page size.
  • Bugfix: LCDWRITE var,const,"... didn't worked.

Ver. 5.5-20 07.06.2004
  • Bugfix in BINTOASC, it worked only like BINTODEC but CONASC was ok.

Ver. 5.5-19 21.04.2004
  • Bugfix in 32 bit arithmetic. The problem was: DW = DW / BY produced under some circumstances a wrong result.
  • Bugfix: TXDDELAY had switched of the watchdog unexpected.

Ver. 5.5-18 18.04.2004
  • Calculation of odd parity was wrong. Bug fixed.
  • Until this version it was not possible to use SERIN and SEROUT with different baud rates and different parity. If you use uart SERIN within an interrupt service routine you must set or reset TX9 after the SETBAUD instruction.

Ver. 5.5-17 01.03.2004
  • Instruction LOCATE y,x is now available. This command allows you to put the cursor at a specified location on the lcd.

Ver. 5.5-16 25.02.2004
Ver. 5.5-15 21.02.2004

  • LCDWRITE is expanded for 32 bit decimal and hex output (no 32 bit binary depictable).
  • Bugfix LCDWRITE with var32 = 0.
  • LOCATE y,x to move cursor on lcd has been implemented.
  • If port and pin are defined as constants in the declaration part, iL_BAS16 generated code only for software SERIN and SEROUT regardless if a uart is present.
  • New PICs added: 16F628A, 16F676, 16F87 und 16F88

Ver. 5.5-14 09.02.2004
  • CONST32 is now implemented. This allows you to compare a 32 bit variable with a 32-bit constant which is defined by DEFINE number32 = number as const. .
  • Bugfixes for ADCFG in PIC 16F87 / 16F88.
  • UPLINES and UPLINESX implementations and bugfixes.
  • CURSON and CURSOFF turns the cursor on lcd on or off.
  • BINTOBCD is available for 8 bit variables, too.

Ver. 5.5-13 28.01.2004
Ver. 5.5-12 26.01.2004
  • The 32 bit assignment LET var32=var32 and the declaration DEFINE number32 as const couldn't be solved by the compiler. Now il_BAS16 can compile statements like IF var32=0 ... ; IF var32<>0 ...; IF var32 = var32 ... or IF var32=const32 ... ( <>, <=, >=) .
  • When using 16F87xA iL_ASS16 ignored the PWRTE bit (configuration bit). This bug is fixed.
  • iL_EDY: CTRL-Q A and CTRL-Q F copies the word under cursor into the search field.

Ver. 5.5-11 17.01.2004

  • More redundant CLRWDT commands will be eliminated automatically, e.g. after DATA, $OBJ2HEX etc.
  • iL_BAS16 is now generating an jump table for all GOSUBs at the beginning of program. In a few cases iL_BAS16 generates wrong code if a gosub target is on the same page but the return is on the next page. The problem appears only if the generated code is straight forward which means without any branch. $LRANGE can help in some cases, but not at all (see release 5.0-49). The manual describes this problem and advices to build a jump table for each GOSUB target. This work is boring and critically and needs a lot of discipiline. Now iL_BAS16 does this job automatically.
  • iL_EDy supports hot keys which are a subset of Wordstar compatible hot keys. These are CTRL-Q and CTRL-K.
CTRL-K 1..9 set/clear bookmark CTRL-Q 1..9 go to bookmark
CTRL-K B block start CTRL-Q A search and replace
CTRL-K C block copy CTRL-Q F search
CTRL-K K block end CTRL-Q L undo
CTRL-K S save file CTRL-L search next
CTRL-K T mark word under cursor CTRL-N insert line
CTRL-K V block move CTRL-U abort search and replace
CTRL-K Y block erase CTRL-Y delete line

Ver. 5.5-10 18.12.2003
  • An alternative connection scheme for LCDs are available. This frees pin Rx0 and Rx1 which is important if you wnat to use INT0. Unfortunatly no matrix key pad can be connected. Connection is like this:

Rx2 = R/S (pin 4) was wrong. See release 5.5-14!!!!!!!!

Rx3 = E (pin 6)

Rx4 = D4 (pin 11)

Rx5 = D5 (pin 12)

Rx6 = D6 (pin 13)

Rx7 = D7 (pin 14)

(pin 5 = RW must be connect to Vss)

This kind of connection scheme must be defined by the keyword UPLINES (upper lines) along with LCDINIT e.g. LCDINIT rb,4,20,uplines

Ver. 5.5-09 30.11.2003
  • The new compiler switch $WDTUSR and BASIC statement CLRWDT has been implemented. Now you can stop suppress the insertations of CLRWDT after each BASIC line, if watchdog is turned on by a WDT_ON in DEFINE DEVICE line. But now it is your responsibility to clear the watchdog periodically to avoid a watchdog reset.
  • You may write LET FIELD(0) = var1,var2,var3 etc which is obviously shorter.
  • If calculation with 32 bit numbers iL_BAS16 puts all calculations, even with 8 or 16 bit numbers, into 32 bit calculations. Now iL_BAS16 pays attention on the type of variable, so different and shorter code can be generated.

Ver. 5.5-01 15.07.2003 "=>" in IF clauses will be compiled now correctly.
Trying to assign a bit value or variable to a byte variable will cause an error message.
12F629, 12F675, 16F818 and 16F819 are implemented (see SUPPORTED PICs)
The programmers firmware has to be modified because of new programming algorithms for PIC 16F87xA and 16F818/819.

15.07.2003 Introducing the new compiler version 5.5 . Now iL_BAS16PRO supports 32 bit arithmetics (unsigned) and DBLWORD is defined for these kind of variables.
Additional there are 4 I2C basic routines implemented. These are: I2CRD, I2CSP, I2CST und I2CWR.
We changed CONASC into BINTOASC, CONDEC into BINTODEC and we added BINTOBCD.
Conditional compiling with $IF, $ELSE and $ENDIF (not nested) is now available.
Predefine values for the internal data eeprom with the new key word EEDATA(addr) data1,....

Version 5 of our compiler iL_BAS16STD and iL_BAS16PRO introduces a new form of variable declaration. The former predefined variables A, B, C, etc. has been ideal for small PICs. But the new PIC generation gets a lot of data memory so the old fashion of declaration is getting confused. Now the variable symbols are assigned to their real memory address. You find more information in the manual (download).

Ver. 5.0-55 15.07.2002 The size of data arrays for DATA and READDATA was first limited up to 1024 entries. Now 2048 entries are available.

Ver. 5.0-54 18.06.2002 For the WRITE command for 16F62x a wrong sequence was created so that this command couldn't work. Now the problem is fixed.

Ver. 5.0-53 11.05.2002 DOZE command for all PICs with a 12 bit core must be updated. A SLEEP is a minimum of 2.3 Sekunden. Finer solutions are not available. Therefore n means: n=1 -> 2,3s; n=2 -> 4,6s. Now can also write INC RB or DEC RA and so on.

Ver. 5.0-52 15.02.2002 Now the CREN bit will be toggled only in a case of an receiving error. Before this correction receiving errors could occur at high data rates because a toggling of CREN turns the receiver off and on.

Ver. 5.0-51 29.01.2002 SET, RES and TOGGLE var,var couldn't access bank 1 and 3 properly (access to bank 0 and 1 were ok). Bug is fixed now.

Ver. 5.0-50 21.10.2001 SEROUT calculated a wrong parity if a constant should be transmitted. Now, both, variables and constants can be transmitted.

Ver. 5.0-49 25.09.2001

Implementation of compiler switch $LRANGE xx. xx is a decimal value. $LRANGE is only for iL_PAGE0. It defines the range around the page bounds where all GOTOs and CALLs are replaced by LJMP or LCALL. If a program grows and grows and suddenly it don't works anymore it could be a problem of iL_PAGE0. Maybe it cannot find all GOTOs or CALLs which have to be replaced. Default value is 16, if necessary try 32 or 48. Bugfix for SET, RES and TOGGLE access to bank 1,2,3.

Ver. 5.0-48 14.08.2001

(not ready yet) Implementation of the new command PCKEYOUT. It output characters like a PC keyboard. PKEYOUT port,datapin,clkpin,value1,value2,.. The different keycodes are not implemented. This has to be done by the developer. This command is not for 12C5xx and 16C5x. The xtal frequency must be 2 MHz or higher.

Ver. 5.0-47 01.08.2001

PIC16F870, 16F871, 16F627 and 16F628 are now supported.

Ver. 5.0-46 12.07.2001

Bugfix of the ERR bit in a 16 bit addition. During I2CSLAVE receiving GIE is cleared and set at the end of the routine if user interrupts or CLOCK is used.

Ver. 5.0-45 15.06.2001

Within SERIN and SEROUT PIN and BAUD can be variables now. PIN must be 8 bit variable and BAUD must be 16 bits. BAUD must be calculated with parameters of xtal and PIC core. This is not easy so a small program called BAUDCALC.EXE is written to do calculation. E.g. let baud=329 'at 6,144 MHz and 4800 Baud let baud=407 'at 6,144 MHz and 2400 Baud let pin=2 let value="A" serout rb,pin,baud,value

Ver.5.0-44 09.03.2001

Now you can access ports using LET var=RB or LET RA=var.

Ver. 5.0-43 01.03.2001

Now the RCIE bit within PIE1 will not be set automatically if SERIN or SEROUT uses the hardware uart. The problem appeared when different interrupts has been active but the interrupt for SERIN should be off. To use the SERIN interrupt needs to set RCIE (SET PIE1,5 or SET RCIE).

Ver. 5.0-42 16.02.2001

Canceled the internal functions $STRIS and $LTRIS in 14 bit core types. SERIN and SEROUT works now better if using PIC 1250x and baudrates <250. CALVAL is now set into the SRC-File in a right way.

Ver. 5.0-41 19.01.2001

Access to arrays is now working for PIC16C57 and new variable declaration. Access to bank 1,2 and 3 is ok now even with SET and RES etc. But attention: only 8 bit variables are usable. This limits the indirect access to bank 0 and 1.

Ver. 5.0-40 19.12.2000

Bugfix. ($ 34 instead of $34 is now recognized as an error)

Ver. 5.0-39 15.11.2000

Bugfix in iL_BAS16SEP The switches $CCON and $CCOFF are implemented. This allows to switch on and off the overflow check within a addition or subtraction routine. (can save a lot of space, if not needed) Optimization within 8 bit addition and subtraction, logical commands and comparisons with 8 bit arguments

Ver. 5.0-38 13.11.2000

Bugfix: READ-command when using PIC 16F87x.

Ver. 5.0-37 07.11.2000

DOZE command: Value for OPTION register has to be changed.

Ver. 5.0-36 30.10.2000

Changing the timing a little bit (XTAL)

Ver. 5.0-35 20.09.2000

A new command was implemented, requested by many customers. CONDEZ and CONASC convert a byte or word variable into the decimal value (CONDEZ) or in a string (CONASC). The result of this conversion needs 3 or 5 register files more. The start address of this area must be defined. Syntax: CONDEZ var8,bufferstart (buffer length=3) CONDEZ var16,bufferstart (buffer length=5) CONASC var8,bufferstart (buffer length=3) CONASC var16,bufferstart (buffer length=5)

Ver. 5.0-34 18.09.2000

Bugfix in MOD command.

Ver. 5.0-33 12.09.2000

PEEK and POKE can now be used in a IF-THEN-ELSE command.

Ver. 5.0-32 31.07.2000

Timing for SERIN and SEROUT has to be changed a little bit for those PICs with 12 bit command length. (These devices need more machine commands because they have only a two level stack.) A new compiler switch $NCALDEF must be implemented because Microchip's PICSTART programer makes an error when reading the OBJ file with RC oscillator selected. CALVAL defines the calibration value when using JW types. The original value programed by Microchip is lost during erasing the chip. Therefore, before using this type of PIC for the first time, read this value and note on the PIC. If no value is defined, default value $80 is used.

Ver. 5.0-31 22.07.2000

Bugfix: HL and LH within the declaration of the interrupt handler was not written exactly into OPTION register. So a software SERIN routine invoked by a interrupt on RB0 couldn't be implemented.

Ver. 5.0-30 11.07.2000

Starting the compiler with switch /E suppresses the error messages.

Bugfix: no error message within PULSOUT command and new variable declarations.

Ver. 5.0-29 13.06.2000

Bugfix PRINT command.

Ver. 5.0-28 20.05.2000

Bugfix: internal format and new variable usage didn't work.

Ver. 5.0-27 16.05.2000

Bugfix: ADINP for 12C67x at ADCFG5

Ver. 5.0-26 09.05.2000

Timebase for FREQIN command must be changed. Now 1000 means a gate time of 1 sec (intern only 500 msec because both slopes are counted).

Ver. 5.0-25 09.04.2000

Better syntax checking

Ver. 5.0-24 22.03.2000

The commands to access the internal EEPROM of the PIC 12E51x and 12E67x are now READ and WRITE. But, because the is no feedback at the end of the write cycle a minimum delay time of 10 msec must be ensure before the next WRITE command is executed. The I2C commands are now available for other use.

Ver. 5.0-23 12.02.2000

Bugfix: A confusing error in the interrupt service routine is fixed (FSR). T0CS_INT, T0SE0 and T0SE1 can be used for all PICs.

Ver. 5.0-22 05.02.2000

Bugfix: internal access to variables in the different banks is now bug free (->STORE_DATEI) If LCD and the key matrix a connected to different ports, 16 keys can be used now.

Ver. 5.0-21 01.02.2000

Bugfix: symbol check.

Ver. 5.0-20 26.01.2000

Bugfix: SERIN (error appears only in some cases).

Ver. 5.0-19 19.01.2000

Bugfix: SETBAUD (b real) and SEROUT The usage of const and var within the HIGH, LOW, REVERS, INP and OUTP command a possible now. e.g. HIGH cont,var and HIGH const,const

Ver. 5.0-18 11.01.2000

Bugfix: access to arrays in bank 2 and 3

Older changes can be read in HISTORIE.TXT (German)

home page