A83: Re: protection
[Prev][Next][Index][Thread]
A83: Re: protection
Thanks for your confidence in this list hehe
Pat beat you to the punch though! Me too, here and I thought I was gonna get
to fix it! :<
btw, I thought of an even better way to reverse 5->6 and 6->5. I can't
believe this slipped by me in the first place! Anyway... this email prompted
me to post so, why not just:
xor 3
hehe 2 bytes! woohoo! I don't think it can get any smaller than that folks!
-----Original Message-----
From: Ian Graf <ian_graf@geocities.com>
To: assembly-83@lists.ticalc.org <assembly-83@lists.ticalc.org>
Date: Thursday, August 20, 1998 9:45 PM
Subject: A83: protection
>
>god i hate geocities sooooooo much!!! i sent this message 2 days ago but
>it never showed up on the list. and then today i got a message to day
>that said "warning could not send your message for the past 4 hours".
>and on another line it said
>"Will-Retry-Until: Mon, 24 Aug 1998 00:55:15 -0700 (PDT)". so, if this
>or any messages from me get posted again let me say sorry in advance.
>here is the original message:
>
>------------------------------------------------------------------------
>
>ok before anything else, lets get one thing straight. i thought you all
>would be able to figure this one out by yourselves, but i guess not. i
>got the stuff you need. the first one protects a program. the second one
>unprotects a program. the third is a combo, if the prog is protected it
>unprotects is and visa-versa. the first two i wrote BY MYSELF about 2
>months ago, so don't try to pass it off as your work just give me due
>credit. the last one i just made now (i did not test it) so who knows if
>it actually works. but it should.
>
>------------------------------------------------------------------------
>zprotect.z80:
>
>.NOLIST
>#define equ .equ
>#define EQU .equ
>#define end .end
>#include "ti83asm.inc"
>#include "tokens.inc"
>.LIST
>
>strngobj .equ 04h
>progobj .equ 05h
>protprogobj .equ 06h
>_errundefined .equ 467Bh
>_errsyntax .equ 466Ch
>_findsym .equ 442Eh
>
>.org 9327h
>
> call _zerooop1 ; clear op1
> ld a,tAns ; load var name Ans into op1
> ld (op1+1),a ;
> call _findsym ; look up Ans
> jp c,_errundefined ; error if not found
> and 1fh ; mask off bits 0-4
> cp strngobj ; check if data is a string
> jp nz,_errsyntax ; if not error
> ld hl,op1 ; object type program
> ld (hl),progobj ; object type into op1
> inc hl ; next byte
> ld a,(de) ; get size of name
> ld c,a ; size to bc
> ld b,0 ;
> inc de ; skip 1st length byte of Ans
> inc de ; skip 2nd length byte of Ans
> ex de,hl ; exchange de and hl
> ldir ; copy name to op1
> call _chkfindsym ; look up program
> jp c,_errundefined ; error if not found
> ld (hl),protprogobj ; make protected
> ret
>
>.end
>END
>
>------------------------------------------------------------------------
>
>zunprote.z80:
>
>.NOLIST
>#define equ .equ
>#define EQU .equ
>#define end .end
>#include "ti83asm.inc"
>#include "tokens.inc"
>.LIST
>
>strngobj .equ 04h
>progobj .equ 05h
>_errundefined .equ 467Bh
>_errsyntax .equ 466Ch
>_findsym .equ 442Eh
>
>.org 9327h
>
> call _zerooop1 ; clear op1
> ld a,tAns ; load var name Ans into op1
> ld (op1+1),a ;
> call _findsym ; look up
> jp c,_errundefined ; error if not found
> and 1fh ; mask off bits 0-4
> cp strngobj ; check if data is a string
> jp nz,_errsyntax ; if not error
> ld hl,op1 ; object type program
> ld (hl),progobj ; object type into op1
> inc hl ; next byte
> ld a,(de) ; get size of name
> ld c,a ; size to bc
> ld b,0 ;
> inc de ; skip 1st length byte of Ans
> inc de ; skip 2nd length byte of Ans
> ex de,hl ; exchange de and hl
> ldir ; copy name to op1
> call _chkfindsym ; look up program
> jp c,_errundefined ; error if not found
> ld (hl),progobj ; make unprotected
> ret
>
>.end
>END
>
>------------------------------------------------------------------------
>
>zreverse.z80:
>
>.NOLIST
>#define equ .equ
>#define EQU .equ
>#define end .end
>#include "ti83asm.inc"
>#include "tokens.inc"
>.LIST
>
>strngobj .equ 04h
>progobj .equ 05h
>_errundefined .equ 467Bh
>_errsyntax .equ 466Ch
>_findsym .equ 442Eh
>
>.org 9327h
>
> call _zerooop1 ; clear op1
> ld a,tAns ; load var name Ans into op1
> ld (op1+1),a ;
> call _findsym ; look up
> jp c,_errundefined ; error if not found
> and 1fh ; mask off bits 0-4
> cp strngobj ; check if data is a string
> jp nz,_errsyntax ; if not error
> ld hl,op1 ; object type program
> ld (hl),progobj ; object type into op1
> inc hl ; next byte
> ld a,(de) ; get size of name
> ld c,a ; size to bc
> ld b,0 ;
> inc de ; skip 1st length byte of Ans
> inc de ; skip 2nd length byte of Ans
> ex de,hl ; exchange de and hl
> ldir ; copy name to op1
> call _chkfindsym ; look up program
> jp c,_errundefined ; error if not found
> ld a,(hl) ; get type
>
>protect:
>
> cp 5 ; is it unprotected? (5 = unprotected)
> jr nz,unprotect ; no then unprotect it
> inc (hl) ; yes then protect it
> ret ; to protect change 5 to 6
> ; by incrementing (hl) you add 1 to 5
> ; making it 6, or protected
>
>unprotect:
>
> dec (hl) ; it isn't unprotected, so unprotect it
> ret ; to unprotect change 6 to 5
> ; by decrementing (hl) you sub 1 from 6
> ; making it 5, or protected
>
>.end
>END
>