Picture Integrated Development Environment v1.0

(If you can figure out when I wrote this FROM THE TEXT, e-mail me!)



Program: Picture Integrated Development Environment (PIDE) v1.0
Size: 7613 bytes
Category: TI-83+ Silver Edition BASIC Graphics Programs
Purpose: Picture Editor/Drawer
Author: Andree Chea
E-mail: kryptic_89@yahoo.com
(E-mail me your thoughts about this program, please!)

Table of Contents
====================
*Introduction
*Features
*Installation
*How to use
*Recovering your picture after an error <-------IMPORTANT! READ THIS!
*Legal Stuff
*Bugs
*Future Versions
*Version History
*Credits

Introduction
====================
Thank you for downloading this file. This is my FIRST program that I have submitted to ticalc.org attempting to FAR outdo other picture editors (Also my best and most complex). A huge group file (about 7.6k or so) gives you MORE drawing options than the TI-OS gives you, and MORE THAN ANY BASIC picture making programs so far! It is possible to put everything into two to three programs, but it is very inefficient and subprograms are the fastest possible way to use it (excluding ASM). This is for the SE because it "lags" on the regular. Of course, you can still put it on your regular 83+, it just won't be as cool :)

Features Include (But never limited to)
========================================
Some Safeguards (not all) - To prevent possible errors
Free RAM checker - So you can see how much Free RAM you have
Save/Load to lists - So you can have more than 10 pictures
Line/Rectangle/Circle/Triangle drawing - So you won't get annoyed by drawing them with the pen
Draw Big Font - Draw big font on graph screen (previously I didn't know this because it wasn't documented in the TI-83+ Guidebook, until I read the code of PicFunc!)
and MUCH, MUCH, MUCH more...

Installation
====================
Simply send PicIDE.8xg to your calculator, then ungroup (2nd, +, 8, Ungroup, scroll to PICIDE, enter)

Included Files in PicIDE.8xg (Make sure you have ALL of them)
CALLPIC.8xp
PICIDE.8xp
STOREPIC.8xp
(
theta)CURSOR.8xp
(
theta)DESIGNS.8xp
(
theta)ERASE.8xp
(
theta)INVERT.8xp
(
theta)MORE.8xp
(
theta)OPTIONS.8xp
(
theta)PEN.8xp

For best performance, you should have nothing else in RAM, which leaves you 16k free, 6k (probably more) which is used by the Clipboard function. So you have approximately 8k for picture storage (or for other files).

How to use
====================
When you execute PICIDE, you will see a title screen. This is the only screen where you can check your Free RAM. If you have less than, oh... about 1k, it is STRONGLY recommended that you free up some RAM (consult manual for how-tos). If you don't, you will receive the annoying ERR: MEMORY when you do stuff, especially the Clipboard function. Next is the PicIDE Main menu. Here is where you Save/Load, Make New Pictures, Preview, go to the Picture DE Options, and Quit. For now, select New Pic. In the future, if you have pictures saved, select Load Pic to load them. After you have selected New Pic (or Load Pic), you will be greeted by the Picture IDE Options Screen. Everything in this and subsequent menus is self-explanatory, just e-mail me if you don't understand anything (sorry I didn't include a better GUI, it would have made the program very large, close to 10k, probably more). Press CLEAR while in the graph screen to return to the previous menu. To save a picture, select Save Pic (duh).

One note on cut/copy: The matrix that this function uses gets HUGE really fast! I mean HUGE 5k+ HUGE! Make sure you have at LEAST 6k of RAM left before attempting this!
For the programmers: If you know of a better algorithm, please contact me! I DESPERATELY NEED A BETTER ONE! AND DON'T YOU BE STEALING MY CODE EITHER! ;)



/**********************************************************************
WARNING: It is NOT recommended that you save to Pic0 because it is used by the program. You can only save to it if you will only be using the pen or eraser. If you go to Clipboard, More Options, or Designs, Pic0 WILL BE OVERWRITTEN!!!
**********************************************************************/

Superimpose: "What does that mean?" you ask (yes, it is another feature). When you load a picture (not a list), it will ask you whether or not you want to superimpose. This means, "Do you want to put the put this picture on TOP of the current one (choose yes), or just load that picture only and erase the current one? (choose no)"



To sum it all up: Explore, draw, and most of all, ENJOY!

Recovering your picture after an error
========================================
If you get an ERROR, whether it be a DOMAIN (this one should be fixed), BREAK (ERR: BREAK is caused by someone pressing On...), or the dreaded MEMORY (Free RAM...), you are at risk of losing your Vahn Goh masterpiece ;D. If you get such an error, follow these steps to recover your picture.

1) You may re-execute PICIDE to recover your picture. However, RECOVERY IS ONLY 100% GUARANTEED IF YOU RE-EXECUTE IMMEDIATELY! So there is a slim chance that you will lose your picture if you go exploring your calc. If you want, you can save it to a picture file...
2) Follow these keypresses: 2nd, Draw, Sto, and select StorePic.
3) You should be at the homescreen with "StorePic" on the next available line.
4) Input a valid picture #, 0-9, and press ENTER.
5) The picture will be stored into the picture you specified, unless it was Archived, in which you must UnArchive it and go back to step 2.
6) Now you can safely re-execute PICIDE and load it (it may Error Recover, in which case, load your picture)



Legal Stuff
====================
By downloading/using this program, you agree to not hold me responsible for any damage that my program may cause.

I do not know why anyone would do this if you can just e-mail me, but you are NOT allowed to distribute a modified source without MY permission.

Bugs
====================
As great as this program is :), there are still bugs in it. Some of them are fixable, some are not. Some are dangerous, most are not. A few may crash, most are not. None are life threatening, all are not :D (couldn't resist). If they are fixable, I haven't fixed them because I am too busy, it is too complex, it will slow drawing time, or I am just lazy :). Below are the ones I have found.

(Cut/Copy) - ing large areas gives ERR: MEMORY (Fixable = Yes)
    -Don't do it
    *FIXED! Added a safeguard, but don't rely on it.
Superimpose does NOT work with lists (Fixable = ?)
    -Doesn't work yet (Maybe ASM?)
Loading Lists doesn't work the first (sometimes second) time (Fixable = ?)
    -After load, reload again (there will be a reminder screen for your convenience)
Loading Non-Picture List (i.e. lXY or lSAVE) might crash (Fixable = ?)
    -Don't do it
Free RAM is off by about 131 bytes on my calc (Fixable = ? (In MirageOS it is perfect))
Displays random character after "...to continue" in intro (Fixable = Yes)
    *FIXED! ...Or so I thought...grrr...(if you can fix it (MemCheck.z80), please e-mail me! I am stumped!)
    -As a workaround, resend MEMCHECK.8xp to your calc if it gets annoying
Pixels Turn On/Off at random in More Options and Designs Screen (Fixable = Yes)
    -Just draw them back with the pen
    *FIXED!
Pressing On exits without deleting junk variables and resetting graph screen (Fixable = Up to you...well, not REALLY a bug)
    -Don't press On. Instead select Quit
    *Will be fixed in ASM version
Pressing any key besides On, ENTER, Clear, and Mode while drawing will draw that pixel (Fixable = Yes)
    -Don't do it
    *FIXED!

Found more bugs? E-mail me at kryptic_89@yahoo.com so I can fix them and personally send you a copy.

Future Versions
====================
I plan many future versions as soon as I obtain the skill, time, and dedication.
They are listed in order of priority:

More SafeGuards (Especially Text)
   
-DONE! Added Text Safeguard (Fixed ERR: DOMAIN) and others
Various Optimizations (I had 2 Options: Larger size but faster OR Smaller size but slower) I settled for the former. Maybe I can have it both ways!......Nope, only in ASM. Optimizing is still definitely a possibility)
   
-Actually, I was able to do this! Two days later, I shaved off 800 bytes and it is a little faster!
May compress all cursor movement into one program. (Could potentially save 600 bytes, maybe more!)
   
-DONE! But it wasn't 600 bytes, only 200 :(
May implement other shapes (e.g. triangle)
   
-DONE! Added Triangle
As a comprehensive PIDE, it should have the basic cut/copy/paste functionality
   
-DONE! Added Clipboard, but 800 more bytes with it ...must...have...better...algorithm ;)
Program will automatically exit if you have less than 1k of RAM.
Program WILL EVENTUALLY be written in ASM for MirageOS! With a GUI!
   
-After this BASIC version is perfect, bugless, and fully optimized, though

E-mail me at kryptic_89@yahoo.com if you have more ideas!
(No, I do not think I can efficiently program an Undo/Redo function)

Version History
====================

(If it explains anything, it was the days of the finals where there was no homework, "studying" (heh...) for finals was a priority before winter vacation, and being extremely bored with 30 minutes to kill in each class after finishing the test got me to bring out my calculator and draw (not to mention play games!))

20031217
-Started PicIDE
-Had a primitive, but working version
-Only save/load pics, eraser, pen, primitive circle, primitive small text, and primitive invert

20031218
-Added More Options and Designs Menu
-Added Save/Load Lists
-Various Bug Fixes (too numerous to list here!)

20031219 Size: 7672 bytes
-Added Free RAM Checker
-Added Mode Functionality
-Various Bug Fixes (too numerous to list here!)

20031220
-Moved Fill from Designs to More Options Menu (It just makes more sense, does it not?)

20031221 Size: 6646 bytes
-Removed Erase Whole Screen (I mean, come on...erase screen?)
-Completely recoded Pen, Eraser, and Invert by pixel
-!I LOVE IT!- IT FIXED A TON OF BUGS, THE SIZE IS SMALLER (about 800+ bytes smaller), AND IS A LITTLE FASTER!
-Various Bug Fixes and Optimizations (about 200 bytes less)

20031222 Size: 6762 bytes
-Added Superimpose
-Added Error Recovery
-Compressed all cursor movement into 1 program (about 200 bytes less)
-Added Flipping

20031223 Size: 6653 bytes
-Added Triangle
-Added Safeguards
-Removed a block of unused code (120 bytes)
-By simply changing my variable names from X, Y to A, B and removing the now irrelevant code that was relevant to X, Y, I saved another 120 bytes!
-Optimizations here and there

20031224 Size: 7418 bytes
-Added cut/copy/paste functionality w/safeguards
-Optimizations here and there

20040101 Size: 7613 bytes
-Added Triangle Flipping (200 bytes)

20040105 Size: 7613 bytes Version: 1.0
-First Public Release :) Hopefully bug free

Credits
====================
Special thanks goes out to:
Brad Wentz for his Graphics Drawing Program that I learned from. Without his program, mine would not be half as decent as it is today!

Others in no particular order:
Andy Patterson for his PicFunc Drawing Program that I learned from
Joris Gillis for Custompics, allowing pictures to be loaded/saved to lists
Sean McLaughlin for his Learn TI-83+ Assembly in 28 Days tutorial that I am currently reading
You, for downloading this file and taking the time to read this Readme
and lastly, I, Andree, for writing my VERY FIRST ASM program, MemCheck.8xp :) (Source is included!)

As a reward for those who actually read to the bottom of the readme, I will reveal another feature (I told you that there would be more ;) Pressing Mode when in "Neutral" Mode (pen, eraser, invert by pixel, fill area, and Design Options only, sorry not More Options Menu) will allow you to move the cursor by 5 pixel increments.

Any questions, comments, problems, criticisms? PLEASE send them all to:
kryptic_89@yahoo.com

And once again, thank you for downloading.