PROC BinHdec: rem 960526, 970531, 990127 global tp%(4),w%(4),v(16),v2,a% global x%,y%,k% gtmode 3 :ggmode 0 :gfont 11 cvrt:(1) tp%(1)=2 :w%(1)=269 :rem bin 268 tp%(2)=274 :w%(2)=80 :rem hex 270,84 tp%(3)=357 :w%(3)=84 :rem dec 353,83 tp%(4)=467 :w%(4)=14 :rem asc do gat 270,y%*2 :glineby 0,3 gat 353,y%*2 :glineby 0,3 y%=y%+3 until y%>70 do gat x%*3,13 :glineby 3,0 gat x%*3,142 :glineby 3,0 x%=x%+3 until x%>332 p:(1,0) :gprint "bin„rt" p:(2,0) :gprint "hexadec." p:(3,0) :gprint "decimalt";rept$(" ",15);"asc" p:(1,9) gprint "BinHdec v1.1 990127 Esc, Delete, Diamant skiftar sida" do k%=k%+1 gat 446,25+k%*16-14 :gprint "M";k% until k%=8 redraw:: rem skriver ut hela sidan x%=3 :y%=0 do y%=y%+1 :prad: until y%=8 y%=1 ram:(x%,1) chr: rem klart do k%=get igen:: if k%>255 and k%<260 ram:(x%,0) if k%=259 and x%>1 :rem left x%=x%-1 :chr: elseif k%=258 and x%<4 :rem right x%=x%+1 :chr: elseif k%=256 and y%>1 :rem up y%=y%-1 elseif k%=257 and y%<8 :rem down y%=y%+1 endif ram:(x%,1) elseif k%=292 rem diamant x%=1 do v2=v(x%) :v(x%)=v(x%+8) :v(x%+8)=v2 x%=x%+1 until x%=9 goto redraw:: elseif k%=8 v(y%)=-1 prad: ram:(x%,1) else if x%<4 rem inmatning tal if chk:(k%)>0 ed: goto igen:: endif else rem inmatning tecken if k%>255 :k%=0 :endif v(y%)=k% prad: ram:(4,1) endif endif until k%=27 cvrt:(2) ENDP PROC p:(typ%,rad%) rem typ% 1=bin, 2=hex, 3=dec, 4=asc gat tp%(typ%),11+rad%*16 ENDP PROC s:(b%) local u$(8),f%,byt%,bp%,t%,w&,d$(1) rem skriver ut ett/flera f„lt p† raden rem bitwise: 1,2,4,8, 15=alla 4 f„lten if v(y%)>2147483648 w&=(v(y%)-4294967296) else w&=v(y%) endif do d$="." :if f%=3 :bp%=1 :d$="" :endif byt%=peekb(addr(w&)+3-f%) bp%=bp%+byt% if b% and 1 rem bin„rt gat tp%(1)+67*f%,11+y%*16 if bp%>0 t%=256 :u$="" do t%=t%/2 u$=u$+gen$(iabs((byt% and t%)>0),1) until t%=1 gprint u$+d$ else gprint rept$(" ",22) endif endif if b% and 2 rem hex rem p:(2,y%) gat tp%(2)+20*f%,11+y%*16 if bp%>0 gprint rept$("0",iabs(byt%<16))+hex$(byt%)+d$ else gprint rept$(" ",8) endif rem gprint rept$("0",iabs(v(y%)<16))+hex$(v(y%)) endif f%=f%+1 until f%=4 if b% and 4 rem decimalt p:(3,y%) if v(y%)>=0 gprintb gen$(v(y%),-12),80,1 else gprint rept$(" ",8) endif endif if b% and 8 ram:(4,2) if v(y%)>0 and v(y%)<256 p:(4,y%) gprint chr$(v(y%)) endif endif ENDP PROC prad: local n% rem skriver ut hela raden rem typ% 1=bin, 2=hex, 3=dec, 4=asc ram:(1,2) :rem raderar f„ltet ram:(2,2) ram:(3,2) ram:(4,2) if v(y%)>-1 s:(15) :rem alla 4 f„lten endif ENDP PROC ram:(typ%,o%) gat tp%(typ%)-2,10+y%*16-12 if o%<2 ggmode iabs(o%-1) :gborder 0,w%(typ%),16 ggmode 0 else gfill w%(typ%),16,1 endif ENDP PROC chr: rem skriver vilka tkn som kan matas in gat 90,11 gprint left$("0123456789ABCDEF",iabs(2*(x%=1)+16*(x%=2)+10*(x%=3))),rept$(" ",asc(mid$("hJTZ",x%,1))-64) ENDP PROC ed: local t,m% rem x%= 1=bin, 2=hex, 3=dec m%=2 :if x%=2:m%=16:elseif x%=3:m%=10:endif v(y%)=0 ram:(x%,2) :ram:(x%,1) do if chk:(k%)>0 t=v(y%)*m%+chk:(k%)-1 if t<4294967296 v(y%)=t :s:(15) endif elseif k%=8 v(y%)=0 :s:(15) endif k%=get until k%=27 or (k%>255 and k%<260) ENDP PROC chk:(k%) return loc(left$("0123456789abcdef",2-8*(x%=3)-14*(x%=2)),chr$(k%)) ENDP PROC cvrt:(z%) local x,n% rem konverterar if z%=1 rem fr†n M1 - M8 do n%=n%+1 x=eval("M"+chr$(48+n%)) if x>4294967295 :x=0 :endif v(n%)=x until n%=8 else rem till M1 - M8 M1=v(1) :M2=v(2) :M3=v(3) :M4=v(4) M5=v(5) :M6=v(6) :M7=v(7) :M8=v(8) endif ENDP