Added decrypt, added modHL, added unrot

This commit is contained in:
Stephen Toth 2018-07-10 16:13:39 -04:00
parent 1f2660ab45
commit 74437f19f9
11 changed files with 3162 additions and 2717 deletions

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,22 +1,26 @@
cryptocmddecode:
decodecmdopt(cryptocmdROT, cryptocmdROTo)
decodecmdopt(cryptocmdENCRYPT, cryptocmdENCRYPTo)
decodecmdopt(cryptocmdDECRYPT, cryptocmdDECRYPTo)
ret
cryptocmdroute:
pop bc
routeoptjp(cryptocmdROTo, cryptocmdROTf)
routeoptjp(cryptocmdENCRYPTo, cryptocmdENCRYPTf)
routeoptjp(cryptocmdDECRYPTo, cryptocmdDECRYPTf)
push bc
ret
cryptocmdmanroute:
pop bc
routestrjp(cryptocmdROT, cryptocmdROTm)
routestrjp(cryptocmdENCRYPT, cryptocmdENCRYPTm)
routeoptjp(cryptocmdDECRYPTo, cryptocmdDECRYPTf)
push bc
ret
cryptocmdmanrouteu:
pop bc
routeustrjp(cryptocmdROT, cryptocmdROTu)
routeustrjp(cryptocmdENCRYPT, cryptocmdENCRYPTu)
routeustrjp(cryptocmdDECRYPTo, cryptocmdDECRYPTf)
push bc
ret

View File

@ -1 +1,5 @@
#include "includes/CryptoCommands/ENCRYPT.asm"
#include "includes/CryptoCommands/ROT.asm"
#include "includes/CryptoCommands/DECRYPT.asm"
#include "includes/CryptoCommands/unROT.asm"

View File

@ -0,0 +1,38 @@
cryptocmdDECRYPT: .db "DECRYPT", 0
cryptocmdDECRYPTo: .db $41
cryptocmdDECRYPTm: .db "Decrypts a string using a cypher. see 'DECRYPT HELP' for info on cyphers", 0
cryptocmdDECRYPTu: .db "DECRYPT <Crypt Command> <Crypt Args>", 0
cryptocmdDECRYPTf:
cryptocmdDECRYPTfArg0:
ld hl, FshCmdArgFlags
bit 0, (hl)
jr z, cryptocmdDECRYPTfArg0Get
bit 1, (hl)
jr z, cryptocmdDECRYPTfExe
ld hl, ErrUsageo
call ErrSet
call ErrCatch
cryptocmdDECRYPTfArg0Get:
ld hl, cryptocmdDECRYPTfSCypher
call printprompt
ld hl, FshCmdArg0
ld de, FshCmdInptSize
call inputstr
call _NewLine
cryptocmdDECRYPTfExe:
ld hl, FshCmdArg0
ld de, cryptocmdunROT
call strcmp
jp z, cryptocmdunROTf
ld hl, FshCmdArg0
ld de, FshCmd
call strcpy
ld hl, ErrCmdNotFoundo
ld de, FshCmdErrCode
call bytecpy
call ErrSet
jp Err
cryptocmdDECRYPTfSCypher: .db "Cypher= ", 0

View File

@ -0,0 +1,38 @@
cryptocmdENCRYPT: .db "ENCRYPT", 0
cryptocmdENCRYPTo: .db $40
cryptocmdENCRYPTm: .db "Encrypts a string using a cypher. see 'ENCRYPT HELP' for info on cyphers", 0
cryptocmdENCRYPTu: .db "ENCRYPT <Crypt Command>", 0
cryptocmdENCRYPTf:
cryptocmdENCRYPTfArg0:
ld hl, FshCmdArgFlags
bit 0, (hl)
jr z, cryptocmdENCRYPTfArg0Get
bit 1, (hl)
jr z, cryptocmdENCRYPTfExe
ld hl, ErrUsageo
call ErrSet
call ErrCatch
cryptocmdENCRYPTfArg0Get:
ld hl, cryptocmdENCRYPTfSCypher
call printprompt
ld hl, FshCmdArg0
ld de, FshCmdInptSize
call inputstr
call _NewLine
cryptocmdENCRYPTfExe:
ld hl, FshCmdArg0
ld de, cryptocmdROT
call strcmp
jp z, cryptocmdROTf
ld hl, FshCmdArg0
ld de, FshCmd
call strcpy
ld hl, ErrCmdNotFoundo
ld de, FshCmdErrCode
call bytecpy
call ErrSet
jp Err
cryptocmdENCRYPTfSCypher: .db "Cypher= ", 0

View File

@ -1,56 +1,60 @@
cryptocmdROT: .db "ROT", 0
cryptocmdROTo: .db $40
cryptocmdROTm: .db "ROT Cypher, rotates the alphabet and encodes a string", 0
cryptocmdROTu: .db "ROT <shift#>", 0
cryptocmdROTf:
cryptocmdROTfArg0:
ld hl, FshCmdArgFlags
bit 1, (hl)
jr nz, cryptocmdROTfArg1
bit 0, (hl)
jr z, cryptocmdROTfArg0Get
ld hl, ErrUsageo
call ErrSet
call ErrCatch
cryptocmdROTfArg0Get:
ld hl, cryptocmdROTfDShift
call printprompt
ld hl, FshCmdArg0
ld de, 3
call inputnumstr
call strtow
ld de, FshCmdArg0
ex de, hl
ld (hl), e
call _NewLine
cryptocmdROTfArg1:
jr cryptocmdROTfArg1Get
ld hl, FshCmdArg1
ld de, FshScratch
call strcpy
ld hl, FshCmdArgFlags
bit 3, (hl)
jr z, cryptocmdROTfExe
jr nz, cryptocmdROTfArg2
bit 2, (hl)
jr z, cryptocmdROTfArg1Get
ld hl, ErrUsageo
call ErrSet
call ErrCatch
cryptocmdROTfArg1Get:
ld hl, cryptocmdROTfDShift
call printprompt
ld hl, FshCmdArg1
ld de, 3
call inputnumstr
call strtow
ld de, FshCmdArg1
ex de, hl
ld (hl), e
call _NewLine
cryptocmdROTfArg2:
jr cryptocmdROTfArg2Get
ld hl, FshCmdArg2
ld de, FshScratch
call strcpy
ld hl, FshCmdArgFlags
bit 5, (hl)
jr z, cryptocmdROTfExe
bit 4, (hl)
jr z, cryptocmdROTfArg2Get
ld hl, ErrUsageo
call ErrSet
call ErrCatch
cryptocmdROTfArg2Get:
ld hl, cryptocmdROTfDMessage
call printprompt
ld hl, FshScratch
ld de, FshScratchSize - 4
call inputstr
call inputcharstr
call _NewLine
cryptocmdROTfExe:
ld hl, FshCmdArg0
ld hl, FshCmdArg1
ld a, (hl)
ld hl, FshScratch
call rotletencrypt
push hl
ld hl, cryptocmdROTfDResult
call _PutS
pop hl
call _PutS
call _NewLine
jp Fin
cryptocmdROTfDShift: .db "Shift= ", 0
cryptocmdROTfDMessage: .db "Message= ", 0
cryptocmdROTfDResult: .db "Result: ", 0

View File

@ -0,0 +1,60 @@
cryptocmdunROT: .db "ROT", 0
cryptocmdunROTm: .db "ROT Cypher, rotates the alphabet and Decodes a string", 0
cryptocmdunROTu: .db "ROT <shift#>", 0
cryptocmdunROTf:
cryptocmdunROTfArg1:
ld hl, FshCmdArgFlags
bit 3, (hl)
jr nz, cryptocmdunROTfArg2
bit 2, (hl)
jr z, cryptocmdunROTfArg1Get
ld hl, ErrUsageo
call ErrSet
call ErrCatch
cryptocmdunROTfArg1Get:
ld hl, cryptocmdunROTfDShift
call printprompt
ld hl, FshCmdArg1
ld de, 3
call inputnumstr
call strtow
ld de, FshCmdArg1
ex de, hl
ld (hl), e
call _NewLine
cryptocmdunROTfArg2:
jr cryptocmdunROTfArg2Get
ld hl, FshCmdArg2
ld de, FshScratch
call strcpy
ld hl, FshCmdArgFlags
bit 5, (hl)
jr z, cryptocmdunROTfExe
bit 4, (hl)
jr z, cryptocmdunROTfArg2Get
ld hl, ErrUsageo
call ErrSet
call ErrCatch
cryptocmdunROTfArg2Get:
ld hl, cryptocmdunROTfDMessage
call printprompt
ld hl, FshScratch
ld de, FshScratchSize - 4
call inputcharstr
call _NewLine
cryptocmdunROTfExe:
ld hl, FshCmdArg1
ld a, (hl)
ld hl, FshScratch
call rotletdecrypt
push hl
ld hl, cryptocmdunROTfDResult
call _PutS
pop hl
call _PutS
call _NewLine
jp Fin
cryptocmdunROTfDShift: .db "Shift= ", 0
cryptocmdunROTfDMessage: .db "CypherText= ", 0
cryptocmdunROTfDResult: .db "Result: ", 0

View File

@ -1,30 +1,31 @@
;;rotletencrypt
;;Encrypts a string in rot-x (uses $41 to $5B)
;;Encrypts a string in rot-n (uses $41 to $5B)
;;Inputs:
;; HL: string pointer
;; A: x
;; A: rot-n
;;Notes:
;; Changes string in place.
rotletencrypt:
push hl
push bc
ld c, 0
ld c, a
rotletencryptMod:
push hl
ld h, a
ld l, 'Z' + 1 - 'A' - 1
call modHL
ld b, h
pop hl
rotletencryptLoop:
ld a, (hl)
cp 0
cp a, $00
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'
cp a, ' '
jr z, rotletencryptLD
add a, b
cp a, 'Z' + 2
jr c , rotletencryptLD
sub a, 'Z' + 2 - 'A'
rotletencryptLD:
ld (hl), a
inc hl
jr rotletencryptLoop
@ -35,29 +36,33 @@ rotletencryptEnd:
ret
;;rotletdecrypt
;;Encrypts a string in rot-x (uses $41 to $5B)
;;Decrypts a string in rot-n (uses $41 to $5B)
;;Inputs:
;; HL: string pointer
;; A: x
;; A: rot-n
;;Notes:
;; Changes string in place.
rotletdecrypt:
push hl
push bc
ld c, 0
ld c, a
rotletdecryptMod:
push hl
ld h, a
ld l, 'Z' + 1 - 'A' - 1
call modHL
ld b, h
pop hl
rotletdecryptLoop:
ld a, (hl)
cp 0
cp a, $00
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'
cp a, ' '
jr z, rotletdecryptLD
sub a, b
cp a, 'A'
jr nc , rotletdecryptLD
add a, 'Z' + 2 - 'A'
rotletdecryptLD:
ld (hl), a
inc hl
jr rotletdecryptLoop

View File

@ -181,14 +181,14 @@ inputstrCurRowBuf: .db $00
inputcharstr:
push de
push hl
ld (inputstrSizeBuf), de
ld (inputcharstrSizeBuf), de
push hl
push de
ld hl, CurCol
ld de, inputstrCurColBuf
ld de, inputcharstrCurColBuf
call bytecpy
ld hl, CurRow
ld de, inputstrCurRowBuf
ld de, inputcharstrCurRowBuf
call bytecpy
pop de
pop hl

View File

@ -71,6 +71,27 @@ mulAbyHLEnd:
pop bc
ret
;;modHL
;;H % L => H
;;Inputs:
;; H:
;; L:
modHL:
push bc
ld b, h
ld a, 0
modHLLoop:
inc a
cp a, l
jr nz, modHLLoopEnd
ld a, 0
modHLLoopEnd:
djnz modHLLoop
ld h, a
pop bc
ret
;;mul32By8
;;Performs an unsigned multiplication of DEHL and A.