home *** CD-ROM | disk | FTP | other *** search
/ Vectronix 2 / VECTRONIX2.iso / FILES_01 / MIDNIGHT.LZH / MIDNIGHT / SOURCE / MOSTART.S < prev    next >
Text File  |  1992-12-13  |  4KB  |  203 lines

  1. *      MOSTART.S
  2. *
  3. *      Startup Code for "midnight", THE ScreenSaver
  4. *
  5. *      Copyright (c) Hartwig zur Nieden & Mario Adam
  6. *      Clausthal-Zellerfeld/Göttingen  14.11.1992
  7.  
  8.  
  9. *>>>>>> Export references <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  10.  
  11.         .EXPORT EVNT_ask    * Funktionen aus dem ACC_struct
  12.         .EXPORT rnd24        * nochmal für einfacheren zugriff
  13.         .EXPORT Sound
  14.         .EXPORT ScreenSave
  15.  
  16.         .EXPORT MOD_struct    * Pointer auf Modulstruktur des Moduls
  17.                             * MOD_struct.U.b sollt in M_INIT mit den
  18.                             * Hardware-Flags beschrieben werden, wenn
  19.                             * diese != 0x003f sein sollen.
  20.  
  21.         .EXPORT _BasPag
  22.         .EXPORT errno
  23.         .EXPORT _FilSysVec
  24.         .EXPORT _RedirTab
  25.  
  26.         .EXPORT __text, __data, __bss
  27.  
  28. *>>>>>> Import references <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  29.  
  30.         .IMPORT MOD_main        * diese 2 Pointer MÜSSEN im Modul definiert
  31.         .IMPORT Value_s            * und Value_s MUSS bei M_INIT gesetzt werden!
  32.  
  33.         .IMPORT _fpuinit
  34.         .IMPORT _StkSize
  35.  
  36.  
  37.  
  38.  
  39. *>>>>>> Data structures <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  40.  
  41.  
  42. * Struktur der Basepage:
  43.  
  44.         .OFFSET 0
  45.  
  46. TpaStart:        .DS.L   1
  47. TpaEnd:            .DS.L   1
  48. TextSegStart:    .DS.L   1
  49. TextSegSize:    .DS.L   1
  50. DataSegStart:    .DS.L   1
  51. DataSegSize:    .DS.L   1
  52. BssSegStart:    .DS.L   1
  53. BssSegSize:        .DS.L   1
  54. DtaPtr:            .DS.L   1
  55. PntPrcPtr:        .DS.L   1
  56. Reserved0:        .DS.L   1
  57. EnvStrPtr:        .DS.L   1
  58. Reserved1:        .DS.B   7
  59. CurDrv:            .DS.B   1
  60. Reserved2:        .DS.L   18
  61. CmdLine:
  62.         .DS.B   128
  63.  
  64.  
  65.  
  66. *>>>>>>> Data segment <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  67.  
  68.             .BSS
  69. __bss:
  70.  
  71. _BasPag:    .DS.L    1            * Pointer auf die Basepage
  72. _RedirTab:    .DS.L    6            * Redirection address table
  73.  
  74.  
  75. *>>>>>>> Initialized data segment <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  76.  
  77.         .DATA
  78. __data:
  79.  
  80. errno:        .DC.W   0            * globale Errorvariable
  81. _FilSysVec:    .DC.L   0            * Vector zur Filesystem-Deinitialisierung
  82.  
  83. _Acc_str:    .DC.L    0            * Zwischenspeicher für den *ACC_str
  84.  
  85.  
  86. *>>>>>>> Code segment <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  87.  
  88.         .CODE
  89. __text:
  90.  
  91.  
  92. ******** MOStart ********************************************************
  93.  
  94. ******* midnight-Modul-Struktur MOD_str
  95.  
  96. MOD_struct:        * hier beginnt das Modul
  97. Start:
  98.         BRA.S   Start0
  99.  
  100. magic:    .DC.B   "mid_MOD",0            * Erkennungs-Magic
  101.  
  102. Werte:    .DC.L   0,0,0,0,0,0,0,0        * DIese Werte werden mit/in
  103. BITS:    .DC.W   $3F                    * dem Modul abgespeichert
  104.  
  105. Bilder:    .DC.L   Value_s                * Pointer auf 8 'Value'-Pointer
  106. MyName:    .DC.L   CmdLine                * Modul-Name aus der Commandline
  107.  
  108.         .EVEN
  109.  
  110. ******* Configuration data
  111.  
  112.  
  113. * Redirection array pointer
  114.  
  115.         .DC.L   _RedirTab
  116.  
  117. * Stack size entry
  118.  
  119.         .DC.L   _StkSize
  120.  
  121.  
  122.  
  123.  
  124. ******** Pc startup code
  125.  
  126. * Setup pointer to base page
  127.  
  128. Start0:
  129.         movem.l D0/A0,-(A7)                * Parameters ->
  130.  
  131. * Test if fpu 68881 is present
  132.  
  133.         tst.w   D0
  134.         bne.s   Start1                    * FPU-Init nur bei Mode = M_INIT
  135.         jsr        _fpuinit
  136.  
  137. ******* Execute main program *******************************************
  138.  
  139. Start1:
  140.         lea        __text-256(PC),A0
  141.         move.l    A0,_BasPag
  142.         lea        128(A0),A0
  143.         move.l    A0,MyName
  144.  
  145.         movem.l    (A7)+,D0/A0                * Parameter <-
  146.         move.l    A0,_Acc_str
  147.         jsr        MOD_main
  148.  
  149. ******** exit ***********************************************************
  150.  
  151. exit:
  152.         move.l    D0,-(A7)                * save Return value
  153.  
  154. * Deinitialize file system
  155.  
  156.         move.l    _FilSysVec,D0
  157.         beq.s    Exit1
  158.  
  159.         move.l    D0,A0
  160.         jsr        (A0)
  161.  
  162. Exit1:
  163.  
  164. * Program termination with return code in D0
  165.  
  166.         move.l  (A7)+,D0            * get back Return value
  167.         rts
  168.  
  169.  
  170. ********************* EVNT_ask ****
  171.  
  172. EVNT_ask:
  173.         movea.l    _Acc_str(PC),A0
  174.         movea.l    150(A0),A0
  175.         jmp        (A0)                * Jump zum Accessory -> EVNT_ask
  176.  
  177. ********************* rnd24 ********
  178.  
  179. rnd24:
  180.         movea.l    _Acc_str(PC),A0
  181.         movea.l    154(A0),A0
  182.         jmp        (A0)                * Jump zum Accessory -> rnd24
  183.  
  184. ********************* Sound ********
  185.  
  186. Sound:
  187.         movea.l    _Acc_str(PC),A1
  188.         movea.l    158(A1),A1
  189.         jmp        (A1)                * Jump to the Accessorys Sound
  190.  
  191. ********************* ScreenSave ***
  192.  
  193. ScreenSave:
  194.         movea.l    _Acc_str(PC),A1
  195.         movea.l    162(A1),A1
  196.         jmp        (A1)                * Jump zum Accessory -> ScreenSave
  197.  
  198.  
  199.  
  200. ******* Module end *****************************************************
  201.  
  202.         .END
  203.