Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by DZ-Jay

  1. I think languages that have distinct operators for bitwise and logical operations. VB.Net or C#? I don't know. But even then, what does it even mean to say "(10 || 13)"? It is either a bitwise operation or a logical expression; and in either case, the results would be functionally equivalent. I do not know of any language that allows you to compare compare one term with all elements within a set using purely logical operators. The closest thing I can think of is the "in set" operator, like some functional languages (and Pascal) have. Still that's an explicit operation in a set. I think that @Zendocon's point was that a naive or inexperienced programmer may commit such a mistake, not knowing really knowing how logical expressions work in practice. I would agree with that, but then again, that just suggests they should read the manual. dZ.
  2. I wonder if it is a timing issue with the way that the vertical blanking interrupt is implemented in the emulator. Or perhaps something more prosaic: it seems that in those example cases of striped cards, the actual card is blank -- but is not in GROM. It is 8 bytes with zero data loaded into GRAM. Perhaps there is some issue with the way that GRAM writes are implemented. 🤗
  3. Hmm ... that's very strange indeed. Those cards should actually point to a blank card in GRAM. The one in the maze includes additional bits in the BACKTAB word, but the one in the introduction sequence does not. The only think I can imagine could cause the problem is that the load of those blank cards failed which are, coincidentally, loaded last during initalization. However, in both cases, it seems it failed in the same way: skipping every other line. It's as if instead of all zeros, the card in GRAM is loaded with alternating $0000 and $FFFF bytes. That is very strange. -dZ.
  4. Well, there are no "boolean" variables in IntyBASIC. If you define "A" and "B" as integers in C, you will get the same effect: a bitwise operation. But your point is very valid: programmers should keep in mind that in IntyBASIC logical "truth" is represented by any non-zero value in most circumstances. It is only given a precise value of "-1" when assigning the result of a logical expression to a variable, or when using such result as part of a greater expression, as I mentioned in my prior examples. -dZ.
  5. OK, I'm going to ignore that @carlsson mentioned it already, and post it anyway ... Cattle Cart 3 - If you missed the original release of the critically acclaimed bovine combat trilogy, do not fret! You finally get your chance to experience the thrill and excitement of navigating your herd across the vast expanses of land, sea, and space! As the name suggests, the Cattle Cart 3 includes all three titles of the trilogy: Sea Cattle, Space Cattle, and Armor Cattle.
  6. OMG! I wish I had thought of it. Darn! 😂😂😂
  7. Get ready for an exciting new adventure in bovine combat! From the developers that brought you the spectacular strategy simulation hits Sea Cattle and Space Cattle, comes the thrilling culmination of their trilogy ... Armor Cattle - Use your tanks and heavy artillery to guide your herd of steel-plated cows across the battlefield, in search of greener pastures. OK, that's it. I've seen to have run out of "Battle" titles. 😆
  8. Can you provide some details and screenshots of the problem with "Christmas Carol"? Perhaps I can help troubleshoot it. "Christmas Carol" does not use bank-switching, but it does use the expanded 42K memory that modern home-brews use. It also stores additional game-state within (expectedly) unused bits in the BACKTAB screen data. Those bits are ignored by the hardware in the standard Intellivision consoles, so an emulator that does not properly replicate that behaviour would not display the game properly. -dZ.
  9. One thing to note is that comparisons against zero are generally more efficient, if just slightly so, especially in DO/WHILE. This is because comparing against zero is a native CPU operation, while comparing against constants require loading the values into CPU registers first. Also, complex logical expressions with multiple terms are less efficient than nesting them one at a time. This is because something like the following: IF (A=B) AND (C=D) THEN Requires each term to be evaluated and then assigned a temporary logical value of zero (false) or true (-1) before performing the AND operation. In essence, the evaluated result of each term is normalized to a logical value in order to evaluate the greater expression. This is in contrast to writing the same like this: IF (A=B) THEN IF (C=D) THEN ... Which does not need to normalize or store any interim results: each term is evaluated and the results are directly applied to either process the inner block, or skip it. -dZ.
  10. Well, there you go! The manual includes these helpful nuggets: CONT Contains AND'ed $01fe and $01ff complemented content (from both controllers) ... CONT1 Contains complemented content of address $01ff (left controller) ... CONT2 Contains complemented content of address $01fe (right controller) ... WHILE expr:[statement]:WEND WHILE expr [statement] WEND Looping statement that keeps looping as long as the expression evaluates to non-zero. ... DO:[statement]:LOOP UNTIL expr DO [statement] LOOP UNTIL expr Looping statements that keep looping WHILE expression evaluates to non-zero, or UNTIL expression evaluates to non-zero. There are quite more technical details revealing the nuances of the language implementation, such as: A=A=B If A and B are the same the result is $ffff (-1) else zero ... o Comparisons now return $ffff for true results, useful with NOT
  11. Well then, maybe you should take a peek at the manual. There is a lot of good information in there about how the language works and its limitations. -dZ.
  12. And surrounded by cardboard tabs, to boot! How am I supposed to pull it out of the box???
  13. Hi, @Zendocon, I do not know if it is in the books (although I suspect it is in the first one), but that information is described in the IntyBASIC User Manual, which should be the first stop for anybody using IntyBASIC. dZ.
  14. One very minor correction: the BACKTAB is in system RAM, not "STIC memory." It just happens that the STIC uses it as a screen buffer. It still needs to assert the bus with a recurring interrupt and wrestle for control of it from the CPU, to process a frame progressively. That just happens automatically behind the scenes, though, during active display. If you disable the display, or if you don't care about what garbage shows up on the screen, you could just put whatever you want in there. It's just 16-bit system RAM. dZ.
  15. I believe you have it backwards. The first loop will wait until the controller is fully idle, looping while any input signal is different from zero. The second one will then loop while the controller is idle, waiting for a fresh new input. The end effect is to guarantee that a fresh new input signal is received. This is useful for game transitions, where you want to guarantee that only new input is processed, and ignore any input that was left pressed from before. For example, if you have a screen that says "press any key to continue," you want to make sure that the first key pressed arrives after the message is displayed. Otherwise, you risk skipping that phase completely, if the player left his thumb on the disc on the previous screen. dZ.
  16. From the makers of Sea Cattle comes the exciting sequel ... Space Cattle! Use your starfighters and space probes to guide your herd of manatees across the galaxy, in look for greener planets.
  17. Sea Cattle - Use your submarines, aircraft carriers, and your entire armada to round up your herd of manatees across the ocean, in look for greener feeding grounds.
  18. Christmas Parole - Having been granted a reprieve for your crimes on Christmas Eve, you have just 24 hours to raid the city's homes and grab as much festive loot before reporting to your Parole Officer. EDIT: Just realized that it needed two letter change ... Oops!
  19. Rover Force - As Chief Fire Officer, you manage a highly trained pack of firefighting dalmatian dogs. Your goal is to rescue little old ladies and cats in trees from the ever burning city buildings.
  20. Mole Position: In this Microsurgeon-meets-Whack-A-Mole game, You play a dermatologist trying remove unsightly growths from a lady's face. There's one! Zap it with your ultrasonic beam! There's another! Throw some aspirin at it! Where will it pop up next?
  21. Celebrate this Fourth of July re-enacting battles from the American Revolution in this patriotic war game ... Star Stripe!
  22. OMG! That is ... PERFECT! 👍🏻👍🏻👍🏻👍🏻
  23. That's a very nice picture. Although I don't know what the Tennis screenshot is doing there. :)
  24. The SDK comes with its own copies of those. I am wondering if your SDK installation has been compromised and whether you may want to download it and install it again. Let me know if you need help with it. Also, I'm planning a new release of the SDK this summer, so if you have any suggestions, let me know.
  25. The SDK should take care of all of that for you. That's what the "intybasic_sdk.rc" file does. Adding it to your bash profile will execute it when you open the terminal window, setting up your environment correctly. But for that to work, you need to make sure that the bash profile is executed (i.e., opening a new terminal window) and that the "rc" file is called with the "source" command, as the instructions say. Once you follow all the set up instructions, then everything works, and the SDK tools will work. Using "intybuild" will compile and assemble your project and "intyrun" and "intydbug" will run it the emulator and debugger, respectively. Note that the SDK tools do more than just calling the compiler. They also facilitate source-level debugging by setting up the debugger with symbol and mapping tables, and other useful features. dZ.
  • Create New...