Itsy-OS v0.1 is a small 8086 operating system kernel providing two basic services: a simple preemptive task switcher and memory management. If necessary, simple IPC and task management can be added to provide the features of a traditional microkernel.
Weighing in at about 380 bytes, Itsy should port well to tiny architectures.
Memory Control Blocks
Each block of memory is preceded by a memory control block which is 32 bytes long. The blocks of memory are arranged as a circular linked list. The first memory control block resides in segment 050h.
org 0h
; -----------------------------
; [Master Memory Control Block]
; -----------------------------
M_NEXT:dw 0 ; address of next MCB
M_LAST:dw 0 ; address of previous MCB
M_PARA:dw 0 ; size of this block in paragraphs including MCB
M_FLAG:db 0 ; flags
db 0 ;
M_NPRO:dw 0 ; next MCB containing process, zero if not in queue
M_LPRO:dw 0 ; previous MCB containing process, or zero
M_STKP:dw 0 ; stack pointer
M_STKS:dw 0 ; stack segment
M_TIME:dw 0 ; time allocated / de-allocated
M_DATE:dw 0 ; date allocated / de-allocated
M_OWNR:dw 0 ; user number who owns this memory
M_NAME:db ' ' ; name of this memory block
; ---------------------------------------------------------------------------
; flag bits
F_FREE equ 01h ; zero if this is free memory
F_ACTI equ 02h ; zero if no task ready for CPU
; ---------------------------------------------------------------------------
jmp E_INIT ; setup kernel
; ---------------------------------------------------------------------------
; -------------------
; [Nucleus Data Area]
; -------------------
D_PCP:dw 0 ; segment of current process's MCB
D_SWEN:db 0 ; set to zero when switching disabled
Task Switcher
Read more: Retro Programming
0 comments:
Post a Comment