Jump to content

pixelpedant

Members
  • Posts

    1,121
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by pixelpedant

  1. Can we get the TI LOGO 1 manual I scanned added to the TI LOGO section? As I say, it is a completely different text by a different author (and for a different version) than the TI LOGO 2 manual currently posted on the parent post: TI LOGO.pdf
  2. The floating point math in Hell's Halls is just too complex and pervasive to do an integer-only rewrite. Stuff like the probability of a door being generated on any given as-yet-ungenerated wall: D(X)=-(RND<0.6^UE+0.4) Or the equations for deriving sound frequency from tokens in sound strings then generating relevant (tone and periodic noise) complementary frequencies: 7435 A=(A*A*A/14400+25)*4 7440 FOR V=11 TO I+15 STEP 50/I 7445 CALL SOUND(-425*I,A,V,A+2,V,A*3.81,30,-4,V-I) 7450 NEXT V Everything hinges on floating point math and the fact that all TI BASIC subprograms inherently treat floating point values as equivalent to their nearest integer value (so that for example CALL HCHAR(RND+1,RND+1,33) writes character 33 to 1,1 or 1,2 or 2,1 or 2,2 with equal probability, as the X and Y values will be floating point values ranging from 1 to 2). An integer version would be a total ground-up rewrite. My recommendation for someone looking for a little bit of a speed boost would just be to run it in RXB as this will be a bit faster, but not so much as to be disruptive.
  3. I kind of doubt there's any surviving manufacturer documentation on the joystick interface, though someone may have worked it out by experimentation at some point. However, otherwise of interest when it comes to documentation on the machine (as a computer per se), here's a product sheet for the GI SP1000 speech synth/recognition chip used by the MBX: sp1000-sheet.pdf Interfacing with the 6809 is addressed as an option there, and this is what is used on the MBX.
  4. Indeed, CALL SAY can take two different types of input. Either a word contained in the default vocabulary (written in letters), or an LPC speech string (as binary data). One third possibility is segmenting an existing LPC string in the default vocabulary acquired via CALL SPGET to speak an LPC substring. But this is complex, as speech frames are of greatly varied size, and so targeting the start of a speech frame within a pattern (i.e., other than at its beginning) is not possible without fully decoding the pattern (or just getting really lucky). Anyway, I go into a little more detail about what can be done with CALL SAY in this video here:
  5. Not to my knowledge. There are some newsletter items, but not a tonne. To a large extent, advanced CC-40 BASIC programming is the same as advanced Extended BASIC programming, and the big difference is just 1) 6K of RAM on the most common model, so you've got to be even more memory conservative than in TI BASIC, and 2) character graphics follow similar conventions, but with the actual display being quite different, necessarily (with each tile being a 5x7 character and 5x1 underline, with 1 pixel column intervening between tiles, and one pixel row intervening between the character and underline).
  6. It's definitely great to have the MAME implementation, especially for the folks out there without a fully functioning CC-40. But even with a full functioning CC-40 and HexTIr on my desk, it's proving very handy for quick tests. The only issue I have with that option at present is a relatively minor graphical one which can probably be resolved by tweaking MAME's screen filtering on my end. Which is that the dot matrix is much more defined for me on the real CC-40, with dots having relatively well-defined edges, and there being space intervening between dots, so visually, the effect is quite different. I'll probably have to look into MAME's screen filtering settings, accordingly, to see if something a bit more representative can be achieved.
  7. Yup, as can be seen by the pictures in this thread, I'd just been using my CC-40 for the first couple mini-programs here, but I switched to MAME this weekend, after writing up a macro to facilitate automated code entry made that more practical.
  8. And another 10 line variation on this one. The arithmetic underlying this loop structure is so deeply tortured. I'm quite fond of it. 2023-03-13 01-28-45.mp4 1 C$="0E040404000E04040E001F111B1B1F1F111B111F1B150E151B041104110404061F0604" 2 FOR C=0 TO 28 3 IF C<7 THEN CALL CHAR(C,"1500"&SEG$(C$,C*10+1,10)&"15") 4 NEXT C 5 Q=-(Q<=0)-Q-(Q=56)*54 6 CALL CHAR(6,SEG$("1500040C1F0C0415150004061F060415",1-(ABS(Q)>C)*16,16)) 7 S$=CHR$(5)&CHR$(5)&CHR$((Q<0)*-2)&CHR$((Q<0)*-2+1)&CHR$(5) 8 S$=RPT$(CHR$(5)&CHR$(4),13)&S$&RPT$(CHR$(5)&CHR$(4),13) 9 PRINT CHR$(6)&SEG$(S$,ABS(Q)+(ABS(Q)>C)*(ABS(Q)-C)*2,C)&CHR$(6) 10 GOTO 5
  9. For some reason I decided this week I felt like doing another strict "10 Liner" demo for CC-40 which does something visually interesting. With a technical constraint inherently imposed by the device being 80 character line length (or it would not be possible to type it, on original hardware). And a further constraint imposed by the strict 10 liner format being that the program must contain only 10 discrete statements (with no statement separators). Anyway, here's something I came up with, which runs an indefinite back and forth animation of sorts. The speed of the animation can be moderated in either direction by adding or removing -TAN(0) expressions on Line 8 (which exist only to impose a delay there). 2023-03-12 18-58-05.mp4 1 DIM S$(2) 2 C$="EE4E4E0EAAE0EEE4E4EE4EEE0EAAE0EEE4EE0E0E0E0EAAE0E0E0E0" 3 FOR C=0 TO 5 4 CALL CHAR(C,"15000"&SEG$(C$,C*9+1,9)&"15") 5 NEXT C 6 S$(0)=RPT$(CHR$(4)&CHR$(5),14)&CHR$(0)&CHR$(2)&RPT$(CHR$(4)&CHR$(5),14) 7 S$(1)=RPT$(CHR$(5)&CHR$(4),14)&CHR$(1)&CHR$(3)&RPT$(CHR$(5)&CHR$(4),14) 8 Q=-(Q<=0)-Q-(Q=56)*54-TAN(0)-TAN(0)-TAN(0)-TAN(0)-TAN(0) 9 PRINT CHR$(127)&SEG$(S$(-(Q<0)),ABS(Q)+(ABS(Q)>29)*(ABS(Q)-29)*2,29)&CHR$(126) 10 GOTO 8
  10. Nevermind, I have identified the cause of the behaviour originally mentioned here. Please remove if possible.
  11. If any of you use Autohotkey, well, here is an AHK macro for pasting the clipboard into MAME CC-40 BASIC in an automated fashion (which observes relevant keystroke combinations for the emulation). Probably I am the only person on earth who finds this useful. But in case anyone else does, here it is. Simply press INSERT and code contained on the clipboard will be typed into the CC-40. Like so: 2023-03-12 03-27-26.mp4 Some minor error checking is observed (duplicate lines, lines without a number, out-of-order lines which may be indicative of incorrect numbering). Typing will terminate if the window is deselected. #IfWinActive MAME: Compact Computer 40 [cc40] { Insert:: lines:=[] prev:=0 Loop, parse, clipboard,`n,`r ; split on LF, omit CR if present { content:=StrSplit(A_LoopField,A_Space,,2) num:=content[1] if (num="") { continue } else if num is not digit ; if no valid line number { mess:="No valid line number for line " A_Index ". in text. Line reads `n`n" Trim(A_Loopfield) "`n`nEnter anyway?" MsgBox, 4, , %mess% IfMsgBox No { return } continue } else if (lines[num]) ; if line number duplicated { mess:="Line number " num " used here:`n`n" num A_Space lines[num] "`n`nAlso found here:`n`n " num A_Space content[2] "`n`nEnter anyway?" MsgBox, 4, , %mess% ifMsgBox No { return } } else if (num<prev) { mess:="Line number " prev " precedes line number " num " as follows:`n`n" prev A_Space lines[prev] "`n" num A_Space content[2] "`n`nEnter anyway?" MsgBox, 4, , %mess% ifMsgBox No { return } } lines[num]:=content[2] prev:=num } SetKeyDelay, 40,50 ; pre-press delay and press duration in ms Sleep, 300 Loop, parse, clipboard,,`r { IfWinNotActive, ahk_exe Mame64.exe { return } switch A_LoopField { case Chr(34): Send +2 case "!": Send +1 case "(": Send +8 case ")": Send +9 case "'": Send +0 case "+": Send {NumpadAdd} case "?": Send +{=} case "*": Send {NumpadMult} case "/": Send {NumpadDiv} case Chr(10): { Send {Enter} Sleep, 750 ; newline delay in ms } default: Send %A_Loopfield% } } Send {Enter} ; optionally, always enter final line even when newline absent return }
  12. Yes. Here are the instructions for Doom Games 1, 2 and 3 (and also, The Volcano Fortress and Halls of Lost Moria): https://pixelpedant.com/items/browse?tags=Tunnels+of+Doom The Shopping Trip is in Doom Games 3.
  13. For me, placing the /TI99-4A/ folder contained within the archive in the GameBase folder (for the GameBase frontend as previously distributed) and simply running the GameBase frontend executable results in the option to select the GameBase v3.03 distribution: And I can confirm that selecting that option, I do get the new games list, with a couple games released in the last year. Great work on this, incidentally! GameBase is an incredible resource!
  14. Fascinating stuff! Never knew German Video Chess did that!
  15. My computers/programming course (can't recall what it was actually called) in high school was also based around Pascal, but under a relatively obscure Canadian mainly DOS-based Pascal environment known as Watcom Pascal which was used here in Ontario for quite some time. I consequently have some nostalgia for it, myself. It was seemingly also released for C64:
  16. Mainly, that it is focused on addressing the p-System as a cross-platform operating system, rather than simply interested in teaching you Pascal. Secondly, that it is well situated in history. In 1983, at a time when p-System implementations had reached their point of greatest diversity. Such that it can address this ecosystem fairly meaningfully:
  17. It was a 40 year wait for the CC-40 to get proper mass storage. I figure an extra 24 hours isn't too bad, in context.
  18. Really, the tools TI BASIC gave buyers on Day 1 in 1979 with the base machine - in terms of disk and file and record-level access conventions and file structures and commands for taking advantage of these in TI BASIC - they go far beyond anything its home computer competitors were building into ROM BASICs in its era. You could build yourself a pretty full-featured file browser in pure TI ROM BASIC, with no additional software required. I figure I wouldn't trade that for a CAT command in a million years.
  19. One idea I'd fooled around with was an Atom/RSS feed reader/grabber which pulls feed content via HexTIr RS-232 and ultimately via a Python RS-232 service script on my main system, which grabs that data and transmits in a stripped down format. Not sure if I'll ever do the rest of the work on that, though. I'll probably refocus on game possibilities.
  20. You can catalogue a disk in either TI BASIC or XB with no special routines. The salient point being that (for DSK1, for example) "DSK1." is a special file representing disk metadata. Note the "." which is significant and required. For the details on its use, see this page from the Disk Memory System manual:
  21. Well, there are certainly other SAMS projects, yeah. For another RPG project, check out Rasmus's punnily-named Dungeons of Asgard: Unfinished, but certainly playable, and graphically awesome (because Rasmus).
  22. Yeah, as follows. For lines 100-200 for example: LIST "12",100-200 Pretty straightforward. Or that's how it is for other devices, so it can't really be any different for the printer.
  23. I had some degree of success LISTing and PRINTing to the RS-232 device via the onboard USB RS-232 controller (and hence Type-B connector). Keeping in mind RS-232 configuration parameters ("B=1200,D=7,P=E,S=1" and so on) and device number (20) in this context are the same as for the original hexbus RS-232, and so that can be treated as a reference on the basics (but so can the source code on github). Didn't get as far as looking in greater detail at the source and seeking fuller explanation of observed behaviour, as I didn't *really* have any useful purpose for it, at the time. RS232manual.pdf
  24. And another video on the CC-40. This time mainly on the multicart and HexTIr, as the must-have modern upgrades:
  25. Interesting custom CC-40 overlay from a German unit: Presumably the cart is something custom (to whatever company) as well.
×
×
  • Create New...