/**
 * Runtime configuration
 *
 * Created on 2021/11/13.
 */

#ifndef FORTH_FH_CONFIG_H
#define FORTH_FH_CONFIG_H

#define DATA_STACK_DEPTH 256
#define RETURN_STACK_DEPTH 256
#define MAX_NAME_LEN 32
#define HEAP_SIZE (1024*1024)
#define MAXLINE 65535
#define PAD_OFFSET 340 // why? copied from somewhere
#define WORDBUF_SIZE 256
#define INPUT_BUFFER_SIZE 256
#define MIN_PAD_SIZE 256

#define CELL 4

#define HEAP_END      (HEAP_SIZE - WORDBUF_SIZE - INPUT_BUFFER_SIZE)
#define WORDBUF_ADDR  HEAP_END
#define INPUTBUF_ADDR (HEAP_END + WORDBUF_SIZE)

// SFR and magic addresses are "negative"
#define MAGICADDR_EXEC_INTERACTIVE 0xFFFFFFFFULL
#define MAGICADDR_DICTFIRST        0xFFFFd1c7ULL
#define MAGICADDR_BASE             0xFFFFBA5EULL
#define MAGICADDR_HERE             0xFFFF4E7EULL
#define MAGICADDR_STATE            0xFFFF57a7ULL
#define MAGICADDR_INPTR            0xFFFFF175ULL
#define MAGICADDR_UNRESOLVED       0xFFFFFBADULL

#endif //FORTH_FH_CONFIG_H