fsh-shell/includes/CryptoCommands/ROT.asm

60 lines
1.2 KiB
NASM

cryptocmdROT: .db "ROT", 0
cryptocmdROTm: .db "ROT Cypher, rotates the alphabet and encodes a string", 0
cryptocmdROTu: .db "ROT <shift#>", 0
cryptocmdROTf:
cryptocmdROTfArg1:
ld hl, FshCmdArgFlags
bit 3, (hl)
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 inputcharstr
call _NewLine
cryptocmdROTfExe:
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