}* PICBOOK.TXT, USEFUL PROGRAM IN LISA GJ2 FIC3 WRITTEN BY }* }* ARISTO W.LAH, NORMAL YOGA4D CFDL, 2011:3:12 }* }* ***F3 TUTORIAL NOTES OF VARIOUS KINDS: }* }* FOR THOSE WHO ARE ENDAVOURING TO LEARN LISA GJ2 FIC3, }* }* YOU MAY WANT TO NOTE THAT THE OUTPUT FROM GJPFILE2PM IS }* }* HERE (UNUSUALLY) USED TO GET THE INFO OF WHETHER THE }* }* FILE EXISTED; THAT, IN PROGRAM SHOW-ALL IN HERE, THERE }* }* IS THE APPRECIATION OF SPEED FOR FASTER LEAFING IN THAT }* }* A KEYTOUCH CHECKS ON WHETHER A KEY HAS JUST BEEN CLICKED }* }* AND AWAITS PROCESSING (BY KEYNUM); THAT, IN THE SAME LOOP }* }* YOU FIND AN EXIT FROM THE LOOP BY THE SIMPLE PHRASE }* }* N2 => >N1 WHICH SETS THE COUNTER TO THE COMPLETION VALUE; }* }* AND THAT PROGRAM COMPRESSED HERE COUNTS EVERY SECOND }* }* PIXELS NOT BY A INCN1 BUT RATHER BY, IN THIS CASE, USING }* }* THE NUMBER TWICE. }* }* * NOTE HOWEVER THAT KEYTOUCH ONLY REGISTERS ON A SET }* }* OF KEYS -- ALL THE CTR-KEYS AND LETTERS AND DIGITS ARE }* }* SAFE BETS, CHECK ON EACH OF THE FUNCTION KEYS FOR THIS. }* }* * YOU MAY KNOW THAT ISPRO CHECKS IF A NUMBER }* }* IS DANCE (IE, 1) OR ABOVE. SO DOES AFFIRM BUT IT }* }* IN ADDITION LEAVES THE NUMBER INTACT IN JUST THESE CASES. }* }* *NOTE THAT T AND ITS SYNOMYM TEST IS LIKE EQN BUT }* }* THAT IT LEAVES THE NUMBER INTACT WHEN NOT MATCH, FOR }* }* FUTURE TESTS, SO THAT YOU CAN DO EQN ON THE COMPLETING }* }* TEST. SIMILAR FOR TEXTS IS TEQ AND EQ. }* }* NOTE THAT BOTH TEQ AND EQ AUTOMATICALLY CONVERTS }* }* TO UPPERCASE FOR THAT WHICH IS CALLED 7-BIT ASCII, WHICH }* }* INCLUDES THE ALPHABET abcdefghijklmnopqrstuvwxyz. }* }* THERE ARE IN THE MANUAL SOME TXT EQUAL ROUTINES WHICH }* }* DO NOT DO SUCH CONVERSION. }* }* *SOME PROGRAMS ASSUME FOLDER NAMED SAME AS PROGRAM }* }* BUT WITHOUT SUFFIX, AND WITH GJP-IMAGES NAMED ONLY 1..NN }* }* (GOING FROM 46.GJP TO 48.GJP TO AFFIRM HEALTHY NUMBER OF }* }* CHROMOSONES), AND TO ACCESS SUCH A FOLDER, CALLED E.G. }* }* GAME6, PRESS HOME THEN TYPE GAME6/ AND ENTER. }* }* THE FIRST ONE SHOWN WILL BE THE SLIGHTLY NONSENSICAL }* }* AND (SHOULD BE) NONEXISTING GAME6/.GJP BUT THIS IS }* }* NORMAL, AS UPPER LEFT PHOTO IN FIRST PAGE IS FREE FROM }* }* NUMBERING. YOU CAN LEAF QUICKLY AND PRESS PgDn/PgUp }* }* FAST FOR REFRESH OF PRESENT PAGE, WITH ARROWS AND ENTER }* }* TO SHOW ALSO IMAGES NOT REFRESHED. USE MEDITATIVELY, SO }* }* THE BRAIN DOESN'T GET HYPNTOISED BY LARGE ALBUMS. }* }* *IT IS A GOOD IDEA TO AVOID TOO MANY REFERENCES }* }* TO THE WORD 'DOWN', AS GOOD HEALING THINKING INVOLVES }* }* 'UP', SO ONE C O U L D HAD PGUP TO GO TO NEXT PAGE }* }* HOWEVER THERE IS A CERTAIN VALIDITY IN HAVING THOSE }* }* IMAGES WHICH ARE SHOWN F I R S T AS IDENTIFIED WITH }* }* -- IN THIS CASE -- THE MOST 'UP'. SO PgDn GIVES NEXT PAGE.}* }* *TO BE SURE THAT A TEXT GIVEN BY B9-POP ON TOP OF }* }* AN EARLIER TEXT (AND ASSUME AT LEAST 25 PIXELS IN HEIGHT) }* }* IS SHOWN CLEANLY, PRINT A BLANK TEXT MADE E.G. BY MAKEBL. }* }* *NOTE THAT ANY FILE COMMAND SHOULD BE CALLED WITH }* }* A FILENAME WHICH HAS LENGTH GREATER THAN BASIS. }* }* OTHER NOTES: *REMEMBER TO SET FRAMESKIP TO FEWER SKIPS }* }* WHEN YOU DO WILDTONE, OR ANY SIMILAR DRAWING PROGRAM, }* }* AS TOLD ON THE MAIN PAGE FOR F3 (CTR-F7 13 TIMES). }* }* *NOTE THAT DIV4 AND MOD4, AND SOME MORE SUCH, EXIST. }* }* *WHENEVER YOU HAVE A SINGLE NUMBER AND WANTS IT }* }* CONVERTED TO ROW NUMBER AND COLUMN NUMBER, OR X AND Y, }* }* THEN, RESPECTIVELY, DIV AND MOD ARE VERY USEFUL: IN }* }* MOST CASES YOU HAVE TO DO SOME COMBINATIONS WITH }* }* 'DEC' AND 'INC' TO GET IT RIGHT, AS BOTH MOD AND DIV }* }* EASILY MAY RETURN BASIS (ZERO). THE BEST IS TO TRY IT }* }* OUT INTERACTIVELY, TYPING IN SUCH AS 4 MOD4 POP ETC. }* }* *YOU ARE WELCOME TO SUBMIT AN OCCASIONAL ELEGANT }* }* EASY-TO-ANALYSE PROGRAM TO atiroal@yoga6d.org AND SOME }* }* OF THESE WILL BE LISTED IN AN OVERVIEW, WHEN WITH CFDL }* }* *SOME PROGRAMS WHICH ARE REPLACED BY NEWER ONES, }* }* OCCASIONALLY WITH NEW NAMES, JUST AS WITH REINCARNATION, }* }* ARE SUDDENLY WITHOUT NOTICE REMOVED FROM THE OVERVIEW }* }* AND NEW ONES INSERTED -- NOT NECESSARILY AT ALL WITH ANY }* }* SEQUENCE IN TERMS OF THE NEWEST ONES ON TOP. HOWEVER ALL }* }* FOUNDATIONAL PROGRAMS ARE NATURALLY KEPT HERE STABLE, }* }* ALWAYS. }* }* *ALL THESE PROGRAMS WILL WORK EXACTLY IN THIS WAY IN }* }* ALL FUTURE IMPLEMENTATIONS OF LISA GJ2 FIC3. }* }* [*THE FLUIDITY OF PERFORMANCE WITH FRAMESKIP 18 IS ONLY }* }* ACHIEVED BY A CERTAIN SLOWNESS OF THE COMPUTER AND IN }* }* CASE OF E.G. PC LAPTOPS OF MUCH MORE SPEED THAN 2011 }* }* STANDARDS, THERE WILL BE FRESHLY INSERTED NOTES AT THE }* }* MAIN PAGE ON HOW TO PERFORM THE F3 LANGUAGE AT ITS }* }* PREFERRED MAIN SPEED BY MODIFYING E.G. 'CPU CYCLES' }* }* IN DOSBOX.] }* }* *NOTE THAT FT MEANS UNSHOWMOUSE, AND FEET SHOWMOUSE, }* }* AND WHEN MOUSE IS BEING SHOWED, IT IS A CLEANER GRAPHICS }* }* IF YOU PUT FT BEFORE AND FEET AFTER ANY ROUTINE WHICH }* }* PUTS SOMETHING TO THE SCREEN. }* }* *THE LISA GJ2 FIC3 LT COMPUTER HAS 1024*768 ON ALL }* }* ITS STANDARD MONITORS, AND ALT-ENTER MERELY GIVES SOME }* }* EXTRA INFO AROUND DOSBOX AS PART OF THAT SIZE. }* }* *IF YOU COMPILE A PROGRAM WHERE SOME A BIT QUICK }* }* EXITS OCCUR W H I L E COMPILING (THAT IS, BEFORE }* }* IT STARTS UP), WHICH MIGHT BE CAUSED BY PUTTING IN ONE }* }* TOO MANY COUNTUP) COMPARED TO HOW MANY (COUNT, OR SUCH, }* }* THEN YOU CAN DO THE COMPILATION VISIBLE, LINE BY LINE, }* }* BY PUTTING IN THE WORD VISIBLECOMPILATION IN THE }* }* BEGINNING OF YOUR PROGRAM. CHECK THE MANUAL F3DOCS ABOUT }* }* SOME ADDITIONAL WORDS, NAMED, IF I REMEMBER CORRECTLY, }* }* COMPILEPAUSEDALITTLE AND SUCH, IN ORDER FOR THE WHOLE }* }* PROCESS TO SLOW DOWN ENOUGH THAT YOU CAN CATCH IT EXACTLY.}* }* *WHEN A PROGRAM HAS COMPILED WITH A MESSAGE LIKE }* }* 'I JUST WANTED TO SAY HELLO! ..-THE MT LANGUAGE', }* }* IT COMES FROM A (( LOOKSTK )) WHICH YOU HAVE PUT IN. }* }* THE INFO ON STACK MIGHT SOMETIMES TELL YOU WHAT IT IS, }* }* THEY ARE SHOWN. BEFORE LANDING ON THE RIPE NAME OF THE }* }* LANGUAGE, MANY EARLIER NAMES WERE MADE, INCLUDING MT FOR }* }* 'MANHATTAN TRANSFORMATION', NAME ALSO OF EARLIEST SCIFI }* }* WRITINGS WHERE THE CHARACTERS VEILED THEMSELVES IN A }* }* CLOAK OF DIFFERENT NAMES AND DIFFERENT ROLES, RELEASED }* }* EARLY IN 2006, AFTER WHICH I TOOK THE NAME 'ARISTO' AS }* }* MAIN NAME -- OTHER NAMES OF THE F3 LANGUAGE INCLUDES }* }* BOEHMIAN, BOEHM, YOGA4D, ASPECT, TRIAVERSUX.. ;) -- IN }* }* ANY CASE, WHEN LOOKSTK GIVES SUCH A MESSAGE, DO THEN }* }* PLS PRESS Q TO STOP COMPILATION, AND LOOK IN THE LINES }* }* ABOVE THE LOOKSTK FOR SOMETHING WHICH COULD LEAVE A REST }* }* ON THE STACKS -- SUCH AS, NOT QUITE GIVING THE VALUE TO }* }* VARIABLE CORRECTLY OUTSIDE OF FUNCTIONS, OR SOME FUNCTION }* }* HAVING A PECULIAR STRUCTURE. IF YOU NEED TO PINPOINT MORE }* }* EXACTLY WHERE IT ARISES, PUT IN LOOKSTK HIGHER UP, ALWAYS }* }* OUTSIDE OF FUNCTIONS, AND RECOMPILE. }* }* NOTE THAT (( LOOKSTK )) MIGHT DETECT SOME WAYS OF }* }* TYPING IN COMMENTARIES WHICH HAVE A PECULIAR SYNTAX, }* }* FOR INSTANCE IN WHICH YOU INADVERTEDLY TYPE & INSTEAD }* }* OF * AFTER THE COMPLETING RIGHT-CURLY-BRACKET. }* }* *SOME MESSAGES, E.G. CONNECTED TO (MATCHED.., WHICH }* }* INDICATE THAT THE PROGRAM MUST BE CORRECTED, USE THE }* }* FIRST NAMES OF THESE PROGRAM FEATURES WHEN I CALLED THE }* }* LANGUAGE 'FIRTH', WHICH DEVELOPED INTO FIRTH LISANOD501 }* }* THEN FIRTH LISA (AND LISACODE), THEN LISA GJ, THEN LISA }* }* GJ2, THEN, EVENTUALLY, LISA GJ2 FIC3 IN THE RIPE FORM. }* }* SOME EARLY VERSIONS OF THIS LANGUAGE CONTAINED REFERENCE }* }* TO A DOSBOX-LIKE ENVIRONMENT BY THE WORD 'LISACODE', BUT }* }* EVENTUALLY IT BECAME CLEAR THAT GREATER SAFETY AND }* }* ROBUSTNESS COMES FROM LETTING FILE COPY, RENAME AND DEL }* }* BE HANDLED BY MANUAL COMMANDS. }* }* *INITIALLY, I THOUGHT OF PUTTING SOUND MAKING COMMANDS }* }* INTO THE PROGRAMMING LANGUAGE BUT BY GOING MORE DEEPLY }* }* INTO WHAT FIRST-HAND PROGRAMMING MUST BE ALL ABOUT, SO }* }* THAT IT STIMULATES FREEDOM AND ATTENTION AND NOT }* }* CONTRIBUTES TO SLUGGISHNESS BY OVERDUE SIMULATION OF }* }* REALITY, THAT SOUND CAN BE SO EASILY VERY SEDUCTIVE AND }* }* INDEED EVEN MORE RISKY THAN MILD 3D SIMULATIONS. }* }* *WHEN YOU CAN, IN GAMES, USE BOTH RFFG AND FUNNYRFFG. }* }* *THE CTR W/F1..F12 ARE USED BY DOSBOX, PLS DO NOT }* }* COUNT ON THESE AS HAVING ANY FUNCTION INTERNAL TO }* }* ANY PROGRAM, AND THIS ALSO MEANS THAT THE COUPLE OF }* }* EXTRA FUNCTIONS IN B9 WITH THESE SHOULD BE IGNORED. }* }* * REMEMBER TO TRY :KEYGRAPH IN TO GET THE NUMBERS }* }* FOR KEYNUM AND FKEYNUM AND SUCH. NORMALLY, FKEYNUM }* }* GIVES WILDLY DIFFERENT NUMBERS THAN KEYNUM BUT IS }* }* NECESSARY TO USE FOR KEYS SUCH AS ARROWS AND F-KEYS. }* }* HOWEVER CALL FKEYNUM ONLY A F T E R KEYNUM OR KEY. }* }* NOTE THAT WHEN YOU NEED BOTH ORDINARY LETTERS AND ALSO }* }* FKEYNUM, THEN THERE CAN BE AN AMBIGUITY ABOUT FKEYNUM, }* }* FOR IT CAN GIVE THE SAME VALUE FOR SEVERAL KEYS -- }* }* BUT THIS YOU RESOLVE BY CHECKING AS TO WHETHER KEYNUM }* }* IS BASIS BEFORE YOU YOU ENGAGING CHECKING ON FKEYNUM. }* }* THOUGH THE CODE IS NOT EASY TO READ, THE B9 EDITOR }* }* INSIDE THE FIC3.TXT HIGHER LEVEL FUNCTIONS TEXT }* }* GIVES AN EXACT EXAMPLE OF THIS. }* ((DATA FOUND-GJP FOUND-GJP => SETBASIS )) (( VARSTRING PB-NAME )) ((DATA NUM-OF-FIRST-IN-PAGE )) ((DATA GJP-IMAGE 200 ; 200 => RAM-PM GJP-IMAGE < SETDANCE )) ((DATA INTERACTOR-POS-Y INTERACTOR-POS-Y => SETDANCE )) (( LOOKSTK )) (LET PICBOOK-INTRO BE (( )) (( (( }F3'S PICBOOK} ; 750 ; 25 => B9-POP )) (( }HOW TO USE:} ; 750 ; 50 => B9-POP )) (( }ONCE YOU SELECT} ; 750 ; 75 => B9-POP )) (( }AN IMAGE / IMAGE} ; 750 ; 100 => B9-POP )) (( }SERIES NUMBERED 1} ; 750 ; 125 => B9-POP )) (( }AND UP, BY PRESSING} ; 750 ; 150 => B9-POP )) (( }HOME KEY, AND TYPING} ; 750 ; 175 => B9-POP )) (( }E.G. MYFOLDER/IMG} ; 750 ; 200 => B9-POP )) (( }OR IMG OR SUCH,} ; 750 ; 225 => B9-POP )) (( }YOU USE ENTER TO} ; 750 ; 250 => B9-POP )) (( }VIEW FULL SIZE, &} ; 750 ; 275 => B9-POP )) (( }ARROWS / PgUp PgDn} ; 750 ; 300 => B9-POP )) (( }KEYS.} ; 750 ; 325 => B9-POP )) )) OK) (( LOOKSTK )) (LET COMPRESSED BE (( >N10 )) (( (( GJP-IMAGE >>> => & )) (( N10 => MOD4 => INC => >N2 )) (( N10 => DIV4 => INC => >N4 )) (( N2 ; 130 => MUL ; 20 => ADD => >N2 )) (( N4 ; 130 => MUL ; 20 => ADD => >N4 )) (( 200 (COUNT (( 100 (COUNT (( (( N6 ; N1 => ADD )) ; (( N8 ; N3 => DIV2 => ADD )) ; (( N1 => TWICE )) ; N3 ; # => GM => PUTPIXEL )) COUNTUP) )) (( INCN1 )) COUNTUP) )) (( && )) )) OK) (( LOOKSTK )) (LET CLS-FIELD BE (( >N10 )) (( (( N10 => DIV4 => INC => >N1 )) (( N10 ; 4 => MOD => INC => >N3 )) (( N1 ; 130 => MUL ; 21 => ADD ; N3 ; 130 => MUL ; 20 => ADD ; BRIDGE 100 ADD ; BRIDGE 101 ADD ; 191 => RECTFILL )) )) OK) (LET CLS-FIELDS BE (( )) (( (( 16 (COUNT (( N1 => DEC => CLS-FIELD )) COUNTUP) )) )) OK) (LET LOAD-THIS-IMAGE BE (( >N1 )) (( (( GJP-IMAGE >>> => & )) (( # => CLEAR-MATRIX )) (( FOUND-GJP => SETBASIS )) (( PB-NAME => VARSTR> ; )) (( ; N1 => ISPRO (MATCHED (( ; N1 => CONCAT ; )) MATCHED) ; )) (( ; => LENGTH => ISPRO (MATCHED (( ; }.GJP} => CONCAT ; # => GJPFILE2PM FOUND-GJP < DEC ; NUM-OF-FIRST-IN-PAGE >>> => ADD => LOAD-THIS-IMAGE )) (( FOUND-GJP => VISDANCE (MATCHED (( N1 => DEC => COMPRESSED )) MATCHED) )) (( KEYTOUCH (MATCHED (( N2 => >N1 )) MATCHED) )) COUNTUP) )) )) OK) (( LOOKSTK )) (LET FULL-PHOTO-SIZE BE (( )) (( (( IT-IMAGE >>> => & )) (( # => GJP-CLEANSE )) (( PB-NAME => VARSTR> ; )) (( 80 => MAKEBL ; 10 ; 740 => B9-POP )) (( 795 ; 455 ; BRIDGE 210 ADD ; BRIDGE 210 ADD ; 128 => RECTFILL )) (( ; NUM-OF-FIRST-IN-PAGE >>> ; INTERACTOR-POS-X >>> => DEC => ADD ; INTERACTOR-POS-Y >>> => DEC => MUL4 => ADD => AFFIRM (MATCHED (( ; ; => CONCAT ; )) MATCHED) ; )) (( ; => LENGTH => ISPRO (MATCHED (( ; }.GJP} => CONCAT ; )) (( ; }SHOWN ON THE RIGHT>>>} => BRIDGE => CONCAT ; 10 ; 740 => B9-POP ; )) (( ; => # => GJP-FILE-TO-RAM-SECTOR ; RM )) (( 800 ; 460 ; # => PAINT-GJP )) )(OTHER (( ; RM )) MATCHED) )) (( && )) )) OK) (LET LEAF-TO-TO-NEXT-PAGE BE (( )) (( (( NUM-OF-FIRST-IN-PAGE >>> ; 16 => ADD NUM-OF-FIRST-IN-PAGE <>> ; 16 => SUB => >N1 )) (( N1 => INC => ISPRO = N1 NUM-OF-FIRST-IN-PAGE < MAKEBL ; 10 ; 740 => B9-POP )) (( }NEW SERIES:} ; 10 ; 740 => B9-POP )) (( 50 ; 150 ; 740 => B9-READLN => RMBL => UPCM ; PB-NAME => >VARSTR )) (( 80 => MAKEBL ; 10 ; 740 => B9-POP )) (( NUM-OF-FIRST-IN-PAGE => SETBASIS )) (( SHOW-ALL )) )) OK) (LET LEAF-ETC BE (( )) (( (( 795 ; 455 ; BRIDGE 210 ADD ; BRIDGE 210 ADD ; 128 => RECTFILL )) (( GOLABEL4: )) (( (( INTERACTOR-POS-X >>> ; 130 => MUL ; 15 => ADD )) ; (( INTERACTOR-POS-Y >>> ; 130 => MUL ; 15 => ADD )) ; (( BRIDGE ; 110 => ADD )) ; (( BRIDGE ; 110 => ADD )) ; 128 ; 191 => DOTTED_RECT )) (( KEYNUM => >N1 )) (( FKEYNUM => >N2 )) (( (( INTERACTOR-POS-X >>> ; 130 => MUL ; 15 => ADD )) ; (( INTERACTOR-POS-Y >>> ; 130 => MUL ; 15 => ADD )) ; (( BRIDGE ; 110 => ADD )) ; (( BRIDGE ; 110 => ADD )) ; 128 => RECT )) (( N1 ; KEY-ENTER >>> => EQN = FULL-PHOTO-SIZE == )) (( N2 ; 84 => EQN = -1 ; INTERACTOR-POS-Y => ADDVAR == )) (( N2 ; 83 => EQN = INTERACTOR-POS-X => INCVAR == )) (( N2 ; 82 => EQN = -1 ; INTERACTOR-POS-X => ADDVAR == )) (( N2 ; 85 => EQN = INTERACTOR-POS-Y => INCVAR == )) (( N2 ; 78 => EQN = SELECT-NEW-NAME == )) (( N2 ; 81 => EQN = LEAF-TO-TO-NEXT-PAGE == )) (( N2 ; 80 => EQN = LEAF-TO-TO-PREVIOUS-PAGE )) (( === === === )) (( === === === === === )) (( INTERACTOR-POS-X >>> ; 1 ; 4 => SET-RANGE INTERACTOR-POS-X <>> ; 1 ; 4 => SET-RANGE INTERACTOR-POS-Y <>> => EQN => NOT = GOUP4 === )) )) OK) (LET PICBOOK-ACTION BE (( )) (( (( 10 ; 10 ; 710 ; 710 ; 1 => RECTFILL )) (( CLS-FIELDS )) (( }} ; PB-NAME => >VARSTR )) (( NUM-OF-FIRST-IN-PAGE => SETBASIS )) (( LEAF-ETC )) )) OK) (LET PICBOOK BE (( )) (( (( GJ-ON )) (( PICBOOK-INTRO )) (( PICBOOK-ACTION )) (( GJ-DONE )) )) OK) (( LOOKSTK )) (LET AUTOSTART BE PICBOOK OK)