src/musashi/m68kconf.h

Wed, 13 Mar 2013 00:43:25 +0000

author
Philip Pemberton <philpem@philpem.me.uk>
date
Wed, 13 Mar 2013 00:43:25 +0000
changeset 134
b826697f411a
parent 0
8bf1bf91a36d
permissions
-rw-r--r--

[wd2010,main] WD2010 disc geometry fixes

I believe I have fixed the geometry problem with FreeBee. The geometry was set
to 17 sectors per track instead of 16, which obviously throws off addressing.
I changed it to use 16 sectors per track. However, s4diag tries to format
sector 17, so I changed the WD2010 emulation to accept any address when
formatting (since the format command doesn't actually do anything, it doesn't
matter). It is now possible to format the hard disk, initialize the file
system, and mount it. However, cpio still fails to copy the system to the hard
disk.

Author: Andrew Warkentin <andreww591 gmail com>

     1 /* ======================================================================== */
     2 /* ========================= LICENSING & COPYRIGHT ======================== */
     3 /* ======================================================================== */
     4 /*
     5  *                                  MUSASHI
     6  *                                Version 3.3
     7  *
     8  * A portable Motorola M680x0 processor emulation engine.
     9  * Copyright 1998-2001 Karl Stenerud.  All rights reserved.
    10  *
    11  * This code may be freely used for non-commercial purposes as long as this
    12  * copyright notice remains unaltered in the source code and any binary files
    13  * containing this code in compiled form.
    14  *
    15  * All other lisencing terms must be negotiated with the author
    16  * (Karl Stenerud).
    17  *
    18  * The latest version of this code can be obtained at:
    19  * http://kstenerud.cjb.net
    20  */
    24 #ifndef M68KCONF__HEADER
    25 #define M68KCONF__HEADER
    28 /* Configuration switches.
    29  * Use OPT_SPECIFY_HANDLER for configuration options that allow callbacks.
    30  * OPT_SPECIFY_HANDLER causes the core to link directly to the function
    31  * or macro you specify, rather than using callback functions whose pointer
    32  * must be passed in using m68k_set_xxx_callback().
    33  */
    34 #define OPT_OFF             0
    35 #define OPT_ON              1
    36 #define OPT_SPECIFY_HANDLER 2
    39 /* ======================================================================== */
    40 /* ============================== MAME STUFF ============================== */
    41 /* ======================================================================== */
    43 /* If you're compiling this for MAME, only change M68K_COMPILE_FOR_MAME
    44  * to OPT_ON and use m68kmame.h to configure the 68k core.
    45  */
    46 #ifndef M68K_COMPILE_FOR_MAME
    47 #define M68K_COMPILE_FOR_MAME      OPT_OFF
    48 #endif /* M68K_COMPILE_FOR_MAME */
    50 #if M68K_COMPILE_FOR_MAME == OPT_ON
    51 #include "m68kmame.h"
    52 #else
    56 /* ======================================================================== */
    57 /* ============================= CONFIGURATION ============================ */
    58 /* ======================================================================== */
    60 /* Turn on if you want to use the following M68K variants */
    61 #define M68K_EMULATE_010            OPT_ON
    62 #define M68K_EMULATE_EC020          OPT_ON
    63 #define M68K_EMULATE_020            OPT_ON
    66 /* If on, the CPU will call m68k_read_immediate_xx() for immediate addressing
    67  * and m68k_read_pcrelative_xx() for PC-relative addressing.
    68  * If off, all read requests from the CPU will be redirected to m68k_read_xx()
    69  */
    70 #define M68K_SEPARATE_READS         OPT_OFF
    73 /* If on, CPU will call the interrupt acknowledge callback when it services an
    74  * interrupt.
    75  * If off, all interrupts will be autovectored and all interrupt requests will
    76  * auto-clear when the interrupt is serviced.
    77  */
    78 #define M68K_EMULATE_INT_ACK        OPT_OFF
    79 #define M68K_INT_ACK_CALLBACK(A)    your_int_ack_handler_function(A)
    82 /* If on, CPU will call the breakpoint acknowledge callback when it encounters
    83  * a breakpoint instruction and it is running a 68010+.
    84  */
    85 #define M68K_EMULATE_BKPT_ACK       OPT_OFF
    86 #define M68K_BKPT_ACK_CALLBACK()    your_bkpt_ack_handler_function()
    89 /* If on, the CPU will monitor the trace flags and take trace exceptions
    90  */
    91 #define M68K_EMULATE_TRACE          OPT_OFF
    94 /* If on, CPU will call the output reset callback when it encounters a reset
    95  * instruction.
    96  */
    97 #define M68K_EMULATE_RESET          OPT_OFF
    98 #define M68K_RESET_CALLBACK()       your_reset_handler_function()
   101 /* If on, CPU will call the set fc callback on every memory access to
   102  * differentiate between user/supervisor, program/data access like a real
   103  * 68000 would.  This should be enabled and the callback should be set if you
   104  * want to properly emulate the m68010 or higher. (moves uses function codes
   105  * to read/write data from different address spaces)
   106  */
   107 #define M68K_EMULATE_FC             OPT_OFF
   108 #define M68K_SET_FC_CALLBACK(A)     your_set_fc_handler_function(A)
   111 /* If on, CPU will call the pc changed callback when it changes the PC by a
   112  * large value.  This allows host programs to be nicer when it comes to
   113  * fetching immediate data and instructions on a banked memory system.
   114  */
   115 #define M68K_MONITOR_PC             OPT_OFF
   116 #define M68K_SET_PC_CALLBACK(A)     your_pc_changed_handler_function(A)
   119 /* If on, CPU will call the instruction hook callback before every
   120  * instruction.
   121  */
   122 #define M68K_INSTRUCTION_HOOK       OPT_OFF
   123 #define M68K_INSTRUCTION_CALLBACK() your_instruction_hook_function()
   126 /* If on, the CPU will emulate the 4-byte prefetch queue of a real 68000 */
   127 #define M68K_EMULATE_PREFETCH       OPT_OFF
   130 /* If on, the CPU will generate address error exceptions if it tries to
   131  * access a word or longword at an odd address.
   132  * NOTE: Do not enable this!  It is not working!
   133  */
   134 #define M68K_EMULATE_ADDRESS_ERROR  OPT_OFF
   137 /* Turn on to enable logging of illegal instruction calls.
   138  * M68K_LOG_FILEHANDLE must be #defined to a stdio file stream.
   139  * Turn on M68K_LOG_1010_1111 to log all 1010 and 1111 calls.
   140  */
   141 #define M68K_LOG_ENABLE             OPT_OFF
   142 #define M68K_LOG_1010_1111          OPT_OFF
   143 #define M68K_LOG_FILEHANDLE         some_file_handle
   146 /* ----------------------------- COMPATIBILITY ---------------------------- */
   148 /* The following options set optimizations that violate the current ANSI
   149  * standard, but will be compliant under the forthcoming C9X standard.
   150  */
   153 /* If on, the enulation core will use 64-bit integers to speed up some
   154  * operations.
   155 */
   156 #define M68K_USE_64_BIT  OPT_OFF
   159 /* Set to your compiler's static inline keyword to enable it, or
   160  * set it to blank to disable it.
   161  * If you define INLINE in the makefile, it will override this value.
   162  * NOTE: not enabling inline functions will SEVERELY slow down emulation.
   163  */
   164 #ifndef INLINE
   165 #define INLINE static __inline__
   166 #endif /* INLINE */
   169 /* If your environment requires special prefixes for system callback functions
   170  * such as the argument to qsort(), then set them here or in the makefile.
   171  */
   172 #ifndef DECL_SPEC
   173 #define DECL_SPEC
   174 #endif
   176 #endif /* M68K_COMPILE_FOR_MAME */
   179 /* ======================================================================== */
   180 /* ============================== END OF FILE ============================= */
   181 /* ======================================================================== */
   183 #endif /* M68KCONF__HEADER */