DataMuseum.dk

Presents historical artifacts from the history of:

CR80 Hard and Floppy Disks

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

See our Wiki for more about CR80 Hard and Floppy Disks

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦21abd59bd⟧ TextFile

    Length: 10692 (0x29c4)
    Types: TextFile
    Names: »INIT.P«

Derivation

└─⟦b8af24a88⟧ Bits:30005796 CR80 Disc Pack ( MINICAMPS )
    └─ ⟦this⟧ »GENS.D!SYSGEN.D!FMS.D!DUAL.D!INIT.P« 

TextFile


======== COMPILATION STARTED AT:  81:08:21 09:59



======== INIT.S«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»

00.00001 "--------------------------------------------------------------------
00.00002 "
00.00003 "  PROJECT:               AMOS
00.00004 "
00.00005 "  MODULE NAME:           CR File System, adaption and initialize module
00.00006 "  MODULE ID NMB:         CSS/920
00.00007 "  MODULE VERSION:        0301
00.00008 "  MODULE TYPE:           MAIN MODULE
00.00009 "  MODULE FILES:          S
00.00010 "                         IO.I
00.00011 "                         CONFIG.S
00.00012 "  MERGE FILES:           @**GENS.D*SWELLPREFIX.D*GENERALPARAMS.S
00.00013 "                         @**GENS.D*SWELLPREFIX.D*X2GENPARAMS.S
00.00014 "                         @**GENS.D*SWELLPREFIX.D*MONITORNAMES.S
00.00015 "                         @**GENS.D*SWELLPREFIX.D*COMONPARAMS.S
00.00016 "
00.00017 "  SPECIFICATIONS:        Informal
00.00018 "  AUTHOR/DATE:           NMJ/800919
00.00019 "
00.00020 "  DELIVERABLE:           YES
00.00021 "  SOURCE LANGUAGE:       SWELL
00.00022 "  COMPILE COMPUTER:      CR80
00.00023 "  TARGET COMPUTER:       CR80
00.00024 "  OPERATING SYSTEM:      AMOS
00.00025 "
00.00026 "--------------------------------------------------------------------
00.00027 "
00.00028 "  CHANGE RECORD
00.00029 "
00.00030 "  VERSION    AUTHOR/DATE   DESCRIPTION OF CHANGE
00.00031 "  -------    -----------   ---------------------
00.00032 "
00.00033 "    0001     NMJ/800919      Pre-release
00.00034 "    0101     GMC/801231      First official release.
00.00035 "    0102     GMC/810119      No change to this submodule.
00.00036 "    0103     GMC/810223      Check of sectors available introduced.
00.00037 "    0201     GMC/810318      No change to this submodule.
00.00038 "    0202     GMC/810401      Minor changes to source text layout.
00.00039 "    0203     GMC/810427      No change to this submodule.
00.00040 "    0301     GMC/810603      Minor change to init-dcm parameters.
00.00041 "
00.00042 "--------------------------------------------------------------------
00.00043 "«ff»00.00044 
00.00044 
00.00045 
00.00046                   MAINMODULE FMS_INIT;
00.00047                  "-------------------
00.00048 
00.00049 
00.00050 
00.00051 %NOLIST
00.00058 %PRINT
00.00059 %SOURCE

======== IO.I«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»


======== INIT.S«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»

00.00059 
00.00060 
00.00061 
00.00062 import var
00.00063   sectors_available : integer;
00.00064 
00.00065 var
00.00066   init_corout: coroutine_descriptor;
00.00067   init_sem: semaphore;
00.00068 
00.00069 
00.00070 procedure init_sys(r6);  "registers destroyed"
00.00071 
00.00072 " Activates all modules in the system by calling their initialize procedures.
00.00073 " Each module should initialize its own data structures, including coroutines
00.00074 " and semaphores.
00.00075 " Workarea may be allocated from a common workarea pool.
00.00076 " Conventions for initialize procedure calls:
00.00077 "
00.00078 "               r0    top of free workarea pool
00.00079 "               r4    call:
00.00080 "                       first free of workarea when called
00.00081 "                     return:
00.00082 "                        first free of workarea;
00.00083 "                        on return, >> r0 implies workarea is too small
00.00084 
00.00085 %LIST
00.00086 "page«ff»00.00087 
00.00087 %SOURCE

======== CONFIG.S«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»

06.00001 "Configuration parameters"
06.00002 "------------------------"
06.00003 
06.00004 
06.00005 const
06.00006 
06.00007   nbr_fhs = 3;  "number of file handlers
06.00008   nbr_chs = 0;  "number of CRAM handlers
06.00009   nbr_ths = 0;  "number of transaction handlers
06.00010 
06.00011   nbr_local_ports = 0;
06.00012   nbr_dmas =  1;
06.00013 
06.00014   nbr_fd_drvs =  1;  "number of floppy disk drivers that the FMS can use;
06.00015                      "they are assumed to have process names FDD000,
06.00016                      "FDD001, etc.
06.00017   nbr_cdc_drvs=  2;  "number of CDC disk drivers that the FMS can use;
06.00018                      "they are assumed to have process names CDC000,
06.00019                      "CDC001, etc.
06.00020 
06.00021   nbr_ucbs    = 25;  "number of user control blocks: represents the
06.00022                      "maximum number of processes that can use the FMS
06.00023                      "at a time
06.00024   nbr_dcbs    =  4;  "number of device control blocks: represents the
06.00025                      "maximum number of devices that may be assigned
06.00026                      "at a time
06.00027   nbr_fcbs    = 70;  "number of file control blocks: represents the
06.00028                      "maximum number of files that may be open
06.00029                      "at a time
06.00030   nbr_caps    = 90;  "number of capabilities: represents the max nbr of
06.00031                      "connections between files and users that may exist
06.00032                      "at a time (and hence must be >= nbr_fcbs)
06.00033   nbr_dbcbs   =  0;  "number of database control blocks: represents the
06.00034                      "maximum number of databases that may be used
06.00035                      "at a time
06.00036 
06.00037   cramteststacksize = 100;
06.00038 
06.00039   cache_size = 32;  "number of sectors in the cache: increasing this
06.00040                     "value should increase efficiency, but it also
06.00041                     "increases the workarea required by the FMS process;
06.00042                     "normally it should be set to a low value to begin
06.00043                     "with (25 for example), then the system should be
06.00044                     "configured to give the FMS as large a process space
06.00045                     "as possible, while still keeping it and the disk
06.00046                     "drivers in the same memory section, then the cache
06.00047                     "size can be increased so that the excessive process
06.00048                     "space is minimal.
06.00049 
06.00050 export var
06.00051   dma_port_spec_table: array [0..6*nbr_dmas] of integer;
06.00052   "Each entry consisting of the dma process name, and the nbr of
06.00053   "ports for low, medium and high priority, respectively.
06.00054 
06.00055 init
06.00056   dma_port_spec_table=
06.00057                        'DMA000', 0, 4, 0,
06.00058                        -1;  "table terminator
06.00059 
06.00060 var
06.00061   cram_init_table: array [0..nbr_chs+nbr_dbcbs] of integer;
06.00062   "One entry per CRAM handler. An entry consists of the blocksize (in
06.00063   "bytes), followed by the identification number of each dbcb that is
06.00064   "to be handled by the handler.
06.00065 
06.00066 init
06.00067   cram_init_table=
06.00068                    -1;  "table terminator
06.00069 
06.00070 

======== INIT.S«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»«nul»

00.00087 
00.00088 
00.00089 
00.00090 
00.00091 "Submodule initialisation procedures
00.00092 "-----------------------------------
00.00093 
00.00094 import procedure init_ctrl(nbr_local_ports, cache_size, nbr_dmas : integer; r0; r4; r6);
00.00095 
00.00096 import procedure init_dcm(cache_size, nbr_dcbs, nbr_caps, nbr_dbcbs, nbr_ths : integer;
00.00097                           r0; r4; r6);
00.00098 
00.00099 import procedure init_fm(nbr_fhs, nbr_fd_drvs, nbr_cdc_drvs, nbr_dcbs,
00.00100                          nbr_ucbs, nbr_fcbs, nbr_caps : integer;
00.00101                          r0; r4; r6);
00.00102 
00.00103 %WHEN nbr_ths = 0 SKIP
00.00104"  import procedure init_tqm(nbr_ths : integer;
00.00105"                            r0; r4; r6);
00.00106"%COMPILE
00.00107 
00.00108 %WHEN nbr_chs = 0 SKIP
00.00109"  import procedure init_cram(cramteststacksize : integer;
00.00110"                             cram_init_table_ptr : pointer;
00.00111"                             r0; r4; r6);
00.00112"%COMPILE
00.00113 
00.00114 
00.00115 
00.00116 label workarea_small;
00.00117 
00.00118 var
00.00119   link:integer;
00.00120 
00.00121 begin "init sys
00.00122   r6=> link;
00.00123 
00.00124   -size(process_head)=> r5;
00.00125   r5@process_head.bound=> r0 + 1;
00.00126   r5@process_head.gen_head.word_size=> r4 + r5;
00.00127   r0=> r6;
00.00128   while r6-1 >>= r4 do clr(r6@integer); "clear workarea"
00.00129 
00.00130   init_dcm(cache_size, nbr_dcbs, nbr_fhs, nbr_dbcbs, nbr_ths, r0, r4, r6);
00.00131   if r0 << r4 then goto workarea_small;
00.00132 
00.00133   init_ctrl(nbr_local_ports, cache_size, nbr_dmas, r0, r4, r6);
00.00134   if r0 << r4 then goto workarea_small;
00.00135 
00.00136   init_fm(nbr_fhs, nbr_fd_drvs, nbr_cdc_drvs, nbr_dcbs, nbr_ucbs,
00.00137           nbr_fcbs, nbr_caps, r0, r4, r6);
00.00138   if r0 << r4 then goto workarea_small;
00.00139 
00.00140 %WHEN nbr_ths = 0 SKIP
00.00141"  init_tqm(nbr_ths, r0, r4, r6);
00.00142"  if r0 << r4 then goto workarea_small;
00.00143"%COMPILE
00.00144 
00.00145 %WHEN nbr_chs = 0 SKIP
00.00146"  init_cram(cramteststacksize, address(cram_init_table), r0, r4, r6);
00.00147"  if r0 << r4 then goto workarea_small;
00.00148"%COMPILE
00.00149 
00.00150   if sectors_available => r6 < 0 then
00.00151     begin
00.00152     out_text(address('INSUFFICIENT CACHE SIZE(:10:)(:0:)')=> r2, r6);
00.00153     mon(terminate, 2 => r0, 2 => r1, r7)
00.00154     end;
00.00155 
00.00156   if r4 << r0 then
00.00157   begin
00.00158     out_text(address('EXCESSIVE PROCESS SPACE (:0:)')=>r2, r6);
00.00159     out_hexa(r0-r4=>r2, r6);
00.00160     out_text(address('(:10:)(:0:)')=>r2, r6);
00.00161   end;
00.00162 
00.00163   exit(link);
00.00164 
00.00165 workarea_small:
00.00166   out_text(address('INSUFFICIENT PROCESS SPACE(:10:)(:0:)')=>r2, r6);
00.00167   mon(terminate, 1=>r0, 1=>r1, r7);
00.00168 
00.00169 end "init_sys";
00.00170 
00.00171 
00.00172 export var
00.00173   comon_data: comon_var;
00.00174 
00.00175 
00.00176 begin "main program"
00.00177   init_oc(r1, r6);
00.00178   out_text(address('FILE SYSTEM ACTIVE(:10:)(:0:)')=>r2, r6);
00.00179   mon(cor, address(comon_data), cm_init, address(init_corout)=>r0, r7);
00.00180   init_sys(r6);
00.00181   mon(cor, address(comon_data), sem_init, address(init_sem)=>r5, r7);
00.00182   mon(cor, address(comon_data), cm_wait, r5, r7);  "wait forever"
00.00183 end;
00.00184 
00.00185 
00.00186 ENDMODULE

LINES:     832


      CODESIZE  VARSIZE  CONSTSIZE  TEMPSIZE
      --------  -------  ---------  --------
       #0059     #0023     #0033     #0000


SWELL VARIABLES:


===========BLOCK: 00.00070 INIT_SYS
 0036 0000 CRAM_INIT_TABLE
 002F 0000 DMA_PORT_SPEC_TABLE
 0037 0000 LINK

===========BLOCK: 00.00046 FMS_INIT
 0038 0000 COMON_DATA
 0023 0000 INIT_COROUT
 002C 0000 INIT_SEM
 0000 0004 SECTORS_AVAILABLE «a5»