? Peeks and Pokes 01/19/1987 ------------------------------------------------------------------------------ 24K OF DATA STORAGE If you need to work with quite a bit of data or would like to change programs, but save the data after you press CALL QUIT then you can set up the 24K of High-Memory in the PEB as a single data file called "EXPMEM2", you open this file just as you would a disk file with one exception - you must PRECEED th OPEN statement with a CALL LOAD to the location -24574 as follows: For INT/VAR files - 24 For DIS/VAR files - 16 For INIT/FIX files - 8 For DIS/FIX files - 0 Heres and example: If you want to open up the Expansion Memory for Display,Variable 80 files this is what you'd do: 100 CALL INIT 110 CALL LOAD(-24574,16) 120 OPEN #1:"EXPMEM2",RELATIVE,UPDATE,DISPLAY,VARIABLE 80 Then continue on as you normally would. If you want to store both data and assembly language routines at the same time do this: 100 CALL INIT 110 CALL LOAD(-24574,-16) 120 OPEN #1:"EXPMEM2" 130 CALL LOAD ("DSK1.ASSM1") 140 CALL LOAD ("DSK2.ASSM2") 150 CALL LINK ("START") 160 REM CONTINUE REST OF PROGRAM In the above example the 24 K of high-memory was saved for use as a DATA file (DIS/VAR 80 format) then the assembly routines were loaded. The computer wll look for the best place to put the routines and will adjust the pointer accordingly. After the routines are loaded, a LINK statement starts the first rutine and off we go. If that's not enough for you, you can also use the MINI-MEMORY for 4K more of storage of assembly routines! Now that's 16K of program space, 12K of assembly routine space! ****************************************************************************** THESE ARE ALL OF THE PEEKS & POKES I HAVE COME ACROSS FOR USE WITH X-BASIC AND 32K MEMORY EXPANSION (BE SURE TO DO A "CALL INIT"). THE P,Q,R,S VARIABLES ARE USED FOR "PEEK" - THE NUMBERS ARE FOR "POKE" OR "LOAD". IF YOU KNOW OF ANY OTHERS PLEASE LET ME KNOW AND I WILL ADD THEM IN. ****************************************************************************** ================== ========================================================== ADDRESS , VALUE(S) MEANING IN EXTENDED BASIC ================== ========================================================== CALL VERSION(X) IF X=100= NEWEST VERSION OF X/B CART 8192 , P USE (PEEK,P) IF P<> 70 OR <>121 THEN DO A CALL INIT 8194 , P,Q,R,S FIRST FREE ADDRESS IN LOW MEMORY:(R-P))*256+S-Q= FREE SPACE IN LOW MEMORY AFTER CALL INIT OR CALL LOAD("DSK1x.xxxx") 8196 , LAST FREE ADDRESS IN LOW MEMORY 8198 , P,Q IF P/Q=2 OR P*256+Q=43605 OR P=170 AND Q=85: CALL INIT=YES -27648 , P,Q,R,S SPEECH CHIP LOCATION -28672 , P P=0 OR P=127 SPEECH NOT ATTACHED ,P=96 OR P=255 SPEECH IS -31572 , 0 TO 255 VARY KEYBOARD RESPONSE -31740 , P , Q PUT IN DIFFERENT TO CHANGE BEEPS,WARNINGS, ETC -31744 , 0 TO 15 CONTINUATION OF LAST SOUND (0=LOUD AND 15=SOFT) , P,Q,R,S DIFFERENT VALUES TURN ON DIFFERENT SOUNDS -31748 , 0 TO 255 CHANGE THE CURSOR FLASHING AND RESPONSE TONE RATES -31788 , 160 BLANK OUT THE SCREEN (MUST PUSH A KEY TO ACTIVATE) , 192 NO AUTOMATIC SPRITE MOTION OR SOUND , 224 NORMAL OPERATION , 225 MAGNIFIED SPRITES , 226 DOUBLE SIZE SPRITES , 227 MAGNIFIED & DOUBLE SIZED SPRITES , 232 MULTICOLOR MODE (48 BY 64 SQUARES) -31794 , P TIMER FOR CALL SOUND (COUNTS FROM 255 TO 0) -31804 , X , Y RETURN TO THE TITLE SCREEN (USE "PEEK (2,X,Y)") , P CHANGE THE CURSOR FLASH RATE (0 TO 255) -31806 , 0 NORMAL OPERATION , 16 DISABLE QUIT KEY (FCTN =) , 32 DISABLE SOUND (USE NEG DUR FOR CONTINOUS SOUND) , 48 DISABLE SOUND & QUIT KEY , 64 DISABLE AUTO SPRITE MOTION , 80 DISABLE SPRITES & QUIT KEY , 96 DISABLE SPRITES AND SOUND , 128 DISABLE ALL THREE -31808 , P , Q DOUBLE RANDOM NUMBERS (0 TO 255) NEED "RANDOMIZE" -31860 , 4 GO FROM EX-BASIC TO CONSOLE BASIC (NEED "NEW") , 8 AUTO RUN OF DSK1.LOAD -31866 , P , Q P*256+Q-41023)=FREE PROGRAM SPACE IN HI MEM -31868 , 0 NO "RUN" OR "LIST" AFTER "BREAK" IS USED , 0 , 0 TURNS OFF THE 32K MEMORY EXPANSION , 255 , 231 TURNS ON THE 32K MEMORY EXPANSION -31873 , 3 TO 30 SCREEN COLUMN TO START AT WITH A "PRINT" -31877 , P P&32 = SPRITE COINCIDENCE P&64 = 5 SPRITES ON A LINE -31878 , P HIGHEST NUMBER SPRITE IN MOTION (0 STOPS ALL) -31879 , P TIMER FOR VDP INTERRUPTS EVERY 1/60 OF A SEC (0 TOP 255) -31880 , P RANDOM NUMBER (0 TO 99) NEED "RANDOMIZE" -31884 , 0 TO 5 CHANGE KEYBOARD MODE (LIKE "CALL KEY(K,...)") -31888 , 63 , 255 DISABLE ALL DISK DRIVES (USE "NEW" TO FREE MEMORY) , 55 , 215 ENABLE ALL DISK DRIVES (USE "NEW" TO FREE DRIVES) -31931 , 0 UNPROTECT X-B PROTECTION , 2 SET "ON WARNING NEXT" COMMAND , 4 SET "ON WARNING STOP" COMMAND , 14 SET "UNTRACE" COMMAND , 15 SET "UNTRACE" COMMAND & "NUM" COMMAND , 16 SET "TRACE" COMMAND , 64 SET "ON BREAK NEXT" COMMAND , 128 PROTECT X/B PROGRAM -31936 , P,Q P*256+Q-2487=EXACT AMOUNT OF FREE STACK SPACE WHILE PROGRAM IS RUNNING. -31950 , P , Q A=*256+Q=END OF LINE NUMBER TABLE -31952 , P , Q PEEK P=55 THEN 32K EXPANSION MEMORY IS OFF P*256+Q=START OF LINE NUMBER TABLE -31954 , P , Q P*256+Q=MEMORY ADDRESS OF POINTER TO CURRENT LINE EXUCUTED CALL PEEK(P*256+Q-65536,R,S):: R*256+S=START ADDRESS OF CURRENT PROGRAM LINE EXECUTED. CALL PEEK(P*256+Q-65538,R,S):: R*256+S=CURRENT LINE NUMBER E LINE NUMBER EXECUTED. -31962 , 0,32 RETURN TO THE TITLE SCREEN (LEAVES FILES OPEN) , 33,111 GO DIRECTLY TO TI BASIC , 99,114 RUN "DSK1.LOAD" , 101,190 EXECUTE "LIST" COMMAND MODE ONLY , 100,155 EXECUTE "RUN" COMMAND , 100,124 EXECUTE "NEW" COMMAND , 100,126 EXECUTE "CON" COMMAND MODE ONLY , 100,128 EXECUTE "LIST" COMMAND MODE ONLY , 100,130 EXECUTE "BYE" COMMAND (CLOSES ALL OPEN FILES) , 100,132 EXECUTE "NUM" COMMAND (DEFAULT 100,10) , 100,136 EXECUTE "RES" COMMAND (DEFAULT 100,10) , 160,000 GENERATES COLORFUL TITLE SCREEN! , 160,04 EXECUTE "RUN" W/O "PRE/SCAN" , 255 RESTART X/B W/DSK1.LOAD -31974 , P , Q END OF VDP STACK ADDRESS (P*256+Q-2487) -32112 , 8 SEARCHES DISK FOR ? -32114 , 2 RANDOM GARBAGE , 13 SCREEN GOES WILD , 119 PRODUCE LINES -32116 , 2 RANDOM CHARACTERS ON SCREEN , 4 GO FROM X/BASIC TO BASIC -32187 , 0 UNPROTECT XB PROGRAM , 2 SET "ON WARNING NEXT" COMMAND , 4 SET "ON WARNING STOP" COMMAND , 9 SET 0 LINE NUMBER , 14 SET "UNTRACE" COMMAND , 15 SET "UNTRACE" COMMAND & "NUM" COMMAND , 16 SET "TRACE" COMMAND , 64 SET "ON BREAK NEXT" COMMAND , 128 PROTECT XB PROGRAM -32188 , 1 CHANGE COLOR AND RECEIVE SYNTAX ERROR , 127 CHANGE COLOR AND RECEIVE BREAKPOINT -32630 , 128 RESET TO TITLE SCREEN -32699 , 0 UNPROTECT XB PROGRAM , 2 SET "ON WARNING NEXT" COMMAND , 4 SET "ON WARNING STOP" COMMAND , 14 SET "UNTRACE" COMMAND , 15 SET "UNTRACE" & "NUM" COMMAND , 16 SET "TRACE" COMMAND , 64 SET "ON BREAK NEXT" , 128 PROTECT XB PROGRAM -32700 , 0 CLEARS CREEN FOR AN INSTANT -32729 , 0 RUN "DSK1.LOAD" -32730 , 32 RESET TO TITLE SCREEN -32961 , 51 RESET TO TITLE SCREEN , 149 SETS "ON BREAK GOTO" LOCKS SYSTEM ============================================================================= THE FOLLOWING LOADS REQUIRE E/A OR MM ============================================================================== ADDRESS , VALUE(S) MEANING ================== ========================================================== 784 , P USE POKEV(784,P) (WHERE P IS 16 TO 31) CHANGES BACKGROUND COLOR OF CURSOR -24574 , 8 I THINK THIS ALLOWS THE MINI-MEM TO USE THE 24K FOR STORAGE -30945 , 0 WHITE EDGES -32272 , 0 , "" , -30945 , 0 ) WILL PUT YOU IN TEXT MODE -32766 , 0 BIT MAP MODE -32768 , 0 GRAPHICS (NORMAL MODE) -32280 , 0 MULTI-COLOR MODE -32352 , 107 WILL BLANK THE SCREEN, ANY KEY PRESS WILL RESTORE ============================================================================== * PASCAL LOADS ============================================================================== 14586 , 0 , 0 THIS ALLOWS YOU TO DO A "RUN-TIME WARM START" FROM PASCAL Download complete. Turn off Capture File.