Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "ti83plus.inc"
- #include "axe.inc"
- .dw $C0DE
- .dw GotoProgram - Check_If_Normal_Or_15Mhz
- .db %11101110
- .db $7E, $08
- .db %00000000
- .db 0
- ; Crabcake_START
- .org 0000
- Check_If_Normal_Or_15Mhz:
- di
- in a, ($02)
- rla
- jp c, Is15MhzCalculator
- jp Is6MhzCalculator
- Is6MhzCalculator:
- call sub_Axiom2
- ;Save the page where code is running.
- in a, ($06)
- push af
- call sub_Axiom3
- ld a, a
- ld de, AfterExploit
- push de
- jp (hl)
- AfterExploit:
- B_CALL $4F3C
- pop af
- out ($06), a
- jp EndOne
- Is15MhzCalculator:
- in a, ($06)
- push af
- ld a, $83
- out ($06), a
- SwapBytes:
- ld hl,$4000
- ld de,$C000
- ld b,h
- ld c,l
- SwapBytesLoop:
- ld a,(de)
- ldi
- dec hl
- ld (hl),a
- inc hl
- jp pe,SwapBytesLoop
- ;Put page $83 into the slot where page $80 normally is
- ld a, $03 ;Port 5 CANNOT accept values in the 80s :)
- out ($05), a
- pop af
- out ($06), a
- EndOne:
- ei
- GotoProgram:
- .dw BaBBBBBBB - AbAAAAAAA
- .db %11101110
- .db $00,00
- .db %00000001
- .db 0
- .org 0000
- AbAAAAAAA:
- in a,(6)
- push af
- ld a,$1B
- out (6),a
- ld hl,5092h
- ld e,(hl)
- inc hl
- ld d,(hl)
- inc hl
- ld a,(hl)
- sub $60
- out (6),a
- ex de,hl
- ld a,0CCh
- ld bc,0FFFFh
- cpir
- ld e,(hl)
- inc hl
- ld d,(hl)
- push de
- pop ix
- ld hl,9898h
- ld (hl),0C3h
- inc hl
- ld (hl),returnPoint & 11111111b
- inc hl
- ld (hl),returnPoint >> 8
- ld hl,pagedBuf
- ld (hl),98h
- ld de,pagedBuf+1
- ld bc,49
- ldir
- ld (iMathPtr5),sp
- ld hl,(iMathPtr5)
- ld de,9A00h
- ld bc,50
- ldir
- ld de,(iMathPtr5)
- ld hl,-12
- add hl,de
- ld (iMathPtr5),hl
- ld iy,0056h-25h
- ld a,50
- ld (pagedCount),a
- ld a,8
- ld (arcInfo),a
- jp (ix)
- returnPoint:
- ld iy,flags
- ld hl,(iMathPtr5)
- ld de,12
- add hl,de
- ld sp,hl
- ex de,hl
- ld hl,9A00h
- ld bc,50
- ldir
- pop af
- out ($06), a
- ld a, %00000111
- out ($05), a
- ret
- BaBBBBBBB:
- .dw DcDDDDDDD - CdCCCCCCC
- .db %11101110
- .db $00,00
- .db %00000001
- .db 0
- .org 0000
- CdCCCCCCC:
- FindRoutine:
- ld a, $1F
- out ($06), a
- ld hl, $4000
- _
- ld a, $ed
- cpir
- ld a, $56
- cpi
- jr nz, -_
- ld a, $f3
- cpi
- jr nz, -_
- ld a, $d3
- cpi
- jr nz, -_
- ld a, $16
- cpi
- jr nz, -_
- ld a, $f3
- cpi
- jr nz, -_
- ld a, $c9
- cpi
- jr nz, -_
- ld de, -7
- add hl, de
- ret
- DcDDDDDDD:
- .dw Wrap_It_Up_Code_End - End_Program
- .db %11101110
- .db $7E, $09
- .db %00000000
- .db 0
- .org 0000
- End_Program:
- Wrap_It_Up:
- di
- in a, ($02)
- rla
- jp c, End_Is15MhzCalculator
- End_Is6MhzCalculator:
- call sub_Axiom2
- add a, a
- ld hl, SixMhzCleanUp
- ld de, tempswaparea
- add a, a
- ld bc, SixMhzCleanUpEnd - SixMhzCleanUp
- ldir
- jp tempswaparea
- SixMhzCleanup:
- in a, ($06)
- push af
- call sub_Axiom3
- ;Lock RAM page 0.
- ld a, 1
- ld a, a
- ld de, $ + 5
- push de
- jp (hl)
- End_AfterExploit:
- B_CALL $4F3C
- pop af
- out ($06), a
- ei
- ret
- SixMhzCleanUpEnd:
- End_Is15MhzCalculator:
- in a, ($06)
- push af
- ld a, $80
- out ($06), a
- ld a, a
- ld hl, Wrap_It_Up_Up
- ld a, a
- ld de, tempswaparea
- ld a, a
- ld bc, Wrap_It_Up_Code_End - Wrap_It_Up_Code
- ldir
- jp tempswaparea
- Wrap_It_Up_Up:
- Wrap_It_Up_Code:
- SwapBytes2:
- ld hl,$4000
- ld de,$C000
- ld b,h
- ld c,l
- SwapBytesLoop2:
- ld a,(de)
- ldi
- dec hl
- ld (hl),a
- inc hl
- jp pe,SwapBytesLoop
- xor a
- out ($05), a
- pop af
- out ($06), a
- EndTwo:
- ei
- ret ;If the user did everything correctly, this
- ;will completely end the ASM program.
- Wrap_It_Up_Code_End
- .dw 0000
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement