DataMuseum.dk

Presents historical artifacts from the history of:

Bogika Butler

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Bogika Butler

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦2801b01ee⟧ TextFile

    Length: 9600 (0x2580)
    Types: TextFile
    Names: »INDEX.BAK«

Derivation

└─⟦8592db80f⟧ Bits:30009789/_.ft.Ibm2.50007350.imd Mogens Pelles Zilog 80,000 / EOS projekt
    └─⟦this⟧ »INDEX.BAK« 
└─⟦fc37b823b⟧ Bits:30009789/_.ft.Ibm2.50006612.imd Mogens Pelles Zilog 80,000 / EOS projekt
    └─⟦this⟧ »INDEX.BAK« 

TextFile

The following is an index to the EOS kernel source text.
Besides providing an overview of the main procedures and
the like this text will repeat the more important comments
stated in the kernel source.


KERNEL.COMDEF.SA

Defines constants, offsets and macroes. Defining offsets
the text in fact defines the lay out of all the major data
structures.

Types and constants:

CHAIN & MEMBER
SIZE TYPE
POINTER & FORMAL POINTER
OBJECT, COMMON PART
SPACE DESCRIPTION (NON-EMBEDDED OBJECTS ONLY)
GATE OBJECT
CONDITION OBJECT
EXTENSION & PROCESS OBJECT
SEGMENT & SUBSEGMENT OBJECT
MMU DESCRIPTOR (ONLY USED AS PART OF CONTEXT)
GENERAL OBJECT
STACK ELEMENT
ENVELOPE
CONTEXT
RESULT ARGUMENTS

Macroes:

INS_ELEM
REM_ELEM
INIT_HEAD
CASEJMP
CASELAB
ENTRYSAV
RETURN
PRT_REG
PRT_MEM
ERROR

Misc. constants.

KERNEL.PREFACE.SA

 The purpose of the preface is to assign some key variables of
the running system. Some values must be changed in
COMDEF or in PREFACE when the system configuration changes.

 The initialization of the preface gets control right after the
hardware boot.

0) Round up FIRST_OS in KV_BOTLD.
1) Clear the vector_table, driver_table, and stack_table.
2) Reserve trap #9 for test output and initialize test printer.
3) Initialize entry 0 and 1 of the tables.

KERNEL.ENTER.SA

Kernel back end. Contains the last part of the initialization.

1) Create the boot process and an initial context in the stub object.
2) Start the clock.
3) Compute free memory.
4) Enter the stub context. ("EOSBEGIN" Activate bottom level scheduler).
5) Ensure proper format of boot file (assembler directives).

KERNEL.MMPROCS.SA

(section 7. Kernel variables)

Variables, import and export desciptions.
Installation module format definition (offsets).
Macroes:

NEWHEAD
PROCSAVE
PROCRTRN
MOVLM
MOVHD
TSTPAGE

(section 11. Initialize) **** activated right after preface ****

   Misc. local procedures.
0) Allocate pagetable, set up supervisor stack.
1) Boot loaded modules (in RAM) are described as one segment object.
   - This will protect the modules during the initialization. The
     alloc object is used as the kernel part of this segment object.
2) Create the fulspace segment object and initial pointers.
   - And initialize various global variables.
3) Allocate and initilize the stub object, except local pointers.
4) Create the boot owner set describing the boot loaded modules
   in LOCAL-2 of the stub object.
5) Initialize LOCAL-1: Ref to code of the stub.
              LOCAL-6: Ref to the fulspace segment object.
6) Create the alloc object as initial allocator of the kernel.

GOTO knelop-initialization (entry point: I_SCHED) according to
comments in the source, but I_SCHED is defined in KERNEL.SC.SA .

(section 9. RUN TIME)

Misc. local procedures.
Alloc object:
   verify and branch.
   New_obj       create a new open object.
   MM_term       terminate object.
   MM_cre        create object.
   Removobj      remove object.
   PgTabSet      assign entry of page table.
   PgTabGet      get entry from page table.
   chain_it      chain new element next to old element (head or chain member).
   chainown      chain object to nil pointer or owner pointer.
   chainman      chain envelope to nil pointer or manager pointer.
   simplept      create simple pointer to object.
   initenv       initialize envelope.
   initgein      initialize general part of stub or scheduler object.
   initknel      initialize OB and SP fields of object.
   assignus      assign user part to kernel part of object.
   removeus      remove user part.
   removekn      remove kernel part.
   geturec       get mem_rec holding user part.
   getkrec       get mem_rec holding kernel part.
   createus      create user part.
   createkn      create kernel part.
   rechainc      rechain mem_recs after creation of kernel or user part.
   case_C1
   case_C2
   case_C3
   case_C4
   rechainR      rechain mem_recs after removal of kernel or user part.
   case_R1
   case_R2
   case_R3
   case_R4
   userget       parameter list to getroom when a user part is created.
   knelget       parameter list to getroom when a kernel part is created.
   getroom       get room for a user or kernel part.
   searchus      search for free space to a user part.
   compus        compress user parts to generate free space.
   C_uparts      compress each user RAM area to generate free space.
   M_uacros      move user parts across NO_RAM areas.
   searchkn      search for free space to a kernel part.
   compkn        compress kernel parts to generate free space.
   C_kparts      compress each kernel RAM area to generate free space.
   M_kacros      move kernel parts across NO_RAM areas.
   moveknel      move kernel part of an object.
   movepoin      move common part of a pointer.
   movesmpl      move simple pointer.
   moveenct      move common part of envelope and context.
   moveuser      move user part.
   CHK_TIR       time_out, IO_count, resiodent_count.
   moveseda      move segment data.
   MM_setre      scan tree of subsegments and pointers.
   newsefir      new value of se_fir should be registered.
   move_man      moves an integral number of segments.

KERNEL.SC.SA

Constants, import and export descriptions.

(Section 7. Kernel variables).

(Section 11. Initialization).

I_sched          Entry to init part of scheduler.
The scheduler initialization gets control after MM_proc has initialized.
The following steps are then carried out:
1) initialize simple global variables.
2) initialize initial objects.
3) initialize stub object.
4) initialize trap #8 = initerrupt_end.

(Section 9. RUN TIME)

tintrupt         interrupt procedure for the ptm chip.
twait            wait for time out.
time_out         time out call from driver.
to_updat         update time out counter.
rt_updat         update real time counter (rtcnt).
get_time         kernel operation #34. May also be called from resident ctx.
convaddr         convert address from user space to supervisor space.
en_stopr         ensure that running current process will be stopped.
do_stopr         stop running current process for a while.
start_proc       initial resume point for initial ctx in created processes.
tr_tr8           interrupt_end is called (trap #8).
eosbegin         called from ENTER after the initialization.
find_nxt         find the next process to be resumed.
en_dis           enable and disable interrupts.
rsto_all         restore kv_ctx, kv_proc, a0,a2,a3, USP, supv.stack of proc.
rsto_stk         restore supervisor stack.
save_stk         save supervisor stack and USP in context.
timcheck         allow other processes to run if time out has occured.
syncstop         synchronizing process is stopped.
knelsign         kernel defined signal operation.
knelwait         kernel defined wait operation.
schedobj         scheduler functions execued in kernel mode.
decldorm         declare dormant process.
declcond         declare condition object.
declgate         declare gate object.
declchan         declare channel.
termdriv         remove channel descriptions.
compstak         compute difference= needed_supvsize - actual_supvsize.
c_form12         check formal-1 and -2 in decl_channel.
cre_chan         create channel descriptions.
c_sched          chech calling scheduler.
c_openf1         check that one open object is present in formal-1.
<error exits>

schedent         entry of general object being a scheduler object.
   new_proc      create new dormant process object.
   new_sched     create new scheduler object.
   newscond      create new condition.
   new_gate      create new gate object.
   new_chan      create new device channel.
   newichan      new_channel executed in initial scheduler.
   del_ext       delete supervisor stack extensions. (not implemented)
   deliext       delete extensions executed in initial sched. (not impl.)
   new_open      create new open object.
   decl_div      declare a kernel defined object.
   nextnumb      get next number parameter among the value data.
   <error exits>

int_sign         interrupt signal operation.
ptandseg         pointer and segment.
c_segm           check that the argument is a segment object.
cr_inctx         create interrupt context.
gate_obj         callable gate object functions.
   gatelock      lock normal gate.
   devilock      lock device gate.
   speedchk
   gateopen      open normal gate.
   force_open    open unknown device gate.
   deviopen      open device gate.
   newgcond      create new condition object.
   resbegin      set resident lock on and update resident counts.
   setreset      adjust resident counts for resident context.
   incrdecr      increase or decrease count in segment objects.
   qdriv         queue process in the driving queue.
cond_obj         callable condition object functions.
   condwait      wait on normal condition.
   deviwait      wait on device condition.
   waitwait      wait on condition.
   condsign      signal normal/devi_cond, or interrupt_signal devi_cond.
   checklev      check level of process against device level.

termgate         terminate gate object.
termcond         abort condition and contexts in the condition.
propsped         propagate speedup into gate or condition object.
sped_run         put the process back into running queue.

KERNEL.KNELOP.SA








«eof»