-
Content Count
3,419 -
Joined
-
Last visited
-
Days Won
3
Posts posted by jedimatt42
-
-
I was able to get it to 14
1 CALL CLEAR::CALL SCREEN(2)::CALL CHAR(33,"FFFFFFFFFFFFFFFF000000000080C0E0FEFEFEFEFEFEFEFEC0E0F0F8FCFEFFFF") 2 CALL CHAR(37,"F8800000000080F81F0100000000011F030303030303030180C0E0E0E0E0E0E0")::DISPLAY AT(18,30):" HAPPY HOLIDAYS TO ALL MY" 3 CALL CHAR(41,"FF7F3F0703030101E0E0E0E0E0E0E0E0FF7F3E1C00000000FFFF7F3F1F0F0703")::DISPLAY AT(20,30):" FELLOW TI USERS" 4 CALL CHAR(48,"00007CFEFEFEFEFE003C7EFFFF7E3C00FEFEFEFEFEFEFEFEFEFEFE7C00000000")::FOR I=1 TO 60::READ R,C,V::CALL HCHAR(R,C,V)::NEXT I 5 CALL CHAR(45,"000000000080C0FFFFFF7F3F1F1F3FFFE0E0E0E0C0800000")::CALL COLOR(1,7,1,2,7,1,3,13,1,4,7,1,5,5,1,6,5,1) 6 CALL CHAR(56,"FF7F7F3F3F1F1F0FFFFEFCF8F0E0C0800F07070707030301FF7F7F3F3F1F1F0F")::CALL COLOR(7,5,1,8,5,1,10,16,1) 7 CALL CHAR(60,"FFFFFFFEFEFCFCFC0F07070303010000F8F8FCFCFEFF7F00",100,"000028107C102800")::RANDOMIZE::FOR I=3 TO 28 8 SC=INT(RND*256)+1::VSPD=INT(RND*2)+5::CALL SPRITE(#I,100,16,1,SC,VSPD,0)::FOR DEL=1 TO 50::NEXT DEL::NEXT I::GOTO 5 9 DATA 5,14,33,5,15,33,6,14,33,6,15,33,6,16,34,7,14,33,7,15,33,7,16,35,7,17,48,7,18,33,7,19,33,7 10 DATA 20,36,6,17,49,8,14,33,8,15,33,8,16,37,8,18,38,8,17,50,8,19,33,8,20,33,9,12,39,9,13,33,9 11 DATA 14,33,9,15,33,9,16,35,9,17,50,9,18,33,9,19,33,9,20,33,9,21,40,10,13,41,10,14,33,10,15,33,10 12 DATA 16,35,10,17,51,10,18,33,10,19,33,10,20,33,10,21,42,11,14,43,11,15,44,11,16,33,11,17,45,11,18 13 DATA 46,11,19,33,11,20,33,11,21,47,12,16,56,12,17,33,12,18,33,12,19,33,12,20,57,13,16,58,13,17,33 14 DATA 13,18,33,13,19,57,14,17,59,14,18,60,15,17,61,15,18,62
I recently learned that you can leave trailing '0's off in the CALL CHAR pattern definitions. XB will automatically fill the definition out to the right with zeros for you.
So, "00007CFEFEFEFEFE003C7EFFFF7E3C00FEFEFEFEFEFEFEFEFEFEFE7C00000000" from line 4, can be "00007CFEFEFEFEFE003C7EFFFF7E3C00FEFEFEFEFEFEFEFEFEFEFE7C"
Also, did you see what Tursi did to squish my data? I think you can get 44 bytes in a single DATA line that way. Instead of DATA 5,14 for your R,C values, you would pre-compute (R*256)+C, and put that value in the DATA statement. Then after performing something like READ N to get the squished bytes, you deconstruct them again. R=INT(N/256)::C=N-R. I imagine this gets messy if any values of R are greater than 127, but both our cases don't have that issue.
Right now, with the small values, the DATA statement is holding about 34 bytes per line.
Now, I recognize you need triplets, not tuples. But do you? If you drew all of your 33s then all of your 34s, and so on, you could possibly pull them out of the data and into a loop.. I preceeded my coordinates with a tuple of count,asciicode and then the list of R,C locations for that asciicode.
btw: I like the theme of yours
It looks good. -
Maybe that was a wish list?
-
Title: XmasLights
Story: Too many bytes for Christmas, until the Harmlesslion crunches them.
Programmers: Jedimatt42 & Tursi
1 CALL CLEAR::CALL SCREEN(15)::CALL COLOR(2,7,16,10,11,15,11,13,15,12,7,15)::G$="001C3E7F7F7F3E1C"::CALL CHAR(104,G$,112,G$,120,G$)
2 K$=RPT$("03071CF0",3)::CALL CHAR(42,"2854AA54AA5428",43,"2050A85020",44,"205020",45,K$)::FOR I=1 TO 8::C=INT(RND*226)+1
3 CALL SPRITE(#I,42,16,3,C,9,3,#I+8,43,16,2,C+13,7,2,#I+16,44,16,1,C+27,5,1)::NEXT I::CALL VCHAR(6,3,45,7)
4 CALL VCHAR(6,7,45,7)::READ M::FOR I=1 TO M::READ N::L=INT(N/256)::C=N-L*256::FOR J=1 TO L::READ N::Y=INT(N/256):=N-Y*256::CALL VCHAR(Y,X,C)::NEXT J::NEXT I
5 FOR I=1 TO 8 STEP 2::CALL CHAR(45,SEG$(K$,I,16))::CALL COLOR(11,4+I,15,12,14-I,15)::NEXT I::GOTO 5
6 DATA 10,616,1283,1287,880,1796,2053,1798,2424,2569,2570,2571,2572,2315,2314,2825,3082,3083,1904,2318,2574,2830,3086
7 DATA 2575,2320,2577,1912,2323,2579,2835,3091,2580,2325,2582,3184,2328,2584,2840,3097,3098,2843,2587,2331,3099,3355
8 DATA 3610,3609,3440,3592,3849,4105,4362,4619,4875,5132,3596,3851,4107,4617,4873,5128,3192,4366,4622,4878,5134,4367
9 DATA 4624,4880,5136,4369,4626,4882,5138,2672,4375,4631,4887,5143,4630,4373,4628,4884,5141,4886,2680,4380,4379,4378
10 DATA 4633,4890,4891,5148,5403,5402,5401
-
8
-
-
dad helped me with the math and the sled moving...
it is called christmas day sledding
Oh, I like that! Reminds me when I was a kid and my best friend and I would always try and stay on the sled together.
Nice!
-
Did a little data compression for you - would you like to enter it now?

Since all the numbers were small, I packed the L/C and Y/X pairs by multiplying the first by 256 and adding the second -- essentially byte packing two 8 bit values into a 16-bit value. Reading back, I just reverse the process. INT(N/256) gives us the high byte, and then we subtract to get the remainder, which is the low byte.

Oh, that is brilliant! I love it! And thank you so much! This is a great technique. I'll get it over to the entries thread then
-
Well, I've never tried to code small before
so this was a fun challenge... Regrettably my concept fails to fit. But I want to share it anyway... I could and may change the message to fit, but that isn't what I was going for. This isn't an actual entry, since it doesn't meet the criteria. But I enjoyed doing this. First time I've used DATA and READ.
Title: XmasLights
Story: Too many bytes for Christmas
Programmer: Matthew Splett
1 CALL CLEAR::CALL SCREEN(15)::CALL COLOR(2,7,16,10,11,15,11,13,15,12,7,15)::G$="001C3E7F7F7F3E1C"::CALL CHAR(104,G$,112,G$,120,G$) 2 K$=RPT$("03071CF0",3)::CALL CHAR(42,"2854AA54AA5428",43,"2050A85020",44,"205020",45,K$)::FOR I=1 TO 8::C=INT(RND*226)+1 3 CALL SPRITE(#I,42,16,3,C,9,3,#I+8,43,16,2,C+13,7,2,#I+16,44,16,1,C+27,5,1)::NEXT I::CALL VCHAR(6,3,45,7) 4 CALL VCHAR(6,7,45,7)::READ M::FOR I=1 TO M::READ L,C::FOR J=1 TO L::READ Y,X::CALL VCHAR(Y,X,C)::NEXT J::NEXT I 5 FOR I=1 TO 8 STEP 2::CALL CHAR(45,SEG$(K$,I,16))::CALL COLOR(11,4+I,15,12,14-I,15)::NEXT I::GOTO 5 6 DATA 10,2,104,5,3,5,7,3,112,7,4,8,5,7,6,9,120,10,9,10,10,10,11,10,12,9,11,9,10,11,9,12,10,12 7 DATA 11,7,112,9,14,10,14,11,14,12,14,10,15,9,16,10,17,7,120,9,19,10,19,11,19,12,19,10,20,9,21,10 8 DATA 22,12,112,9,24,10,24,11,24,12,25,12,26,11,27,10,27,9,27,12,27,13,27,14,26,14,25,13,112,14,8 9 DATA 15,9,16,9,17,10,18,11,19,11,20,12,14,12,15,11,16,11,18,9,19,9,20,8,12,120,17,14,18,14,19,14 10 DATA 20,14,17,15,18,16,19,16,20,16,17,17,18,18,19,18,20,18,10,112,17,23,18,23,19,23,20,23,18,22 11 DATA 17,21,18,20,19,20,20,21,19,22,10,120,17,28,17,27,17,26,18,25,19,26,19,27,20,28,21,27,21,26 12 DATA 21,25-
3
-
-
As I have demonstrated, I'm not the most forum savvy individual. But what I've seen that works best for pinned topics are indexes, and lists, such as the developer resources topic, which is pinned. The .bin topic, is a nice new edition that fits that.
The only other thread floating around that looks like it should be pinned to me, is the 'toxic lists' thread, http://atariage.com/forums/topic/241978-ti-99-resources-lists/
It provides that index to many things TI.
Schmitzi, the other threads you highlighted as candidates, you also demonstrated that pinning isn't necessary for them. The popularity searches make them easily accessible automatically.
I made a suggestion somewhere else here regarding more pinning, but after getting a better feel for it, there aren't many threads that meet that index of things criteria that I would require of pinned threads.
The high score, and photos thread are exempt from that criteria, because they are clearly declaring community values.
-
1
-
-
Here is a contrasting environment
Iwantgames setup looks like a monument, where my setup looks like a disaster zone. There is a little star-wars shrine like behavior going on in the background. I keep thinking I'll get all this super tidy, and pretty. But this is reality. On the left is the PEB keeping eye on most of the star-wars legos. On the right side, is the gaming PC that I haven't used to play a game since I grabbed a TI this summer. It's now the TI's hdx drive, the oscilloscope, eprom burner, and winter space heater. The PC can access the 40" screen, but usually just uses the little one on the right.
The TI gets the 40" screen. The F18A cured the jitters I was having. Those jitters had quite a bit of travel on that screen.
The little blue fan behind R2-D2 actually went into the PEB last weekend.
The goal here is to get the USB-TI-Keyboard adapter in the console, then hook a usb-kvm up and share the little keyboard on the right. Although I'm growing increasingly fond of the wireless keyboard that is in front of the TI.
-
4
-
-
I use joystick 1 when I play.
-
To bad I can not use RXB.
I can write and use small Assembly with no 32K in scratch pad RAM with CALL EXECUTE
I can embed and execute VDP Sound lists to repeat forever with CALL IO
I can move the entire VDP screen or definitions to and from VDP RAM with CALL MOVES
I can change VDP modes to Text or Split Screen with CALL POKER
You could do a lot with just 10 lines in RXB. Maybe the next contest could use RXB.
It's Christmas time fun...
You might have fun doing that in RXB even if it doesn't qualify for the compilation or competition. I'd love to see those techniques put to use and I bet others would love to see what can be done too!
-
1
-
-
Is there a trick to entering lines that long?
-
If you are into imaginative thought: could 3 flex cable cards be made to run 2 PEBs on 1 TI?
-
1
-
-
That is an interesting question. But I highly doubt it. Looking at this: http://www.mainbyte.com/ti99/speech_peb/speech_peb.htmlwhich is not exactly the RAVE99 adapter, you can see that things are only partially provided. Looking at this: https://www.pinterest.com/pin/24418022949668911/
you can plainly see that the rave99 board is also not fully wired.
-
1
-
-
Personally I would not use that UHS mini for a USB host, too risky tying the USB +5 VBUS supply to a constant source. A USB Host should detect that a device needing power is connected and switch the VBUS accordingly (see the example schematic on pg. 26 of the MAX3421E datasheet.) Also, tying the MAX3421E 3.3V power to the USB VBUS *at all* is not a good idea, ever, IMO.
I agree. The creator of the USB Host mini ships with the 3.3v going to the USB +5 VBUS output, but I cut that trace and provide the TI's powersupply +5v to the USB VBUS. This is where I attempted to follow the USB Host mini howto page and provide some substantial capacitance at the VBUS. It is proving unstable. I'll go read the MAX3421E datasheet. I keep having this nagging feeling, I need to learn to do surface mount, and skip this USB Host mini. It takes around a month to get one, or you go the knock-off route, which seems questionable.
As unstable as it is, once it is up and running, I'm able to use it all day long. But ignoring that USB handshake if you will for power, sounds like a good place to narrow in on why my adapter's boot up is unpredictable. Thanks!
You also have to remember that the 5V supply current being provided to the 99/4A keyboard connector is limited. You are also driving the USB bus with that, and USB peripherals can expect to get up to 500ma from the bus (in addition to all the chips you are trying to power), which the keyboard connector may not be able to provide.
I am not driving the usb bus with anything from the TI keyboard connector. Those lines are just going to digital gpio lines on a "Teensy 3.1.", I power the Teensy off the +5v on the TI power supply, and that powers the USB Host mini board off of it's 3.3v power output. The 3.3v is disconnected from the USB +5 VBUS with an exacto-knife. And the +5v VBUS is fed again off the TI power supply. It seemed reasonable
except for the part where I am not switching the VBUS on request.As for capacitors, they can be used in many ways and you should really try to get an understanding of them. Capacitors don't "give" capacitance to a circuit like a regulator provides current. It does not work that way. Capacitance is a function of a device, which can be a capacitor, but it can also be just a pair of wires, traces on a circuit board, the space between two resistors, etc. Capacitors can be used to couple signals between circuits, used in signal filters, as timers, as small batteries, etc. Lots of possibilities.
When you see a capacitor between a power supply pin and ground, that is typically being used as a small filter / battery. Typically they are physically located close to the Vcc pin on a device to provide a little extra current in a digital system that can have lots of digital signals switching rapidly. Regulators will almost always have capacitors on their inputs and output which act as filters. In your circuit, the use of capacitors is going to be limited to these two cases. The circuit for the USB bus itself is already implemented, and any discussion of capacitance in the USB spec is mostly likely related to the d+ and d- lines and not the VBUS power.
Of course all this info is a heavy simplification and generalization. But just searching for "understanding capacitors" or "capacitors in digital circuits", etc. should get you a lot of info. You can also search for "electronic filters", "power supply basics", etc. to get an understanding of their use in power supplies and such.
Thanks! That should give me a lot to chew on.
-
Oh, right. I get it now. The quotient from each pass of the loop is the input into the next pass at the loop, with only the last quotient left on the stack. Thanks!
-
I'm trying to get a grip on the ISR support in fbForth.
Looking at the example in chapter 10.2 of the fbForth manual, the definition of DOWN seems odd, in that ALLOT doesn't leave anything on the stack. So I'm trying to better understand why the UP and DOWN, and the asymmetry..
The example goes like this ( From Lee's book ):
0 VARIABLE TIMER : UP 100 ALLOT ; : DOWN -100 ALLOT DROP ; : DEMO UP 1 TIMER +! TIMER @ (s:1) (value of timer) PAD DUP 5 + (s:3) (value of timer, pad, pad + 5) DO (s:1) (value of timer) 0 10 U/ (s:2) (rem, quot) Timer gets coerced to a couple with the zero? and then remainder is our digit SWAP 48 + (s:2) (quot, ascii digit) I C! (s:1) (quot) -1 +LOOP (s:1) (quot) (is this leaking with every loop iteration then?) PAD 1+ SCRN_START @ 5 VMBW (s:1) (quot) DOWN ; (s:0) ( now drop cleaned up our straggling quotient from the earlier division. )
And then DEMO is installed as the ISR.
I've annotated the code above with (s:n) where n is the number of items on the stack logically at the end of that line. I'm sure there is some funny business with interpretting that across the DO loop... but that shouldn't matter for this conversation.
I've annotated what I think is on the stack at each step as well. I think that the DROP shouldn't be in the DOWN definition, but should be in the end of the +LOOP, cleaning up the unused quotient with each iteration.
Is that correct?
The UP and DOWN routines seem to be about creating a safe buffer for rendering the character string. So was shifting the use of 100 as the value to shift PAD based on PAD usage in this routine, or PAD usage in whatever code might have been interrupted by the ISR?
All insights appreciated.
[email protected] -
Here are some cool enough items:
http://www.zazzle.com/tunnels_of_doom_tee_shirts-235227526719364224
http://www.zazzle.co.uk/alpiner_tees-235992507554885578
It is probably safe to adopt this one now:
http://www.redbubble.com/people/halfjim/works/2937920-alex-kidd?grid_pos=121&p=t-shirt
This one looks good for thanksgiving:
http://www.redbubble.com/people/hordak87/works/12871622-eaten-by-the-wumpus?grid_pos=4&p=t-shirt
I have this one:
http://www.cafepress.com/mf/66046719/tunnels-of-doom_tshirt
T-shirts are always something I offer up to those forced to get me gifts...
-
1
-
-
The UberGROM exposes a 7-point-something kHz timer, not a real time clock. The AVR series don't have an RTC function. We could make an ARM based one instead (something I want to do
), they tend to have RTCs.Anyway, my pipe dreams don't solve your issue.
You could use the UberGROM timer if you already had it in the system and track elapsed time between calls to come up with a reasonable clock, but I wouldn't add one to solve clock.Thanks for clarifying that. I had totally misunderstood that
I must have 'heard what I wanted to hear' instead of listening in that part of your video on the GromConfig tool. -
I'm using a Gotek. With firmware from the same guy as the Lotharek drives. Formatting has never worked for me. So I use TiImageTool java app on PC to create a blank sector image, then I convert that to hfe with the hxc desktop software. Once there, TI software can read and write just fine, and rename the disk too.
There was a thread on the hxc2001 forums about formatting on TI that never seemed to be resolved. Does anyone if formatting on the Lotharek drives works on TI now?
Somewhere we must have a DSR rom image dumper? If aftyde had that, the image could be diffed against each of the available mod images.
I'm assuming you already opened up the controller board and looks at the labels on the eproms? I'm pretty sure mine came labelled. ( I didn't burn them myself )
-
1
-
-
Clocks.. Hmm, any plans to support the HDX1.TIME clock?
I've heard a couple strategies for keeping time in the minesweeper thread, so I imagine initializing time from the whole PAB dance doesn't hurt too much.
Also I remember the UberGrom can expose a real-time clock that Tursi made easy to read.
Are any of those in play?
Oh, the tick goes away if you go into the editing options and back. But you probably already know that.
And, any quick tips on what JIMS is? I saw that when saving. I think it was a choice of BOOT or JIMS. Is that how you create chainable menus?
And the answer can be wait for the docs.
-
This is nice! I've loaded the menu right up...
First glance, on my system I see a strange back-tick character in menu option 'B'...
Also, it doesn't seem to save the color selection. But it does save the menu configs.
But this is pretty cool!

Thanks!
-
With a 74LS612 memory mapper. See this page for the schematics: http://www.unige.ch/medecine/nouspikel/ti99/superams.htm
I am specifically curious if anyone has ever adapted that to in console? Or is there still an opportunity there?
-
1
-
-
Better idea is the SAMS 1 Meg in Console.
Does a recipe for that exist? Or is that still to be designed?
-

2015 Holiday Demo Contest
in TI-99/4A Computers
Posted
If you are talking about Iwantgames:) 's Texas, then I agree, there are about 7 vertical streaks of '!' characters that could be drawn first, and then filled in around with all the detailed graphics. If you Alt-4 break the program, it becomes apparent when XB still shows the layout, but reverts the character set for programming. Also, 2 of those chunks could be filled in as 1 by letting the '&' and the '.' write over it later.
That very well may be more efficient than grouping by repeating character codes, because after you do those '!', the only character that repeats is the '#'
[email protected]