Does anyone remember how many bytes an integer and a Float where in BlitzBasic? I'm still using it and I like it?
Uisng BlitzBasic Floats
BlitzPlus Forums/BlitzPlus Programming/Uisng BlitzBasic Floats Wouldnt it depend on the processor you were compiling towards?
nah, not these days. An Integer is 4, I think float is 8 (hense the term double) but could be wrong about the float. I guess a Integer could be 64bits (thus 8 bytes) on a 64 bit processor but I'm pretty sure that Blitz Plus WON'T make use of that without being recoded.
***ALWAYS***
integer = 4 Bytes
float = 4 Bytes
integer = 4 Bytes
float = 4 Bytes
well there you go. I'm used to Delphi where a Float (called Extended) IS 8 bytes and on older systems an Int was only 16-bit.
Dunno why this one disappeared from the archives... it *was* there. Anyway, handy function working with banks, and you want to inspect bytes, shorts, ints, floats.
MonitorBank bank ; the other 2 arguements are not for you :P
MonitorBank bank ; the other 2 arguements are not for you :P
Function MonitorBank(bank,action$="",dat$="") ; ; MonitorBank, Blitzplus ; ; by CS_TBL ; ; usage: MonitorBank MyBank ; ; The function is completely stand-alone ; LeftMouseButton on the canvas: cycle through decimal-, hexademical- and ascii-viewmodes ; Out of lazyness, not all ASCII codes below 32 are supported, also because of a lack of pixels.. :-) ; ; look all ! If Not bank Return Select action$ Case "" ; setup/(main)/end FlushEvents() ; 00 04 inputbank ; 04 04 fontimage ; 08 04 window ; 12 04 canvas ; 16 04 scrollbar ; 20 04 offset ; 24 04 mainpanel ; 28 01 update, not really used ... well, .. used .. but without any benefits.. ; 29 01 show_highlighter ; 30 01 hex/dec/ascii ; 31 01 x ; 32 01 y ; 33 02 printx ; 35 02 printy bnk=CreateBank(37) PokeInt bnk,0,bank s$="" s$=s$+"128176#~#J'~#?$&$'$'%)%)%)%)%)%)%&%&%$$$$$&$$&&$$$$$&$&$&)$&%%$&%)$'$&'''''''''''''%$$$$$&$$$%$%$&$&$$$%$%$&$+$%$&$$$$$'$&$'$%)%" s$=s$+")%)%)%)%)%)$%&$%&%$%$&%%$$$%$%%%%($$$&$%$$$%$&$&$'$%)%)%)%)%)%)%)$$$$&$$$$$%$%$&$'$&$%$&$($%$'$$$$$&$%$&$'$%)%)%)%)%)%)%)$%%%%$$" s$=s$+"$%$%&$$'$&$%$&$'(%%&$%%&$''''''''''''''''O$C%)%)%)%)%)%)%Q$~#~#~#~#~#p%%$$%&%)%)%)%)%)%)%)%)%)%&%$%%$&%)%)%)%&$$$$$$$&''''''''''" s$=s$+"'''''''''%$%$%$&'''''''%$$$$$$%$)%)%)%)%)%)%)%)%)%)$%$%$$%)%)%)%)$$$$$$$$%)%)%)%)%)%)%)%)%)%)$$&$$$%)%)%)%)$%%'$)%)%)%)%)%)%)%)%" s$=s$+")%)$%$%%$$)%)%)%).'''''''''''''''''''/'''''''0%)%)%)%)%)%)%)%)%)%1%)%)%)%~#~#~#8$B%(%b%'%$%.)(%&&*%(%*%R%0%'%$%'$%$%%$$'%%%%%%$)" s$=s$+"%'%,%($K%0%'$%$')$%$$'%$%&%%$)$(%,%&$$$$$($B%1%0$%$&((%'&0%,%'&)$B%1%0$%$($$%'$'&1%,%($((.(0$2%/)'$$%&%'%$$%$-%,%'&)$A%A$%$($$%&" s$=s$+"%$%$%%%.%,%&$$$$$($A%2%6)&%%%$%%%/%*%)$2%1%'%3%9$(%)'$$/%(%:%1%'%~#/%@((%'(&(%%&%$*%(%*%(&(U%&%&&&%&%$%&%$%&%$%)%&%$%&%$%&%$%&%N" s$=s$+"'%%&%%'+%)%$%&%$%)%.%$%&%$%&%8%.%)%%%$%%&'%*%*%$%&%$%)%-%%%&%$%&%7%0%(%%%$%$''%)%)&%*$)%))%&(&)'%)%(%(((%+%$'$%'%(%,%)%)%$%&%'%&" s$=s$+"%&%)%'%)%'%4%)%%&%%'%'%-%)%)%$%&%'%&%&%)%6%(((%)%&%&%'%&%.%)%)%$%&%'%&%&%)%7%0%*%&%&%'%&%)%&%)%$%&%$%&%'%&%&%$%&%'%)%*%.%1(''%*%" s$=s$+"(*%%(&((%'(&((%)%A%~#%%Q&&)&(%)%*$*%(%%&%'%(($%&%$%)%&%$%&%%((&&%$%%%&%$%&%$%&%$%)%)%&%$%&%'%+%$%%%%%)&$&$&%%$%&%&$&$$%&%$%&%$%)" s$=s$+"%&%$%)%)%)%&%'%+%$%$%&%)*$&%%$%&%%$'$$%&%$%&%$%)%&%$%)%)%)%&%'%+%$''%)*$'$%$%&%$$%%$$$*$)%%)%&%$(&(&%)*'%+%$&(%)%$$$%$'$%$%&%$$$" s$=s$+"$$$$$$%&%$%&%$%)%&%$%)%)%%&$%&%'%+%$''%)%&%$%$'$%&%$$$$$$$$$%&%$%&%$%)%&%$%)%)%&%$%&%'%+%$%$%&%)%&%$%$'$%&%$$%$$%$%&%$%&%$%)%&%$" s$=s$+"%)%)%&%$%&%'%+%$%%%%%)%&%$%%&$%&%%$)%&%$%&%$%&%$%&%$%)%)%&%$%&%'%&%&%$%&%$%)%&%$%%&$%&%&($%&%$)&(%)%*$%*(%%&%'%'(%%&%$*$%&%$%&%%" s$=s$+"(~#J)&(%)&(%*$%&%$%&%$%&%$%&%$%&%$*%(.(($/%&%$%&%$%&%$%&%&&&%&%$%&%$%&%$%&%$%&%)%%%)%,%'$$$.%&%$%&%$%&%$%+&&%&%$%&%$%&%%%$%%%&%)" s$=s$+"%%%)%,%&$&$-%&%$%&%$%&%$%+&&%&%$%&%$%&%%%$%%%&%(%&%*%+%5)%%&%$)&('&&%&%$%&%$%$$$%&&&%&%'%'%*%+%5%)%&%$%$%+%&&&%&%$%&%$*&&')&%(%+" s$=s$+"$+%5%)%&%$%%%*%&&&%&%%%$%%*%%$%*%%%)%+%*%5%)%%%%%%%*%&&&%&%%%$%%*%%$%*%$%*%+%*%5%)%%&$%&%$%&%&&&%&%&&&&$&$%&%$%&%$%*%,%)%5%*&$%$" s$=s$+"%&%%('&'(($'%&%$%&%%(%*%()%&(-*~#J%~#G%0&3&/&.&4%%&)&A%0%3%/%$%.%*%0%*%B$0%3%/%1%2'&%%$'%H&(%)''''''%)&$$&''&+%&%$$(%'$$$$$&$$&'" s$=s$+"'1%''&%%%%%$%&%%%%''%%%&%$%'%+%&'(%')%&$%%%%%.''%$%%%)%$%&)&%(%%%&%$%'%+%&&)%'%$$$$%%&$%%%%-%$%'%$%%%)%$%&%*%)(&%$%'%+%&'(%'%$$$" s$=s$+"$%%&$%%%%-%$%'%$%%%%%%%$%&%%%&%,%&%$%'%+%&%$%'%'%$$$$%%&$%%%%.&$$%$$&'''&$$&''%(%%%%&$%&'&%%%%&%$&'&%$$$$%%&$&'_'7'~#M&(%'&~#6%*" s$=s$+"%)%(%Q%Y%*%)%'$$%$$N%Y%*%)%*%.%$%'%$%%%$%'(%''%%%%%%%%%$$$$%%%%%%%%%)%%+%*%6&$%%%$&%&$%%%*%(%%%%%%%%%$$$$&'&%%%(%&%+%*%6&$%%%$&%" s$=s$+"%*''%(%%%%%%%%%$$$$'%'%%%'%(%*%)%7&$%%%$&%%-%&%(%%%%%%%%%$$$$'%((&%)%*%)%7%$%'%$%%%)%%%&%$%%%%%&'&)&'*%%%*%*%)%7%-%%%*'(&'&$%&%(" s$=s$+"$$%&%%%%%%%%)'&(%'&8%-%^'~#~#~#G%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%('''''''''''''''''''''''''''''''&)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%" s$=s$+")%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)&'''''''''''''''''''''''''''''''(%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%~" s$=s$+"#~#~#~#~#b%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%('''''''''''''''''''''''''''''''&)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%" s$=s$+")%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)&'''''''''''''''''''''''''''''''(%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%~#~#~#~#~#b%)%)%)%)%)%)" s$=s$+"%)%)%)%)%)%)%)%)%)%('''''''''''''''''''''''''''''''&)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%" s$=s$+")%)%)%)%)%)%)%)%)%)&'''''''''''''''''''''''''''''''(%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%~#~#~#~#~#b%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%(''" s$=s$+"'''''''''''''''''''''''''''''&)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)&''" s$=s$+"'''''''''''''''''''''''''''''(%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%~#~#~#~#~#b%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%(''''''''''''''''''''''''" s$=s$+"'''''''&)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)&''''''''''''''''''''''''" s$=s$+"'''''''(%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%~#~#~#~#~#b%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%('''''''''''''''''''''''''''''''&)%)%)%)%)%)%)%" s$=s$+")%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)&'''''''''''''''''''''''''''''''(%)%)%)%)%)%)%)" s$=s$+"%)%)%)%)%)%)%)%)%~#~#~#~#~#b%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%('''''''''''''''''''''''''''''''&)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%" s$=s$+")%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)&'''''''''''''''''''''''''''''''(%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%~#~#~" s$=s$+"#~#~#b%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%('''''''''''''''''''''''''''''''&)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%" s$=s$+")%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)&'''''''''''''''''''''''''''''''(%)%)%)%)%)%)%)%)%)%)%)%)%)%)%)%~#~#p" w=Mid$(s$,1,3):h=Mid$(s$,4,3) img=CreateImage(w,h) SetBuffer ImageBuffer(img) c=1 For t=0 To Len(s$)-1 char$=Mid$(s$,6+t+1,1):amount=Asc(char$)-35 If amount>0 If c Color 24,48,96 Else Color 0,0,0 EndIf For k=0 To amount-1 Plot x,y:x=x+1 If x>=w x=0:y=y+1 EndIf Next c=1-c Else c=1-c EndIf Next SetBuffer DesktopBuffer() PokeInt bnk,4,img cw=ClientWidth(Desktop()):ch=ClientHeight(Desktop()) window=CreateWindow("BankMonitor - by CS_TBL [Banksize:"+BankSize(bank)+"]",cw/2-310,ch/2-170,620,340,0,1) PokeInt bnk,8,window mainpanel=CreatePanel(0,0,ClientWidth(window),ClientHeight(window),window) SetPanelColor mainpanel,176,192,208 PokeInt bnk,24,mainpanel canvas=CreateCanvas(2,2,578,310,mainpanel) PokeInt bnk,12,canvas scrollbar=CreateSlider(580,2,16,272,mainpanel,0) SetSliderRange scrollbar,16,(BankSize(bank)+15)/16 PokeInt bnk,16,scrollbar If BankSize(bank)<=256 DisableGadget scrollbar PokeByte bnk,28,1 MonitorBank bnk,"update" MonitorBank bnk,"main" ; free-up FreeImage img FreeBank bnk FreeGadget window FlushEvents() SetBuffer DesktopBuffer() Case "main" inputbank=PeekInt(bank,0) window=PeekInt(bank,8) scrollbar=PeekInt(bank,16) canvas=PeekInt(bank,12) Repeat WaitEvent() If EventID()=$803 If EventSource()=window quit=True EndIf EndIf If EventID()=$401 offset=SliderValue(scrollbar) PokeInt bank,20,offset PokeByte bank,28,1 MonitorBank bank,"update" EndIf If EventSource()=canvas If EventID()=$203 x=(EventX()-66)/32 y=(EventY()-16)/16 PokeByte bank,31,x PokeByte bank,32,y If x>=0 And y>=0 PokeByte bank,28,1 PokeByte bank,29,1 MonitorBank bank,"update" Else PokeByte bank,29,0 MonitorBank bank,"update" EndIf EndIf If EventID()=$206 PokeByte bank,29,0 MonitorBank bank,"update" EndIf If EventID()=$201 If EventData()=1 hexdec=PeekByte(bank,30) hexdec=hexdec+1 If hexdec>2 hexdec=0 PokeByte bank,30,hexdec MonitorBank bank,"update" EndIf EndIf EndIf Until quit Case "update" inputbank=PeekInt(bank,0) canvas=PeekInt(bank,12) offset=PeekInt(bank,20);/16 size=BankSize(inputbank) show_highlighter=PeekByte(bank,29) hexdec=PeekByte(bank,30) mx=PeekByte(bank,31) my=PeekByte(bank,32) If size SetBuffer CanvasBuffer(canvas) ClsColor 176,192,208:Cls For t=0 To 15 st$="+"+Replace$(RSet$(t,2)," ","0") PokeShort bank,33,72+t*32 PokeShort bank,35,4 MonitorBank bank,"print",st$ st$=Replace$(RSet$((offset+t)*16,8)," ","0") PokeShort bank,33,2 PokeShort bank,35,18+t*16 MonitorBank bank,"print",st$ Next For y=0 To 15 For x=0 To 3 o=x+(offset+y)/4 If (o Mod 2) Color 0,192,255 Else Color 0,160,255 EndIf Rect 66+x*128,16*y+16,128,16,True Next For x=0 To 15 o=(offset+y)*16+x If o>=0 And o<size If x=mx And y=my And show_highlighter Color 255,192,0 Rect 66+x*32,16+y*16,32,16,True st$="ADRES: "+o PokeShort bank,33,2 PokeShort bank,35,280 MonitorBank bank,"print",st$ PokeShort bank,35,296 MonitorBank bank,"print","("+Hex$(o)+")" PokeShort bank,35,280 If o<size-1 st$="SHORT: "+PeekShort(inputbank,o) PokeShort bank,33,120 MonitorBank bank,"print",st$ EndIf If o<size-3 st$="INT: "+PeekInt(inputbank,o) PokeShort bank,33,250 MonitorBank bank,"print",st$ EndIf If o<size-3 st$="FLOAT: "+PeekFloat(inputbank,o) PokeShort bank,33,410 MonitorBank bank,"print",st$ EndIf EndIf Select hexdec Case 0 st$=Replace$(RSet$(PeekByte(inputbank,o),3)," ","0") Case 1 st$=" "+Right$(Hex$(PeekByte(inputbank,o)),2) Case 2 st$=" "+Chr$(PeekByte(inputbank,o)) End Select PokeShort bank,33,72+x*32 PokeShort bank,35,18+y*16 MonitorBank bank,"print",st$ EndIf Next Next If PeekByte(bank,28) FlipCanvas canvas EndIf Case "print" If dat$="" Return vx=PeekShort(bank,33) vy=PeekShort(bank,35) img=PeekInt(bank,4) charw=ImageWidth(img)/16 charh=ImageHeight(img)/16 For t=0 To Len(dat$)-1 c=Asc(Mid$(dat$,1+t,1)) ox=c Mod 16 oy=c / 16 DrawImageRect img,vx+t*charw,vy,ox*charw,oy*charh,charw,charh Next End Select ; bye ^_^ End Function