• Content count

  • Joined

  • Last visited

Community Reputation

0 Neutral

About AlexIljin

  • Rank
  • Birthday 01/28/81

Contact Methods

  • Skype

Profile Information

  • Gender
  • Location
    Russia, Tomsk
  1. Fine, but now I'm offering my volunteer help fixing those bugs. Is there any room for discussion? You use the compiler internally, don't you?
  2. I'm not sure what you mean by "didn't take off the ground". The Amadeus-3 library is currently being used in several commercial projects by its author, Stefan Metzeler (see project list here:применения#amadeus_it_solutions ). A number of developer licences were sold during the 20+ years of the library existence. I bought a licence for myself and created some commercial projects based on it, as well as worked for Stefan full time for over 3 years (until April 2011) improving the library and adding new features. Sure, it is not widely known in the industry, but I wouldn't say it didn't take off the ground at all. It is, in fact, in a successful flight. Being the Alex Iljin in question, I confirm that I do have a list of XDS compiler bugs, including some nasty ones in code generator. I have created minimal projects that reproduce the bugs on fresh installs of XDS (for Windows), but I didn't have enough time to publish the information yet. Some of the bugs were reported by me on this forum and via support email, but I got no answers, not even a receipt confirmation. If Excelsior would agree to provide the sources I can try and fix those bugs (I do have some experience with compiler development). I'm ready to sign any kind of NDAs and can even visit your headquarters for the occasion.
  3. When I compile my projects with XDS 2.6 beta I often see the string "==== r386.SaveCallFRegs: 1" output by the compiler. I presume this is some debug output, so I just wanted to remind you remove it by the release version.
  4. First of all, thank you for the release! This is a great new year present indeed! To make the forthcoming final release even better I'll post some of my notes I gathered after installing the beta package and diffing it against the previous version. Everyone else is welcome to share their notes and opinions as well. 1. The def/Win32/edu.txt suddenly appeared! This isn't the limited education version anymore, is it? 2. The following lines were added to the samples/buildx86.bat: But neither the folder VTERM nor the file golygon.prj were added to the samples folder.
  5. I wanted to create a console tool to process some text files. I took XDS Oberon, for it's the simplest console implementation of Oberon to date. It was required that some of the output files would contain Unix-like end-of-line markers (the single LF character = 0AX). I tried Out.Ln, it outputs CRLF, which is normal in Windows. There is no setting to change that AFAIK, but that's OK. Out.Char(0AX) also outputs CRLF. This is a bit weird. Alright, the Out module is a just wrapper for the standard IO channels subsystem, which is written in Modula. Let's dive into that subsystem. RawIO.Write(StdChans.OutChan(), 0AX); - outputs CRLF. ch := 0AX; IOChan.RawWrite(StdChans.OutChan(), SYSTEM.ADR(ch), 1); - outputs CRLF. I feel like an idiot. Is there a way to push a single 0AX character through a channel without getting the CR in front of it?
  6. Module text: MODULE Test; (* ------------------------------------------------------------------------ * © 2011 by Alexander Iljin * ------------------------------------------------------------------------ *) VAR tmp: SHORTINT; (* any integer type will do *) BEGIN INC(tmp, LONG(1000000)); (* Compiler breaks with error F450: "compilation * aborted: invalid case in CASE statement". * Remove "LONG" and it will work. *) END Test. Compilation: >xc Test.ob2 XDS Oberon-2 v2.40 [x86, v1.50] - build 10.05.2005 Compiling "Test.ob2" * [*** 0.00 F450] * compilation aborted: invalid case in CASE statement
  7. Did you mean "a compilation error"? Or did you actually see a compiler crash? It would be helpful if you posted the error you saw. Just to be on the same page. I see E054: "object is not variable", which is perfectly valid in this context, see Oberon-2 Report. The following code will compile: PROCEDURE DemError(); VAR v:PRec1; tmp: PRec0; BEGIN tmp := v.pPR[0]; WITH tmp : PRec1 DO (*!!! repl with ln below, and no error*) (*IF v.pPR[0] IS PRec1 THEN*) | tmp : PRec2 DO (*!!! repl with ln below, and no error*) (*ELSIF v.pPR[0] IS PRec2 THEN*) ELSE END END DemError;
  8. Oberon2Lexer v0.3.1 was released. This is a minor bugfix release. The only bug fixed was invalid highlighting of hexadecimal constants (H and X suffixes) if the constant contained lower case characters. Release notes can be seen here: A direct download link: For a list of SourceForge mirrors visit this page:
  9. Module text: MODULE Test; (* ------------------------------------------------------------------------ * © 2010 by Alexander Iljin * ------------------------------------------------------------------------ *) CONST c = LONG (0 + 1); (* This makes the compiler abort with "invalid location". * The value of the constant does not matter, and neither * does its name. Just as soon as there is an expression * inside the LONG: +, -, *. *) BEGIN END Test. Compilation: >xc Test.ob2 XDS Oberon-2 v2.40 [x86, v1.50] - build 10.05.2005 Compiling "Test.ob2" * [*** 0.00 F450] * compilation aborted: invalid location
  10. I could not reproduce the problem. In debugger (xd.exe) I see that is being changed, NOT Also, adding the following assertions after the Insert method call triggers no run-time errors: pt2.pc.Insert(pt3); (* for some reason does not work; must be some bug pt3 gets inserted into instead of *) ASSERT ( = pt3, 60); ASSERT ( = NIL, 61); (Assertion generation is ON by default, but still I added "-ASSERT+" to the project file, just in case. Still no errors.) Conclusion: unable to reproduce the bug in compiler or debugger.
  11. When I realized that XRC can't handle the VersionInformation resources, I started using the GoRC resource compiler by Jeremy Gordon ( It's only 54Kb, no dependencies!
  12. (This announcement in Russian.) Obide plugin version 2.3.1 was released. This is a bugfix release. Changes: - Fixed: changing Global.mouseHintDelay in the ini-file had no effect. - Fixed: Code Hint will be hidden after keeping mouse cursor for Global.mouseHintDelay milliseconds away from an identifier. Download link: (151 Kb) Release notes and changelog: The plugin will soon be available for installation/udpate via the Plugin Manager.
  13. (This announcement in Russian.) Obide plugin version 2.3 was released. Several new features were added to the plugin: - Added Global.autoCMaxHeight option to set the autocompletion box maximum height. Default value is 32. - The height of the autocompletion box will not exceed half the number of lines visible on screen. - Added: on selecting an item from autocompletion list the rest of the curret identifier will be replaced with the selected text. - Changed: don't close the autocompletion list unless the identifier being completed was fully erased. - Typing the following character now confirms the selection from the autocompletion list (previously it was only confirmed by pressing the Enter key): ([{}]).:;,+-*/|<>=#^& tab space Enter. These are all characters allowed in the Oberon-2 language after an identifier. - Added: code hints are now displayed after holding the mouse cursor over an identifier for half a second. See Global.mouseHintDelay option. Download link: (151 Kb) Release notes and changelog: The plugin will soon be available for installation/udpate via the Plugin Manager.
  14. (This announcement in Russian.) Obide plugin version 2.2.1 was released. It fixes a minor bug in procedure end parsing. Download link: Release notes and changelog:
  15. (This announcement in Russian.) The freeware Obide (Oberon-2 IDE) plugin for Notepad++ is now released as a standalone download. The previous version 2.1 was distributed as part of the NO2 package v0.1. The current version is 2.2. Changelog: - Added Unicode build of the plugin. - Added code hint for modules (alias and full file/path to the module). - Module lookup paths are now read from Obide.ini, if any. - "Go to Definition" menu item is renamed "Go to Declaration". - When trying to "Go to Declaration" of a module that can't be found, the appropriate hint message is displayed. Fixed position of the hint, added lookup paths to the message. - Fixed invalid Version Information format. - Added version number to the About box title. Download link: Release notes and change log: