10 'VARPTR 8200 - STEVE SARNA 11/12/84 20 CLEAR 256,62319! 30 'DECLARE ALL VARIABLES USED FIRST! 40 'THIS IS ABSOLUTELY IMPORTANT! 50 'OTHERWISE THE VARPTR CALL WILL 60 'POINT TO THE CORRECT VALUE (AT THE 70 'TIME OF IT'S CALL) BUT, NEWLY 80 'CREATED VARIABLES WILL SHIFT MEMORY 90 'STORAGE AROUND (THEY ARE CREATED 91 '"ON THE FLY") MAKING THE RETURNED 100 'VALUES SEEM ERRONEOUS 110 HI=0:HH=0:HM=0:HL=0:LH=0:LM=0:LL=0 111 MH=0:ML=0:LO=0:LE=0:VP=0:TY=0:VP=0 112 H=0:L=0 120 'TEST VARIABLE IN NEXT LINE: 130 Q%(9)=32 140 'CALL 49AF - PTRGET 150 'XCHG - GET VARPTR IN HL 160 'LDA FA8B - VARTYP IN A 170 'RET 180 POKE 62320!,205 'CALL 49AF 190 POKE 62321!,175 '(AF) 200 POKE 62322!,73 '(49) 210 POKE 62323!,235 'XCHG 220 POKE 62324!,58 'LDA FA8B 230 POKE 62325!,139 '(8B) 240 POKE 62326!,250 '(FA) 250 POKE 62327!,201 'RET 260 'INSERT VARIABLE NAME HERE: 270 POKE 62328!,ASC("Q") 'VARIABLE 280 POKE 62329!,ASC("%") ' NAME 290 POKE 62330!,ASC("(") ' TO 300 POKE 62331!,ASC("0") ' SEARCH 310 POKE 62332!,ASC("9") ' FOR 320 POKE 62333!,ASC(")") ' GOES 330 POKE 62334!,0 ' HERE 340 POKE 62335!,0 350 'HL FOR BASIC 'EXEC' IS STORED 360 'AT LOCATIONS L:63912 AND H:63913 370 POKE 63912!,120'POINT TO SEARCH 380 POKE 63913!,243'VARIABLE STORAGE 390 ' (62328)= F 3 7 8 400 ' SPLIT HEXDECIMAL= 243 120 410 EXEC 62320!:'DO THE VARPTR! 420 'RETRIEVE H AND L AND A:63911 430 L=PEEK(63912!) 440 H=PEEK(63913!) 450 TY=PEEK(63911!) 460 PRINT"VARIABLE TYPE ="TY 470 VP=H*256+L 480 PRINT"VARPTR="VP 490 'NOW JUST DO NORMAL VARPTR PROCS. 500 IFTY=2THENPRINT"INTEGER":GOTO550 510 IFTY=3THENPRINT"STRING":GOTO610 520 IFTY=4THENPRINT"SINGLE ";:GOTO710 530 IFTY=8THENPRINT"DOUBLE ";:GOTO830 540 PRINT"SOMETHINGS WRONG":END 550 'PROCESS VARPTR OF INTEGER 560 LO=PEEK(VP) 570 PRINT "LOW VALUE OF INTEGER"LO 580 HI=PEEK(VP+1) 590 PRINT "HIGH VALUE OF INTEGER"HI 600 END 610 'PROCESS VARPTR OF STRING 620 LE=PEEK(VP) 630 PRINT"LENGTH="LE 640 LO=PEEK(VP+2)*256+PEEK(VP+1) 650 PRINT"LOCATION="LO 660 PRINT"CONTENTS": 670 FOR FIND=LO TO LO+LE-1 680 PRINT CHR$(PEEK(FIND)); 690 NEXT:PRINT 700 END 710 'PROCESS VARPTR OF SINGLE 720 PRINT"FLOATING POINT" 730 PRINT"VARIABLE REPRESENTATION" 740 LO=PEEK(VP) 750 PRINT"LOW"LO, 760 ML=PEEK(VP+1) 770 PRINT"MIDLOW"ML 780 MH=PEEK(VP+2) 790 PRINT"MIDHIGH"MH, 800 HI=PEEK(VP+3) 810 PRINT"HIGH"HI 820 END 830 'PROCESS VARPTR OF DOUBLE 840 PRINT"FLOATING POINT" 850 PRINT"VARIABLE REPRESENTATION" 860 LO=PEEK(VP) 870 PRINT"LOW"LO 880 LL=PEEK(VP+1) 890 PRINT"MIDLOWLOW"LL 900 LM=PEEK(VP+2) 910 PRINT"MIDLOWMID"LM 920 LH=PEEK(VP+3) 930 PRINT"MIDLOWHIGH"LH 940 HL=PEEK(VP+4) 950 PRINT"MIDHIGHLOW"HL 960 HM=PEEK(VP+5) 970 PRINT"MIDHIGHMID"HM 980 HH=PEEK(VP+6) 990 PRINT"MIDHIGHHIGH"HH 1000 HI=PEEK(VP+7) 1010 PRINT"HIGH"HI 1020 END