TO DO LIST & HISTORY OF COMPLETED CHANGES Assad Ebrahim 2020-08-15---Sat---10:32 \ ================================================================= \ TODO Feature: Mazes! Shifting mazes Save Diary Maze creation (2 functions) Can't cross a black pixel (walls) \ BUG (SUBTLE!) \ Files saved with an old version of turtle logo will not be editable when the menu/screen layout changes! \ Saving screen should ONLY save user coordinates and plot those! (If user coordinates shrink, then decision what to clip: top/bot) \ TODO Update menu system STREAMLINE: TO DO: may need two local-fgbg's, one for the menu system, one for the turtle's painting... set-paint-color -- sets the turtle-fgbg everything else sets the local-fgbg pure-color set-fgbg currently local-fgbg is for repetitive paint jobs: fill-screen, border painting, string writing, etc. STREAMLINED: simplifying the character emit portion of the code giving [poke-pixel] a wrapper that works with a local copy of fgbg to take all the noise out of the stack management with 3 params rationale: color is not changing with every pixel poke, but infrequently. rest of times just follow along. So best to take it from a memory cell local-fgbg cmove+ variables vs. create byte or create 2 bytes \ TODO: POTENTIAL Bug associated with rec-paused... (diary) Sort out simplification of coordinate screen. Do I need to add a 4th menu row to add more commands? eg G and W? FEATURE: Sound for battleships, and if ship is sunk... FEATURE: Games --- battleships FEATURE: Games --- Warmer colder: randomly choose a location in the screen and every (5?) steps turtle makes system says warmer or colder or same \ TODO: FEATURE: Fill all pixels of a given color with another color... (jasmine) BUG: Splash screen leads to multiple reloads if not waiting all the way FIX BY integrating the splash screen show as part of the startup, i.e. not relying on Irfan View! BUG: Allow loading not aborting even if the quit.scr or save.scr are not found CLEANUP: Streamline, simplify, compress - full review FEATURE: Log save and load the skills files BUG: Allow go-home to be recorded FEATURE: Save screens to 001 002 etc if prior ones already exist FEATURE: Undo / Redo --- pressing U again should bring it back in toggle form. FEATURE: Undo tree / Redo tree FEATURE: What would this look like in 64K pixels (320x200) CGA model? DONE - FEATURE: To teach mathematics of cartesian coordinates, command G to show the position in X,Y from lower right with math convention DONE - FIXED - BUG: Color for the text option defaults to purple all the time DONE - FIXED - BUG: Why are the load/saved files .qsc and .ssc instead of .qscreen and .sscreen ? I thought DOS allowed 8+3 characters in filenames? The . means only 3 chars were allowed. \ CODE REVIEW --- search ??? \ ** Feature: Record to file: Lot of options \ - a) record picture to file when saving... \ - b) record all key presses so can quit, restore, save, undo full stack, re-do, and reproduce anything without saving a picture. \ - c) when quit write session to file --- diaries, keypresses, everything. \ - d) when clear screen write session to file \ - e) will need a load file functionality \ - f) write macros to file \ - g) load specific macros to specific skills. Allows user to load previous creations, e.g. trees, flowers, birds, sun, house. \ - h) save with name, and side panel shows all skills that are known and one can load them into current skill, e.g. one sees: house, bird, flower \ Feature: Clever algorithm that removes opposite moves, i.e. F B with nothing in between is cancellation. So it removes that. This leads to smaller records. \ Feature: Save picture, screenshot, or generate print-out \ Feature: save screen to disk, load from disk \ Screenshot: to png \ Feature: Save and Load files \ Also allows creations to be shared and a community of users to be formed. \ Status bar prompts for save to file, load from file, etc. \ Feature: Save diary to file for load / unload. Enter instructions on text to load into a specific skill. Maybe type it in? Maybe auto from website in logo format? \ Feature: View & debug macros. Review macro recording instructions, and be able to edit... (programming and debugging instructions!) (M mode) \ Feature: Keyboard shortcut list (K mode) -- pulls out a side panel that then goes away. **\ Usability - Make the SKILL number highlighted and long with the [N] in new skill OR have it [S]kill #X \ Feature: Consider: support recursive macros (calling themselves?) ** \ Feature: Add L for loop -- and you enter how many times to issue that instruction. (L mode). Can do it stepwise (with press any key). This is the start of robotic navigation programming. ** \ Feature: Add coordinates to status bar (useful for geometry). Turtle is at 0,0, and he moves into the 1st quadrant. (G mode) (Geometry mode) \ Feature: display numbered grid (numbered rows and columns according to elementary math convention: H is the origin (0,0) then positive to right and up) \ Feature: show coordinate location (trouble shoot with .s on status bar) \ DONE - Feature: 'x' to toggle to text mode, to allow adding text in direction of cursor. Possibly an auto-date feature when saving the picture. \ DONE - Feature: Allow putting letters on the screen \ Feature: Have turtle prompt children for certain things. \ Feature: built in exercises -- shows screen, then asks child to replicate it... \ Feature: allow full-screen view - without menus (just the turtle) - or just taking the picture without the menus. \ Feature: read in a saved Turtle png and essentially digitize that using turtle (as a way to load files) - basically rasterize turtle's movements using penup, pendown, and color search! :) image processing... \ Usability: Think through how colors should work with going forward, backspace, penup, i.e. what is painting, which square, etc. \ Usability: Think through which pixel should get colored, etc. Issue is 2xF creates a square that is 3 pixels high. \ Feature: design a random maze generator \ Feature: Port to the Raspberry Pi, Arduino, or 8052. \ How big would this program be in assembly language removing all the graphics bits but just retaining the "do turtle" bits with stepper motor control? \ Port to Android! (keys will make it harder) Maybe bluetooth keyboard. Other zigbee connection with computer so one is controlling remotely with computer keyboard. \ Stepper motors \ Sensors (bumping into) \ Feature: Port to 640x380 graphics mode screen instead of text mode (see fire.asm) \ Feature: Re-mapping the keys to use mnemonics from a non-English language, or extend to create a multi-lingual learning environment \ DONE - PARTIAL DONE through vDOSBox - Feature: Port to windows via Win32 Forth \ Feature: voice control of the turtle \ Feature: sound feedback. (chiptune if level reached successfully?) \ Feature: speech synthesizer? \ Feature: Add ability to animate, e.g. the splash screen images ** \ Feature: Build splash screen directly into program instead of through Irfan View... \ Feature: Demo mode where it shows cool drawings... [D] ** \ Installer: Tell the user where the installation is going ** \ Installer: Add desktop shortcut, and start-menu placement. \ Application: barack obama ascii art portrait. \ FEATURE: [m] maze - sets up random walls creating a maze for turtle to pass through \ **FEATURE: two player turtle race \ FEATURE: have the undo take a snapshot of itself in case of re-do... \ DONE - CODE REVIEW - simplify the menu writing!!! it is too complicated as it stands. Use the tester code write-string \ USABILITY: [S] should also save turtle's heading? (currently doesn't) \ DONE - BUG: turtle-resume does not fully refresh all the menus, just paints the screen, so can end up with a menu being pasted. refresh menus. \ FEATURE - timer in the main engine every few seconds to ping, I'm ready! Are you there! Where should we go today? \ CODE REVIEW: streamline use of setter code with create, does> (all setting can be simplified with create-does> it is like a button). \ USABILITY: make welcome screen background white with blue text? (requires write-text for each line) \ USABILITY: auto save-point before macro so that if it goes bad can undo the whole thing (including nested macros) \ FEATURE: not pausing macro recording means that one could record the key presses... so one could consolidate macros in this way... \ FEATURE: add looping [L] 10 (see temple of doom) \ BUG: why do skills print with extra newline between some (see-diary) \ FEATURE: save diary to file when quitting... load diary to file when starting... (that way a bit of file archiving can preserve diary fields, and editing \ USABILITY: write the welcome so a 6 year old can understand it! (right now it's adult oriented) \ USABILITY: publish a tear-out cheat sheet \ FEATURE: animation \ USABILITY: allow recording in text mode, including the text... \ FEATURE - Provide exercise book \ FEATURE: color code diaries to show if full or not (diary-pos != diary-start). Prompt - overwrite? \ USABILITY: should white be removed from the color cycling? White is the background... Is it also useful to paint in white? Perhaps. \ BUG: fix launching of screenshot after installer finishes... \ FEATURE: text mode cursor should be lit differently (like pen-up) do it opposite so that the background is consistent with the colors... \ USABILITY: multiple warnings: McAfee, Windows Defender, etc. on even running the installer! \ IDEA - random dispersal of pixels on the screen, and then turtle has to find way to top right corner without hitting any pixel, using automated search/find algorithm... great for algorithm coding \ WHEN SKILL FULL - it is not OBVIOUS ENOUGH INTERRUPTION - make it press specific key to continue \ strip out as much of F-PC as is not needed but still able to run turtle-logo \ DONE - NOT AN ISSUE - BUG: skill 7 and record 7 flashes and puts cursor somewhere else (recursion not yet fully protected...) \ Working on: providing write to file functionality (did screen save, next is skill save, then screen load, then skill load) \ USABILITY - invert the colors --- so if background is black, then is black, not the turtle color. DONE - fix pen-up inversion DONE - fix red and other glaring inversions \ use sprites to do animation \ files - if exists, save to #2, #3, and so on. \ Design - should the code design be -- set state variables in processing command, and then execute against all state variables and refresh screen and menus once? It's less efficient and not targeted code, because the actions are diffuse from the trigger. \ SPIN-OFF GAME IDEA.... requires removing the safety catch that turtle cannot move invisibly. \ Game of battle-ships ---- ship is moving then suddenly disappears -- each child has five keytaps allowed after that (can include skills). \ Other child has to deduce where the ship is, but can look at the skills involved. \ ?? should I put the visibility safety catch on or off ?? off means that turtle in pen-up and invisible mode can move around at will without detection -- cloaking mode combine with numbered grid and we have a geometry learning tool. \ operating in cloaking mode shows the laggy bug for turning \ usability fix - cloaking mode on should make turtle invisible and put-penup ... :) --- needs to be independent states... \ need to put a menu explanation of 'z', in help screen, and show on the menus dynamically... \ home needs to respect visibility state... \ NEXT TO DO: log text mode... with all keys... DONE - FIXED: pressing 1 when recording 1 DONE - FIXED: overwrite msg - better text To do: switch to using BIOS interrupt calls for read/write rather than the super complicated F-PC setup. \ ================== \ USABILITY - for large diaries, show diary commands one page at a time \ FIXED - BUG: when clear screen, menu3 not refreshed \ FIXED - BUG: when recording, if same skill is indicated, stack increases by 1 \ FIXED - USABILITY: when memory is full - print notification on the screen \ FIXED - USABILITY: when switching to text mode -indicate that on menu (highlight) \ FIXED - USABILITY: When in pen-up mode selecting text mode should put pen down \ FIXED - BUG: When in drawing mode, Text-mode-off should do nothing. \ FIXED - USABILITY: When in text mode should show cursor so clear what direction the text will be appearing \ FIXED - Clear screen leaves color square when cursor is on top of a color square. ========================== COMPLETED \ DONE - FEATURE: show full diary \ DONE - FEATURE: text commands for full diary e.g. F F F R R L L B B B \ DONE - FEATURE: \ The primary key will get recorded into the diary, not all variations \ DONE - Feature: Undo (one instruction is not too helpful because it's usually one movement step) so undoes from explicit save point \ DONE - Usability: how to prevent accidentally pressing record and overwriting previously recorded macro? Prompt with "Are you sure?" --- That skill has already been used, are you sure? And pull out the skill code... \ DONE - FEATURE: Move both menus to bottom of screen \ DONE - FEATURE --- [N/P] next / previous skill. \ DONE - NEXT: FEATURE -- Notify if diary is used and question if want to overwrite. \ FIXED - BUG: pen up ESC (clear screen) leaves grey square in home position - shouldn't do that! (cache-pixel) \ FIXED - BUG: diary seems to not restore? instead of start fresh? ccccccc instead of ccc (skill 8) Weird - how is a diary signaled to be completed? \ Answer: t is saved pointers not terminations. This is example where null termination would be better way - \ a) no need to initialize, proceed to null-termination when running and when printing... \ DONE - Bug: Add second class macros (macros that call themselves) -- why does this not work? \ FIXED: BUG: Only 1 level recording nesting is allowed? So can't do (1,1), (2,2,2) and combine into (1,1,2,2,2)? (Yahtzee feature) \ DONE: Feature: Allow higher level nesting in which macro calls other macro (but ok still not to have recursion, i.e. macro calling itself which is expressly forbidden) \ DONE: allow nested recording of macros (i.e. record macro numbers so macros can be nested within other macros and all played back -- BUGGY - need to maintain a recursion stack for reading the macros back ) \ FIXED: cannot do recursion (i.e. cannot record macro calling itself) \ DONE - Feature: Add save and restore keys -- maybe make automatic save just before playing a macro. So can undo if press the wrong one. \ DONE - Feature: save and then restore, i.e. in case of a catastrophic error! write to file. \ DONE - Installer: Can DOS Box start up with the splash screen? vDOSbox can play 32 bit files, so using IrfanView in slideshow mode as a simple screenshot. Later - do this in Turtle Logo itself... or VGA mode, then switch back to text mode. \ FIXED - BUG --- diary 9 is always full... \ DONE - !! CODE REVIEW: writing text to screen or menu should be simple and uniform provide text ( ptr nchar), location, and fgbg color -- then write to menu !! \ DONE - !! CODE REVIEW: simplified string writing with uniform words for all fields. \ DONE - TO DO -- consolidate the fixed width string structures into a single data structure... should it take strings from the input stream and build the structure dynamically? \ DONE - use WORD to simplify the other string structures AND create> does... \ FIXED: 16 levels of nesting are allowed. \ One level nesting of recordings is allowed, but not higher level and not recursion. LIMITATION (BUG) - only 1 level nesting is allowed?? \ Nesting: i.e. play-macro instruction is logged if recording without playing; else play. \ Recursion (not allowed): Won't log instruction to play macro when record-to diary is same current active diary \ First class nesting --- combining instructions and macros containing only instructions (first class macros) - ALLOWED \ Higher level nesting --- combining macros that themselves contain macros. \ DONE - FEATURE: [s] save and [u] undo. \ FIXED: BUG: first undo without saving presents black screen -- have it at least show initial screen (like clear screen). refresh menus after undo. \ FIXED: BUG: undo leaves cursor residue at last point and cursor remains at current point (cursor should be at last point as well...) needs a real undo function... \ FIXED: BUG: need a separate pic memory for saved screenshots independent of drawing preservation \ DONE - FEATURE - writing to screen. press [0] to flash Hello! where the turtle is for a few seconds and then restore screen \ DONE - FEATURE - emit text to screen. press [ to emit text and ] to stop text mode. \ DONE - BUG: fix the cumbersome safe cr constructions by using write-string instead! \ DONE - USABILITY --- let the child doing recording press ESC and it terminates recording safely. Similarly for other current forbidden actions -- i.e. don't force the child to worry about parentheses at this age :) it's just frustrating. \ DONE - FEATURE - add menu3 with more instructions. S/U - save/undo [ ] start/end text mode 0 see diary g greeting key