diff --git a/FSHa.asm b/FSHa.asm index 3cc99b3..7528235 100644 --- a/FSHa.asm +++ b/FSHa.asm @@ -9,8 +9,7 @@ Setup: CALL _homeup CALL _ClrLCDFull - LD HL, 0 - CALL fshvarfill + CALL fshvarreset Input: LD C, $00 diff --git a/bin/FSHa.8xp b/bin/FSHa.8xp index 91439f1..96aaca5 100644 Binary files a/bin/FSHa.8xp and b/bin/FSHa.8xp differ diff --git a/includes/FshCmd.asm b/includes/FshCmd.asm index 39c2936..870c674 100644 --- a/includes/FshCmd.asm +++ b/includes/FshCmd.asm @@ -33,6 +33,15 @@ fshcmddecode: call z, bytecpy pop hl + push hl + push de + ld de, fshcmdMOVE + call strcmp + ld hl, fshcmdMOVEo + pop de + call z, bytecpy + pop hl + push hl push de ld de, fshcmdVARS @@ -69,10 +78,14 @@ fshcmdroute: call bytecmp jp z, fshcmdSETf - ld de, fshcmdCOPYo + ld de, fshcmdCOPYo call bytecmp jp z, fshcmdCOPYf + ld de, fshcmdMOVEo + call bytecmp + jp z, fshcmdMOVEf + ld de, fshcmdVARSo call bytecmp jp z, fshcmdVARSf diff --git a/includes/FshCommands.inc b/includes/FshCommands.inc index 72458f9..15c9306 100644 --- a/includes/FshCommands.inc +++ b/includes/FshCommands.inc @@ -1,5 +1,6 @@ #include "includes/FshCommands/EXIT.asm" #include "includes/FshCommands/SET.asm" #include "includes/FshCommands/COPY.asm" +#include "includes/FshCommands/MOVE.asm" #include "includes/FshCommands/CLS.asm" #include "includes/FshCommands/VARS.asm" diff --git a/includes/FshCommands/MOVE.asm b/includes/FshCommands/MOVE.asm new file mode 100644 index 0000000..ee8c80e --- /dev/null +++ b/includes/FshCommands/MOVE.asm @@ -0,0 +1,70 @@ +fshcmdMOVE: .db "MOVE", 0 +fshcmdMOVEo: .db $03 +fshcmdMOVEu: .db "Move a value in FSH memory to another addess", 0 +fshcmdMOVEf: +fshcmdMOVEfArg0: + ld hl, FshCmdArg0 + ld de, 0 + ld e, (hl) + inc hl + ld d, (hl) + ex de, hl + ld de, 0 + call cpHLDE + jr nz, fshcmdMOVEfArg1 +fshcmdMOVEfArg0Get: + ld a, 'G' + call _PutC + xor a + ld (CurCol), a + ld hl, fshcmdMOVEfDSource + call _PutS + ld hl, fshcmdMOVEfInputBuffer + ld de, 3 + call inputnumstr + call strtob + ld hl, FshCmdArg0 + ld (hl), a + call _NewLine +fshcmdMOVEfArg1: + ld hl, FshCmdArg1 + ld de, 0 + ld e, (hl) + inc hl + ld d, (hl) + ex de, hl + ld de, 0 + call cpHLDE + jr nz, fshcmdMOVEfExe +fshcmdMOVEfArg1Get: + xor a + ld (CurCol), a + ld hl, fshcmdMOVEfDDestination + call _PutS + ld hl, fshcmdMOVEfInputBuffer + ld de, 3 + call inputnumstr + call strtob + ex de, hl + ld hl, FshCmdArg1 + ld (hl), a +fshcmdMOVEfExe: + ld hl, FshCmdArg0 + ld de, 0 + ld e, (hl) + ex de, hl + push hl + ld hl, FshCmdArg1 + ld de, 0 + ld e, (hl) + pop hl + call fshvarcpy + ex de, hl + ld hl, 0 + call fshvarset + call _NewLine + jp ErrCatch + +fshcmdMOVEfInputBuffer: .db $00, $00, $00, $00 +fshcmdMOVEfDSource: .db "Source= ", 0 +fshcmdMOVEfDDestination: .db "Destination= ", 0 diff --git a/includes/FshVar.asm b/includes/FshVar.asm index e015756..42669d5 100644 --- a/includes/FshVar.asm +++ b/includes/FshVar.asm @@ -112,16 +112,15 @@ fshvarcpyOOBException: pop hl ret -; fshvarfill +; fshvarreset ;; fills fshvars with word -;; Inputs: -;; HL: 16b -fshvarfill: +fshvarreset: push hl push bc push de ld b, 0 ld de, 0 + ld hl, 0 fshvarfillLoop: call fshvarset inc b