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:
|
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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
|
|
@ -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
|
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
|
||||||
|
|
@ -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
|
;;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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue