Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I’m confused about deleting comments and renaming variables unless TASC itself written in Applesoft. Which seems crazy.

> As the author added features, he kept hitting the Apple ][‘s 48KB RAM limit

There was a language card that could replace the upper 16KB of ROM with RAM, but of course, you’d still need to have the interpreter somewhere.

I’ve never heard of TASC before, but Beagle Bros also had an AppleSoft compiler (released in 1986):

https://archive.org/details/Beagle_Bros-Beagle_Compiler

Beagle Bros had an bevy of amazing software in general:

https://en.wikipedia.org/wiki/Beagle_Bros

I feel bad now that I pirated so much of it as a teenager.



Back in ‘84 I convinced my parents to visit the beagle bros headquarters in Los Angeles!

It was awesome. They were super nice and I got to visit Sophie: the Beagle Bros beagle!


"3990 Old Town Avenue, San Diego" is permanently burned into my brain. I was finally in that neighborhood about 10 years ago and visited the shrine myself, even though any evidence of the company there is long gone now.


> All three passes were written largely in Applesoft

Wouldn't this explain it?

But it seems odd that they wouldn't at least save a LUT relating the shortened and expanded variable name.


Applesoft II fit in 10 kilobytes of rom and had to be able to run in as little as 4 kilobytes of ram. The one thing that Microsoft was an expert at (in that era) was sacrificing features to fit.

There was no special version for machines with more ram or with a floppy disk.


> But it seems odd that they wouldn't at least save a LUT relating the shortened and expanded variable name.

BASIC implementations based on Microsoft BASIC store tokenized program lines. A keyword takes 1 byte. Comments, variable names, spaces between tokens, etc take up memory on a character-by-character basis.

I didn't use Apple BASIC, but I spent too much time on various flavors of Commodore BASIC which shared this heritage. Changing a variable from "ACCUMULATOR" to "AC" to "A" saved memory and made the program run faster. The problem of not being able to make sense of your own program after was very real.


There was a weird thing in IBM BASICA (which apparently became GW-BASIC) where runtime writes to a pointer to a program variable could corrupt your program listing itself. I think this had to do with variable contents actually being stored inside the source code somehow? Do you know any more about this, or does anyone else remember this?


Sure, I meant saving that LUT somewhere else for future reference


Doh. I read right over that.


>I’m confused about deleting comments and renaming variables unless TASC itself written in Applesoft. Which seems crazy.

The article doesn't ever explicitly say so but, yes, Chen expects the reader to understand from his words that TASC was written in Applesoft BASIC. Crazy, indeed!


I’m pretty amazed it was self hosting. I’m sure it was faster to iterate that way but it seems like it would be so much more efficient to use assembly. Kilobytes were so precious.

Maybe it didn’t matter as much since it was a compiler and not a runtime environment.




Consider applying for YC's Fall 2026 batch! Applications are open till July 27.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: