Added decrypt, added modHL, added unrot
This commit is contained in:
parent
1f2660ab45
commit
74437f19f9
BIN
bin/FSHa.8xp
BIN
bin/FSHa.8xp
Binary file not shown.
5571
bin/FSHa.lst
5571
bin/FSHa.lst
File diff suppressed because it is too large
Load Diff
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -1 +1,5 @@
|
|||
#include "includes/CryptoCommands/ENCRYPT.asm"
|
||||
#include "includes/CryptoCommands/ROT.asm"
|
||||
|
||||
#include "includes/CryptoCommands/DECRYPT.asm"
|
||||
#include "includes/CryptoCommands/unROT.asm"
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Reference in New Issue