src/musashi/example/sim.h

Sat, 17 Nov 2012 19:18:29 +0000

author
Philip Pemberton <philpem@philpem.me.uk>
date
Sat, 17 Nov 2012 19:18:29 +0000
changeset 112
a392eb8f9806
parent 0
8bf1bf91a36d
permissions
-rw-r--r--

add HDD support + fixes

Patch-Author: Andrew Warkentin <andreww591!gmail>
Patch-Message-ID: <50A772FC.8020009@gmail.com>

I have added floppy write support, full hard disk emulation, and proper handling of DMA page faults to FreeBee. I also fixed the floppy step commands, changed the "force interrupt" floppy command to generate a type 1 status, and changed the DMA address counter to reset to 3fff when a transfer completes (which is what Unix seems to expect - without it, the kernel says that the floppy isn't ready). The floppy, hard disk, and DMA page fault tests all pass. Initializing hard disks and floppies also works (the geometry for both is still fixed by the size of the image, though, and format commands only appear to succeed, but they don't modify the image). Unix still doesn't run, though (it hangs after reading some sectors from the floppy).

     1 #ifndef SIM__HEADER
     2 #define SIM__HEADER
     4 unsigned int m68k_read_memory_8(unsigned int address);
     5 unsigned int m68k_read_memory_16(unsigned int address);
     6 unsigned int m68k_read_memory_32(unsigned int address);
     7 void m68k_write_memory_8(unsigned int address, unsigned int value);
     8 void m68k_write_memory_16(unsigned int address, unsigned int value);
     9 void m68k_write_memory_32(unsigned int address, unsigned int value);
    10 void cpu_pulse_reset(void);
    11 void cpu_set_fc(unsigned int fc);
    12 int  cpu_irq_ack(int level);
    14 #endif /* SIM__HEADER */