fsh-shell/includes/FshCmd.asm

113 lines
1.5 KiB
NASM

;;fshcmddecode
;;Decodes all commands.
;;Inputs:
;; HL: Cmd String mem loc
;; DE: Op code mem loc
;;Output:
;; Sets (DE) with command op code
fshcmddecode:
push hl
push de
ld de, fshcmdEXIT
call strcmp
ld hl, fshcmdEXITo
pop de
call z, bytecpy
pop hl
push hl
push de
ld de, fshcmdSET
call strcmp
ld hl, fshcmdSETo
pop de
call z, bytecpy
pop hl
push hl
push de
ld de, fshcmdCOPY
call strcmp
ld hl, fshcmdCOPYo
pop de
call z, bytecpy
pop hl
push hl
push de
ld de, fshcmdVARS
call strcmp
ld hl, fshcmdVARSo
pop de
call z, bytecpy
pop hl
push hl
push de
ld de, fshcmdCLS
call strcmp
ld hl, fshcmdCLSo
pop de
call z, bytecpy
pop hl
ret
;;fshcmdroute
;;Routes all commamds.
;;Inputs:
;; HL: Op code mem loc
;;Outputs:
;; Jp to loc for cmd func
;; ult go to Fin
fshcmdroute:
ld de, fshcmdEXITo
call bytecmp
jp z, fshcmdEXITf
ld de, fshcmdSETo
call bytecmp
jp z, fshcmdSETf
ld de, fshcmdCOPYo
call bytecmp
jp z, fshcmdCOPYf
ld de, fshcmdVARSo
call bytecmp
jp z, fshcmdVARSf
ld de, fshcmdCLSo
call bytecmp
jp z, fshcmdCLSf
ld hl, FshCmdErrCode
ld (hl), $01
jp Err
; fshvarfill
;; fills fshcmd with byte
;; Inputs:
;; C: byte
fshcmdfill:
push hl
push bc
push de
ld b, 0
ld de, 0
ld hl, FshCmd
fshcmdfillLoop:
ld (hl), c
inc hl
inc b
inc de
ld a, b
cp FshCmdSize
jr c, fshcmdfillLoop
pop de
pop bc
pop hl
ret
#include "includes/FshCommands.inc"