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: cryptocmddecode:
decodecmdopt(cryptocmdROT, cryptocmdROTo) decodecmdopt(cryptocmdENCRYPT, cryptocmdENCRYPTo)
decodecmdopt(cryptocmdDECRYPT, cryptocmdDECRYPTo)
ret ret
cryptocmdroute: cryptocmdroute:
pop bc pop bc
routeoptjp(cryptocmdROTo, cryptocmdROTf) routeoptjp(cryptocmdENCRYPTo, cryptocmdENCRYPTf)
routeoptjp(cryptocmdDECRYPTo, cryptocmdDECRYPTf)
push bc push bc
ret ret
cryptocmdmanroute: cryptocmdmanroute:
pop bc pop bc
routestrjp(cryptocmdROT, cryptocmdROTm) routestrjp(cryptocmdENCRYPT, cryptocmdENCRYPTm)
routeoptjp(cryptocmdDECRYPTo, cryptocmdDECRYPTf)
push bc push bc
ret ret
cryptocmdmanrouteu: cryptocmdmanrouteu:
pop bc pop bc
routeustrjp(cryptocmdROT, cryptocmdROTu) routeustrjp(cryptocmdENCRYPT, cryptocmdENCRYPTu)
routeustrjp(cryptocmdDECRYPTo, cryptocmdDECRYPTf)
push bc push bc
ret ret

View File

@ -1 +1,5 @@
#include "includes/CryptoCommands/ROT.asm" #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 cryptocmdROT: .db "ROT", 0
cryptocmdROTo: .db $40
cryptocmdROTm: .db "ROT Cypher, rotates the alphabet and encodes a string", 0 cryptocmdROTm: .db "ROT Cypher, rotates the alphabet and encodes a string", 0
cryptocmdROTu: .db "ROT <shift#>", 0 cryptocmdROTu: .db "ROT <shift#>", 0
cryptocmdROTf: cryptocmdROTf:
cryptocmdROTfArg0: cryptocmdROTfArg1:
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 ld hl, FshCmdArgFlags
bit 3, (hl) bit 3, (hl)
jr z, cryptocmdROTfExe jr nz, cryptocmdROTfArg2
bit 2, (hl) bit 2, (hl)
jr z, cryptocmdROTfArg1Get jr z, cryptocmdROTfArg1Get
ld hl, ErrUsageo ld hl, ErrUsageo
call ErrSet call ErrSet
call ErrCatch call ErrCatch
cryptocmdROTfArg1Get: 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 ld hl, cryptocmdROTfDMessage
call printprompt call printprompt
ld hl, FshScratch ld hl, FshScratch
ld de, FshScratchSize - 4 ld de, FshScratchSize - 4
call inputstr call inputcharstr
call _NewLine call _NewLine
cryptocmdROTfExe: cryptocmdROTfExe:
ld hl, FshCmdArg0 ld hl, FshCmdArg1
ld a, (hl) ld a, (hl)
ld hl, FshScratch ld hl, FshScratch
call rotletencrypt call rotletencrypt
push hl
ld hl, cryptocmdROTfDResult
call _PutS
pop hl
call _PutS call _PutS
call _NewLine call _NewLine
jp Fin jp Fin
cryptocmdROTfDShift: .db "Shift= ", 0 cryptocmdROTfDShift: .db "Shift= ", 0
cryptocmdROTfDMessage: .db "Message= ", 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 ;;rotletencrypt
;;Encrypts a string in rot-x (uses $41 to $5B) ;;Encrypts a string in rot-n (uses $41 to $5B)
;;Inputs: ;;Inputs:
;; HL: string pointer ;; HL: string pointer
;; A: x ;; A: rot-n
;;Notes: ;;Notes:
;; Changes string in place. ;; Changes string in place.
rotletencrypt: rotletencrypt:
push hl push hl
push bc push bc
ld c, 0 rotletencryptMod:
ld c, a push hl
ld h, a
ld l, 'Z' + 1 - 'A' - 1
call modHL
ld b, h
pop hl
rotletencryptLoop: rotletencryptLoop:
ld a, (hl) ld a, (hl)
cp 0 cp a, $00
jr z, rotletencryptEnd jr z, rotletencryptEnd
add a, c cp a, ' '
cp 0 jr z, rotletencryptLD
jr nz, rotletencryptLd add a, b
inc a cp a, 'Z' + 2
rotletencryptLd: jr c , rotletencryptLD
ld (hl), a sub a, 'Z' + 2 - 'A'
inc hl rotletencryptLD:
cp a, $5c
jr c, rotletencryptLoop
dec hl
sub a, 'Z' + 1 - 'A'
ld (hl), a ld (hl), a
inc hl inc hl
jr rotletencryptLoop jr rotletencryptLoop
@ -35,29 +36,33 @@ rotletencryptEnd:
ret ret
;;rotletdecrypt ;;rotletdecrypt
;;Encrypts a string in rot-x (uses $41 to $5B) ;;Decrypts a string in rot-n (uses $41 to $5B)
;;Inputs: ;;Inputs:
;; HL: string pointer ;; HL: string pointer
;; A: x ;; A: rot-n
;;Notes: ;;Notes:
;; Changes string in place. ;; Changes string in place.
rotletdecrypt: rotletdecrypt:
push hl push hl
push bc push bc
ld c, 0 rotletdecryptMod:
ld c, a push hl
ld h, a
ld l, 'Z' + 1 - 'A' - 1
call modHL
ld b, h
pop hl
rotletdecryptLoop: rotletdecryptLoop:
ld a, (hl) ld a, (hl)
cp 0 cp a, $00
jr z, rotletdecryptEnd jr z, rotletdecryptEnd
sub a, c cp a, ' '
rotletdecryptLd: jr z, rotletdecryptLD
ld (hl), a sub a, b
inc hl cp a, 'A'
cp a, $5c jr nc , rotletdecryptLD
jr c, rotletdecryptLoop add a, 'Z' + 2 - 'A'
dec hl rotletdecryptLD:
add a, 'Z' + 1 - 'A'
ld (hl), a ld (hl), a
inc hl inc hl
jr rotletdecryptLoop jr rotletdecryptLoop

View File

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

View File

@ -71,7 +71,28 @@ mulAbyHLEnd:
pop bc pop bc
ret 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 ;;mul32By8
;;Performs an unsigned multiplication of DEHL and A. ;;Performs an unsigned multiplication of DEHL and A.
;;Outputs: ;;Outputs: