This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
Messages - DrDnar
Pages: 1 ... 6 7 [8] 9 10 ... 38
106
« on: April 13, 2013, 02:54:29 pm »
I'm not sure why, but screwing with curRow and curCol the way you do makes it overwrite previous text. So I switched it to using the wonderful _NewLine. Anyway, this gives 22 ? ? ? on my TI-84+CSE. This seems highly unlikely to me, but I don't see anything obviously wrong. I'll have to do some more work later.
107
« on: April 12, 2013, 03:23:11 pm »
The OS interrupt handler periodically scans the keyboard matrix. If an interrupt fires in the middle of testing the delay, the interrupt processing delay will definitely throw the test off, giving a lower-than-normal value. If the interrupt handler decides it's time to scan the keyboard matrix, it will leave the key group mask set to FF, which will cause the test to never read a key press. You could try to verify this by forcing an interrupt to occur in the middle of the test sequence using a crystal timer with its delay set to a specific number of clock cycles; see WikiTI for details. If you're feeling particularly ingenious, try disassembling the OS interrupt handler and determining what causes the OS to rescan the keyboard. Then, set up the test to force those conditions to occur.
Your results may be consistent across multiple runs because the interrupt timings are fairly predictable. Specifically, the OS won't start to execute the program until after the interrupt handler sees the ENTER key and stores the keycode into RAM, and then GetKey sees the keycode and returns to the home screen app, which closes the edit buffer and starts parsing it, and then the parser loads and executes the RAM program. So, this sequence can take a fairly predictable amount of time from when you hit ENTER.
108
« on: April 12, 2013, 06:36:30 am »
Yes, there is a problem with your source code. You forgot to disable interrupts, which could cause false values to be reported. I get {4, 19, 19, 19}. My calculator is a TA3-type unit S-0605D. The needed wait time appears to be 1 or 2 microseconds. The keyboard circuits may involve an analog component, so external (or internal) forces could affected the needed wait time. The keyboard outputs are open-drain type, and the inputs have internal pull-up resistors. TI probably chose resistances that reduce power usage, which has the side effect of requiring longer wait times before keyboard matrix output transistors settle. How on earth does someone "time" a processor with only the processor to do so? And the same goes for keypresses! Wahh lol Should I test different OS versions?
We're measuring time from the point of view of the processor itself, so we don't need an external reference. We also have more than only the processor: the so-called crystal timer circuits can not only measure time in terms of the 32768 quartz crystal (which I use in my CPU clock frequency tester), but the circuits can also measure time in terms of the CPU clock divided by any of 8 different constants.
109
« on: April 12, 2013, 03:19:39 am »
The signaling rate of the Silverlink, if I remember correctly, is limited by TI to about 2 Kbyte/s, so half-an-hour for a complete dump is about right. You could make it considerably faster by adding logic that detects and avoids unused pages, or just hard-coding the sectors of the ROM unlikely to be important. A blacklink might get considerably higher throughput under some circumstances, but since you can't (by design) maintain complete CPU control in the protected and fully-preemptive environment that all modern OSes provide, the link may be less stable at high speeds.
110
« on: April 11, 2013, 02:41:43 pm »
You should ask KermM to run that on his 22 MHz TI-83+SE. (Its ASIC is a beta version of the TI-84+/C/SE ASIC.)
111
« on: April 10, 2013, 09:14:11 pm »
Here's a screenshot of TI Device Explorer.
112
« on: April 10, 2013, 02:17:50 pm »
I know calc84maniac and tr1p1ea got the calc, but they didn't show any sign of life in the past week or so regarding 84+C stuff, even with the horizontal scrolling showcase. calc84 is pretty busy with college, though I have no clue what tr1p1ea is or isn't doing. Nevertheless, they do want to write stuff, as do I, but we all have our lives to deal with.
113
« on: April 10, 2013, 02:07:39 pm »
DJ_O, I certainly have little intent of doing anything BASIC-related in the near future, due to my assembly language expertise.
It wouldn't have been so bad if TI had upgraded the ASIC with extra RAM, and more importantly, some kind of simple sprite-based graphics accelerator. Such a circuit could output 1 pixel every clock cycle, which would be about a 30-fold improvement over the Z80. So once the font data were loaded, displaying text would be a simple matter of telling it where to draw the sprites (letters). However, it seems TI was hell-bent on not having to change the ASIC. But as we all keep saying, TI really could have easily made that unnecessary by simply raising the clock speed. At 25 MHz, I suspect the calculator would feel much more responsive. I'm still trying to devise new and creative methods of tapping into those unused pins.
Also, I suspect the 68K would be able to drive the display far better. The 68K has pipe-lining and a wider bus, so it could probably output a pixel far better than the Z80's rate of about 30 cc/px. I don't know how well-pipe-lined the 68K is, but 3 cc/px would basically make it ten times faster at 15 MHz, making the display speed completely reasonable.
114
« on: April 09, 2013, 10:19:20 pm »
Learn Assembly in 28 Days is good. Also, read all of WikiTI's hardware documentation. And TI has an SDK full of documentation about the OS that's pretty good to be aware of, even if you don't use it much.
115
« on: April 09, 2013, 09:23:40 pm »
I prefer to heat up my calculator with overclocking.
116
« on: April 09, 2013, 01:11:20 pm »
It's actually 262144 colors. The screen internally uses 18-bit color. But TI uses the 16-bit mode because it's easier. Nevertheless, it is entirely possible to write an assembly program to produces 18-bit color, and in some circumstances (e.g. dynamic generation of color graphics) it is probably preferable to do so, because it supports an option for writing the red, green, and blue values separately.
117
« on: April 09, 2013, 01:39:52 am »
You'll probably need my detokenize Axiom to do anything useful with the input command. Off the top of my head, I'm not certain why it would crash, but I can think of a few possible reasons. It could be that you're parsing the data returned by input incorrectly. It's tokenized, in case you didn't know. Tokens are explained elsewhere, but suffice it say, you can't send the result of input directly to Output or Disp, and it's unwise to pass the result to GetCalc( without validating that the user typed a valid name. It could also be due to memory allocation issues. input is special in that it allocates a special temporary variable to hold the text the user types in. A temporary variable is just a regular file (like Axe files, programs, Strings, Pics, &c.) that is automatically deleted when your program ends. It's entirely possible to run out of memory by calling input multiple times, so the detokenize Axiom has a CleanAll() command that frees all of the temporary memory input allocates. If you create, resize, or delete anything after calling input, the pointer to the temporary variable becomes invalid (the OS moves the variable) and you have no way of getting a new, valid pointer. You can do it in assembly, but it would be a bit of a pain. (Of course, in assembly, you'd already know the same of the temporary variable, so getting a new pointer to it would be easy. I wish Runer would add an option in Axe to get the VAT pointer to files; it would have reduced the excessive amount of assembly code embedded in its source.)
118
« on: April 08, 2013, 12:22:33 am »
It's also slightly illegal.
119
« on: April 08, 2013, 12:18:54 am »
Is it possible? Yes. Is it cheating? Yes. Do you still want to do it? Why should I bother asking. . . .
120
« on: April 06, 2013, 09:46:19 pm »
I have never bothered with "resetting" the key port. Here's the new MicrOS GetCSC clone. The delay is 29 cycles.
;------ GetCSC ----------------------------------------------------------------- RawGetCSC: ; Scans the keyboard matrix for any pressed key, returning the first it finds, ; or 0 if none. ; Inputs: ; - None ; Output: ; - Code in A, or 0 if none ; Destroys: ; - BC ld bc, 07BFh _: ; Matrix scan loop ld a, c out (pKey), a rrca ld c, a pop af ; Probably should waste at least 20 cycles here. push af ; This is legal because F actually does have 8 bits in it. in a, (pKey) cp 0ffh jr nz, +_ ; Any key pressed? djnz -_ ; No keys pressed in any key group, so return 0. xor a ret _: ; Yay! Found a key, now form a scan code dec b sla b sla b sla b ; Get which bit in A is reset ld c, 0 _: rrca inc c jr c, -_ ld a, c or b ret
Pages: 1 ... 6 7 [8] 9 10 ... 38
|