Studies - Set of protective boot.

ZX Review #7-8-9-10
(C) DeathSOFT, pos.Lebyazhe


   Ca. Ed.: Our correspondent, did not disclose his name, 
offers to your Court set all sorts of "protection to your 
boot." These procedures are quite simple and do not require a 
separate comment, but they are very indicative for the beginner 
Hacker programmer or because Procedure this class should be 
compact, fast and well designed.

140.

          LD HL, START

          LD BC, LENGTH
LOOP LD A, (HL)

          XOR B

          LD (HL), A

          INC HL

          DEC BC

          LD A, B

          OR C

          JR NZ, LOOP



          LD HL, START

          LD DE, LENGTH
LOOP LD A, (HL)

          CPL

          LD (HL), A

          INC HL

          DEC DE

          LD A, E

          OR D

          JR NZ, LOOP



          LD HL, START

          LD BC, LENGTH

          LD HL, START

          LD BC, LENGTH

          LD A, # 33

          LD R, A
LOOP LD A, R

          XOR (HL)

          LD (HL), A

          INC HL

          DEC BC

          LD A, B

          OR C

          JR NZ, LOOP



          LD HL, START

          LD DE, START1

          LD BC, LENGTH

          LD A, # 33

          LD R, A
LOOP LD A, (HL)

          XOR D

          XOR H

          XOR E

          LD C, A

          LD A, R

          XOR C

          LD (HL), A

          LD (DE), A

          INC HL; \

          INC DE; LDI

          DEC BC; /

          LD A, B

          OR C

          JR NZ, LOOP



          LD SP, START

          LD DE, LENGTH

          DI

          XOR A

          DEC A

          DAA

          LD R, A

          LD HL, START1

          LD DE, START1 +1

          LD BC, LENGTH1

          LD (HL), L

          LDIR
LOOP LD A, R

          POP HL

          XOR L

          LD L, A

          PUSH HL

          INC SP

          DEC DE

          LD A, D

          OR E

          JR NZ, LOOP



          LD IX, START

          LD DE, LENGTH
LOOP LD A, (IX +0)

          CPL

          XOR E

          XOR D

          LD (IX +0), A

          INC IX

          DEC DE

          LD A, D

          OR E

          JR NZ, LOOP



          LD HL, START

          LD BC, LENGTH
LOOP LD A, (HL)

          CPL

          LD (HL), A

          INC HL

          DJNZ LOOP



          XOR A

          LD HL, START

          LD BC, LENGTH

          LD R, A
LOOP POP HL

          LD A, R

          XOR (HL)

          XOR C

          XOR B

          LD (HL), A

          INC HL

          DEC BC

          PUSH HL

          LD A, B

          OR C

          JR NZ, LOOP
2

   CORR.: Then I would suggest a more complex code. Procedure 
(CP). A procedure containing the insert:

140.

          LD HL, START

          LD DE, START1

          LD BC, LENGTH

          LD (HL), L

          LDIR
2
the monitor debugger can not
be untwisted. Because, if the KP
substitute for the address - 23925, and
registers Record these values: HL, 24100; DE, 24101; BC,
41100, then after the KP with
addresses 24100 and 65200 to the entire memory will be scored 
by byte from the register of L, ie automatically be spoiled 
debugger. 


   Ca. Ed.: For beginners: what the author calls the KP is 
nothing like ordinary and pleasant to the ear "ksorkoy.

As for the non-disclosure of such protection,
There has long been the means to cope with such powerful 
algorithms, as the score of memory usage register

R, and other methods of protection. But we
carried away ...
140.

          DI

          LD HL, START

          LD BC, LENGTH

          IM 2

          LD A, R

          LD IY, START1

          LD IX, START1 +1

          LD DE, LENGTH1
LOOP LD (IY +0), E

          INC IX

          INC IY

          DEC DE

          LD A, D

          OR E

          JR NZ, LOOP
LOOP1 POP HL

          LD R, A

          XOR (HL)

          XOR C

          XOR B

          LD (HL), A

          CPL

          PUSH HL

          LD A, B

          OR C

          JR NZ, LOOP1



          LD IX, START

          LD A, 51

          LD R, A

          LD HL, START1

          LD DE, START1 +1

          LD BC, LENGTH
LOOP POP HL

          LD A, R

          XOR (HL)

          XOR E

          XOR D

          LD (IX +0), A

          INC IX

          DEC BC

          PUSH HL

          LD A, B

          OR C

          JR NZ, LOOP



          DI

          LD A, 78

          LD R, A

          XOR A

          LD IXh, NN; START

          LD IXl, NN;

          PUSH IX

          POP HL

          LD IXh, 1964

          LD IXl, 255

          LD A, IXl

          CPL

          LD IXl, A

          PUSH IX

          POP DE

          LD BC, LENGTH

          LD IXh, 255

          LD IXl, 253

          CALL 13251

          LD A, 0

          LD L, A

          SET 5, A

          LD H, A

          RES 2, H

          RES 5, H

          SET 6, H

          LD DE, LENGTH

          LD BC, START
LOOP LD A, R

          XOR (HL)

          CPL

          XOR H

          XOR L

          XOR B

          XOR C

          XOR D

          XOR E

          XOR IXh

          XOR IXl

          XOR IYl

          XOR IYh

          PUSH HL

          POP IX

          LD (IX +0), A

          LD (BC), A

          INC BC

          INC HL

          DEC DE

          LD A, D

          OR E

          JR NZ, LOOP



          LD HL, START

          LD BC, LENGTH

          DI

          LD A, 51

          LD I, A
LOOP LD R, A

          LD A, I

          LD A, R

          XOR (HL)

          CPL

          XOR B

          XOR H

          XOR L

          XOR C

          LD (HL), A

          CPI

          LD A, B

          OR C

          JR NZ, LOOP
2

          *