[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Disk protection scheme source code (as found)
Hot Rod <hotrod.apple2@gmail.com> wrote:
> Here's an artifact that might interest one or two of you. :)
>
> It's the actual source code used for a data protection scheme, apparently
> created by Funk Software and used by Turning Point Software (I haven't
> spent time figuring out what software they may have used this on). I
> think I found this while snooping around one of their disks years ago.
>
> ]HR
>
>
>
> ;START
> ;
> @LBL =1
> ;
> ;**************************************
> ;
> ; (C)COPYRIGHT 1983,1984
> ; TURNING POINT SOFTWARE
> ; 11A MAIN STREET
> ; WATERTOWN, MA 02172
> ;
> ;THE INFORMATION CONTAINED HERE IS
> ; PROPRIETARY. THIS INFORMATION IS
> ; BEING PROVIDED UNDER THE TERMS OF
> ; A LICENSING AGREEMENT BETWEEN
> ; TURNING POINT SOFTWARE AND FUNK
> ; SOFTWARE.
> ;
> ;**************************************
> ;
> ;PAUL: SET THE ORG AND OBJ AS REQUIRED.
> ; THE PROGRAM IS $93 BYTES LONG.
> ;
> @ORG =$2000 ;RUN TIME ADDRESS
> @OBJ =$2000 ;ASSEMBLE AT THIS ADRS
> ;
> ;
> ;**************************************
> ;
> ;SET FUNK TO THE ZERO PAGE ADDRESS YOU
> ; DESIRE. IT IS INITIALIZED TO $FF
> ; AND IS INCREASED FOR EACH ERROR
> ; DURING CHECKING. THEN IT IS
> ; EOR'D WITH SYNCL+1. SYNCL+1 WILL
> ; BE $11 IF DISK IS OK.
> ;
> FUNK =$06 ;=$EE IF DISK IS OK
> ;= ?? IF DISK IS COPIED
> ;
> ;**************************************
> ;
> ;
> ;THE FOLLOWING LABELS ARE ADDRESSES
> ; USED BY THE CHECKER. THEY ARE VALID
> ; FOR DIVERSA DOS AND DOS 3.3.
> ;
> ;
> DRVPTCH =$BE4D ;PATCH TO MAKE DOS
> ; LEAVE DRIVE ON
> ;
> RWTS =$B7B5 ;ADDRESS OF RWTS
> PARMS =$B7E8 ;ADDRESS OF PARAMETERS
> ;
> ;
> ;
> ;**************************************
> ;
> ;THESE ARE HARDWARE ADDRESSES IN THE
> ; I/O SPACE.
> ;
> LC08C =$C08C ;DATA LATCH W/STROBE
> DRVOFF =$C088 ;ADDRESS TO TURN OF DRV
> ;
> ;
> ;**************************************
> ;
> ;PROGRAM START:
> ;
> ; GET DOS TO POS. HEAD ON TRACK=PROTRK
> ; AND LEAVE THE DRIVE ON
> ;
> PROTRK =$22
> ;
> ;**************************************
> ;
> ;
> CHECK LDA DRVPTCH ;SAVE DRIVE ON
> PHA ; ; PATCH BYTE
> ;
> LDA #PROTRK ;SET IOBTRK TO
> STA PARMS+4 ; PROTRK
> ;
> LDA #$00 ;SET COMMAND TO
> STA PARMS+C ; SEEK
> ;
> LDA #$60 ;PATCH TO LEAVE
> STA DRVPTCH ; DRIVE ON
> ;
> LDY #PARMS
> LDA #PARMS+1
> JSR RWTS ;CALL DOS
> ;
> PLA ; ;RESTORE DRIVE
> STA DRVPTCH ; ON PATCH
> ;
> LDA #$FF ;INITIALIZE BYT
> STA FUNK ; FOR FUNK
> ;
> ;**************************************
> ;
> ;DRIVE IS NOW ON WITH HEAD AT PROTRK
> ;
> ; START ACTUAL CHECK OF TRACK
> ;
> ;**************************************
> ;
> FRSTD5 LDA LC08C,X ;FIND A $D5
> BPL FRSTD5
> PHA
> PLA
> CMP #$D5
> BNE FRSTD5
> ;
> INIT LDY #$00 ;INIT SYNCL
> STY SYNCL
> ;
> SCNDD5 LDA LC08C,X ;CHECK FOR NEXT
> BPL SCNDD5 ; D5 AND BRANCH
> CMP #$D5 ; WHEN FOUND
> BEQ FOUND2
> ;
> CMP #$F7 ;Y<>0 IF $F7
> BNE NOTF7 ; FOUND BETWEEN
> INY ; ; TWO $D5'S
> NOTF7 CLC
> ADC SYNCL ;CALC CHKSUM IN
> STA SYNCL ; CASE THIS IS
> JMP SCNDD5 ; D5-FA-F7-D5
> ;
> FOUND2 TYA ; ;LOOP BACK IF
> BEQ INIT ; IF NO FA IN
> ; REGION
> ;
> FRSTSYN LDA LC08C,X ;READ SYNC
> BPL FRSTSYN ; BYTES BEFORE
> PHA ; ; GLITCH
> PLA
> CMP #$FF
> BEQ FRSTSYN
> ;
> CMP #$D5 ;IF $D5 THEN NO
> BNE CHKGLCH ; GLITCH
> ;
> INC FUNK
> ;
> CHKGLCH LDY #$05 ;READ 5 BYTES
> SKPGLIT LDA LC08C,X ; TO PASS OVER
> BPL SKPGLIT ; GLITCH
> PHA
> PLA
> DEY
> BNE SKPGLIT
> ;
> SCNDSYN LDA LC08C,X ;READ SYNC
> BPL SCNDSYN ; BYTES AFTER
> PHA ; ; GLITCH
> PLA
> CMP #$FF
> BEQ SCNDSYN
> ;
> CMP #$D5 ;IF NOT $D5
> BEQ CMPFF ; THEN MORE
> ; THAN 1 GLITCH
> ;
> INC FUNK
> ;
> CMPFF LDA LC08C,X ;CHECK THAT $D5
> BPL CMPFF ; IS FOLLOWED
> CMP #$FF ; BY $FF
> BNE CHKSYNC
> ;
> INC SYNCL
> ;
> CHKSYNC LDA SYNCL ;EOR SYNCL+1
> EOR FUNK ; WITH FUNK
> STA FUNK ; =$EE IF OK
> ;
> LDA DRVOFF,X ;DRIVE OFF
> ;
> RTS
> ;
> ;**************************************
> ;
> ;DATA BYTE - CONTAINS CHKSUM+1
> ;
> SYNCL .00
> ;
> ;
> ;**************************************
> ;
> ;
> ;END`
You may be interested to know that the printing utility Sideways also
contains the source for its protection. It is on the disk as a deleted
file.
-michael - NadaNet 3.1 and AppleCrate II: http://home.comcast.net/~mjmahon