Brendan wrote:I'm guessing you haven't actually written any assembly language before.
Good guess.
Using ASM was my original plan. But I assumed that the "tools" that were available nowadays were more, um, mature than they were 20 years ago. That turned out to be wrong. Basically I would be developing in NotePad.
That's when I decided to go my own route.
Brendan wrote:Do you honestly think that (e.g.) auto-complete or tool-tips are helpful for something like "lodsb" for any assembly language programmer that isn't a complete beginner?
Not for the "core" instructions, like MOV and LODSB, but there are a lot more instructions out there that could use some tooltips to help explain what it does and how it is used. Let's try an example... without google or intel manuals, can you tell me how to use the XLATB instruction? Or which instruction to use if I want to convert a short (16-bit) to an int (32-bit)? Or what happens if you set SP to 1 and then PUSHF?
Or how about writing ASM for an ARM9 without looking at the documentation? I can do that, and I have autocomplete, intellisense and tooltip documentation, and I didn't have to write my own IDE.
I would consider myself an expert C# developer. I've been using it as a business development language since 2002, and developed in Java before that. The naming conventions used in both C# and Java are well organized, and easily readable, at least for me. But I still use autocomplete, intellisense and I still read the tooltips that pop up as I'm searching for a specific method. That's because there are thousands of methods in the base libraries, and I couldn't possibly remember everything about all of them.
Autocomplete and Intellisense make less sense if you are programming in ASM, but I consider that a disadvantage to using ASM, and not an advantage.
Brendan wrote:Seriously; why not post an example of your "XML assembly" code somewhere (like the #asm IRC channel on freenode, or alt.lang.asm newsgroup, or the FASM forums), and ask actual assembly language programmers to comment on the syntax? I'm sure that you'll get important feedback.
(I thought that's what this whole thread was about...
)
The same reason that I don't post ASM code and ask C# developers what they think. Bias.
All of the code is up on
http://ozone.codeplex.com. Feel free to take a look and make any (positive) suggestions you want. Just saying it's "stupid" or "will never work" will be ignored.
Brendan wrote:Yes; so instead of doing it right (and implementing a suitable editor), they were lazy.
Go ahead and give it a try. Download MESS, and write a non-text editor IDE for an Altair 8800. (Intel processor, up to 8KB of memory!)
Unless you are "too lazy"
Brendan wrote:SpyderTL wrote:That may have been due to the fact that you were limited to about 2-4KB of memory...
The reverse actually - when there's severe limits on RAM and CPU speed you want to do everything you can to avoid wasting RAM and wasting CPU time.
Yeah, like loading an IDE into memory. Writing keystrokes to a file takes a lot less memory than a program that converts text to bytecodes in real time.
Brendan wrote:However, I only have preliminary ideas for the IDE's user interface. The first version of my IDE will be similar to a traditional IDE (e.g. user enters text and sees text, without necessarily knowing or caring that the IDE is converting to/from tokens while they're typing), but probably with a little "source code style" configuration option (so different people can set their IDE to "native style" or "C-like style" or "no braces Python-like style" or whatever they want). Then I'll add features to extract information from the source code and generate diagrams (e.g. dependency diagrams, etc) to make it easier for people to "see the forest amongst the trees" and to aid navigating through the project. After that I'd probably add a "drag and drop" style to it (mostly for children and/or touchpad support).
Beyond that, I don't know. Ideally, I want people to be able to manipulate source code in some sort of 3D environment; possibly where the CPU/s are represented as machines that follow a track, and things like branches, loops and function calls are just track layout, and expressions/statements are devices placed on the track.
Awesome. Let me know when it's done.
In the meantime, I'll be working on my OS.
I know that sounded snarky, but, seriously, that would be awesome. There was a PSOne game called Carnage Heart.
http://en.wikipedia.org/wiki/Carnage_Heart
In it, you built your robot, and programmed it using a visual programming language where you plugged in different "chips" into a giant grid of slots. The "processor" would start at the top left slot on the grid (0,0), and each chip would do it's function, and then it would redirect the cpu next instruction either to the chip directly to the right, or to the chip directly beneath it, based on some logic (if statement branch). As the cpu ran, you could see the processor "move" from chip to chip. I've always remembered that, because it's one of the first true visual programming languages that I'd ever seen.
Brendan wrote:SpyderTL wrote:Who cares if builds take 500 ms longer?
Um, what? You realise 500 ms is half a second?
For my current project; a script builds my own "build utility", then it checks everything and regenerates my any web pages that changed (docs, etc), builds any utilities that changed, uses those utilities to compile anything that needs to be recompiled, and generates a full backup (and manages my backup directory); and this typically takes less than 10 ms. Absolute worst case (everything fully rebuilt entirely from scratch) currently takes 820 ms.
And how many times, per second, do you build?