Show Posts

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 - thepenguin77

Pages: 1 ... 42 43 [44] 45 46 ... 108
646
Miscellaneous / Re: Do you know what Duplo blocks are?
« on: August 20, 2011, 09:25:17 pm »
I've used them, I just didn't know what they were called.

647
Other Calculators / Re: TI 84 manufacturing cost
« on: August 20, 2011, 07:13:09 pm »
The $30 difference between the 84 BE and SE is 1mb flash

Actually where I live, at walmart, the 84+BE costs like $88 and the 84+SE costs $95. That's only $7. What I think that means is that Ti isn't actually ripping off stores, I think the stores are ripping us off, well, for the flash chip anyways.

(walmart.com doesn't even list the 84+BE :P)

648
TI Z80 / Re: Screenshot Hook
« on: August 20, 2011, 09:48:13 am »
Quote
I'll look into making it work when the edit buffer is open

If (cxCurApp) == $40 (homescreen)
Code: [Select]
ld hl, (editCursor)
ld de, (editTop)
or a
sbc hl, de
ld (op6Ext), hl

bcall(_closeEditEqu)


;do stuff

;#########################################
fixEditBuffer:
bcall(_closeEditEqu)

bit 5, (iy + $44)
jr z, notMathPrintEnabled

ld hl, saveSScreen
ld bc, 767
bcall(_memClear)

xor a
ld (menuCurrent), a
bcall(_clrLCDFull)
ld hl, cmdShadow
ld de, cmdShadow+1
ld bc, 127
ld (hl), $20
ldir
bcall(_clrTxtShd)
bcall(_homeUp)

ld hl, $40
bcall(_pullDownChk)
bcall($5125)
set curAble, (iy + curFlags)
res curLock, (iy + curFlags)
ret

notMathPrintEnabled:

bcall(_setupEditCmd)
tryIt:
ld bc, (op6Ext)
ld a, b
or c
jr z, bufferIsZero

ld hl, (editTail)
ld de, (editCursor)
ldir
ld (editTail), hl
ld (editCursor), de
bufferIsZero:

ret


Quote
In the ASM programs in which it does work, it carries the potential to break them if they expect OP1 to remain intact across a bcall(_GetKey)
Code: [Select]
;#########################################
pushOP1:
push af
push bc
push de
push hl

ld hl, -12
add hl, sp
ld sp, hl
ex de, hl

ld hl, 12
add hl, sp

ld bc, 10
ldir

ld hl, op1
ld bc, 12
ldir

pop hl
pop de
pop bc
pop af
ret

;##########################################
popOP1:
push af
push bc
push de
push hl

ld hl, 10
add hl, sp
ld de, op1
ld bc, 12
ldir

ld hl, 10+12-1
add hl, sp
ex de, hl

ld hl, 10-1
add hl, sp

ld bc, 10
lddr

inc de
ex de, hl
ld sp, hl

pop hl
pop de
pop bc
pop af
ret

That's how I do it. <.< >.>

Edit:
   Forgot about a prerequisite of the first routine, it's good now though.

649
ASM / Re: Constructive and Creative uses of IX and IY
« on: August 20, 2011, 09:30:12 am »
Well, I've used IX in quite a few weird ways

I guess my main IX hack is using it as a pointer to where I need to jump next. For instance, in my TruSound, I use IX as the pointer to the main routine because jp (ix) is faster than jp imm16, in that I also use IY as the location of where I should jump to continue decoding the sound. Basically, I see where I'm at in the current decoding process, and give IYL a pointer to a jump table on where to go to on the next byte.

Another hack I recently figured out is that (iy - 3) is the end of plotSScreen. This means you can have your own set of flags that are guaranteed to be free to use. And since it uses the location that IY is already at, you're not even giving up a register.

Edit:
    I also use IX when I am making my own bcall routine. Putting stuff in IX just leads to a smaller bcall routine.

650
TI Z80 / Re: On-the-fly screenshots (homescreen only)
« on: August 19, 2011, 03:32:26 pm »


There's one I bet not many people have seen on a real calculator.

651
ASM / Re: I'm having trouble with my crystal timer interrupts
« on: August 18, 2011, 11:14:12 am »
Well, I see one of two things happening:
1. Your interrupt routine is relapsing in on itself. I don't think this is the problem, as it would probably cause a crash, but we can't rule it out.
2. You are restarting this whole sequence before it finishes. This would make sense as it is cleanly drawing stuff and just stopping.

The reason for this is because your calculator is not as good hardware wise as wabbitemu. I don't think wabbitemu emulates the 19 t-state delay I talked about and wabbitemu's screen only requires 60 t-states of delay after a write, (and I'm not positive, but I think this is regardless of speed), so what that means is that your program is finishing much quicker on wabbitemu and therefore has time to finish updating the screen.

Or I could be completely wrong. ;D

652
TI Z80 / Re: zStart - an app that runs on ram clears
« on: August 18, 2011, 10:28:47 am »
There's a big bug with the Mathprint division thing, which most of the time crashes my calculator and some other times divide the screen into half, and the cursor blinks at the middle while everything else fill in the upper half of the screen. It's like you have Horiz on but worse. This bug only happens with Alpha F1, n/d, both in Mathrpint mode and in CLASSIC mode. Other Mathprint stuff is fine.

Yeah, this is actually hardware related, though, we're really not sure how. What's the serial number on the back of your calculator? Somehow Ti messed up pretty bad.

653
Other Calculators / Re: State of the Calculator at Boot
« on: August 16, 2011, 11:42:25 am »
A bit late, but...

This is good, I was looking for this information a couple of months ago but I couldn't find any

edit: wait, why are there a couple of bytes missing in the jp 0 case?

This is because those values got changed before I could read them. If you look at 0000h in the OS, you'll see what I mean. But honestly, jumping to 0000h is no different than just executing code normally.

Also, what is the reason that you need to pull the link lines low?

This is because I needed an external switch to either go to the boot code or not, and I only had 9 bytes to implement it. You wouldn't want to go to the fake boot menu every time because that would brick your calculator. ;D

654
ASM / Re: I'm having trouble with my crystal timer interrupts
« on: August 16, 2011, 11:31:08 am »
1. The first interrupt occurs from hardware timers as opposed to crystal timers.  I assume that it's normal and that there's nothing I can do about it?

You could turn the regular interrupts off. "XOR A \ OUT (03), A". After the out, you won't have another normal interrupt until you restart port 3.

Quote
2. The 84+ uses two of the three timers.  Which of the three is free to use?

All three are always free to use. The OS does use two timers, but that is only during USB stuff. I'm not really sure how the rumor got started that you can only use one of them, because you can use all three at any time. I guess the only time you couldn't is if you are in a hook, but you shouldn't use them in a hook anyways.

655
ASM / Re: I'm having trouble with my crystal timer interrupts
« on: August 16, 2011, 01:22:21 am »
Well, I think I see two problems, one is probably pretty serious though.

1. You need that EI in your interrupt routine, interrupts start with interrupts disabled so that your calculator doesn't endlessly interrupt and stack overflow.

2. This one you're not going to like, but it's a fact of life. The interrupt routine takes 19 t-states to complete. So take your current interrupt t-states and add 19 to them. This would imply that the next interrupt will be firing before the current one finishes, so while that won't stop the interrupts from working, it just means that it will instantly reloop without executing regular instructions.


The way you set up the crystal timers looks good though, I'd just put that EI after the OUT to ($32).

Edit:
   Also, once the interrupt occurs, I don't think you can throw it away. This means when you go to the next row, things might get a little ugly since you have the interrupt waiting to occur at the next EI.

Edit2:
   Well, it kind of works. You don't need to output to ($30) again. And while I believe you did it for the wrong reason, that second output to ($31) is actually necessary. This is because if you let the crystal timer expire twice, your interrupts die, which means yours will die if you don't intervene within 200 t-states. So the second OUT ($31), A renews this timer for you. Just remember that your EI \ RET is going to instantly go back to your interrupt routine though.

656
TI Z80 / Re: zStart - an app that runs on ram clears
« on: August 15, 2011, 07:19:34 pm »
The run on home option appears to break the Basic Menu( command. It always gives Label errors even if the label is valid.

EDIT:
The calculator froze when I was at the bottom of the program and selected bottom from the ON+Vars lbl menu.

Noooooooooooooooooo. Darn, not bug proof. I'm not sure why the first one happens, but it's definitely true. The second one only happens if you are at the start of the last line though.

Also, I figured out that you can't edit programs in math print.


So... I guess that means there will be a 1.3.001, however, I'm going to wait a bit to release it, because I want to catch all of the errors. (I didn't find this stuff because I use basic at most once every two months)

657
Since I've seen "crash-proof", I've become very tempted to attempt a program that corrupts the archive beyond what yours can repair ;D
Anyway, congratulations!

To be honest, I would love for you to do that. If it does crash, I would be able to see why it crashed, and fix that, so it never happens again.

658
Awesome. I wonder if this could fix Zeldaking/p2 issues?

This should be able to fix any problem with your archive. I believe the program is crash proof, so it should be able to recover any valid program in the archive.

On a side note, like the earlier version, this only saves programs, protected programs, appvars, and groups, everything else is ignored. So don't count on your archive pictures to still be there.

659
TI Z80 / Re: zStart - an app that runs on ram clears
« on: August 14, 2011, 10:06:01 pm »
I've been using 1.3.000 for a bit now and have now deleted CalcUtil.

Does this play nicely with Krolypto too?  school's starting soon and one can't be too careful x.x

I think it will work nicely with Krolypto, just be sure you run Krolypto after you run zStart (though the reverse would be tough.) The reason is that zStart doesn't really destroy any normal hooks. If I use a temporary hook, like getCSC, I always back up the original. So Krolypto might disable something in zStart, but zStart shouldn't disable Krolypto.

If you're super awesome, you could make a program that calls the "Install" address within Krolypto that runs on ram clears. Or, if you slightly less awesome, you could have Krolypto run on ram clears. (Making that program isn't really that hard in fact, 5 minutes with wabbitemu, then 5 minutes of programming and you should be done.)

Edit:
    Krolyto doesn't work at all like Omnicalc, it doesn't keep an appvar and it doesn't have an "Install all" hook, it just installs stuff individually. So you're probably best to have the actual app just run on ram clears.

660
TI Z80 / Re: Ever corrupt your archive?
« on: August 14, 2011, 05:59:01 pm »
What is this wizardry?!
How does it work?

I'll explain the process.
1. Find the first page starting at the end of the archive that is not an app, AND it with $FC and store that.
2. Find a suitable swap sector.
    a. First scan the archive for a sector that starts with $FE (swap) or $FF (blank)
    b. If that didn't work, look for a sector that doesn't have any valid programs in it
    c. If that didn't work, screw it and use page 8.
3. Starting on page 8, and ending at the page found in step 1, begin copying everything to the swap sector.
    a. First, search the page for a program that has a valid header (valid meaning not erased, good type, good length, and 0 < (name length) < 9)
    b. Copy that program to the swap sector making sure to set the new address and page to where you are copying it
    c. When the end of a sector is reached, erase it and continue on to the next one
    d. If the swap sector runs out of space, just find a new one. (By this time, page $0C is guarenteed to be open.)
4. Find one last swap sector and copy sector 8 there (program by program because of the valid page thing)
5. Mark sector 8 as the swap sector and clear ram (to rebuild vat)

That's about it. I didn't include any code to try to optimize how the variables are stored in the archive, but, as you make new variables, they'll take up the little spots at the end. This was mostly done to increase speed, and because it would just be annoying to add.

Cool :D. I've never had issues, but I think I'll keep this topic in mind.
So, the TI-OS will claim another sector from the user sometimes? Interesting.

Ti-OS won't claim another sector, but some program might accidentally. If you write 00 to the first address of any sector, the OS will just stop using it. If it sees that the sector is invalid, rather than deleting it, it just ignores it.

Edit:
   Source attached for your enjoyment.

Pages: 1 ... 42 43 [44] 45 46 ... 108