IDENT.TXT
-Documentation for ident.exe
(C)1999 Keinall "Granitor" Caddle

--]
What is ident.exe?

ident.exe is the embodiment of the IDE NT concept,
which succeeds the IDENT project. This file pertains to
version 2, revision 1, update 1, WIP (Work in Progress),
which directly follows the last embodiment of the 
IDENT project, version 1, revision 1, update 1.

---]
What's the most interesting way to invoke IDE NT?

ident -nogui fy ee obasic2.CAS

This way is interesting only to ppl who want to use the CBM BASIC 2.0 
parser, which isn't implemented yet, but, the lookup table is stored 
in a SACAS (b2CAS) file called BASIC2.CAS, and the above line causes 
the keyword resolutions to be reported in the log file (ident.log).

---]
How do I see the new features of parse3?

ident eeefe -size320x200 -nogui

To test the new DMP;

ident eeefe -run:testin3.cas

To test parse3 for compliance wiht the specs 
(it fails, there's a silly bug.. )

---]
What's the recommended invocation method?
**IMPORTANT : exit by entering "system" or "sysend". 

ident fevee 0 

---]
What's the Insane Excessive Overuse of CLAen invocation method?

ident ever8k v iINITIDE.CAS oTOKLIST.CAS dIDEDRV.LOG \
        lIDELIB.LOG n pc xs  w fy e eee \
	-run:testin3.cas -size640x480 
	

---]
What does IDENT stand for?

IDENT stands for Integrated Development Environment for
NASIC Testing.

IDE NT stands for IDE NT.

---]
Spawned rant...

This C64 Full Screen Editor imm is quite impressive,
considering that I whipped this together
in a few hours in order to annihilate my despair
at not having a working direct mode parser.

It's not a direct mode parser, but it's an 'umph' away for being such.

If you've ever used a C64, you'll feel somewhat at home. Aside from
the various modes - quotes, insert, reverse, changable cases, mailmen
who inspire infidelity.. err, kidding about the mailmen. Also, it sorta
ignores you, unlike the C64 which was quick to spout "?SYNTAX  ERROR"
and "READY.".

IDENT:

-Immitates (some of) the look and feel the C64's IDE.

-parses physical screen lines to trimmed (no leading or trailing
whitespace) lines which can be interpeted by a parser of some sort,

-treats your entry as a token symbol, and return the token numer
(if token evaluation is enabled). this is really a very roundabout
process, as I wrote Yet Another Parser to do it, read TOKPARSE.TXT
for more info.

**NEW since 2.1.0:

-responds to RUN and LIST; although so far there si no parament support...

---:
LIST

This command dumps the contents of the PRAM in use by the C-NASIC interpeter,
the numbers printed are offsets from the start.

This is far from complete, but it already confirms that they are bugs in the 
preparser (perhaps I should call it compiler...), and as I work on Second
Impact parsing and m7imp, I should be able to avoid re-creating these (I
consider parse3 and m1imp too broken to be fixed). 

---:
RUN

This simply runs the C-NASIC again.

There's a minor API discrepency (read "known bug") which closes the log file
before this command is executed, but, I worked around this
by re-initalising the parser. 
The consequence is that m1parse.log will contain only the log from the
last run. 
This is fixed in beta.exe, but, that has not been released.
Maybe later.

---]
Inspired druggle...

I lent out my mercy,
but I took it back up.
I lost my vigor,
miltance get lock up

But Now I come with fire and flame,
my rightful place as Lord Granitor to proclaim,
to show this 'C'ness,
who running things,

to breck up Allegro,
decimate the IDE,
immitate the C64,
and get on scruffy.

I pelt way mi mercy,
ca'an find none nuh more,
all bug fi come test,
gun fall pun de floor,

get brek up, rip up,
decimate, frigg up,

I pick up my militance,
like a rocket launcher,
what, a Flying Pig?
torque! fire de heat seeker!

---:

*poink*

---]
What use is IDENT?

To the casual person, none at all.

However, to developers (I guess the only developer who really cares is Chip...)
this marks a milestone, here's why:

-I decimated my incompetence to do this funny looking thing. I've never
koded with such clarity and gusto.

-IDELIB could be used with other things, like a NASIC parser for
Chip's .CBM filen. So it helps porting C64.exe to C. And someday,
to Linux.

-Speaking of porting to Linux, if Nelish feels like it, he can port
screen to Linux , re-implement Refresh and set_rendCharset and
rensetVsyncIt, and we'll be able to run m-spawn on eveybody's favourite
platform

-I nearly sprained my left hand by tossing barbells from one had to the
other, and activity which I find to be very mood lifiting but also
hazardous to my health if done incorrectly.

-It features more modularity than ever before seen in any code I have
ever done. It could be yet more modular, and with m7, I'm tikky to punk
up the koolness of the kode.

-IDELIB is so kool that you can use it in your own projects
and say "gee, this is really kool". It really saves a lot of time and
effort, or, at least, I think it will.

-It inspired me to write some druggle.
(druggle is my demented form of poetry).
Any project which inspires druggle is a Good Project.
speaking of which, I've yet to watch Mikey or The Good Son.

-It looks good even on a monitor with no red gun. This is because it uses
light blue on not-so-light blue. In big friendly letters.

-It hypnotises rare breeds of mosquitoes, allowing you to swat them easier.
[This fact is debatable.]

-parse3.c uses IDELIB (idelib.h/.c/.o). I think this is kool. Very kool.
It is kool because it uses both IDELIB and SMELL :

     in buzzword compliant language, parse3 integrates
     with SMELL and IDELIB, taking advantage of the
     strenghts of both technologies to offer the user
     the optional balance of exectuion ethic.

-It makes me smile. 

-It shows I've risen above my habitual negativity and consequent incompetence.

---]
Using the IDE:

Firstly, I'd like to mention that one would typically exit IDENT
by entering SYSEND on a line by itself. I mention this so much because
nothing else will work, except the three finger salute, or it's
Allegro alternate, Ctrl-Alt-End. Unless you diable the exitprompt ('0' on the 
Command Line while invoking ident.exe), or the gui, you will be prompted to
confirm exiting IDE NT.

In addition to basic C64ish movement commands, including HOME (HOME key),
you can also clear the screen (shift-HOME) and go to the lower-right hand
corner of the screen (END)... it should be noted that C64's had no END key or
similar command in stock config, but several utility cartridges added it and
I got carried away and added it as well.

**NEW sinve v1r0u4: Your entry (which is defined as all text on
the physical screen line which you pressed return on, after leading
and trailing spaces have been removed) is (assuming evaluation is
enabled) checked against TTT (see tokparse.txt), and if a match is found,
then there will be a nonzero TokVal in the log file (idedrv.log by default),
assuming you've enabled token evaluation.

Always put a v for verbosity in there, that echos every entry to the log
file if IDELIB. 

**NEW since v1r0u4 : use e to enable evaluation and another e to enable
logging of the symbol as well as the token value of the symbol taken
as input.

---]
CLAen:
-Command Line Arguments which IDENT takes

IDE NT is more configurable than most recent m-spawn, but as yet is not
on the insane levels of m1. yet.

Note that flags which take arguments ( [...] ) are considered the last
in that argument, so you must put a space to trail the argument if you
wish to have the rest of your flagen parsed. e.g.

        ident t10r30k

would be seen as

        ident t10

but,

        ident t10 r30k

would be seen as it is.

You know, parsing CLAen is becoming somewhat like parsing CAS (C-NASIC)...

Options (-[something]):

-nogui
	disables the new GUI features. a favourite with the kids back home...
	
-notextswitch
	disables a hack I used to ensure my video card didn't put my monitor to
	sleep when I attempted changing gfx modes. this will make switching to
	GUI mode faster, but, it doesn't work for me, so, I enable it by
	default. I believe this is a "feature" of recent versions of Allegro's
	S3 video drivers, but I don't care enough to look into it more.
	
-labbaswitch
	this causes a prolongued (about 1/2 a second) pause and prints
	soemthing to the text screen before switiching to the GUI screen. It's
	one of those totally useless things which I'm fond of producing.

Options with paraments:

-run:[filename]
	runs the given CAS file given after the initalization file has been run
	(see "i"); but before the IDE is invoked. This allows you to try
	running your own .CAS files, or to test the parser for bugs, not like
	you can do much about it, as I didn't release the source, nor is CAS
	that well documneted, and, besides, m1imp is also 
	broken, if not buggy, it certainly looks bad.
	
	e.g. -run:testin3.cas
	
	The testin3.cas fiel represents a test suite, so far, parse3
	consistently fails it in the branching sequences...
	
-size[width]x[height]
	
	*** 
	WARNING: DO NOT USE THSI COMMAND UNLESS YOU KNOW WHAT YOUR DOING
	***
	
	(or, at least, think you do...)
	
	This causes rendlib2 to set the physical screen size as given, using
	Allegro's auto-detection routines. Be very, very careful to specify a
	valid mode, or else, The program will crash. This crash may "leak" into
	other address space, and cause other stuff using the DJGPP extender, or
	Windows (if your running it) to	act strangely. Personally, I think that
	Linux would (potentially) make a better platform for games, due to it's
	32-bt nature, but, I don't really care,	as I have zero love for x86
	arch and the computer industry in general, and will probally use C99 to
	cross-develop games rather than developing for PCs. 
	
	An interesting "feature" of rendlib2 is that this option is ignored
	unless you also disable the GUI (with -nogui, of course).
	
	No sheep were harmed in the addition fo the CLA, however, some goats
	may have been.

Flag/Argument list:

y -
        disable Vsync. This may cause ficker but makes updating the
        screen faster. VSYNC is enabled by default.
	
h[CHAR.ROM image] -
	Change the charset file used; by default, rendlib2 expects 
	CHAR.ROM to be in the current directory. You might want to keep
	your file in a safer place, or you might have an alternate charset...

l[IDELIB logfile] -
        Change the logfile which IDELIB uses from the default (idelib.log);
        not that the driver program uses a different logstream.

d[IDEDRV logfile] -
        Overides the default logfile name of the driver program 
        (ident.log); note that IDELIB uses a different logstream.

i[MCAS file] -
        Overides the default name of the Mainstream Constricted NASIC src file
	used to initialise the IDE. Note that it's the driver program which
	runs loads this program, the IDE is basically just uses Print and
	Inputness.

o[SACAS file] -
        Overides the default name of the Speacially Adapted
        Constricted NASIC src file used to build the TTT and friends.


0 -
	disable exit prompt GUI thingy, implied by -nogui.

e -
        enable evaluation and increase verbosity of driver (idedrv) logging.
        one e enables loging of token values, another e logs
        the symbols as well. a third e adds DMPishism, parsing RUN and LIST and
	stuff. a fouth e logs unresolved symbols to the fray,
	which may be overwhelming for sexually active
        letters of the Greek alphabet attempting to read ident.log!

n -
        disable cursor blinking

w -
        enable WIN keys (LWIN and RWIN) as C= (Commodore) keys.
        This is experimental and does not work exactly like a real
        C64, the graphics are not properly translated. This is
        due to an ...interesting... design decision in the C64, research
        continues.

p - c -
        enable cursor blinking, which is now
        the default behaviour, so, these flagen art
        fair to partly pointless right now.

r[memory size integer]
        just like all the 'm'en since m1, set the size of NASIC RAM.
	For those of you who don't know wtf i'm talking about,
	A singles character acts as a suffix for a numerica value,
	if omitted, the units are bytes, if gives:
		
		K / k 	= kilobytes (1024 bytes)
		M 	= Megabytes (1024 K)
		b	= bytes (the default)
		s 	= 72 bytes; a ChipSpritePage.
		p 	= 256 bytes (a page on 6502-based machines, like the
				C64)
		P 	= 4K (a page on x86 boxen)
        This time, it's the RAM used by the initalisation routine.
        Soon you may be able to load programs and stuff there as well.

t[memory size integer]
	set the size of Tokenizer RAM. YOu'd better know what you're doing
	before fiddling with this...

v
        increase verbosity, but so far only 0 and 1 are different.
        A natural ( greater than zero, no fractional components)
        level of verbosity causes your entries to be logged to
        the logstream.

f
        enable fast redraw, which uses dirty rectangles to update only
        the part(s) of the screen which changed.

s
        enable slow redraw, which updates the entre screen in one blit.
        this isn't as slow as it sounds because, unlike m1, the graphics
        bitmap is not rebuilt from the screen matrix at this time, but
        rather, each operation on the screen matrix is immediately
        reflected in the screen buffer thingy.
        Slow redraw (or, full-screen reblit) is the default mode.

---]
Required filen:

For use of ident.exe:

obviously, ident.exe itself,

INITIDE.CAS ; a C-NASIC src file which initialises the IDE;
CHAR.ROM ; the "Guiness" of m-spawn; rendlib needs this.

For development:

read tokparse.txt for some info on the token parser.

I'm really focused mroe on improving my kode, and, m7 is far below
what I'm capable of, in may ways. It works, yes, and it's even 
somewhat stable, however, those are secondary concerns. I'm trying various
things, such as obscure C functions (well, obscure to me) and so on.

I have a lot of stuff to read and try. It will probally take me years to 
feel competent in C. However, before that, I'll have at least started C99.

This is because C99 is much like a commercial project in that it's more
important to have soemthing "out the door" than to have soemthing perfect. 

The C64 wasn't done overnight, and they are many bugs and loads of missing 
features, even the C65 prototypes are incomplete (C99 will surpass C65 in 
many ways, although 1280x400x4bpp resolution might not be one of them...),
also, what I have in mind is quite formidable and ambitioous, the sort of thing
ppl spend their whole lives doing (I don't intend to, however, as I'd like
to spend soem more time on the beach...).


---]
Roadmap:

IDE NT is now the main project of m7; 
eveything else is merging into this.

As far as the user is concerned, the NEXT BIG THING will be
a fulline parser;
-this will allow Direct Mode! Almost...

logical lines rather than physical lines;
-this will allow typing, well, longer than 40-column lines.

A C99 or C64 Token-based Parser;
-BASIC2 is expected to be the first of these,
partly as I want to have Island Of Secrets up and running properly
A.S.A.P., partly as I want to kode in BASIC2ish, and partly as I
want to make a kool NASIC parser. There's more reasons, 
Including supporting Chip's .CBM filen and writing and Judge's Calculator
for an RPG I designed (but never properly played... 
I have over 30 pages of docs 
on it, but I think that playing it using pen,
paper, and dice is insane and tedious,
thus, it was never done). 

---:
Also, there's already a conceptual fragmentation between
C64 imming, C99 imming a C64's IDE and stuff, and C99 native mode.

C64 imming approaches emulation, if you want to emulate the
hardware ragisters and such like.

C99 imming a C64's IDE and stuff involves leaving out POKE and
such, but just looking like a C64 from a distance, enhancing BASIC by
adding in some commands to make things possible. (like COLOR).
I think maybe the C65's native mode would be like this.. BASIC 10 or
whatever...

C99 native mode would be capable of running Samauri Showdown, at least
the original, but 4 would be good, too. That is, if SNK were to port it
or if some nut were to write it for C99 native  mode.

I'm personally more interested in enhanced and native modes of C99,
legacy mode (which borders on C64 emulation) would also come in handy
but is not a big priority for me. Hopefully, all will go well and
I'll be able to point out the advantages of doing enhanced mode first
later on, but , for now, my C99 project hasn't yet begun, I'm still
working on M, the forerunner.

---:
Oh.. Variables.. to be added to C-NASIC (possibly)...
I guess they're important but I haven't bothered to do them yet.

Also, note that I'm just kidding about sacrificing chickens...
Christians who find the idea revolting should, however, read the
Old Testamant, and take note of the copious amounts of blood
sacrifices required at that time. Also of interest, and of obscure
relevance, is Isaiah 30, which is an interesting rant-like thing
(although all of Isaiah reads like a rant...), worth reading IMHO.
Egypt had great technology, you know... there's still great debate
as to how the pyramids were built...


---]
Legal Stuff

Not for commercial use, no warranty. I'm not liable for anything, not
even the effect(s) of reading this document. All code is (C) me, 
but may feature algorithms (C) Chip. Used with permission.

---]
Hails / Thanks:

Master Chip, the Inedible Menacial Laughing Koder!
        Chip is simply inspirational, and (this is a scary statement) the
        most stable of the Koders Three, in the sense that he kodes
        with more consitency. He's seldom stopped koding altogher,
        due perhaps to knowing QuickBASIC, some C, and having interest in
        AI (and working AI programmen), and thus having a variety of 
        alternatives when faced with a problem.

Sir    Nelish Batel!
        Nelish is great to discuss the more obscure points of existance with,
        as well as the theory behind the kode. And indeed, behind anything.
        Plus, he started me doing that
                if (... )
                {
                        ...
                }
        thing, before which I used to just if (...) ... ; which is bad
        practice and caused no end of problems when I tried to change
        stuff and forgot what was in or out of the if TRUE scope.

Lord   TWood:
        TWood lives in Barbados and is busy studying for a degree in
        computer science... I mention him because he expressed some interest
        in Allegro, and I might want to muhahahaha at him someday.
        Besides, he writes code, although he isn't an aspiring TaoKoder.

Koolest Guy nusteer:
        nusteer is a funny looking guy from FEFnet #jerk, which is now
        agog #jerk (irc.agog.net , or vvm.agog.net). He does C++ in school
        similar to TWood, I guess, except he lives in NY and not BIM.
	He told me Rushmore was kool, and, indeed, it was...

Deity Morpheus:
        Besides having his very own irc server (vvm.agog.net; aka vvm.fdf.net);
        Morpheus is an all around kool guy with an interest in
        videogameness, which is also part of the reason for me
        and Chip doing C99 (Chip wanted to clone an old C64 game,
        and I wanted to clone evey old C64 game ever made... when I
        grabbed hold of reality a bit I decided to settle for
        making a genric game developmennt environment and perhaps
        descimating Verge in the not-so-distant future... Verge is
        a kool concept but I don't like VergeC and the code is unstable,
        as the devlopers said on their page (http://www.verge-rpg.com/)).

Faery-Princess Dopey:
        Always complaining that I never mention her on my webpage (despite
        me never metnioning anything non-kode related on my webpage),
        'dopes' is nevertheless a brillant person, in mental capacity and
        intensity of personality. I could go on, but as she'll probally never
        read this file in any case, thus it seems fairly pointless...

And many more:
        I don't feel like typing anymore today, refer to statement about my
        left hand and barbells.

---]
Contact Info:

email   : granitor@geocities.com (personal) ; c99@mail.com (C99 related) 
url     : http://www.geocities.com/SiliconValley/Lakes/2658/

---:
Links:

C64info :

        http://www.c64.org/

VICE, the best (IMHO) C64 emulator, as well as emulators for other
Commodore 8-bitten boxen :

        http://fripp.hrz.tu-chemnitz.de/~fachat/vice/

DJGPP:

	http://www.delorie.com/djgpp/
	
Allegro:

	http://www.talula.demon.co.uk/allegro/

Sex :

        http://www.sexuality.org/

News for Nerds :
        
        http://slashdot.org/

New kool programs and stuff :

        http://freshmeat.net/

---]

[[[MooFoxyDinkle!!!
