home *** CD-ROM | disk | FTP | other *** search
/ Otherware / Otherware_1_SB_Development.iso / amiga / os / kludge.rea < prev    next >
Text File  |  1992-11-11  |  8KB  |  177 lines

  1. NOTE from Zik - the files you want for KludgeMach are 
  2. KludgeMach-x.xxx.tar.Z (the normal distribution) and SIM.lha (if you 
  3. want the special kernel debugger). This is seriously hackerware, 
  4. be warned!
  5.  
  6. The rest from Bryan:
  7. --------------------------------------------------------------------------
  8.  
  9.                                Requirements
  10.                                ~~~~~~~~~~~~
  11.  
  12. I'm running on a 25MHz A3000 with 2.04 in RAM with four megs of fast
  13. memory, two of chip.  This version of Mach ('KludgeMach') should work with
  14. any amount of fast memory as long as you have some.  (The microkernel
  15. _only_ knows about the fast memory; chip memory is not paged or even kept
  16. track of by it.)  Mach probably requires an A3000, but may work with other
  17. 68030-based Amigas.  (If it doesn't work for you the first time, try
  18. turning Enforcer on.)  It probably works with any Kickstart version.
  19.  
  20. To work with KludgeMach, you'll need Markus Wild's GCC 2.1 port (later
  21. versions will probably also work), plus some other tools which I've included
  22. in the 'bin' directory.  I'm using ixemul.library version 39.26; you will
  23. probably need that version or later.
  24.  
  25.  
  26.  
  27.                                Installation
  28.                                ~~~~~~~~~~~~
  29.  
  30. OK, hold tight, this is rather messy...
  31.  
  32. First, find a partition with plenty of space, and un-tar The File into it.
  33. Be sure you use GNU tar (which should be available the same place you get
  34. the archive), or a newer version built with ixemlib.  It will create a
  35. directory called 'mk74'.  Then do these assigns, making them permanent if
  36. you wish (in your startup-sequence or whatever):
  37.  
  38. Assign Mach: mk74
  39. Assign MK: Mach:kernel
  40.  
  41. Now add the 'bin' directory to your path, or otherwise make the programs in
  42. it accessible.
  43.  
  44. Now create a bunch of directory links with the following commands:
  45.  
  46. ln -d mk:mach mach:include/mach
  47. ln -d mk:amiga/include mach:include/machine
  48. ln -d mk:amiga/include mk:mach/machine
  49. ln -d mk:device mach:user/libmach/device
  50. ln -d mk:mach mach:user/libmach/mach
  51. ln -d mk:amiga/include mach:user/threads/machine
  52.  
  53. You should now have an environment in which you can build KludgeMach.  To
  54. do so, go into mk: and type 'dmake'.  (Other makes will probably work too.)
  55. To run it, type 'mach:mach' (or '/mach' from the MK: directory).  If all
  56. goes well, a green-on-black machSIM screen should be displayed with the PC
  57. at $40000000, which is the virtual memory address where Mach is currently
  58. loaded.  You can step through it to examine the boot process (though note
  59. that there are some places you _cannot_ step through, such as load_context
  60. - you must use a breakpoint afterwards).  To quickly see if Mach will
  61. successfully bootstrap itself, type 'b_idle_thread_continue' <return> and
  62. then <amiga-g>.  If you again get the machSIM display with the PC at
  63. _idle_thread_continue, then it's gotten through the whole kernel bootstrap
  64. sequence - if you continue to step through this function, you will notice
  65. it goes into an infinite loop waiting for something to do.  (Also take a
  66. look at the console output at this point, as explained below.)
  67.  
  68. I have managed to build libmach, but it is completely untested.  (Nothing
  69. to test it with...)  I had to coax MIG through most of the C-file
  70. generation by hand, but as it's set up you should be able to 'dmake' in the
  71. user/libmach directory and get a 'libmach.a', a 'libmach_sa.a', and a
  72. 'crt0.o'.  I have included pre-made versions of these in the 'lib' directory.
  73. The situation is the same with libthreads.
  74.  
  75.  
  76.  
  77.                           Working with KludgeMach
  78.                           ~~~~~~~~~~~~~~~~~~~~~~~
  79.  
  80. First, you'll need to learn how to use SIM, if you don't already know how.
  81. I've included the manual in this directory; like the author says, "read it
  82. or die."  The version of SIM included, which I have dubbed "machSIM", is a
  83. version specially modified by me to work with Mach.  As such, the manual is
  84. not completely accurate, and some features may have been broken by my
  85. changes.  However, all of the necessary functions seem to work.
  86.  
  87. Note that SIM is normally a Shareware product, and does not come with
  88. source code, but I have received special permission from the author to
  89. distribute machSIM in binary form for the purpose of getting Mach going.
  90.  
  91. To reboot back to AmigaDOS from , run the code at absolute address 0.  (In SIM
  92. type 'A0' <return> <amiga-j> <amiga-x>.)  Rebooting by the keyboard doesn't
  93. work for some reason.
  94.  
  95. To see the console output at any time, look at the buffer starting at the
  96. symbol '_console_buf' (i.e. 'm_console_buf' in SIM).
  97.  
  98. I have 'illegal' instructions sprinkled around most of the Amiga code that
  99. I haven't tested, so if SIM traps because of one of those, you can NOP it
  100. out and see what happens.
  101.  
  102. The interrupt vector table is set up at 0 for SIM's benefit.  (SIM 1.x has
  103. never been fully adapted to 68010+ processors; the authors is currently
  104. working on the "next-generation" SIM that will fully work on all
  105. processors.)  Most of the interrupt vectors come pre-initialized to trap
  106. into SIM; you can see the exceptions in trap_init() in kernel/amiga/trap.c.
  107. However, the vector table is also mapped into kernel address space by
  108. pmap_bootstrap; this is where the VBR actually points to.
  109.  
  110. I currently have memory configured in a rather weird configuration for
  111. debugging purposes:
  112.  
  113.         $00000000-$0fffffff     Transparently translated in supervisor mode
  114.         $10000000-$3fffffff     User address space
  115.         $40000000-$ffffffff     Kernel address space
  116.  
  117. I haven't yet figured out completely how AST's and interrupt scheduling
  118. work, so I have the clock interrupt and such disabled.  Thus, right now
  119. Mach is not preemptive.  Otherwise it seems to work fine to the limited
  120. extent to which I've been able to test it.
  121.  
  122. One small but important module, kernel/amiga/takeover.asm, requires a
  123. commercial 680x0 assembler (or a freely distributable assembler that I
  124. don't know about) to assemble.  I'm using an as-yet-unreleased assembler,
  125. ProAsm, by Daniel Weber.  To assemble this module with another assembler,
  126. you'll probably have to make some changes.  In any case, you shouldn't need
  127. to reassemble this module unless you want to change the way KludgeMach is
  128. booted.
  129.  
  130.  
  131.  
  132.                          Where do we go from here?
  133.                          ~~~~~~~~~~~~~~~~~~~~~~~~~
  134.  
  135. We'll need three main things before we have something workable:
  136.  
  137. * A basic console device driver.  A serial-based driver may be simplest and
  138. easiest to work with, if most of the people who will be doing the initial
  139. work have access to a second computer or a dumb terminal.  That way we can
  140. debug with SIM locally while viewing your session on the remote terminal -
  141. quite a reversal of standard OS debugging procedure. :-) We'll need a
  142. regular graphical console driver.  I've got some code to copy the topaz
  143. font out of ROM (in a system-friendly way), if anyone wants it.
  144.  
  145. * SCSI device drivers: either specially written drivers to run under Mach,
  146. or a way to run standard Exec device drivers under Mach.  The first,
  147. "brute-force" method is probably what we should start with, probably for
  148. the A3000's built-in SCSI chip first.  But to support a large percentage of
  149. capable Amigas we may need a way to run Exec drivers eventually anyway.
  150.  
  151. * An operating system. :-)  Michael Saleeba may be able to get the BSD
  152. Single Server working, but since that requires a Unix source license it
  153. will probably not do most of us much good (including me).  I'm looking into
  154. the possibility of porting the higher-level parts of 386bsd or Linux onto
  155. Mach.  Any other ideas are more than welcome.
  156.  
  157.  
  158.  
  159.                              Contact Addresses
  160.                              ~~~~~~~~~~~~~~~~~
  161.  
  162. You can contact me at the following addresses (in order of preference):
  163.  
  164.         bryanf@hpmcaa.mcm.hp.com
  165.         bryan.ford@m.cc.utah.edu
  166.  
  167. You can contact Stefan Walter, the author of SIM, at the following addresses:
  168.  
  169.         stefan@pegasus.ch
  170.         swalter@avalon.physik.unizh.ch
  171.  
  172. Note that any problems you find with machSIM are likely to be _my_ fault, not
  173. Stefan's, due to my hacking of his code to work with Mach.  Also, unless you
  174. find something really seriously wrong with machSIM, please don't complain
  175. to either of us about it - machSIM is only a temporary hack, and we should be
  176. spending our time getting Mach going, not perfecting machSIM.
  177.