I'm curious what you've found the biggest PITA about programming on real
hardware has been? I've been directly programming on my Tandy 200 and maybe
it's just because my expectations were so low, but it's actually
surprisingly nice. 16 lines of text is a good enough window. The arrow keys
on the T200 are easy to use (and make sensible jumps with SHIFT and CTRL).
Even so, just for fun I've been trying to learn what all the CTRL keys do.
(I heard that it was vaguely WordStar like, but I never used that.) My
biggest problem with coding on the T200 right now is that I am low on
memory, so I can only EDIT small chunks of the program at a time.All in
all, though, quite fun!

—b9

On Wed, Oct 26, 2022 at 8:46 PM MikeS <dm...@torfree.net> wrote:

> Oops; looks like I forgot to attach my version last night; good thing,
> found a couple of bugs tonight.
>
> Looks like it could be speeded up a bit; no error checking.
>
> I'd forgotten what a PITA it was to program on the real hardware.
>
> 1 DEFSTRH:H="0123456789ABCDEF":GOTO100
> 5 A=INT(X/4096):X=X-A*4096:B=INT(X/256)
> 6 PRINTMID$(H$,A+1,1)+MID$(H$,B+1,1);
> 7 C=INT((XMOD256)/16):D=XMOD16:Y=C*16+D
> 8 PRINTMID$(H,C+1,1)+MID$(H,D+1,1)+" ";
> 9 RETURN
> 20 X=0:X$=RIGHT$("0000"+X$,4)
> 30 FORI=1TO4:Y=ASC(MID$(X$,I,1))
> 40 Y$=CHR$(Y+(Y>95)*32)
> 50 L=INSTR(1,H,Y$)-1:X=X+L*(16^(4-I))
> 60 NEXT:RETURN
> 100 INPUT"From";S$:INPUT"to";E$
> 110 X$=S$:GOSUB20:S=X
> 120 X$=E$:GOSUB20:E=X
> 200 B$=TIME$:FORI=STOESTEP8:X=I:GOSUB5
> 210 L$="":FORJ=0TO7:X=PEEK(I+J):GOSUB7
> 220 Y=C*16+D
> 230 Y$=".":IFY>31ANDY<127THENY$=CHR$(Y)
> 240 L$=L$+Y$:NEXT:PRINTL$:NEXT
> 250 PRINTB$+" to "+TIME$:END
>
> Constructive criticism welcome.
>
> m
>
> ----- Original Message -----
> From: "runrin" <run....@rin.run>
> To: <m...@bitchin100.com>
> Sent: Wednesday, October 26, 2022 10:24 PM
> Subject: Re: [M100] Notoriously S.L.O.W BASIC posted - help speeding it up
> appreciated
>
>
> > this seemed fun so i gave it a quick try. here's what i came up with.
> >
> > it's a shame you can't do bitshift operations because i suspect
> > ``((V AND 240) >> 4)'' would be faster than using integer division.
> >
> > i'm a total neophyte when it comes to basic so i don't think this code
> > is actually very fast. at least it's faster than the screen scrolls :P.
> > in both examples i'm just peeking 0-59 since it's what fits on the
> > screen nicely. that's also the reason for the "  ".
> >
> > i like this version because it makes the print statement easy to read,
> > it takes a lot more memory to store each character as it's own string
> > though.
> >
> > 10 DATA "0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"
> > 20 DIM H$(15)
> > 30 FOR I = 0 TO 15
> > 40 READ H$(I)
> > 50 NEXT
> > 60 FOR I = 0 to 59
> > 70 V = PEEK(I)
> > 80 PRINT H$(V \ 16); H$(V AND 15); "  ";
> > 90 NEXT
> >
> > ---
> >
> > i made another version that uses string pointers because i felt bad
> > using 16 strings. the PEEKS seem to be pretty expensive though, so i
> > think it's actually slower than the previous version, but the code is a
> > bit clearer. using MID$ is probably faster, but i mostly just did this
> > for fun. this is more along the lines of how i would do something like
> > this in C, which is the language i'm most familiar with.
> >
> > string pointers are weird in basic. the pointer returned by VARPTR(S$)
> > points to the following:
> >
> > ptr + 0 = string length
> > ptr + 1 = low byte of pointer to string
> > ptr + 2 = high byte of pointer to string
> >
> > i had to look in the basic language lab (pp. 182) to find that
> > information. it's not even listed on
> > https://help.ayra.ch/trs80-reference . i think i would have preferred
> > if it just returned the string pointer with null terminator lol. not
> > sure why they did it this way. anyway, here's the code:
> >
> > 10 H$ = "0123456789ABCDEF"
> > 20 P = VARPTR(H$)
> > 30 SP = PEEK(P + 1) + PEEK(P + 2) * 256
> > 40 FOR I = 0 TO 59
> > 50 V = PEEK(I)
> > 60 PRINT CHR$(PEEK(SP + (V \ 16))); CHR$(PEEK(SP + (V AND 15))); "  ";
> > 70 NEXT
> >
> > i know those extra spaces make my code slower, i'm just formatting it
> > that way here so its actually legible.
> >
> > -runrin
>

Reply via email to