нŒ}Œõ—Õ
Common Source Code Project
This is the common source code archive of my works:
- Emu5 - SORD m5 emulator
- EmuGaki - CASIO PV-2000 emulator
- EmuLTI8 - MITSUBISHI Electric MULTI8 emulator
- EmuPIA - TOSHIBA PASOPIA emulator
- EmuPIA7 - TOSHIBA PASOPIA7 emulator
- EmuZ-80K - SHARP MZ-80K emulator
- EmuZ-700 - SHARP MZ-700 emulator
- EmuZ-800 - SHARP MZ-800 emulator
- EmuZ-1200 - SHARP MZ-1200 emulator
- EmuZ-1500 - SHARP MZ-1500 emulator
- EmuZ-2500 - SHARP MZ-2500 emulator
- EmuZ-2800 - SHARP MZ-2800 emulator
- EmuZ-3500 - SHARP MZ-3500 emulator
- EmuZ-5500 - SHARP MZ-5500 emulator
- EmuZ-6500 - SHARP MZ-6500 emulator
- eBabbage-2nd - Gijutsu-Hyoron-Sha Babbage-2nd
- eFamilyBASIC - Nintendo Family BASIC emulator
- eFM16pi - FUJITSU FM16pi emulator
- eFMR-30 - FUJITSU FMR-30 emulator
- eFMR-50 - FUJITSU FMR-50 emulator
- eFMR-60 - FUJITSU FMR-60 emulator
- eFP-1100 - CASIO FP-1100 emulator
- eHANDY98 - NEC PC-98HA emulator
- eHC-20 - EPSON HC-20/HX-20 emulator
- eHC-40 - EPSON HC-40/PX-4 emulator
- eHC-80 - EPSON HC-80/PX-8/Geneva emulator
- eJX - IBM Japan Ltd PC/JX emulator
- eJ-3100GT - TOSHIBA J-3100GT emulator
- eJ-3100SL - TOSHIBA J-3100SL emulator
- eMAP-1010 - SEIKO MAP-1010 emulator
- eMYCOMZ-80A - Japan Electronics College MYCOMZ-80A emulator
- eN5200 - NEC N5200 emulator
- ePC-8201 - NEC PC-8201/PC-8201A emulator
- ePC-8801MA - NEC PC-8801MA emulator
- ePC-9801 - NEC PC-9801
- ePC-9801E - NEC PC-9801E/F/M
- ePC-9801VM - NEC PC-9801VM
- ePC-98DO - NEC PC-98DO emulator
- ePC-98LT - NEC PC-98LT emulator
- ePC-100 - NEC PC-100 emulator
- ePHC-20 - SANYO PHC-20 emulator
- ePHC-25 - SANYO PHC-25 emulator
- ePV-1000 - CASIO PV-1000 emulator
- ePyuTa - TOMY PyuTa and PyuTa Jr. emulator
- eQC-10 - EPSON QC-10/QX-10 emulator
- eRX-78 - BANDAI RX-78 emulator
- eSC-3000 - SEGA SC-3000 emulator
- eSCV - EPOCH Super Cassette Vision emulator
- eTK-80BS - NEC TK-80BS (COMPO BS/80) emulator
- eX-07 - CANON X-07 emulator
- eX1twin - SHARP X1twin emulator
- eX1turbo - SHARP X1turbo emulator
- eYS-6464A - Shinko Sangyo YS-6464A emulator
This archive is under GNU GENERAL PUBLIC LICENSE.
Download
Note: Windows CE port binaries are discontinued.
The target platforms are Windows 2000/XP/Vista/7.
This archive includes the device classes listed below:
- 74LS244
- 74LS245
- 74LS393
- 8080
- 8085
- 8086
- 80186
- 80286
- 80386
- 8155
- 8237
- 8251
- 8253
- 8254
- 8255
- 8259
- AY-3-8190/8192
- HD6301
- HD146818P
- HD46505
- HD63484
- HuC6260
- M6502
- MB8861
- MB8876
- MB8877
- MC6800
- MC6801
- MC6809
- MC6820
- MC6847
- MSM5832
- N2A03
- NSC800
- PC-80S31K floppy drives
- RP5C01
- RP5C15
- RTC58321
- SN76489AN
- TF-20 terminal floppy drives
- TMS9918A
- TMS9995
- uPD1990A
- uPD4990A
- uPD4991A
- uPD71071
- uPD7201
- uPD7220
- uPD765A
- uPD7801
- V30
- W3100A
- YM2151
- YM2203
- YM2608
- Z80
- Z80CTC
- Z80DMA
- Z80PIO
- Z80SIO
- AND/OR/NAND/NOR/NOT Gate
- Beep Sound Generator
- Data Recorder
- D88/TeleDisk/ImageDisk Image Handler
- Event/Sound Manager
- FIFO Buffer
- 1bit PCM
- 8/16bit I/O Bus
3/20/2012
[EMU/WIN32] fix not to render screen to Direct3D9 buffer while recording video
[VM/DEVICE] add new virtual function to nitify ei opecode is done on cpu
[VM/YM2151] fix to raise/clear irq line when it is changed as level signal
[VM/YM2203] fix to raise/clear irq line when it is changed as level signal
[VM/Z80] fix to notify ei opecode is done on z80 core
3/15/2012
[EMU/WIN32] fix to renew vm class instance to change cpu clock in reset()
3/6/2012
[WINMAIN] fix to reset timing controls when run any extra frames to fill sound buffer
[EMU/WIN32] fix to stretch offscreen buffer in both window mode and fullscreen mode
[EMU/WIN32] fix to call ReleaseDC() to release the device context
[EMU/WIN32] fix to call SelectObject() to select the old hBmp before release the DIBSection
[EMU/WIN32] fix to start play sound buffer when virtual machine is driven
[EMU/WIN32] fix to use constant threshold for joystick direction values
[EMU/WIN32] support table to convert given keycodes from winmain
[EMU/WIN32] fix to initialize d88 multi volume handler
[VM/DEVICE] add virtual function to fetch opecode
[VM/FMGEN] fix to give the advanced time with chip clock, not usec
[VM/YM2151] fix to initialize register #29 to enable only timer interrupt
[VM/YM2151] fix to update fmgen count when read/write opm registers
[VM/YM2151] fix to update fmgen count with chip clocks
[VM/YM2203] fix to update fmgen count when read/write opn(a) registers
[VM/YM2203] fix to update fmgen count with chip clocks
[VM/Z80] fix to use new fetch_op() function to fetch opecode from memory bus
2/22/2012
[WINMAIN] add codes to check memory leaks in debug build
[VM] Fix memory leaks
2/20/2012
[WINMAIN] support d88 disk image with multi voluemes
[EMU/WIN32] update screen manager with Direct3D9
[VM/DISK] support d88 disk image with multi voluemes
2/16/2012
[WINMAIN] simplify timing controls
[EMU/WIN32] simplify screen manager
[EMU/WIN32] fix to capture the rotated screen in vertical screen mode
[VM/Z80] reimplement based on MAME 0.145 Z80 core
2/13/2012
[VM/EVENT] fix not to clear sound buffer index in reset function
[VM/I8255] fix not to clear output signals in default setting
2/11/2012
[VM/I8255] fix to clear output signals when control register is written
[VM/Z80] fix not to output debug log for continuously executed halt command
2/8/2012
[EMU/WIN32] fix to release all pressed keys when the main window lost focus
2/7/2012
[VM/UPD765A] fix the wait time to finish seek command
2/6/2012
[VM/YM2151] fix to raise irq when timer is expired before it is reset
[VM/YM2203] support YM2608(OPNA)
[VM/YM2203] fix to raise irq when timer is expired before it is reset
2/2/2012
[VM/Z80] fix to consider meaningless $dd/$ed/$fd
1/31/2012
[VM/UPD1990A] support uPD4990A
1/27/2012
[VM/DISK] fix the routine to check d88 format
[VM/EVENT] fix the event manager for sub cpu event timing
1/25/2012
[WINMAIN] support to specify the minimum window width
[EMU/WIN32] fix the routine to detect the shift and numpad keys are pressed
[VM/DISK] fix to check if the inserted disk image is really d88 format
[VM/EVENT] update event manager to check events in every cpu opecode
[VM/HUC6260] update cpu to run only one opecode and return clocks
[VM/I86] update cpu to run only one opecode and return clocks
[VM/I386] update cpu to run only one opecode and return clocks
[VM/M6502] update cpu to run only one opecode and return clocks
[VM/MC6800] update cpu to run only one opecode and return clocks
[VM/MC6809] update cpu to run only one opecode and return clocks
[VM/TMS9995] update cpu to run only one opecode and return clocks
[VM/UPD765A] fix to get the side number from hdu param in SHARP MZ-3500 case
[VM/UPD765A] fix index hole signal width and frequency
[VM/UPD7801] update cpu to run only one opecode and return clocks
[VM/Z80] update cpu to run only one opecode and return clocks
1/18/2012
[EMU/WIN32] support to detect the shift and numpad keys are pressed
[VM/I8080] fix to refer read_data8w() to fetch opcode if memory wait is active
[VM/UPD765A] fix to accept seek command before other seek is not finished
[VM/UPD765A] fix to accept tc in result phase after read/write commands
[VM/YM2203] fix to read the input port value though the port mode is output
[VM/Z80] fix to refer read_data8w() to fetch opcode if memory wait is active
1/11/2012
[VM/HD46505] support to update the timing settings in the event manager
[VM/UPD7220] support to update the timing settings in the event manager
1/9/2012
[VM/DEVICE] add virtual function to get the id of parent event manager
[VM/EVENT] fix to notify the timing changes only to child devices
1/7/2012
[VM/DEVICE] add virtual function to notify that timing settings are changed
[VM/EVENT] fix to notify to all devices when timing settings are changed
[VM/PC80S31K] add ugly patch to enable both #1 and #2 drives
[VM/UPD765A] fix that recalib is successfully done though disk is unformatted
[VM/YM2203] fix to update the period that fmgen is driven in vline
[VM/YM2151] fix to update the period that fmgen is driven in vline
1/5/2012
[VM/HD46505] fix the issue that vline event is not correctly registered
[VM/UPD765A] fix the issue that CP/M Plus does not boot correctly on QC-10
12/31/2011
[EMU] support to change the frame timing by virtual machine
[VM/DEVICE] support multiple event manager
[VM/DISK] support to detect the disk ejection
[VM/EVENT] support multiple cpus with different clocks
[VM/HD46505] fix typo
[VM/I8237] support word transfer
[VM/I8259] fix to wait a few time to raise irq that imr is cleared
[VM/PC80S31K] support PC-80S31K floppy drives
[VM/UPD765A] support non dma mode
[VM/UPD765A] fix to clear irq signal when result pahse is finished
[VM/UPD765A] support irq/drq mask signals
[VM/UPD765A] support to detect the disk ejection
[VM/Z80] support NOP in IM0 interrupt
8/6/2011
[EMU/WIN32] render access lamp in emu class
[VM/MC6820] support MC6820 (partial)
6/1/2011
[VM/BEEP] remove the routine to get frequency from the pulse count
[VM/MC6800] support MB8861
5/28/2011
[VM/MB8877] clear track register and index hole counter in reset()
[VM/MC6800] support mc6800/mc6801/hd6301
[VM/MC6809] support mc6809
[VM/Z80DMA] fix issues for X1/X1turbo games (thanks Y.S.)
5/20/2011
[EMU/WIN32] support sound latency 50msec
[VM/DEVICE] add virtual function do_dma() for single mode dma
[VM/I8237] support single mode
[VM/UPD71071] support single mode
[VM/Z80DMA] fix issues for X1/X1turbo games (thanks Y.S.)
[VM/Z80DMA] support single mode
[VM/I86] call do_dma() in every machine cycle for single mode dma
[VM/I386] call do_dma() in every machine cycle for single mode dma
[VM/Z80] call do_dma() in every machine cycle for single mode dma
5/19/2011
[VM/EVENT] fix to check registered count for frame/vline events
[VM/EVENT] clear event counts before other devices are initialized
[VM/HD46505] fix to update sync signals in more precise timing
[VM/HD46505] support notifying vline event to other devices
[VM/Z80DMA] fix issues for X1/X1turbo games (thanks Y.S.)
[VM/Z80DMA] fix to return current count/address for init read sequence command
[VM/Z80DMA] fix do_dma() routine
5/18/2011
[VM/DISK] fix dsk floppy disk image converter
5/14/2011
[VM/DISK] support dsk floppy disk image based on MESS formats/dsk_dsk.c
[VM/I8259] support poll command
[VM/I8259] update eoi command
[VM/MEMORY] return file size of loaded bios image
[VM/UPD765A] fix sence interrupt status result
[VM/UPD765A] fix not to clear exm bit in multi sector read/write
[VM/Z80CTC] fix not to reset time constant when channel is freezed
[VM/Z80DMA] fix transfer length when 0 is specified
5/4/2011
[EMU/WIN32] remove patch code for PV-2000 in input manager
[VM/DEVICE] add virtual functions for 16bit/32bit dma
[VM/I8259] refine code
[VM/IO] support standard d-ff register
[VM/IO] support 16bit/32bit dma functions
[VM/MB8877] change wait period for read/write from 100msec to 70msec
[VM/HD146818P] check address line in write access
[VM/UPD765A] check address line in write access
[VM/W3100A] check address line in write access
[VM/YM2203] disable status register for AY-3-8912
4/27/2011
[COMMON] modify struct union 'pair'
[VM/EVENT] fix to get more precise cpu clocks
[VM/HUC6260] fix to get more precise cpu clocks
[VM/I8080] fix to get more precise cpu clocks
[VM/I86] fix i286 protected mode boundary check (from MESS)
[VM/I86] fix POP SP and POP ESP (from MESS)
[VM/I86] fix to get more precise cpu clocks
[VM/I386] fix to get more precise cpu clocks
[VM/M6502] fix to get more precise cpu clocks
[VM/TMS9995] fix to get more precise cpu clocks
[VM/UPD7801] fix to get more precise cpu clocks
[VM/Z80] fix to get more precise cpu clocks
4/25/2011
[VM/MB8877] fix to wait 40msec to read/write just after seek command
[VM/Z80CTC] fix to initialize vector when reset device
[VM/Z80CTC] fix to copy time constant to counter just after reset command
[VM/Z80CTC] fix to clear pending irq when RETI opcode is detected
[VM/Z80CTC] fix to update int signal without checking the current signal
[VM/Z80DMA] fix to update int signal without checking the current signal
[VM/Z80PIO] fix to update int signal without checking the current signal
[VM/Z80SIO] fix to update int signal without checking the current signal
4/23/2011
[VM/DISK] fix to check disk type in teledisk converter
[VM/I86] reimplement based on MAME 0.142 80x86 core
[VM/I86] support 80186
[VM/MB8877] fix to clear drq/irq when status register is read
[VM/UPD71071] fix not to restart dma while dma is running
[VM/Z80CTC] fix to clear pending irq when control reg is updated
[VM/Z80DMA] fix not to restart dma while dma is running
[VM/Z80DMA] fix end of block condition
[VM/Z80DMA] fix to support auto restart
4/15/2011
[VM/DEVICE] add virtual functions for i/o port with dma
[VM/DISK] support drive type
[VM/MB8877] add functions to get/set drive type
[VM/UPD765A] add functions to get/set drive type
[VM/Z80DMA] change transfer length when block length equals to 0
4/14/2011
[VM/DEVICE] add virtual functions for Z80 daisy chain definitions
4/13/2011
[VM/Z80DMA] fix address step count (thanks Kale)
4/12/2011
[EMU/WIN32] fix repeat flag for caps/kana/kanji keys
[VM/DISK] fix not to write disk image when data is not modified
[VM/IO] support read/write interface for dma
[VM/Z80] fix disassembler
[VM/Z80DMA] support Z80DMA (based on MAME Z80DMA core)
4/6/2011
[EMU/WIN32] fix joystick manager
[VM/DISK] support standard disk image without format info
[VM/Z80SIO] fix abort/break flag
[VM/Z80SIO] fix not to load data before sync char is loaded
4/1/2011
[EMU/WIN32] support stereo sound
[EMU/WIN32] fix joystick initialization
[VM/DATAREC] support to load wave file with 16bit/stereo and any frequency
[VM/DATAREC] support to load TAP tape images (used for SHARP X1 series)
[VM/DATAREC] support to rewind tape image
[VM/EVENT] support stereo sound
[VM/FMGEN] fix timer not to cause overflow
[VM/FMGEN] support interface to read int signal
[VM/SN76489AN] fix mixer issue that volume mixed by other device is doubled
[VM/YM2151] fix irq handling to refer int signal from fmgen
[VM/YM2203] fix irq handling to refer int signal from fmgen
[VM/Z80SIO] support monosync/bisync mode
[VM/Z80SIO] support auto enables bit in wr3
[VM/Z80SIO] support send break bit in wr5
[VM/Z80SIO] support sync/abort bit in rr0
[VM/Z80SIO] support signals to notify transmitt/recieve is done
[VM/Z80SIO] support sync signal (input/output)
[VM/Z80SIO] fix not to reset external signals
2/16/2011
[EMU/WIN32] notify key repeat
[VM/YM2203] fix prescaler for AY-3-8190/8192
[VM/YM2151] fix typo
1/26/2011
[EMU/WIN32] support capture screen
[VM/SN76489AN] support SN76489
[VM/SN76489AN] fix noise period
1/21/2011
[EMU/WIN32] support output debug log to console
[VM/DEVICE] fix virtual functions for memory and i/o access with wait
[VM/MB8877] support output debug log
[VM/MB8877] support request cpu to output debug log when status is read
[VM/Z80] support variable m1 cycle wait
[VM/Z80] support disassembler to output executed mnemonics
[VM/Z80SIO] change delay timing for data transmitter
1/16/2011
[VM/YM2203] support AY-3-8190/8192
[VM/Z80SIO] fix transmit/status interrupt
12/28/2010
[EMU/WIN32] support power off notification
[VM/DATAREC] support to load MZT/M12 tape images
[VM/I8251] support break signal
[VM/MB8877] change irq signal to low when new command is processed
[VM/MSM5832] support address write signal
[VM/Z80SIO] support cts/dcd signals
9/29/2010
[VM/UPD765A] fix not to retry read id command
[VM/UPD765A] fix to return the result of non-seek commands for sence intstat
[VM/UPD765A] fix to update the data lost event when data is read/written
9/20/2010
[VM/DEVICE] support interface for memory mappied i/o
[VM/I8237] fix bank register
[VM/I8253] fix counter latch before the counter update event is occured
[VM/MEMORY] support general memory bus
[VM/SN76489AN] fix noise generator
[VM/UPD765A] fix to wait 100usec before go to result phase
[VM/UPD7220] fix not to terminate write command after data is set
[VM/UPD7220] support interface to get the cursor address and top/bottom lines
9/4/2010
[VM/EVENT] support to run extra frames for continuous sound
[VM/IO] support to register the return value
[VM/IO] refine i/o map registrations
[VM/UPD765A] support external drive selection
[VM/UPD765A] fix not to output index hole signal if disk is not inserted
8/31/2010
[VM/UPD765A] support dack signal
8/27/2010
[VM/AND] fix output signal when it is changed
[VM/OR] fix output signal when it is changed
[VM/NAND] fix output signal when it is changed
[VM/NOR] fix output signal when it is changed
[VM/NOT] fix output signal when it is changed
[VM/DEVICE] refine signal connections
[VM/DISK] support SF7 floppy disk image
[VM/EVENT] sync 2 or more cpus precisely
[VM/I8253] fix read both low and high counter
[VM/PCM1BIT] update to check on/off signal width in one sample
[VM/TMS9918A] fix screen mode selection
[VM/UPD765A] support reset signal
[VM/UPD765A] support index hole signal
[VM/Z80] revirt reimplemented Z80 core (temporary)
8/13/2010
[EMU/WIN32] reset virtual machine after emu class is initialized
[VM/M6502] support M6502 and N2A03
[VM/SN76489AN] fix mixer
[VM/YM2151] fix mixer
[VM/YM2203] fix mixer
8/9/2010
[EMU/WIN32] disable ALT short cut key
[VM/Z80] reimplement Z80 (based on MAME Z80 core)
8/6/2010
[VM/MC6847] fix graphics mode
[VM/MC6847] check vram size in render routine
8/4/2010
[VM/MC6847] support MC6847
[VM/UPD7801] add wait signal
[VM/Z80] support raise irq by write_signal()
6/4/2010
[EMU/WIN32] update screen stretch/rotation
[EMU/WIN32] support window x3 - x8 modes
[EMU/WIN32] support fullscreen mode with any resolutions
[EMU/WIN32] fix video recorder
[EMU/WIN32] hide menu bar in full screen mode
[EMU/WIN32] save opened file dir for common dialog's initial dir
[VM/UPD765A] fix result status for recalib/seek commands
5/12/2010
[EMU/WIN32] remove Windows CE support
[EMU/WIN32] remove Direct 3D support
[EMU/WIN32] remove waveOut api support
[EMU/WIN32] remove video capture support
[VM/DISK] support media type property
[VM/DISK] check if the current disk image is reopened
[VM/UPD7220] update csform/csrw commands
[VM/UPD7220] support unknown $5a command
[VM/UPD765A] support force ready signal for NEC PC-98 series
[VM/UPD765A] fix result status for recalib/seek commands
[VM/UPD764A] update hdu for sence device status command
[VM/UPD765A] raise interrupt when disk is inserted or ejected
12/28/2009
[EMU/WIN32] support artwork, buttons and leds for one-board micro computers
[VM/I386] reimplement 80386 (based on MAME i386 core)
[VM/I8237] support increment mask of bank register
[VM/I8251] check number of sync characters
[VM/I8253] fix mask bit for output signal
[VM/UPD7220] check vram pointer is not null
[VM/Z80CTC] fix issue in the case sysclock is same as cpu clock
5/25/2009
[VM/UPD7220] fix initial vect params
[VM/Z80CTC] support different sysclock from cpu clock
5/20/2009
[VM/MSM5832] fix build error
5/17/2009
[VM/I386] support 80386
[VM/LS393] refine implements of output signal
[VM/MSM5832] support MSM5832
[VM/SN76489AN] support cs/we/data signal to be controlled without i/o bus
[VM/Z80CTC] refine implements of output signal
4/9/2009
[COMMON] modify definition of uint64 and int64
[VM/DEVICE] support 32bit i/o bus
[VM/IO] support 32bit i/o bus
4/5/2009
[VM/I8155] fix build error
[VM/UPD1990A] fix shift register
4/1/2009
[COMMON] define uint64 and int64
[EMU/WIN32] support 1024x768 and 1280x1024 full-screen mode
[VM/DEVICE] support 32bit memory bus
[VM/DISK] detect disk is changed
[VM/EVENT] remove hsync event
[VM/EVENT] initialize sound buffer before reset
[VM/EVENT] multi instance free
[VM/HD46505] support vblank signal
[VM/HD63484] support HD63484 (based on MAME HD63484 core)
[VM/HUC6260] support HuC6260 (based on Ootake cpu core)
[VM/I8155] add mask bit for output signal
[VM/I8253] add mask bit for output signal
[VM/I86] fix to refer 16bit i/o bus
[VM/UPD1990A] support TP signal
[VM/YM2151] support YM2151 (use fmgen core by Mr.CISC)
2/8/2009
[EMU/WIN32] support window minimize button
1/16/2009
[EMU/WIN32] change screen buffer type from uint16 to user-defined type
[EMU/WIN32] change screen buffer depth from RGB555 to RGB888 on windows pc
[VM/I8155] support i8155
*) change the compiler from vs2005 to vs2008
1/2/2009
[EMU/WIN32] support power off requested by vm
[VM/I8237] support external bank register
[VM/I8251] support txrdy/txempty/dsr/dtr signals
[VM/I8251] support loop back
[VM/I8251] don't reset dsr bit of status register
[VM/I8253] don't latch count before previously latched count is not read
[VM/I8254] support i8254 based on i8253
[VM/I86] fix push sp in 8086 mode
[VM/I86] fix a20 line in fetch functions
[VM/IO] change class name from IO8 to IO
[VM/IO] support 16bit i/o bus
12/26/2008
[EMU/WIN32] support kana-characters on auto key function
[VM/DISK] support ImageDisk floppy disk image
[VM/I8085] support 8080/8085 (based on MAME 8080/8085 core)
[VM/I86] change class name from X86 to I86
10/17/2008
[EMU/WIN32] fix key notification for caps/kana/kanji
[VM/X86] optimize the pseudo bios call by interrupt
10/6/2008
[EMU/WIN32] fix the problem when new file path is specified
[EMU/WIN32] support 96khz sound
[VM/DATAREC] support trigger signal
[VM/DATAREC] output remote signal
[VM/I8253] fix mode3 output signal
[VM/PCM1BIT] support LPF
[VM/UPD765A] fix AT bit in the result of seek command
[VM/X86] support pseudo bios call
8/27/2008
[EMU/WIN32] fix build problem for Windows CE
[VM/I8255] support mode1
[VM/I8259] clear irr bit if the request signal is changed to low level
[VM/UPD1990A] support i/o coonection interface
[VM/X86] fix interrup status
[VM/X86] fix pop es on 80286
8/19/2008
[VM/UPD765A] fix the problem that data lost occurs after the result phase
[VM/UPD765A] fix CB bit in the status register in sence intstat command
[VM/UPD765A] fix AT bit in the result of seek command
8/16/2008
[EMU/WIN32] support rotate screen
[EMU/WIN32] fix build problem for Windows CE
[VM/BEEP] more clear beep generation for the constant frequency
[VM/BEEP] fix mute logic
[VM/DEVICE] return address for unassigned I/O port
[VM/EVENT] fix crash problem in the initialization
[VM/I8251] fix PE bit in the status register
[VM/I8253] check edge of the input signal
[VM/I8253] fix gate signal
[VM/RTC58321] support i/o coonection interface
[VM/UPD4991A] modify i/o connection interface
[VM/UPD4991A] fix year data
[VM/UPD765A] support drq line delay
6/11/2008
[EMU/WIN32] open command line as cart or disk file path
[EMU/WIN32] convert file path to full and long file path
[VM/AND/OR/NAND/NOR] support and/or/nand/nor gates
[VM/DATAREC] output low signal when the tape is closed
[VM/MB8876] support motor on/off signal
[VM/PCM1BIT] support on/off signal
[VM/PCM1BIT] support high quality sound
[VM/RTC58321] support RTC58321
[VM/UPD4991A] support uPD4991A
[VM/UPD765A] fdc status patch for MZ-3500
[VM/X86] fix freeze problem that some opecodes did not decrease the clock
[VM/Z80] return busack signal whe busreq occurs
4/22/2008
[VM/LS244] support 74LS244/245
[VM/UPD1990AC] support uPD1990AC
[VM/X86] fix hlt
[VM/X86] support busreq
[VM/Z80] don't reset busreq in reset()
4/16/2008
[VM/UPD7220] support pitch command
[VM/UPD7220] fix vecte command in the case R=C=T=L=0 (pset)
[VM/UPD765A] fix read id command
4/12/2008
[VM/LS393] support 74LS393
[VM/RP5C01] support RP-5C01
[VM/UPD7220] fix pset function
[VM/UPD7220] notify vsync
[VM/UPD765A] check sector id strictly
4/8/2008
Windows CE port binaries are discontinued because of the user-support difficulties.
Plase build them by yourself if you need them.
4/7/2008
[EMU/WIN32] support the screen size changing requested by the virtual machine
4/3/2008
[VM/I8259] fix the cascade mode condition
[VM/UPD7220] fix low/high byte condition in dma commands
[VM/UPD7220] check the param count in fifo buffer in sync/vectw commands
[VM/UPD7220] get mod param in write command with no params
[VM/UPD7220] check mod param in vect/char drawing commands
[VM/UPD7220] check dir param in read/write command
[VM/UPD7220] support line drawing in vecte command
[VM/UPD7220] update ead/dad after drawing commands
[VM/UPD7220] fix lsb/msb order in pset function
3/22/2008
[VM/I8251] notify rxrdy is changed
[VM/TF20] fix the error result of read command
3/20/2008
[EMU/WIN32] set DirectX9 graphics params on the screen menu
3/2/2008
[EMU/WIN32] support DirectX9 graphics
[EMU/WIN32] fix the window size problem of eHC-40


Blit screen by regacy GDI and D3D9
2/29/2008
[EMU/WIN32] more quick stretch screen
[EMU/CONFIG] divide the config version to the file version and the virtual machine version
[VM/TF20] support EPSON TF-20 terminal floppy drives
2/27/2008
[EMU/WIN32] Windows CE.NET binaries for GAPI are no longer supported
[EMU/WIN32] Don't use StretchBlt
2/20/2008
[VM/HD146818P] support sqw and periodic interrupt
[VM/HD146818P] clear IRQF/PF/AF/UF in the reg $0c when it is read
[VM/I8237] fix the build error
[VM/I8237] reimplement based on uPD71071
[VM/UPD7220] fix the build error
[VM/UPD7220] modify hblank/vsync event
[VM/UPD765A] lost data event occurs soon if dma request is not accepted
[VM/Z80SIO] change uPD7201 fifo buffer size
2/11/2008
The interrupt logics are largely modified and are now very close to the real circuits.
In the older versions:
- Each device requests the interrupt, sends the vector and goes into the in-service status only in the case that CPU can accept the interrupt.
- These requests are always accepted and executed just now.
- When the interrupt acception status is changed by the opecodes for example EI/RETI/RETN, CPU notifies to each devices to let them request the pending interrupt.
- Realize Z80 family daisy chain by the pseudo device Z80PIC to control the priorities and receive RETI opecode.
This is because let CPU not to monitor the int-line in every opecodes.
But it causes some problems for example:
- Timing problems.
- End of Interrupt command in Z80SIO/uPD7201.
- Using Z80 family devices with 80x86 and PIC8259.
In this release:
- Each device can request the interrupt any time.
- CPU checks the int-line in every opecodes.
- When CPU accepts the request, CPU sends the ack signal to the device and receive the vector.
- The device goes into the in-service status when receive the ack signal.
- Realize Z80 family daisy chain by IEI/OEI signals supported in Z80 family devices.
- Z80 checks the wired-or of int-lines from Z80 family devices.
[VM/DEVICE] modify virtual functions for interrupts
[VM/I8259] support the new interrupt logic
[VM/I8259] fix the crash problem
[VM/UPD7201] support uPD7201 (combined to Z80SIO class)
[VM/X86] support the new interrupt logic
[VM/Z80] support the new interrupt logic
[VM/Z80CTC] support the new interrupt logic
[VM/Z80PIO] support the new interrupt logic
[VM/Z80SIO] support the new interrupt logic
[VM/Z80SIO] support the End of Interrupt command
[VM/Z80SIO] fix the status register #0 (interrupt pending bit)
[VM/Z80SIO] fix the status register #2 (vector)
[VM/Z80PIC] removed
1/5/2008
[VM/BEEP] fix the crash problem when the frequency is constant
[VM/BEEP] support the interface to change the frequency
12/31/2007
[VM/FIFO] support read_not_remove()
[VM/NSC800] fix NSC800
8/24/2007
[EMU/WIN32] check the status of both left and right ALT/CTRL/SHIFT keys
8/22/2007
[VM/RP5C15] fix the initial 12H/24H setting
8/19/2007
[VM/MB8877] fix the status for type4 command
[VM/UPD71071] support the base registers
[VM/X86] fix rep never to exit and re-fetch the opecode in the loop
[VM/X86] fix the modrm table
8/16/2007
[VM/DEVICE] add the virtual functions for dma access
[VM/I8237] fix the typo
[VM/I8259] support the special fully nest mode
[VM/I8259] support the rotation of priorities
[VM/I8259] support the intrrupt request from Z80 family devices
[VM/IO8] support 16bit i/o adrress
[VM/MB8877] support the dma access
[VM/MB8877] support the irq and drq signals
[VM/RP5C15] support reading the values of banks #13/#14/#15
[VM/UPD71071] support uPD71071
[VM/X86] support 8086/V30/80286
[VM/YM2203] support the irq signal
7/23/2007
[VM/DATAREC] modify the frame skip condition (skip when the signal is changed)
[VM/TMS9918A] reimplement based on MAME 0.116
[VM/UPD7801] support the memory access wait
7/16/2007
[VM/TMS9995] support TMS9995
2/11/2007
[COMMON] support auto key hitting from the clipboard
[COMMON] save and restore the window mode when the emulator is restarted
[VM/DEVICE] modify memory access wait
[VM/DEVICE] support i/o access wait
[VM/DISK] fix the crash problem when the invalid track number is set
[VM/HD46505] support HD46505
[VM/HD46505] fix the display/vsync/hsync signals timing
[VM/I8253] more precise signal timing in mode #2, #4 and #5
[VM/MB8877] support the access led status
[VM/PICM1BIT] support 1bit pcm
[VM/UPD765A] support the acces led status
[VM/YM2203] support the volume adjustment
[VM/Z80] modify memory access wait
[VM/Z80] support i/o access wait
[VM/Z80SIO] fix the recv and under-run interrupt flags
[VM/Z80SIO] fix the status affect vector
[VM/Z80SIO] cancel the interrupt request when read the recv buffer
[VM/Z80SIO] support the i/f to clear the recv buffer
2/1/2007
[COMMON] ignore some warnings on Visual Studio 2005
[WIN32/SCREEN] support video recording
[WIN32/SOUND] record wave as 16bit, stereo
[WIN32/SOUND] dont use multi threading to recieve MM_WOM_DONE event
[WIN32/WCE] build 4 binaries (use GAPI or GDI, DirectSound or waveOut)
[VM/BEEP] modify beep sound generator for more stable frequency
[VM/DATAREC] auto stop at the end of tape image
[VM/DEVICE] add virtual functions to get the memory wait and passed clocks in cpu class
[VM/EVENT] more precise event timing refering the passed clock in cpu class
[VM/I8253] drive counter when it reaches the terminal count or read the count registers
[VM/I8253] more precise output signal timing
[VM/NSC800] suppor NSC800
[VM/Z80] fix the clocks for opecodes DD-CB-** and FD-CB-**
[VM/Z80CTC] drive counter when it reaches the terminal count or read the count registers
[VM/Z80PIC] accept the interrupt request when it is running
12/31/2006
[WIN32] support DirectShow video capture devices (DX8 or later is required)
[WIN32] support Windows CE.Net 4.x devices (use GAPI and waveOut APIs)
[VM] each device can get the cpu time
[VM/BEEP] modify beep sound generator for more stable frequency
[VM/Z80] support BUSREQ
[VM/Z80PIC] call do_reti() in the device that requested the interrupt
[VM/Z80SIO] suppor Z80SIO
[VM/DISK] support TeleDisk floppy disk image
[VM/EVENT] fix the problem in the case that the new event is registered in the event callback routine
[VM/I8253] drive the counter more accurate and less power
12/7/2006
Initial release
Purpose
I had developed 11 emulaters in these years and implemented many devices.
There are many devices that are commonly used for exmaple i8255. I can divert their souce codes but I cannot use common one source code for each devices.
Becase the device class includes the codes for the unique circuit for each machine, for example i8255 class includes the codes for the keyboard.
I have started this common source code project to settle this problem.
I also aim to convine the win32 source codes for each works.
Description
For the purpose, I implement the devices under the rule listed below:
- Implement the device base class. This base class has the interface method connected to the memory bus, I/O bus, and other devices.
- Implement the every device classes as the superclass of the device base class.
- Register the destination device class connected to the output port as the pointer of device base class and also register the input port id.
- The device base class also has the event callback method. Every devices can register their own pointer to the event manager class.
You may feel that the purpose is similar to MAME/MESS project. The difference is that the pointer of interface function is registered in MAME/MESS, but the pointer of device class is registered in my project. And I dont aim to convine to one binary like MAME/MESS.
Example 1) dma
MEMORY* memory; // this is the unique hardware
UPD765A* fdc;
I8237* dma;
dma->set_context(0, memory);
dma->set_context(1, fdc);
The device base class has the common memory bus interface write_data8(addr, data) and read_data8(addr). I8237 has MEMORY and UPD765A pointer as the device base class pointer and he can read and write their data with these interface.
Exmaple 2) keyboard with i8255
I8255* pio;
KEYBOARD* key; // this is the unique hardware
pio->set_context_port_a(key, SIG_KEYBOARD_COLUMN);
key->set_context(pio, SIG_I8255_PORT_B);
In this case, we write the key matrix column to i8255 Port A and read the key stats from i8255 Port B.
The device base class has the common input interface write_signal(id, data, mask).
When we write the column to i8255 Port A, I8255 class write the data as key->write_signal(SIG_KEYBOARD_COLUMN, data, 0xff).
In KEYBOARD class's write_signal(), create the key status for the given column and return it to i8255 Port B like pio->write_signal(SIG_I8255_PORT_B, data, 0xff).
Example 3) i8253 timer
I8253* pit;
pit->set_context_ch0(pit, SIG_I8253_CLOCK_1);
pit->set_context_ch1(pit, SIG_I8253_CLOCK_2);
In this case, OUT#0 is connected to CLK#1, and OUT#1 is connected to CLK#2.
Example 4) TMS9918 vsync event
void TMS9918::initialize() {
vm->regist_vsync_event(this);
}
void TMS9981::vsync_event(int v, int clock) {
// event manager call this function in every vsync
}