Will,
Here is a bit of compact code I wrote to convert bases given a number.
There may be some simplifications and or speed ups here.
The one line version
1 V$="
"+CHR$(13)+CHR$(8)+"0123456789ABCDEF":E=INSTR(V$,INKEY$):ONEGOTO1:F=(F-(E=2))MOD3:G=9*F+2-F^2:C=-C*(E=2)-(C*G+E-4)*(E>3ANDE<G+4):PRINTMID$("BDH",F+1,1)":";:D=C:FORI=11*(F=0)-4TO0:J=G^I:X=INT(D*J):PRINTMID$(V$,X+4,1);:D=D-X/J:NEXT:PRINT:GOTO1
the more full featured version
1 PRINT"<ENTER>:BASE <DEL>:CLEAR":PRINT"<+> inc <-> decr":V$=" "+
CHR$(13)+"-"+ CHR$(8)+ "+0123456789ABCDEF"
2 C=0
3 C=C+E-4:C=C*(C<2^16)*(C>-1)
4 F=(F-(E=2)) MOD 4:G = INT((F^3)*(4/3) - (F^2)*6 + F*(32/3) +
2):PRINT:PRINT MID$("BINOCTDECHEX",3*F+1,3);":";:IF F THEN Z= INT(C/256):D
=Z:GOSUB 8:D =C-Z*256:GOSUB 8
5 IF F\2 OR F=0 THEN D = C: GOSUB 10
6 S$=INKEY$:E=INSTR(LEFT$(V$,5+G),S$):ON E+1 GOTO
6,6,4,3,2,3:K=C*G+E-6:C=-K*(K<2^16):PRINT S$;:GOTO 6
8 PRINT" ";
9 PRINT CHR$(D AND D>31 OR 32 AND D<32);
10 PRINT" ";:FOR I= 11*(F=0)-4 TO 0:J=G^I:X=INT(D*J):PRINT
MID$(V$,X+6,1);:D=D-X/J:NEXT:RETURN
Steve
On Wed, Oct 26, 2022 at 10:22 AM Will Senn <[email protected]> wrote:
> Hi All,
>
> For those of you following my previous BASIC memory dump discussion, I
> have posted the code and some commentary on my blog at:
> http://decuser.blogspot.com/2022/10/notoriously-slow-basic.html
>
> Take a look and if you have suggestions for improving it or find any
> errors, please let me know. I'll be working on its efficiency in the
> meantime and adding to the post as I figure stuff out.
>
> Thanks,
>
> Will
>