fsh-shell/includes/CryptoCommands/ROT.asm

57 lines
1.1 KiB
NASM

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
bit 2, (hl)
jr z, cryptocmdROTfArg1Get
ld hl, ErrUsageo
call ErrSet
call ErrCatch
cryptocmdROTfArg1Get:
ld hl, cryptocmdROTfDMessage
call printprompt
ld hl, FshScratch
ld de, FshScratchSize - 4
call inputstr
call _NewLine
cryptocmdROTfExe:
ld hl, FshCmdArg0
ld a, (hl)
ld hl, FshScratch
call rotletencrypt
call _PutS
call _NewLine
jp Fin
cryptocmdROTfDShift: .db "Shift= ", 0
cryptocmdROTfDMessage: .db "Message= ", 0