home *** CD-ROM | disk | FTP | other *** search
- ;Symphony ver 1.0, 1.1 and lotus 123 unprotect with out mods to pgm
- ;Change name to ld12.asm
- ;modified for 1.1 by P.B. 08/30/85
- ;
- ;=================================================
- ;For SYMPHONY 1.1 :
- ;
- ; LD program will read a disk in a drive that is
- ; loged on during loading of SYMPHONY 1.1.
- ; You may optionally specify drive that is to be
- ; examined during initial execution of SYMPHONY
- ; D>LD C: will always check drive C:
- ; This optional drive can be changed at any time
- ; by re-executing LD n:
- ;
- ;This is a part of COPY UN-PROTECT.
- ;=================================================
-
- CSEG SEGMENT
- ASSUME DS:CSEG, SS:CSEG ,CS:CSEG ,ES:CSEG
-
- ORG 5CH
-
- FCB DB 0
-
- ORG 0100H
-
- FIRST: JMP INIT
-
- BCKADR DB 4 DUP(0)
- SERIAL DB ' (no serial #) '
- TEMP DB 0
-
- UNPROT PROC FAR
- STI
- CMP CL,19H
- JNZ UNPR1
-
- PUSH DS
- PUSH SI
- PUSH DI
- PUSH CX
- PUSH CS
- POP DS
- MOV SI,OFFSET SERIAL
- MOV DI,BX
- MOV CX,0FH
- CLD
- REPZ MOVSB
- POP CX
- POP DI
- POP SI
- POP DS
-
-
- JMP NOSER
-
- UNPR1: CMP CL,20H ;' '
- JZ UNPR2
- CMP CL,30H ;'0'
- JZ UNPR2
- CMP CL,40H ;'@'
- JNZ UNPR3
-
- UNPR2: MOV AH,10H
- JMP UNPR7
- UNPR3:
- PUSH BP
- MOV BP,SP
- CMP WORD PTR [BP+2],OFFSET 0A8ABH
- JZ UNPR4
- CMP WORD PTR [BP+2],OFFSET 0A88BH
- JZ UNPR4
- CMP WORD PTR [BP+2],OFFSET 66F4H
- JZ UNPR5
-
- ;SYMPHONY 1.1 -------------------
- CMP DL,0 ;access drive a?
- JNZ GBACK ;no..
- CMP AH,2 ;read function?
- JNZ GBACK ;no..
- CMP CS:TEMP,63H ;was last request for sector 63h?
- JZ DO11 ;yes..
- CMP CS:TEMP,DL ;is the counter 0? (dl is 0)
- JNZ DO11X ;no, do not read disk
- CMP CL,63H ;is the requested sector 63h?
- JNZ GBACK ;no, just a regular read request..
- MOV CS:TEMP,CL ;save it as a flag
-
- PUSH AX
-
- MOV AL,CS:FCB ;see if user indicated drive?
- OR AL,AL
- JNZ HAVE ;yes...
-
- MOV AH,19H ;get the current drive
- INT 21H
- INC AL
-
- HAVE: CMP AL,2 ;above B:?
- JG HARDD ;yes..
- DEC AL
-
- SAVEIT: MOV BYTE PTR CS:DRIVE,AL ;store the default
- JMP SHORT NODRV
-
- HARDD: CMP AL,4 ;above D:?
- JG NODRV ;yes, that's no good
-
- SUB AL,3
- OR AL,80H ;make it hard drive
- JMP SHORT SAVEIT
-
- NODRV: POP AX
-
- MOV DL,0 ;force hard disk 80=c: , 81=d:
- ;if no hard disk, then will have to re-execute
- ;SYMPHONY few times until it comes up
- DRIVE EQU $-1
-
- JMP SHORT GBACK1 ;it works for some reason
-
-
- DO11: MOV CS:TEMP,CL ;save sector number (will use it as counter)
- DO11X: DEC CS:TEMP ;decrement count
- JMP SHORT UNPR5 ;return with carry clear (read ok)
- ;SYMPHONY 1.1 ==================
-
-
-
- GBACK: MOV BYTE PTR CS:TEMP,0 ;clear counter (just in case)
- GBACK1: POP BP
- JMP SHORT BACK
-
- UNPR4: CMP CL,8
- JNZ UNPR6
- UNPR5: XOR AH,AH
- POP BP
- NOSER: CLC
- RET 2
-
- UNPR6: MOV AH,2
- POP BP
- UNPR7: STC
- RET 2
-
- BACK: JMP DWORD PTR CS:BCKADR
- UNPROT ENDP
-
- INIT PROC NEAR
- CLI
- PUSH CS
- POP ES
- MOV CL,FCB
- PUSH DS
- MOV SI,4CH
- XOR AX,AX
- MOV DS,AX
- MOV DI,OFFSET BCKADR
- CMP WORD PTR [SI],OFFSET UNPROT
- JNZ DOIT
- OR CL,CL
- JZ INI2
- MOV AX,[SI+2]
- MOV ES,AX
- MOV ES:FCB,CL
- INI2: POP DS
- MOV DX,OFFSET MSG2
- MOV AH,9
- INT 21H
- RET
-
- DOIT: MOV CX,4
- CLD
- REPZ MOVSB
- POP DS
- PUSH DS
- MOV DX,OFFSET MSG1
- MOV AH,9
- INT 21H
- MOV DX,OFFSET UNPROT
- MOV AX,2513H
- INT 21H
- POP DS
- MOV DX,OFFSET init
- STI
- INT 27H
- MSG1 DB 'LD 1.2 UNPROTECT for SYMPHONY 1.0 & 1.1, LOTUS now resident.'
- DB 0DH,0AH
- DB 'Usage: LD [d:]$'
- MSG2 DB 'LD already loaded.$'
- INIT ENDP
-
- CSEG ENDS
- ;
- END FIRST
-