fsh-shell/includes/CryptoCommands/unXOR.asm

74 lines
1.7 KiB
NASM

cryptocmdunXOR: .db "XOR", 0
cryptocmdunXORm: .db "XOR: Cypher, and decodes a string", 0
cryptocmdunXORu: .db "DECRYPT XOR", 0
cryptocmdunXORf:
cryptocmdunXORfArg1:
ld hl, FshCmdArgFlags
bit 2, (hl)
jr z, cryptocmdunXORfArg1Get
bit 3, (hl)
jr z, cryptocmdunXORfArg2
ld hl, ErrUsageo
call ErrSet
call ErrCatch
cryptocmdunXORfArg1Get:
ld hl, cryptocmdunXORfDKey
call printprompt
ld hl, FshCmdArg1
ld de, FshCmdCmdSize
call inputstr
call _NewLine
cryptocmdunXORfArg2:
ld hl, FshCmdArg2
ld de, FshScratch
call strcpy
ld hl, FshCmdArgFlags
bit 4, (hl)
jr nz, cryptocmdunXORfExe
cryptocmdunXORfArg2Get:
ld hl, cryptocmdunXORfStringPBuffer
ld b, $0F
ld a, $00
call memset
ld hl, cryptocmdunXORfDMessage
call printprompt
ld hl, FshScratch
ld de, FshScratchSize - 4
call inputstr
ld bc, cryptocmdunXORfStringPBuffer
cryptocmdunXORfArg2GetLoop:
ld a, (hl)
or a, a
jr z, cryptocmdunXORfArg2GetLoopEnd
ld (cryptocmdunXORfStringBuffer), a
inc hl
ld a, (hl)
ld (cryptocmdunXORfStringBuffer + 1), a
push hl
ld hl, cryptocmdunXORfStringBuffer
call hexToA
pop hl
ld (bc), a
inc hl
inc bc
jr cryptocmdunXORfArg2GetLoop
cryptocmdunXORfArg2GetLoopEnd:
call _NewLine
cryptocmdunXORfExe:
ld hl, cryptocmdunXORfStringPBuffer
ld de, FshCmdArg1
call xorcrypt
ld hl, cryptocmdunXORfDResult
call _PutS
ld hl, cryptocmdunXORfStringPBuffer
call _PutS
call _NewLine
jp Fin
cryptocmdunXORfDKey: .db "Key= ", 0
cryptocmdunXORfDMessage: .db "CypherText= ", 0
cryptocmdunXORfDResult: .db "Result: ", 0
cryptocmdunXORfStringBuffer: .db $00, $00, $00, $00
cryptocmdunXORfStringPBuffer: .db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00