ÏK, SO YOU WANNA KNOW HOW TO ACCESS THE MEMORY IN THE GEOÒÁÍ FROM YOUR OWN ÂÁÓÉÃ PROGRAMS. ×ELL THEN, HERE'S THE SKINNY, IN AS SIMPLE TERMS AS É CAN COME UP WITH. ÐÁÇÅ ÔHE FIRST THING TO UNDERSTAND IS WHAT WE MEAN BY THE WORD ÐÁÇÅ. ÆOR OUR PURPOSES, A ÐÁÇÅ IS ANY 256 BYTES OF CONTIGUOUS MEMORY (THAT IS, ANY 256 BYTES 'IN A ROW'.) ÆOR EXAMPLE, MEMORY LOCATIONS 0 THROUGH 255 ARE THE FIRST ÐÁÇÅ IN THE COMPUTER, WHILE LOCATIONS 256 THROUGH 511 ARE THE NEXT ÐÁÇÅ, ETC. ÔHE Ã= 64 CONTAINS 256 ÐÁÇÅS OF MEMORY SPACE. ÔHE GEOÒÁÍ CAN STORE UP TO 2048 ÐÁÇÅS OF DATA (I.E., 524,288 BYTES). (ÙOU MIGHT NOTICE THAT A ÐÁÇÅ IS THE SAME SIZE AS A 'BLOCK' OR 'SECTOR' ON A DISK. ÁLSO, SINCE FOUR ÐÁÇÅS EQUALS ONE ËILOBYTE, THE 512Ë OF THE GEOÒÁÍ TIMES 4 EQUALS 2048 PAGES, AS STATED ABOVE. ÔHIS ISN'T IMPORTANT TO OUR DISCUSSION, BUT IT MIGHT HELP YOU UNDERSTAND THE CONCEPT OF ÐÁÇÅ.) ÏK... THE GEOÒÁÍ USES 258 BYTES OF MEMORY SPACE IN THE COMPUTER TO HELP PASS INFORMATION BACK AND FORTH TO COMPUTER. ÔHE ÐAGE ÓELECT ÒEGISTERS ÔWO OF THE 258 BYTES ARE CALLED THE ÐAGE ÓELECT ÒEGISTERS. 57342 IS THE ÌOW ÐAGE ÓELECT ÒEGISTER AND 57343 IS THE ÈIGH ÐAGE ÓELECT ÒEGISTER. (ÔHE OTHER 256 BYTES ARE CALLED THE GEOÒÁÍ ×INDOW, MORE ABOUT THAT LATER.) ÏNLY ONE ÐÁÇÅ OF THE 2048 ÐÁÇÅS IN THE GEOÒÁÍ MAY BE ACCESSED AT ANY ONE TIME. ÔO TELL THE GEOÒÁÍ WHICH ÐÁÇÅ YOU WANT TO WORK ON, YOU SIMPLY ÐÏËÅ VALUES INTO THE ÐAGE ÓELECT ÒEGISTERS. ÔHE ÌOW ÐAGE ÓELECT ÒEGISTER (57342) IS ÐÏËÅD WITH A VALUE FROM 0 THROUGH 63, WHILE THE ÈIGH ÐAGE ÓELECT ÒEGISTER (57343) IS ÐÏËÅD WITH A VALUE FROM 0 THROUGH 31. ÓINCE THE ÌOW ÐAGE ÓELECT ÒEGISTER CAN BE ÐÏËÅD WITH 64 DIFFERENT VALUES, AND THE ÈIGH ÐAGE ÓELECT ÒEGISTER CAN BE ÐÏËÅD WITH 32 DIFFERENT VALUES, WE CAN ACCESS ALL 2048 ÐÁÇÅS OF THE GEOÒÁÍ. (32*64=2048) ÆOR EXAMPLE, TO ACCESS THE FIRST ÐÁÇÅ IN THE GEOÒÁÍ, WE ÐÏËÅ 57342,0 AND ÐÏËÅ 57343,0. ÁS SOON AS VALUES ARE ÐÏËÅD TO THE ÐAGE ÓELECT ÒEGISTERS, THE GEOÒÁÍ DISPLAYS ITS CORRESPONDING ÐÁÇÅ IN THE GEOÒÁÍ WINDOW. ÔHE GEOÒÁÍ ×INDOW ÍEMORY LOCATIONS 56832 THROUGH 57087 IN THE COMPUTER ARE CALLED THE GEOÒÁÍ ×INDOW. ÔO STORE DATA IN THE GEOÒÁÍ, JUST ÐÏËÅ THE DATA TO THESE LOCATIONS. ÔO RETRIEVE IT, ÐÅÅË THE SAME LOCATIONS. ×HEN YOU ÐÏËÅ NEW VALUES TO THE ÐAGE ÓELECT ÒEGISTERS, THE GEOÒÁÍ AUTOMATICALLY SAVES THE DATA FROM THE ×INDOW TO THE PROPER ÐÁÇÅ OF ITS MEMORY, AND DISPLAYS THE DATA OF THE NEW ÐÁÇÅ IN THE ×INDOW. ÔHE WORD ×INDOW IS A GOOD DESCRIPTION OF THE MEMORY LOCATIONS 56832 THROUGH 57087, SINCE THAT MEMORY SPACE IN THE COMPUTER ACTS LIKE A 'WINDOW' THROUGH WHICH YOU CAN LOOK AT THE ÐÁÇÅS OF MEMORY IN THE GEOÒÁÍ, ONE AT A TIME. ÅXAMPLE ÐROGRAM ÈERE IS A USELESS, DIRTY LITTLE PROGRAM TO GIVE YOU AN IDEA OF HOW THE GEOÒÁÍ MAY BE ACCESSED. ÌET'S SAY THAT WE WANT TO FILL THE GEOÒÁÍ WITH KEYPRESSES. ÄON'T TRY TO ACTUALLY USE THIS PROGRAM, UNLESS YOU PLAN TO SPEND MANY HOURS PRESSING 524,288 KEYS! ÔHIS IS JUST AN EXAMPLE OF HOW THE ÒEGISTERS AND THE ×INDOW MAY BE USED. ÉF SOME OF THE PREVIOUS INFORMATION ISN'T CLEAR YET, PERHAPS STUDYING THIS PROGRAM WILL HELP: 10 ÈÐ=57342: ÒÅÍ ÈIGH ÐAGE ÓELECT ÒEGISTER 20 ÌÐ=57343: ÒÅÍ ÌOW ÐAGE ÓELECT ÒEGISTER 30 Ø=0: ÒÅÍ STARTING VALUE FOR ÈÐ 40 Ù=0: ÒÅÍ STARTING VALUE FOR ÌÐ 50 ÐÏËÅ ÈÐ,Ø: ÒÅÍ POKE VALUE INTO ÈÐ 60 ÐÏËÅ ÌÐ,Ù: ÒÅÍ POKE VALUE INTO ÌÐ 70 ÆÏÒ Ê=0 ÔÏ 255: ÒÅÍ LOOP 256 TIMES 80 ÇÅÔ Á$: ÉÆ Á$="" ÔÈÅÎ 80: ÒÅÍ GET A KEYPRESS 90 Ë=ÁÓÃ(Á$): ÒÅÍ CHANGE KEYPRESS TO VALUE 100 ÐÏËÅ 56832+Ê,Ë: ÒÅÍ POKE IT TO GEOÒÁÍ ×INDOW 110 ÎÅØÔ Ê: ÒÅÍ GET ANOTHER KEYPRESS AND POKE IT 120 Ù=Ù+1: ÒÅÍ INCREMENT THE ÌOW ÒEGISTER 130 ÉÆ Ù<64 ÔÈÅÎ 60: ÒÅÍ GET THE NEXT PAGE 140 Ù=0: ÒÅÍ ÌÐ REACHED 64 SO RESET TO 0... 150 Ø=Ø+1: ÒÅÍ ...AND INCREMENT THE ÈIGH ÒEGISTER 160 ÉÆ Ø<32 ÔÈÅÎ 50: ÒÅÍ GEOÒÁÍ NOT FULL YET 170 ÅÎÄ: ÒÅÍ GEOÒÁÍ IS FULL OF KEYPRESSES (ÉF YOU WISH TO ACTUALLY TRY THE PROGRAM ABOVE, LOWER THE MAXIMUM VALUES OF Ø AND Ù IN LINES 130 AND 160, SO THAT YOU ONLY STORE A FEW THOUSAND KEYPRESSES! ÔHEN ÒÕÎ THE PROGRAM AND SPEND SOME TIME PRESSING KEYS UNTIL YOU GET THE ÒÅÁÄÙ PROMPT WHEN THE PROGRAM ENDS.) ÔO RETRIEVE THE KEYPRESSES STORED BY THE ABOVE PROGRAM AND PRINT THEM TO THE SCREEN, WE COULD ÒÕÎ THE FOLLOWING PROGRAM: 10 ÈÐ=57342: ÌÐ=57343 20 Ø=0 30 Ù=0 40 ÐÏËÅ ÈÐ,Ø 50 ÐÏËÅ ÌÐ,Ù 60 ÆÏÒ Ê=0 ÔÏ 255 70 Ë=ÐÅÅË(56832+Ê) 80 ÐÒÉÎÔ ÃÈÒ$(Ë); 90 ÎÅØÔ Ê 100 Ù=Ù+1 110 ÉÆ Ù<64 ÔÈÅÎ 50 120 Ù=0 130 Ø=Ø+1 140 ÉÆ Ø<32 ÔÈÅÎ 40 150 ÅÎÄ (ÉF YOU TRY THIS PROGRAM, LOWER THE MAXIMUM VALUES IN LINES 110 AND 140 TO MATCH THOSE YOU USED IN THE FIRST PROGRAM!) ÂY STUDYING THE EXAMPLES ABOVE, YOU SHOULD BE ABLE TO REACH AN UNDERSTANDING OF HOW THE ÐAGE ÓELECT ÒEGISTERS AND THE GEOÒÁÍ ×INDOW CAN BE USED TO ACCESS THE MEMORY SPACE IN THE GEOÒÁÍ. ×ITH A LITTLE CREATIVITY, YOU MIGHT FIND A USE FOR THIS IN YOUR OWN ÂÁÓÉÃ PROGRAMS. Á ÆEW ÎOTES: ÔHE DATA NEED NOT COME FROM KEYPRESSES, IT COULD BE READ IN FROM A ÓÅÑ FILE ON DISK, OR GENERATED IN ANY NUMBER OF OTHER WAYS. ÉT IS NOT NECESSARY TO COMPLETELY FILL EVERY BYTE IN A PAGE. ÆOR EXAMPLE, THE FIRST BYTE IN EACH PAGE COULD BE USED TO HOLD A VALUE CORRESPONDING TO THE NUMBER OF BYTES STORED IN THAT PAGE. (ÔHIS MIGHT BE USEFUL FOR SOMETHING LIKE STORING A DATABASE OF UP TO 2048 RECORDS OF LESS THAN 256 BYTES EACH.) ÔHE ÐAGE ÓELECT ÒEGISTERS CANNOT BE ÐÅÅËED, THEY CAN ONLY BE ÐÏËÅD. ÓO YOU MUST KEEP TRACK OF THE LAST VALUE ÐÏËÅD. ÕSING A VARIABLE (AS É DID WITH Ø AND Ù IN THE EXAMPLE PROGRAMS) IS PERHAPS THE EASIEST WAY. ÉF YOU NEED ANY FURTHER HELP WITH THIS INFORMATION, OR WISH TO MAKE ANY COMMENTS OR SUGGESTIONS, FEEL FREE TO SEND EMAIL TO ÍINK.