141 lines
2.1 KiB
NASM
141 lines
2.1 KiB
NASM
;;rotletencrypt
|
|
;;Encrypts a string in rot-x (uses $41 to $5B)
|
|
;;Inputs:
|
|
;; HL: string pointer
|
|
;; A: x
|
|
;;Notes:
|
|
;; Changes string in place.
|
|
rotletencrypt:
|
|
push hl
|
|
push bc
|
|
ld c, 0
|
|
ld c, a
|
|
rotletencryptLoop:
|
|
ld a, (hl)
|
|
cp 0
|
|
jr z, rotletencryptEnd
|
|
add a, c
|
|
cp 0
|
|
jr nz, rotletencryptLd
|
|
inc a
|
|
rotletencryptLd:
|
|
ld (hl), a
|
|
inc hl
|
|
cp a, $5c
|
|
jr c, rotletencryptLoop
|
|
dec hl
|
|
sub a, 'Z' + 1 - 'A'
|
|
ld (hl), a
|
|
inc hl
|
|
jr rotletencryptLoop
|
|
rotletencryptEnd:
|
|
ld (hl), $00
|
|
pop bc
|
|
pop hl
|
|
ret
|
|
|
|
;;rotletdecrypt
|
|
;;Encrypts a string in rot-x (uses $41 to $5B)
|
|
;;Inputs:
|
|
;; HL: string pointer
|
|
;; A: x
|
|
;;Notes:
|
|
;; Changes string in place.
|
|
rotletdecrypt:
|
|
push hl
|
|
push bc
|
|
ld c, 0
|
|
ld c, a
|
|
rotletdecryptLoop:
|
|
ld a, (hl)
|
|
cp 0
|
|
jr z, rotletdecryptEnd
|
|
sub a, c
|
|
rotletdecryptLd:
|
|
ld (hl), a
|
|
inc hl
|
|
cp a, $5c
|
|
jr c, rotletdecryptLoop
|
|
dec hl
|
|
add a, 'Z' + 1 - 'A'
|
|
ld (hl), a
|
|
inc hl
|
|
jr rotletdecryptLoop
|
|
rotletdecryptEnd:
|
|
ld (hl), $00
|
|
pop bc
|
|
pop hl
|
|
ret
|
|
|
|
;;rotasciiencrypt
|
|
;;Encrypts a string in rot-x (uses $00 to $EF)
|
|
;;Inputs:
|
|
;; HL: string pointer
|
|
;; A: x
|
|
;;Notes:
|
|
;; Changes string in place.
|
|
rotasciiencrypt:
|
|
push hl
|
|
push bc
|
|
ld c, 0
|
|
ld c, a
|
|
rotasciiencryptLoop:
|
|
ld a, (hl)
|
|
cp 0
|
|
jr z, rotasciiencryptEnd
|
|
add a, c
|
|
cp 0
|
|
jr nz, rotasciiencryptLd
|
|
inc a
|
|
rotasciiencryptLd:
|
|
ld (hl), a
|
|
inc hl
|
|
cp a, $EF
|
|
jr c, rotasciiencryptLoop
|
|
dec hl
|
|
sub a, $0F
|
|
ld (hl), a
|
|
inc hl
|
|
jr rotasciiencryptLoop
|
|
rotasciiencryptEnd:
|
|
ld (hl), $00
|
|
pop bc
|
|
pop hl
|
|
ret
|
|
|
|
;;rotasciidecrypt
|
|
;;Encrypts a string in rot-x (uses $00 to $EF)
|
|
;;Inputs:
|
|
;; HL: string pointer
|
|
;; A: x
|
|
;;Notes:
|
|
;; Changes string in place.
|
|
rotasciidecrypt:
|
|
push hl
|
|
push bc
|
|
ld c, 0
|
|
ld c, a
|
|
rotasciidecryptLoop:
|
|
ld a, (hl)
|
|
cp 0
|
|
jr z, rotasciidecryptEnd
|
|
sub a, c
|
|
cp 0
|
|
jr nz, rotasciidecryptLd
|
|
dec a
|
|
rotasciidecryptLd:
|
|
ld (hl), a
|
|
inc hl
|
|
cp a, $EF
|
|
jr c, rotasciidecryptLoop
|
|
dec hl
|
|
add a, $0F
|
|
ld (hl), a
|
|
inc hl
|
|
jr rotasciidecryptLoop
|
|
rotasciidecryptEnd:
|
|
ld (hl), $00
|
|
pop bc
|
|
pop hl
|
|
ret
|
|
|