- You Can Help Discover More About the TI-8x Calculators!
- 12 Mar 2013 06:51:08 pm
- Last edited by DrDnar on 14 Mar 2013 02:14:19 am; edited 2 times in total
Although we know a lot about the TI-8x ASICs, there still remains significant work to be done. Recently, I have discovered something new that needs to be confirmed. You can help confirm this by typing in the following program and posting your results. This test can be performed by TI-83+SE, TI-84+, and TI-84+SE users; the TI-83+ is not relevant. If you have a MathPrint OS, disable MathPrint before trying this and clear the homescreen. The information from this test relates to port 27h and is related to accessing the extra RAM pages. It may be of use to operating system writers, assembly programmers, and Axiom writers.
Code:
(Assembly for the experts:)
Code:
Run this like a regular assembly program. It should print two numbers. The first will is the ASIC ID and will be either 51 (TI-83+SE), 68 (TA2), 69 (TA3), or 85 (TA1, what all new calcs have); the second will be either 128 or 134.
If you don't mind causing a RAM reset, there's a second test you can perform. This test is related to custom interrupts. The test will cause a crash, hang, freeze, or otherwise errant behavior if it fails; if it passes, the busy indicator will keep scrolling until you press CLEAR (give it half a minute or so). If the above code printed 69 for the first number, this should pass if I'm right. If I'm right, all other values will cause a crash. Do not use any shells. Doing so is likely to cause a false negative. The test is simply this:
Code:
If this test passes with the first number from the above test being anything other than 69, let us know; it could provide a great optimization for Axe.
Code:
:AsmPrgm
:DB156F2600
:EF0745EF2E45
:F31E801686
:0E052100C173
:ED51723EFF
:D327463CD327
:ED79FB260068
:EF0745EF2E45
:C9
(Assembly for the experts:)
Code:
; Yes, I know you can optimize this by at least two bytes.
in a, (15h) ; DB15
ld l, a ; 6F
ld h, 0 ; 2600
b_call(_DispHL) ; EF0745
b_call(_NewLine) ; EF2E45
di ; F3
ld e, 80h ; 1E80
ld d, 86h ; 1686
ld c, 05 ; 0E05
ld hl, 0C100h ; 2100C1
ld (hl), e ; 73
out (c), d ; ED51
ld (hl), d ; 72
ld a, 0FFh ; 3EFF
out (27h), a ; D327
ld b, (hl) ; 46
inc a ; 3C
out (27h), a ; D327
out (c), a ; ED79
ei ; FB
ld h, 0 ; 2600
ld l, b ; 68
b_call(_DispHL) ; EF0745
b_call(_NewLine) ; EF2E45
ret ; C9
Run this like a regular assembly program. It should print two numbers. The first will is the ASIC ID and will be either 51 (TI-83+SE), 68 (TA2), 69 (TA3), or 85 (TA1, what all new calcs have); the second will be either 128 or 134.
If you don't mind causing a RAM reset, there's a second test you can perform. This test is related to custom interrupts. The test will cause a crash, hang, freeze, or otherwise errant behavior if it fails; if it passes, the busy indicator will keep scrolling until you press CLEAR (give it half a minute or so). If the above code printed 69 for the first number, this should pass if I'm right. If I'm right, all other values will cause a crash. Do not use any shells. Doing so is likely to cause a false negative. The test is simply this:
Code:
:AsmPrgm
:FBED46FD3421
:10FBEF1840
:FE0F20F1
:ED5676C9
Assembly = _: ei \ im 0 \ inc (iy+asm_flag1) \ djnz $-3 \ b_call(_GetCSC) \ cp skClear \ jr nz -_ \ im 1 \ halt \ ret
If this test passes with the first number from the above test being anything other than 69, let us know; it could provide a great optimization for Axe.