Jump to content


  • Posts

  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

iljitsch's Achievements


Newbie (1/14)

One Year In First Post Collaborator Rare Conversation Starter Week One Done

Recent Badges



  1. Well, how many things do you need to add to BASIC (and take away) before it's not really BASIC anymore? We're talking about different flavors of Commodore BASIC here...
  2. What kind of ambiguity do you have in mind? Again: I'm not advocating for anything resembling the full Python that exists today. That is possibly even too much for an Amiga, and famously a non-goal of Python is to be fast. They handsomely non-reach that goal. After programming in C, PHP and Javascript for a long time the lack of { } and ; in Python was a revelation. Creating structure through indentation is a bit weird, but probably the best/easiest way to do it. Obviously "real" functions would be quite different from BASIC, and replacing GOSUB subroutines with functions is a bit annoying as the latter usually go at the end but Python functions need to go at the beginning. Other than that, the differences between BASIC and Python are actually relatively small. I could easily see Python be tokenized like Commodore BASIC, although of course there would have to be a system to create new tokens for new functions.
  3. If you need more speed, the first step would be to simply run the 65C02 at its maximum clock rate of 14 MHz... And with only 4000 transistors, I'm sure the 6502 can be implemented at significantly higher speeds on an FPGA. But at what point is the thing so fast that it's no longer an 8-bit computer (or even a 16-bit one) as we know them? Now you can start doing things that would never fly with a computer from the 1980s or 1990s because you have so many cycles to burn.
  4. Dead end as in: it has no living descendants. (At least not as far as I know / recognize.) Obviously you can learn programming in BASIC, as I did myself many moons ago. But structure in BASIC is write-only: perhaps you used GOTOs the most structured way possible. But someone reading the code won't be able to tell. (This is actually also true for imperative constructs like FOR loops, where declarative would be better, but let's not get carried away.) The structure thing is actually not the worst problem. That can be fixed by extending IF / THEN to IF / THEN / ELSE / ENDIF. A much more nefarious issue is that you can't use functions like you can in other languages. In BASIC you can define a function, but but that's in the mathematical sense of the word: you can only use it to calculate something. With proper functions, people could for instance write their own graphics routines and others could improve those, with no need to lobby the X16 development team for specific additions to BASIC. Having the community extend the language in an organic fashion would be pretty cool. Actually in my opinion, for someone who knows they want to learn how to program and will commit to the time required up front, I'd recommend C. Although not easy, it's small enough that you can learn the whole thing reasonably quickly and because it's low level in many ways, you learn a whole bunch of computer architecture in the process. But it's still high level enough to get reasonable things done in a reasonable amount of time. And even if you then never program in C again, you're in a good position to learn a good number of other languages. If you want quick and cool results on something modern, I'd say Javascript along with HTML and CSS. And just like back in the day on an 8-bit home computer, you're not going to understand much of what you're doing for some time, let alone what a lot of other people's code does, but you can do a lot by copying other people's code and tinkering with it. It's surprising how tinkering with web stuff is the closest thing I've experienced the past decades to experimenting with programming on my C128 back in the day. For instance, I wrote some Javascript to make my Hue lights do things that the apps that are available won't do, which was extremely satisfying. Oh, by the way: A$="ABCDE":B$="":FORI=LEN(A$)TO1STEP-1:B$=B$+MID$(A$,I,1):NEXT:PRINTB$ Life was so much simpler before Unicode.
  5. The problem with BASIC is that it is an evolutionary dead end as programming languages go. And BASIC v2 is not even very far down that dead end, it's extremely limited and forces the use of very poor programming habits. Now, in the interest of shipping the product as well as having some compatibility with the most popular computer ever, it's not a bad idea to go for a slightly extended BASIC v2 now. But if the Commander X16 is going to be an educational tool in addition to something those of us of a certain age can use to relive our youth, then something better than BASIC (v2) is warranted. I've seen Forth being suggested. I liked it back in the day, but the RPN is weird and it's also extremely far from the programming main stream. I barely know Python myself, but when I started looking at it I was struck at how friendly it comes across doing away with the annoying syntax of C-based languages. And except for any time a GOTO appears, it's actually pretty straightforward to convert BASIC to Python. The main issues are that function definitions must come at the beginning of the program and you must explicitly declare global variables. But these are not issues when writing something from scratch. Even many statements and functions are the same between Python and BASIC, and the missing ones can be added in Python with just a few lines of code. So the main issue with Python on an 8-bit system is that the language is just too big and too complex. But by simply omitting any features that go beyond what BASIC can do, it should be shoehornable into a system like the X16. This means that you will be unlikely to run existing Python code on the X16, but the other way around (X16 program on a real Python system) should work as long as you don't use any of the X16's hardware features. And although I'd say if you want to learn Python, just learn the real thing, it's definitely helpful for people who learn to program on the X16 to be able to take those skills to more modern systems rather than have to start from scratch.
  6. Well, unless this project will end up a huge failure, there will be a second version/revision, so a border option can be added then. But if feature request aren't going to be considered anyway, why not close this part of the forum for the time being?
  7. From my first post I asked for a border option. And yet I find people coming out and saying an option they don't have to use is a bad thing. Flashing a custom firmware is unlikely to be a good solution because it will very likely cause incompatibilities with other software.
  8. Some other significant issues: BASIC is a dead end these days. Learning it doesn't give you any skills you can use elsewhere. But most of all: BASIC doesn't have functions (the way we're used to in modern languages). Let me give you an example. I got a mechanical keyboard with replaceable switches some time ago, and that led me to write several keyboard testing tools, such as this web-based one. (I had a hard time writing one for the Amiga because unbuffered keyboard input in standard C was hard.) I also wrote one for the X16 using the emulator: kbdtest.prg A big problem here was setting the cursor position. There is actually a KERNAL API interface for this, so you can just do: 9010 POKE781,VE:POKE782,HO:POKE783,0:SYS65520:RETURN And then HO=10:VE=8:GOSUB9010 as needed. It would have been so much better if I could have just created a function for this. My takeaway: BASIC is just too limited, and has ended up being a dead end in the evolution of programming languages. So I'd rather do something like defining a subset of Python that provides the basic BASIC functionality, but in a more modern way, where someone who learned the Python subset has a head start learning "real" Python.
  9. The point is not to select the option that looks best to 51% of people, but to have the option to adjust the way things look.
  10. I really don't understand all the pushback. Having the text start the second pixel from the physical edge of the screen just looks terrible.
  11. Well, there's the technical stuff and the esthetic stuff. Technical: this is VGA = analog, so on an actual VGA CRT monitor you will need to have borders. These will be quite tiny compared to the 8-bit computers on a TV, but CRTs just aren't that square and can't be adjusted exact enough to have no borders but also not clip the visible image. (However, the 8-bit computers used much larger borders than necessary because of CRT limitations, probably to a large degree because of memory constraints.) Esthetics: having text begin one pixel from either the physical edge of the screen (with a 4:3 LCD monitor) or one pixel from a border that is always black even if the visible image background is another color just doesn't look good. Like I said, margins exist for a reason. If I remember correctly, on the C128 there was an option to restrict the part of the screen that BASIC would use to an arbitrary rectangle. That would also be a good option. The way the X16 boots up now just doesn't look good. Anyone disagree with me on that point? Taking feature request at all yes/no is a separate question that needs to be addressed elsewhere.
  12. Adjusting the monitor only gives you a black border, which results in the same claustrophobic feel unless the background color is also black. So that's not a solution. And a general tip: it's not helpful to tell people to not want what they want.
  13. Two things: it harkens back to computers like the C64, and it avoids that claustrophobic feeling where the text is bunched up against the edge of the screen. Like printed text, that always has margins. I am of course not advocating for a mandatory border, just for an option to have one.
  14. One thing that's not very retro about the X16 is that it fills the screen all the way to the edge, with no border. I'm not a fan of that, as letters sit only a pixel away from the left edge of the screen and often there's an enormous amount of unused space to the right. So it would be great to have a more C64-like border around the active part of the screen. For instance, the VERA could be set up to output an 800x600 signal with within that the 640x480 image, so 80 pixels of border on the sides and 60 pixels of border on the top and bottom. I'm not sure if it's feasible to run in 1920x1080 with the X16 image at 2 x, so 1280x960 with 320px borders on the sides and 60px borders top/bottom, but I think that would look really great.
  15. Ah, Forth. I actually had that on my C64 back in the day. Pretty cool little language but definitely more for the connoisseurs, not a middle of the road language for day-to-day productivity.
  • Create New...

Important Information

Please review our Terms of Use