summaryrefslogtreecommitdiffstats
path: root/sw/z80/kernel/include
diff options
context:
space:
mode:
Diffstat (limited to 'sw/z80/kernel/include')
-rw-r--r--sw/z80/kernel/include/devices.h15
-rw-r--r--sw/z80/kernel/include/errno.h35
-rw-r--r--sw/z80/kernel/include/fs/dev.h29
-rw-r--r--sw/z80/kernel/include/fs/dirent.h17
-rw-r--r--sw/z80/kernel/include/fs/fd.h102
-rw-r--r--sw/z80/kernel/include/fs/fdop.h140
-rw-r--r--sw/z80/kernel/include/fs/fs.h63
-rw-r--r--sw/z80/kernel/include/fs/iter.h17
-rw-r--r--sw/z80/kernel/include/fs/users.h21
-rw-r--r--sw/z80/kernel/include/memory.h50
-rw-r--r--sw/z80/kernel/include/process.h43
-rw-r--r--sw/z80/kernel/include/sio.h43
-rw-r--r--sw/z80/kernel/include/stat.h24
-rw-r--r--sw/z80/kernel/include/types.h62
14 files changed, 0 insertions, 661 deletions
diff --git a/sw/z80/kernel/include/devices.h b/sw/z80/kernel/include/devices.h
deleted file mode 100644
index a846f9b..0000000
--- a/sw/z80/kernel/include/devices.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef __DEVICES_H__
-#define __DEVICES_H__
-
-#define ADDR_DEV_ROM_L 0x0000
-#define ADDR_DEV_ROM_H 0x2000
-
-#define ADDR_DEV_USART 0x4000
-#define ADDR_DEV_CTC 0x4100
-#define ADDR_DEV_PIO 0x4200
-
-#define ADDR_DEV_MMU
-
-#define ADDR_DEV_RAM 0x8000
-
-#endif
diff --git a/sw/z80/kernel/include/errno.h b/sw/z80/kernel/include/errno.h
deleted file mode 100644
index 7632269..0000000
--- a/sw/z80/kernel/include/errno.h
+++ /dev/null
@@ -1,35 +0,0 @@
-#ifndef ERRNO_H
-#define ERRNO_H
-
-extern int errno;
-
-#define EPERM 1 /* Operation not permitted */
-#define ENOENT 2 /* No such file or directory */
-#define ESRCH 3 /* No such process */
-#define EINTR 4 /* Interrupted system call */
-#define EIO 5 /* Input/output error */
-#define ENXIO 6 /* Device not configured */
-#define E2BIG 7 /* Argument list too long */
-#define ENOEXEC 8 /* Exec format error */
-#define EBADF 9 /* Bad file descriptor */
-#define ECHILD 10 /* No child processes */
-#define EDEADLK 11 /* Resource deadlock avoided */
-
-#define ENOMEM 12 /* Cannot allocate memory */
-#define EACCES 13 /* Permission denied */
-#define EFAULT 14 /* Bad address */
-
-#define ENOTBLK 15 /* Block device required */
-#define EBUSY 16 /* Device busy */
-#define EEXIST 17 /* File exists */
-
-#define EXDEV 18 /* Cross-device link */
-#define ENODEV 19 /* Operation not supported by device */
-#define ENOTDIR 20 /* Not a directory */
-#define EISDIR 21 /* Is a directory */
-#define EINVAL 22 /* Invalid argument */
-#define ENFILE 23 /* Too many open files in system */
-#define EMFILE 24 /* Too many open files */
-#define ENOTTY 25 /* Inappropriate ioctl for device */
-
-#endif
diff --git a/sw/z80/kernel/include/fs/dev.h b/sw/z80/kernel/include/fs/dev.h
deleted file mode 100644
index 8e550f3..0000000
--- a/sw/z80/kernel/include/fs/dev.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef DEV_H
-#define DEV_H
-
-#include "types.h"
-
-#define FS_MOUNT_LIMIT 16
-
-struct fs_superblock
-{
- uint8_t magic; // identifier
-
- size_t blk_size; // size of a single block
- size_t imap_size; // quantity of inodes
- size_t dmap_size; // quantity of blocks
-};
-
-struct fs_dev
-{
- uint enabled :1; // in use
- uint port_no :3; // serial port number
- uint :4;
- inode_t inode; // dir mounted
- struct fs_superblock superblock; // block informations
-};
-
-/* list of devices */
-extern struct fs_dev devices[FS_MOUNT_LIMIT];
-
-#endif
diff --git a/sw/z80/kernel/include/fs/dirent.h b/sw/z80/kernel/include/fs/dirent.h
deleted file mode 100644
index 2fd224a..0000000
--- a/sw/z80/kernel/include/fs/dirent.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef __DIRENT_H__
-#define __DIRENT_H__
-
-#include "types.h"
-
-struct dirent
-{
- ino_t inode; // inode referred
- uint8_t name_size; // size of the name
- char name[]; // name of the referred inode
-};
-
-/* if inode is FS_INO_NULL, then the dirent is a memory leak */
-/* Warning: dirent leaks are generated by rm or rmdir operations */
-/* Filesystem must be periodically checked and cleaned */
-
-#endif // __DIRENT_H__
diff --git a/sw/z80/kernel/include/fs/fd.h b/sw/z80/kernel/include/fs/fd.h
deleted file mode 100644
index d2fea2a..0000000
--- a/sw/z80/kernel/include/fs/fd.h
+++ /dev/null
@@ -1,102 +0,0 @@
-#ifndef __FD_H__
-#define __FD_H__
-
-#include "types.h"
-
-#define FD_MAX 32
-
-#define OPEN_READ 0x1
-#define OPEN_WRITE 0x2
-#define OPEN_BIN 0x4
-#define OPEN_APPEND 0x8
-#define OPEN_ERASE 0x10
-#define OPEN_DIR 0x20
-#define OPEN_LINK 0x40
-
-#define LS_ALL 0x1
-
-/* declare dirent, not include */
-#ifndef __DIRENT_H__
-struct dirent;
-#endif
-
-/* set of operations callback for fd */
-struct fd_operations
-{
- size_t (*readline)(inode_t, fsize_t, char *, char term);
- size_t (*print)(inode_t, fsize_t, const char *);
- size_t (*append)(inode_t, fsize_t*, const char *);
-
- size_t (*read)(inode_t, fsize_t, void *, size_t);
- size_t (*write)(inode_t, fsize_t, const void *, size_t);
- size_t (*bin_append)(inode_t, fsize_t*, const void *, size_t);
-
- size_t (*ls)(inode_t, struct dirent *, uint8_t);
- size_t (*find)(inode_t, struct dirent *, const char *);
- int8_t (*mkdir)(inode_t, const char *);
- int8_t (*rmdir)(inode_t, const char *);
- int8_t (*touch)(inode_t, const char *);
- int8_t (*rm)(inode_t, const char *);
- int8_t (*ln)(inode_t, const char *, const char *);
-
- int8_t (*special)(inode_t, void *, size_t);
-};
-
-/* file descriptor */
-struct file_desc
-{
- inode_t inode; // inode pointed
- fsize_t seek; // virtual seek
- devsize_t begin; // beginning of blocks
- struct fd_operations opers; // bound operations
-};
-
-/* bitmap of used file descriptors */
-extern struct uint8_t fd_bmap[FD_TABLE_SIZE / 8];
-
-/* table of file descriptors */
-extern struct file_desc fd_table[FD_TABLE_SIZE];
-
-/* returns a free file descriptor */
-int8_t __fd_new();
-
-/* opens a file streaming of the cwd */
-int8_t __open_c_inode(uint8_t flags);
-
-/* opens a file streaming by a path */
-int8_t open(const char *path, uint8_t flags);
-
-/* list content of directory */
-size_t ls(int8_t fd, struct dirent *buf, uint8_t all);
-
-/* find name through the directory entries */
-size_t find(int8_t fd, struct dirent *buf, const char *name);
-
-/* creates a new directory inside fd with the specified name */
-int8_t mkdir(int8_t fd, const char *name);
-
-/* creates a new file inside fd with the specified name */
-int8_t touch(int8_t fd, const char *name);
-
-/* creates a new symlink inside fd with the specified name */
-int8_t ln(int8_t fd, const char *name);
-
-/* change virtual seek position of the fd */
-int8_t seek(int8_t fd, fsize_t pos);
-
-/* reads a string from the fd until the terminator is reached */
-size_t readline(int8_t fd, char *buf, char term);
-
-/* writes a string into the fd */
-int8_t print(int8_t fd, const char *str);
-
-/* reads n bytes from the fd */
-size_t read(int8_t fd, void *buf, size_t n);
-
-/* writes n bytes into the fd */
-int8_t write(int8_t fd, const void *buf, size_t n);
-
-/* frees fd space */
-void close(int8_t fd);
-
-#endif // __FD_H__
diff --git a/sw/z80/kernel/include/fs/fdop.h b/sw/z80/kernel/include/fs/fdop.h
deleted file mode 100644
index d4b1b77..0000000
--- a/sw/z80/kernel/include/fs/fdop.h
+++ /dev/null
@@ -1,140 +0,0 @@
-#ifndef __FDOP_H__
-#define __FDOP_H__
-
-#include "types.h"
-
-#ifndef __DIRENT_H__
-struct dirent;
-#endif
-
-/* macro for direct binding */
-
-#define FD_BIND_AS_DIR(oper) { \
- oper.ls = &as_ls; \
- oper.find = &as_find; \
- oper.mkdir = &as_mkdir; \
- oper.rmdir = &as_rmdir; \
- oper.touch = &as_touch; \
- oper.rm = &as_rm; \
- oper.ln = &as_ln; \
- }
-
-#define FD_BIND_SS_DIR(oper) { \
- oper.ls = &ss_ls; \
- oper.find = &ss_find; \
- oper.mkdir = &ss_mkdir; \
- oper.rmdir = &ss_rmdir; \
- oper.touch = &ss_touch; \
- oper.rm = &ss_rm; \
- oper.ln = &ss_ln; \
- }
-
-#define FD_BIND_AS_FILE(opers, flags) { \
- if (flags & OPEN_READ) \
- opers.readline = as_readline; \
- if (flags & OPEN_APPEND) \
- opers.append = as_append; \
- else if (flags & OPEN_WRITE) \
- opers.print = as_print; \
- }
-
-#define FD_BIND_SS_FILE(opers, flags) { \
- if (flags & OPEN_READ) \
- opers.readline = ss_readline; \
- if (flags & OPEN_APPEND) \
- opers.append = ss_append; \
- else if (flags & OPEN_WRITE) \
- opers.print = ss_print; \
- }
-
-#define FD_BIND_AS_BINFILE(opers, flags) { \
- if (flags & OPEN_READ) \
- opers.read = as_read; \
- if (flags & OPEN_APPEND) \
- opers.bin_append = as_bin_append; \
- else if (flags & OPEN_WRITE) \
- opers.write = as_write; \
- }
-
-#define FD_BIND_SS_BINFILE(opers, flags) { \
- if (flags & OPEN_READ) \
- opers.read = ss_read; \
- if (flags & OPEN_APPEND) \
- opers.bin_append = ss_bin_append; \
- else if (flags & OPEN_WRITE) \
- opers.write = ss_write; \
- }
-
-/* Set of file descriptors operations */
-/* Determines if to use the serial interface or the address space */
-
-/* Address space section */
-
-/* File functions */
-
-size_t as_readline(inode_t inode, fsize_t seek, char *buf, char term);
-
-size_t as_print(inode_t inode, fsize_t seek, const char *str);
-
-size_t as_append(inode_t inode, fsize_t *seek_ptr, const char *str);
-
-
-size_t as_read(inode_t inode, fsize_t seek, void *buf, size_t n);
-
-size_t as_write(inode_t inode, fsize_t seek, const void *buf, size_t n);
-
-size_t as_bin_append(inode_t inode, fsize_t *seek_ptr, const void *buf, size_t
-n);
-
-/* Directory functions */
-
-size_t as_ls(inode_t inode, struct dirent *buf, uint8_t all);
-
-size_t as_find(inode_t inode, struct dirent *buf, const char *name);
-
-int8_t as_mkdir(inode_t inode, const char *name);
-
-int8_t as_rmdir(inode_t inode, const char *name);
-
-int8_t as_touch(inode_t inode, const char *name);
-
-int8_t as_rm(inode_t inode, const char *name);
-
-int8_t as_ln(inode_t inode, const char *path, const char *name);
-
-/* Serial Space section */
-/* Warning, it doesn't switch to the right driver */
-
-/* File functions */
-
-size_t ss_readline(inode_t inode, fsize_t seek, char *buf, char term);
-
-size_t ss_print(inode_t inode, fsize_t seek, const char *str);
-
-size_t ss_append(inode_t inode, fsize_t *seek_ptr, const char *str);
-
-
-size_t ss_read(inode_t inode, fsize_t seek, void *buf, size_t n);
-
-size_t ss_write(inode_t inode, fsize_t seek, const void *buf, size_t n);
-
-size_t ss_bin_append(inode_t inode, fsize_t *seek_ptr, const void *buf, size_t
-n);
-
-/* Directory functions */
-
-size_t ss_ls(inode_t inode, struct dirent *buf, uint8_t all);
-
-size_t ss_find(inode_t inode, struct dirent *buf, const char *name);
-
-int8_t ss_mkdir(inode_t inode, const char *name);
-
-int8_t ss_rmdir(inode_t inode, const char *name);
-
-int8_t ss_touch(inode_t inode, const char *name);
-
-int8_t ss_rm(inode_t inode, const char *name);
-
-int8_t ss_ln(inode_t, const char *path, const char *name);
-
-#endif // __FDOP_H__
diff --git a/sw/z80/kernel/include/fs/fs.h b/sw/z80/kernel/include/fs/fs.h
deleted file mode 100644
index ad20adb..0000000
--- a/sw/z80/kernel/include/fs/fs.h
+++ /dev/null
@@ -1,63 +0,0 @@
-#ifndef __FS_H__
-#define __FS_H__
-
-#include "types.h"
-
-#define FS_OFFSET 0x1000
-
-#define FS_BLOCKS_SIZE 512
-#define FS_BLOCKS_N 8
-#define FS_BLOCKS_IND 6
-
-#define INODE_TYPE_FILE 0x0
-#define INODE_TYPE_DIR 0x1
-#define INODE_TYPE_SLINK 0x2
-#define INODE_TYPE_SPECIAL 0x3
-
-#define INODE_META_SIZE 8
-
-/* inode basic structure */
-struct fs_inode
-{
- /* inode meta data */
-
- uint mode :3; // chmod
- uint uid :3; // chown
- uint type :2; // file, dir, sym-link, special
-
- time_t ctime; // creation time
-
- uint24_t size; // inode size
-
- /* data storage informations */
- /* it doesn't allocate memory, virtual size FS_BLOCKS_N */
- blk_t blocks[];
-};
-
-#define FS_DEV_ROM 0x7f /* 01111111 */
-#define FS_DEV_NULL 0x80 /* 10000000 */
-
-#define FS_ROM_SPACE 0x2000 // second rom
-
-#define FS_INO_ROOT 0x0 // first inode
-
-#define FS_INODE_ROOT(inode) {inode.dev = 0xff; inode.inode = 0x0}
-#define FS_INODE_NULL(inode) {inode.dev = 0x80; inode.inode = 0x0}
-
-#define FS_USE_ROM(inode) {inode.dev == 0x7f}
-
-/* get block seek in current device */
-devsize_t fs_block(blk_t block);
-
-/* get common inode seek in current device */
-/* c_inode must be set first */
-/* returns seek at the beginning of blocks field */
-devsize_t fs_inode(struct fs_inode *buf);
-
-/* common inode for syscalls */
-extern inode_t c_inode;
-
-/* parse a path, absolute or relative to c_inode */
-inode_t fs_parse_path(const char *path);
-
-#endif // __FS_H__
diff --git a/sw/z80/kernel/include/fs/iter.h b/sw/z80/kernel/include/fs/iter.h
deleted file mode 100644
index 41f011d..0000000
--- a/sw/z80/kernel/include/fs/iter.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#ifndef __ITER_H__
-#define __ITER_H__
-
-struct inode_iter
-{
- devsize_t dev_seek; /* seek position in the volume */
- devsize_t blk_end; /* end of the block */
-
- int16_t blk_index; /* index of the block */
-
- int8_t blk_level; /* recursion level, indirect blocks */
-
- fsize_t fseek; /* virtual seek in the file */
- fsize_t size; /* file size */
-};
-
-#endif // __ITER_H__
diff --git a/sw/z80/kernel/include/fs/users.h b/sw/z80/kernel/include/fs/users.h
deleted file mode 100644
index 83980e5..0000000
--- a/sw/z80/kernel/include/fs/users.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef USERS_H
-#define USERS_H
-
-#include "types.h"
-
-#define USERS_MAX 8
-#define USER_ROOT 0
-
-/* current user in use */
-extern struct fs_user c_user;
-
-struct fs_user
-{
- char name[32];
- ino_t home;
- uint8_t perm; // TODO, permissions
-};
-
-/* all users are in rom device */
-
-#endif
diff --git a/sw/z80/kernel/include/memory.h b/sw/z80/kernel/include/memory.h
deleted file mode 100644
index 67c4b88..0000000
--- a/sw/z80/kernel/include/memory.h
+++ /dev/null
@@ -1,50 +0,0 @@
-#ifndef __MEMORY_H__
-#define __MEMORY_H__
-
-#include "types.h"
-#include "devices.h"
-
-/* maximum number of pages on the system */
-#define PAGES_MAX_COUNT 32
-#define PAGE_SIZE 1000
-
-/* in our system there are only 16 pages since only 64KB can be addressed
- * to optimize the memory management in ROM and RAM only pages from this set
- * shall be used
- */
-// ROM
-#define ADDR_PAGE_0 0x0000
-#define ADDR_PAGE_1 0x1000
-#define ADDR_PAGE_2 0x2000
-#define ADDR_PAGE_3 0x3000
-// IOSPACE
-#define ADDR_PAGE_4 0x4000
-#define ADDR_PAGE_5 0x5000
-#define ADDR_PAGE_6 0x6000
-#define ADDR_PAGE_7 0x7000
-// RAM
-#define ADDR_PAGE_8 0x8000
-#define ADDR_PAGE_9 0x9000
-#define ADDR_PAGE_10 0xA000
-#define ADDR_PAGE_11 0xB000
-#define ADDR_PAGE_12 0xC000
-#define ADDR_PAGE_13 0xD000
-#define ADDR_PAGE_14 0xE000
-#define ADDR_PAGE_15 0xF000
-
-#define ADDR_PAGE_FIRST ADDR_PAGE_8
-#define ADDR_PAGE_LAST ADDR_PAGE_15
-
-struct page
-{
- pid_t pid; // process owner of the page (0 if free)
- uint16_t addr; // physical address
-};
-
-int mmu_write_table(void);
-
-int page_new(void);
-int page_map(int page, int pid, uint16_t addr);
-int page_unmap(int page);
-
-#endif // __MEMORY_H__
diff --git a/sw/z80/kernel/include/process.h b/sw/z80/kernel/include/process.h
deleted file mode 100644
index 3b0c843..0000000
--- a/sw/z80/kernel/include/process.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#ifndef __PROCESS_H__
-#define __PROCESS_H__
-
-#include "types.h"
-#include "memory.h"
-
- /* maximum number of processes (i.e. pages in ram)
- * since each program can use only one page in ram
- */
-#define PROC_COUNT 2
-
-/* the pid is defined with a single byte (pid_t is uint8_t), because of that
- * there cannot be more than 255 processes open at the same time. this is a
- * limitation but for our purposes is more than enough
- */
-#define PID_COUNT_MAX 255
-
-struct executable
-{
- void *text;
- size_t text_size;
- void *bss;
- size_t bss_size;
-};
-
-struct process
-{
- uint blocked :1; // process is waiting for hardware or locked
- uint running :1; // pid is used
- uint pages; // number of pages used by the process
- struct page page[4]; // pages used by the process
-};
-
-pid_t newpid(void);
-
-int fork(void);
-int exec(char *path, char *args);
-int spawn(char *path, char *args);
-
-pid_t getpid(void);
-int kill(pid_t pid);
-
-#endif // __PROCESS_H__
diff --git a/sw/z80/kernel/include/sio.h b/sw/z80/kernel/include/sio.h
deleted file mode 100644
index 276b99c..0000000
--- a/sw/z80/kernel/include/sio.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#ifndef __SIO_H__
-#define __SIO_H__
-
-#include "types.h"
-
-#define SIO_PORT_0 0x0
-#define SIO_PORT_1 0x1
-#define SIO_PORT_2 0x2
-#define SIO_PORT_3 0x3
-#define SIO_PORT_4 0x4
-#define SIO_PORT_5 0x5
-#define SIO_PORT_6 0x6
-#define SIO_PORT_7 0x7
-
-/* current port in use */
-extern uint8_t sio_port;
-
-/* current seek in the device */
-extern devsize_t sio_seek;
-
-struct dev_buffer
-{
- // TODO, bytes needed to the device buffer interface
-};
-
-/* points to the buffers mapped in the I/O space */
-/* to be defined precisely in assembly */
-extern volatile struct dev_buffer sio_buffers[8];
-
-/* initialize serial interface */
-void sio_init();
-
-/* syscall: read one byte from the current device */
-uint8_t sio_recv();
-/* syscall: write one byte into the current device */
-void sio_send(uint8_t value);
-
-/* read n bytes from the current port */
-size_t sio_read(void *buffer, size_t n);
-/* write n bytes into the current port */
-int8_t sio_write(const void *buffer, size_t n);
-
-#endif // __SIO_H__
diff --git a/sw/z80/kernel/include/stat.h b/sw/z80/kernel/include/stat.h
deleted file mode 100644
index 44c0f63..0000000
--- a/sw/z80/kernel/include/stat.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef __STAT_H__
-#define __STAT_H__
-
-#include "types.h"
-
-struct stat
-{
- inode_t inode; /* inode reference */
-
- uint mode :3; /* mode */
- uint uid :3; /* owner id */
- uint type :2; /* file, dir or link */
-
- devsize_t size; /* file size */
-
- size_t blk_size; /* single block size */
- size_t blk_used; /* blocks used by the file */
-
- time_t ctime; /* creation time */
-}
-
-struct stat * stat(const char *path, struct stat *buffer);
-
-#endif // __STAT_H__
diff --git a/sw/z80/kernel/include/types.h b/sw/z80/kernel/include/types.h
deleted file mode 100644
index c6e620b..0000000
--- a/sw/z80/kernel/include/types.h
+++ /dev/null
@@ -1,62 +0,0 @@
-#ifndef __TYPES_H__
-#define __TYPES_H__
-
-/* only types from primitive types are defined in this file */
-
-typedef volatile unsigned char register_t;
-
-typedef unsigned int uint;
-
-typedef char int8_t;
-typedef unsigned char uint8_t;
-typedef int int16_t;
-typedef unsigned int uint16_t;
-typedef long int int32_t;
-typedef unsigned long int uint32_t;
-
-typedef uint16_t size_t;
-typedef int16_t ssize_t;
-
-typedef uint8_t pid_t;
-typedef uint16_t ino_t;
-
-typedef uint8_t dev_t;
-typedef uint32_t devsize_t;
-typedef uint8_t fd_t;
-typedef uint16_t blk_t;
-typedef uint8_t user_t;
-
-typedef struct {
- uint8_t member[3];
-
-} uint24_t;
-
-typedef uint32_t fsize_t;
-
-typedef struct
-{
- dev_t dev; // device id, global in the fs
- ino_t inode; // inode id relative to the volume
-
-} inode_t;
-
-typedef struct time_s
-{
- struct
- {
- uint minutes :6;
- uint hour :5;
-
- } time;
-
- struct
- {
- uint day :5;
- uint month :4;
- uint year :12;
-
- } date;
-
-} time_t;
-
-#endif