==============================================================================

Ddd 13-Mar-2000 (eta 31) version 0.2.4

==============================================================================

I've changed my DJGPP from v2.02 into V2.03 (GCC version is now 2.952).
 Everything seems OK...

VGA 320x200 mode is now a 50 Hz mode (which seems to work in any monitor).
 In 50 Hz mode now everything moves VERY smoothly (anyway there isn't VSYNC
 still, because then SB sound gets unsynchronized). Thanks to Ral Gmez for
 tweaking the standard VGA 320x200 mode.

SB-Mixing added... Sounds nicely !!! PSG, keyclick, save sound, and both
 "PCM's" (1 and 4 bits) are there... ALL KIND of melodies are clearly
 recognisable... Anyway, SCC waves are still square-waves, so I'll have to
 change it in the future... Thanks to Ral Gmez for sharing many afternoons 
 of SB-Code tracing here and there, with my SB 128 PCI and his (crappy) 
 SB 64 PCI! ;)) Anyway I still LOVE how the GUS sounds, it kicks the CRAPPY 
 SB's in their asses... Having both the IW/GUS-PnP and the SB 128 plugged at 
 the same time in my PC is somewhat terrible now: I can launch Winamp and 
 Sonique at the same time!! Is this cool or what ?!?! (Anyway, it's REAL 
 useless also !! :)) But launching Winamp with the GUS (SUPERB SOUND), and 
 MSKISS with the SB 128 PCI at the same time REALLY ROCKS!!!
 Anyway, there are still some problems: in NO-Sound mode (or GUS mode), when
 you quit MSKISS, the PC might get locked in some rare cases. The solution is
 easy: PRESS TWICE CTRL+ALT+END and Allegro will finish MSKISS cleanly.
 I don't know why this happens. Another problem is that Arkanoid and some
 other HALT-Loop-Based Main-Menu games (Thexder, etc...) don't sound at all
 or they sound jerky... I have some problems in my MSX-IRQ-Engine (for
 example, HALT opcode locks the whole debugger when tracing with F7/F8!!
 CTRL+ALT+END to unlock...)
 
Megarom Mapper #2 detector corrected. (Kings Valley 2 (MSX1 and MSX2)),
 Pennantlers 2, etc...)

Changed the directory layout for many needed files... (BIOS, DSKS,
 STAS, etc...)

Rewritten the STA loader (Press F9), and the DSK Browser (Press F8)... Now I
 have many ideas that will allow me to improve other parts of the MSKISS
 interface still more!! (I HAVE SOME PROBLEMS WITH ".." DIRECTORY SOMETIMES
 AND I HAVE A SEVER LACK OF TIME TO FIX IT... SORRY)

VRAM R/W ADDRESS is now correctly treated. (Teenage Mutant Hero Turtles)

"-ifreq" command line parameter no longer exists. Now you have to type -pal
 or -ntsc to force a specific VDP frequency. If you omit the -pal or -ntsc
 parameters the VDP freq will be the default one depending on the BIOS used.
 Note that MSX2, MSX2+ and MSX Turbo-R could change their VDP freq anytime,
 so maybe even you could be forcing -pal frequency (for example) the BIOS-es
 of these MSX models will surelly change to NTSC mode by themselves...
                                      
Line-by-Line renderer added... to enable it, just type -linerender at the
 DOS command line of MSKISS, or enable the "linerender 1" parameter in
 MSKISS.ini... (VIDEOMODE 1 WILL BE FORCED WITH THIS RENDERER !!!!)
 THIS IS A HIGHLY EXPERIMENTAL MODE, and it's there only for the curious
 people... IT'S STILL SLOOOOOOOOOOW... Try Metal Limit demo disks (Rhapsody
 Part II), Peach Up 8 Disk 1 (Mirror Maze intro), and MANY other COOOOOL
 pieces of code... Aleste, Xevious, Ashguine, Undeadline want to work MUCH
 better (specially in MSX-2 mode)... Doing color 1,2,3:color2,3,4 from BASIC
 now works as expected! :). There are NOT sprites though... only screen
 0,1,2,3,4,5,6,7 and 8 work minimally ok...

Slight bug corrected with sprites mode 2 and color 0, (aleste, aleste gaiden,
 xevious, firebird doors, solid snake crawling) but still not happy... I think
 I'll have to emulate CC bit (and so, sprite collisions, argh!!)

Changed my ALLEGRO 2.0 into ALLEGRO 3.12 (Argh... I'm REALLY scared !!)
 Now joystick support has gone because allegro 3.12 treats it differently...
 I can notice a bit slowdown maybe ?! BTW now I've remmaped the MSX
 keyboard, and the PC extended numeric keyboard acts like in a MSX-2, now
 listening to Martos SCC Disk is wonderful! :))

Changed a lot of macros in my Z80 and now it's faster...

Massive rewritting of the IRQ engine to start treating H-Interrupts.
 Golvellius 2 now works, Super Cooks also, F1-spirit 3d, etc... aleste,
 xevious, The normal screen renderer isn't still updated line-by-line
 though... MANY bugs corrected also, like circus charlie, Thing Bounces Back,
 Head over Heels... Anyway Vampire Killer intro still resets MSKISS in 50 Hz
 mode... I WILL HIGHLY WELCOME ALL KIND OF INFO ABOUT THE DIFFERENT NUMBER OF
 LINES OF EVERY MSX MODEL, THE NUMBER OF T-PERIODS OF EACH LINE, ETC... BTW,
 Emuleca now detects MSKISS as an emulator again... I hope to fix it again...

Crappy support for Screen offset register (VDP[18] horizontal 4 bits). Now
 M_limit demo disks, "Sd-Snatcher bullet hits" and many other pieces of code
 work better. Anyway this feature of the VDP WILL be rewritten, as now I've
 implemented it in a crappy way...

TRUE inlining of many functions that dramatically needed it...
 Now screen 0, 1, 2, 3 and 4 renderers are REAL FAST...

I've rewritten the V9938 logical operations engine... Now I've inlined them
 in the VDP code, so they're FASTER and 100% correct compared with the old
 engine...

VDP command 10 (LMCM) tried, but not 100% OK (Aleste-2, Majutushi, ...)

VDP command 15 (HMMC) DIX and DIY bits support added (Aleste, Aleste-2)

Tried VDP command 11 (LMMC) rare behaviour (Cracked Rastan-Saga loader
 Scroll), but I'm not 100% happy... Try BrMSX or a REAL MSX to see the real
 effect.

FULL support for LINE VDP operation (I've rewritten it from scratch
 implementing ALL orientations and logical operations...) Now "Ultimate.dsk",
 "F1-spirit 3d", "Burai" intro, "wanderers from ys" demo... don't hang your
 PC dangerously anymore...

If I read from VDP port 99 and the VDP was waiting for the second byte, now
 the VDP resets its status, and waits for the 1st byte again... (Disc Station
 #0, #1, etc...)

VDP command 13 (HMMM) limits fixed again.

Screen 8 sprites color corrected... Columns sprites seem OK now...

32KB Kanji BIOS mapping corrected in MSX2+ and MSX Turbo-R modes...

Screen 5 interlaced corrected (CALL KANJI3 uses Screen 5 interlaced).
 Screen 12 interlaced corrected also. (Thanks to Sergio Yukio and the NICE
 AMOUNT of programs he has sent to me for testing Screen 12! :)

MSX-DOS-2.2 mapper added... I don't know if msxdos-2 support is correct (I
 think that it does NOT work because MANY patches are needed)...I don't know
 the exact behaviour of a MSX under MSX-DOS 2... at least many things seem
 right... RECOMMENDED TEST: Boot MSKISS in MSX2+ or MSX Turbo-R modes loading
 msxdos22.rom as cartridge #1, go to BASIC, type "CALL KANJI2", and return to
 DOS-2 with "CALL SYSTEM". IS THIS COOL OR WHAT!!!?!?!?!! :))) (If you have a
 original MSXDOS 2.2 Disk, just type "KMODE 2" to achieve the same result...)

Changed the FM-Pac BIOS used in TURBO-R mode... Now it's always detected...

Megarom Mapper #0 corrected... Megaram Support is 100% perfect now,
 "Game Master 2" works perfectly with ALL Konami megaroms, "Firebird +
 King Kong 2 + F4" combo works, etc...

Hydlide 2 sram properly ignored... Now it doesn't make MSKISS crash... SRAM
 implementation will come in the future (I hope...)

SCC implementation changed. Now it's perfectly autodetected by MANY programs
 because the wave-forms of the channels act like RAM. But now I've had to
 change "Solid Snake" mapping from type #0 to type #2 (as it should be).

If you want to use a .DSK file and DISK.ROM is not present in the BIOS
 directory, the emulator won't boot, and an error message will pop up.

Screen 4 corrected, and so, readded... "Ninja Kun" and "OutRun" work
 perfectly now... "Pennantlers" and "Space Manbow" (with -videomode 1) run
 not bad...

"-frame" command line parameter corrected... Now you can specify more
 command line parameters after "-frame"... Thanks to Ryan Novak (Author
 of MSKFE (MSKISS Front-End)) for the report...

==============================================================================

Tue  7-Sep-1999 (eta 30) version 0.2.3

==============================================================================

VDP command 06 (SRCH) implemented, but seems not to be working... (!?)

VDP command 11 (LMMC) logical operations rewritten from scratch, and many
 bugs they had, have been corrected. Now "Wanderers from Ys" demo (FROM STOP
 GAME MEGADEMO DISK!! NOT THE GAME ITSELF !!!) Screen 6 part works perfectly.
 Some "Majutusi" kanjis in the game appear with the right background (black),
 Master of Monsters menu now appears ok, etc...

First tests with interlaced display... Uncle Brazil intro (Abyss Logo) works,
 Some "Alice Soft" demos in DS #22 and #19 work also, Unknown Reality promo
 also shows interlaced logos properly, "Short" (NOP) demo also seems to do
 nice things in Screen 8, "Wanderers from Ys" demo (FROM STOP GAME MEGADEMO
 DISK AGAIN!!) also seems to have some Screen 6 interlaced texts, etc...
 (I have NOTHING MORE TO TEST ! :(

More filtering of strange values of NX,NY,DX,DY,SX,SY registers in some VDP
 commands... Intros of Disc Station #1, #2, #3, #4, #5, #6, #28 work now...
 Columns no longer flickers and is near perfect... Tetris graphics are OK
 now... Aleste Gaiden intro works better, Zanac-EX boots perfectly now,
 SD-Snatcher graphics are 100% perfect now, Rune Worth intro is 100% perfect
 now, AND "USAS", "KING KONG 2" AND "GOEMON" SPRITES ARE FINALLY VISIBLE!
 (argh!)

Enhanced support for bit 5 of VDP status register 2. Now MSX logo appears
 with the correct speed in MSX-2 mode (still a bit slower maybe). Anyway,
 Dragon Slayer VI intro now seems to run at the correct speed...

Fixed VDP Command 14 (YMMM) when DIY=1. Now Xak 2 intro is 100% perfect, and
 Emerald Dragon game works better (but still not perfect...)

Fixed VDP[8] bit 5 behaviour when setting the palette. I was treating TP bit
 backwards !! Now "Contra" Konami logo appears with the right background
 color... Anyway I still have some problems with this VDP bit and some
 flicker when changing the palette...

Fixed indirect setting of the VDP[1] and VDP[2] registers. Fixed also VDP
 command 12 (LMMV) when NX=0. Now finally ALL Screen mode switches work and
 clear the screen properly... Snatcher seems to work perfect now... I've
 discovered also a bug in YAWARA music player, which goes to Screen 5 when you
 launch it in MSX-2 mode in Screen 0 (width 80)... I was thinking that MSKISS
 was buggy ! :)

Fixed VDP[0x0E] register behaviour. Now the VDP address changes also when
 this register is set before the 0-14 lower bits. Now aleste 2 main menu
 finally works...

Fixed a bit megarom mappers 0 and 5("Druid", "Elslid", "Sungma" and
 "Gall Force" work again).

AND and TAND logical operations fixed in some VDP commands (I hope)... Now
 Rune Worth intro, Tetris intro, Burai intro (HOPEFULLY AGAIN!!), and some
 others work better...

Z80: Rewritten from scratch OUTI/OUTR/INI/INIR/OUTD/OTDR/IND/INDR ED opcodes
 to fix MANY flag bugs they had... Now "Record of Lodoss War" works...

==============================================================================

Fri 23-Jul-1999 (eta 29) version 0.2.2

==============================================================================

VDP operation 7 (LINE) was causing the well known SD-Snatcher BUG !!!! I only
 had to filter SX,SY,DX,DY,NX,NY in a different way, and SD-Snatcher is 100%
 playable now! (even it still has some minor graphic glitches... :))

VDP operation 9 (LMMM) NX,NY,DX,DY,SX,SY limits fixed, now "Uncle Brazil"
 intro works again...

VDP operation 14 (Y direction transfers between VRAM) implemented. Now
 Solid Snake main character sprite is OK, Randar 3 main character sprite
 works also, Gorby Pipeline tiles are visible now (I think...), Puyo Puyo
 doesn't flicker anymore and it's 100% playable now, Penguin Wars 2 doesn't
 flicker neither, Fray intro is 100% perfect and the game doesn't flicker,
 (in general TONS of flicker problems I was having have gone now), etc...

Slightly corrected sprites and VDP[23] register interaction... Firebird is
 now much more playable! :)

==============================================================================

Mon  5-Jul-1999 (eta 28) version 0.2.1

==============================================================================

SILLY bug using C Macros fixed. Now disk writings ***FINALLY*** work. BTW,
 "LIKE" (This Brazilian windowish enviroment for MSX-1) works again...

Rewritten from scratch (AGAIN! :) the memory system... Now MANY things are
 REALLY fast in MSKISS. For example, the Z80 is now twice faster (or maybe
 more!). It's like a beast :)... Also, when running a megarom cartridge, or
 messing with the memory mapper, there are no more memcpy's, and so megarom
 games may be up to 5 times faster! MANY memory mapper bugs have been also
 corrected, and so, Nemesis 1 SCC (KGC3) and R-Type (360KB  disk) DO work!
 "NOP's Unknown Reality" promo seems to boot and wants to do something,
 Snatcher and SD-Snatcher kinda work! (at least, as "bad" as in fMSX, i.e. you
 CAN'T buy anything... :( Now ALL kind of cracked games FINALLY seem to
 work... But there's a bad point: Support for 0x0000 ROM's has gone... I hope
 to re-add it soon... Reset key inside debugger ('R') does NOT work properly
 neither in some cases...

Fixed the return value of IN A,(0xBA). Now Xak 1 and 3 boot perfectly. (Xak 3
 needs **NOT** TO PRESS CONTROL KEY when booting!!!)

The BIOS of the MSX2+ now BOOTS (!!!),  but just nothing more... If
 MSX2 support is still not perfect, what could I say about MSX2+ support!?
 It's REALLY FAR from perfect !! There's even some kind of pathetic and
 REALLY SLOW Screen 12 renderer though!! :) This renderer is still very
 primitive and needs that the VESA 2.0 640x480x32K videomode is present in
 your system (VESA 2.0 native or SDD)... I might use the 320x480x32K
 videomode, but some videocards don't have it (Hi Arnaud! ;), and the speed up
 is NOT noticeable because the YJK->RGB conversion algorithm is a HEAVY one,
 and is the big CPU consumer, compared with the HI_color VESA 2.0 dumper...
 If the HI_Color mode is not detected, or you use the -videomode 0 or
 -videomode 1 command line parameters, a crappy conversion to 256 colors will
 be done... I suppose it's better than nothing...
 Now you can try F1-Spirit 3D Special (Demo screen), Master of Monsters, both
 disks of Super Laydock Special, Quinpl Intro, Nyancle Racing intro, Star
 Ship Rendez-Vous (Special Stage Michelle), Golvellius-2 (Intro Screen), some
 Disc Station magazines and many other games in MSX2+ mode!

BTW, The BIOS of a MSX Turbo R ALSO BOOTS!!!! But nothing more... Just like
 the BIOS of the MSX2+... There is _____NO_____ support for the R800 CPU!!!!
 It's some kind of experimental mode only...

MORE V-9938 commands added, as well as some of them rewritten, and so LOTS
 of bugs have been fixed. I wasn't checking for strange combinations of SX,
 SY, DX, DY, NX, NY, DIX and DIY values which caused strange writings
 "outside" the VRAM, so chunks of the Z80 MEM were being overwritten with
 strange data. Now I ALWAYS write inside the VRAM, and so, "Uncle BR" intro
 works much better now! There are also TONS of other pieces of code that work
 better (Columns, Burai intro, Aleste, Contra/Gryzor, Famicle Parodic II,
 Fray, Xak, etc...).

VDP[23] register (Vertical Offset), correctly handled for ALL screen modes
 (5,6,7 and 8), with much better sprites support also. Just a bit more work
 needed.

Faster Screen 5, 6 and 7 rendering. (screen 8 was already fast! :)

Fixed some bugs of my autodetecting VESA 2.0 routines... Now VESA 2.0 works
 perfectly with Diamond Stealth (and probably some other) video cards...
 Thanks to Arnaud de Klerk (TFH/Fony) for some reports... BTW: For the moment,
 my VESA 2.0 routines are still crap, and Matrox videocards are (hopefully)
 NOT supported... These cards should be eradicated from this world... They
 are a BIG source of problems... Anyway I'll try to add support for these
 cards in the future... Please, don't mail me telling me that Matrox
 videocards don't show proper VESA 2.0 videomodes... I know it! 

Horizontal/vertical LINE vdp-operation added/corrected for screen 6, as well
 as pset vdp-operation corrected for ALL msx2 screen modes (5, 6, 7 and 8).
 Now MSX logo appears correctly when booting in MSX-2 mode. Line-Command
 logical operations are still not implemented though...

PSG Bars graph added for Hi-Resolution modes.

Rewritten entirely the pathetic ROM loader. Now it's not so pathetic, because
 the ROM list is ordered alphabetically and you can go straight to the ROM
 you want (or almost) with a keypress. I don't know if I've also fixed some
 stability problems the ROM loader had in certain PC's... Anyway, unless I
 rewrite it from scratch, I'm probably going to remove it soon...

Support for KANJI128.ROM and KANJI256.ROM in MSX2+ and MSX Turbo-R mode...
 Anyway, I don't know if it's already working... At least Burai intro seems to
 show the correct kanji's...
 
MANY fields of the MSX 2 Clock-IC implemented. Now MSKISS boots perfectly in
 msx-2 mode. Thanks to Arnaud de Klerk (TFH/Fony) for the hint! ;)

Minor fixes in the display of some of the Z80 ED-opcodes of the debugger.

VDP timing corrected. Now if you read from the VDP without waiting for 30
 cycles after you set the VRAM address, then you will read crap, just like in
 a REAL MSX. Now EMULECA.BIN program (a REAL MSX vs. MSX EMULATOR detector)
 detects a REAL MSX with MSKISS!! (Thanks to Ricardo Bittencourt for providing
 emuleca.bin program on his web...)

"Slight general" sped-up of the whole emulator. Now I code the "for" loops
 in a different way... The sped-up IS NOT impressive, but it's MUCH better
 than nothing...

General bug-fixing/rewriting/code-cleaning of many parts of the emulator like
 the V9938, some I/O ports, some IRQ stuff, etc...
 
==============================================================================

Mon 22-Feb-1999 (eta 27) version 0.2.0

==============================================================================

Rewritten entirely the memory system. Now MSKISS can handle extended slots,
 without any slowdown. This IS necessary for MSX-2 emulation.

MSX2 emulation support. Now, more BIOS are necessary: MSX2.ROM and
 MSX2EXT.ROM for European mode, and JAPMSX2.ROM and JAPMSX2X.ROM for Japanese
 mode.

DISK.ROM is now loaded into slot 3, subslot 1.

Screen 5, 6, 7 and 8 renderers implemented. Still far from perfect though.
 They are slow as hell also! :) Screen 4 is still specially buggy.

Removed 512x384 VESA 2.0 videomode and added 640x480 VESA 2.0 videomode. This
 is specially useful for Screen 6 and 7.

Some V-9938 commands implemented, (many of them partially though). Many
 KONAMI MSX2 games work somewhat OK! (Even Solid Snake!! :) Many other games,
 like Aleste 2 intro, Uranai, some parts of Disk Station magazines, and
 MANY others are perfectly recognizable... Others, may make MSKISS crash with
 a "protection fault" error...

V-9938 Offset register implemented for Screen 5. Sprites are (still) not
 correctly handled when VDP[23] is not 0. Hinotori is now very nice, as well
 as "King Kong 2" items screen, Pennantlers intro, etc...

V-9938 Palette registers implemented also.

Extended sprites implemented for Screen 5 (Still far from perfect though...)

Changed the noise sample. Now it's a full amplitude, random period square
 wave like the PSG "noise wave". Still not perfect, but I think that now it
 sounds a bit more realistic. Only for GUS mode though.

Fixed Megarom detector for many new MSX-2 "working" games.

Z80: Fixed EI opcode. Now ZANAC, GODZILLA and YAWARA Music Player work in
 MSX-2 mode! :)

Added the ability to exit to a DOS-Shell. You have to press CTRL+D from the
 debugger screen. Is it useful? I don't even know, but it's there! :) I don't
 know also if it's safe to do it, so YOU'RE WARNED: I'M NOT RESPONSIBLE FOR
 ANY LOSS OR DAMAGE THIS FEATURE CAN CAUSE. DON'T EXECUTE "BIG" DOS PROGRAMS
 WHEN YOU'RE UNDER THIS DOS-SHELL!!! JUST USE IT TO RUN "SIMPLE" DOS PROGRAMS
 LIKE "4DOS 'list'", "MS-DOS EDIT", etc... Make sure also that when you type
 "exit", you're in the same directory where MSKISS.EXE resides.
 If someone detects that this feature is, or may be dangerous, tell me please!
 (is05562@salleURL.edu)

Different disk images are NOW supported within the same MSKISS sesion. If a
 certain game asks you to change the disk image, you can do it if you enter
 into the debbugger and press the 'D' key, then MSKISS will ask you to enter a
 disk image name. After that, press 'S' key to resume emulation. Make sure
 that the image you type in exists, because if not, the emulator WON'T change
 the disk image.

Version number raised from 0.1.0 to 0.2.0... I think that MSX-2 emulation
 deserves it! :)

------------------------------------------------------------------------------
Sat 12-Dec-1998 (eta 26) (Today, 12 Dec, is my birthday!!! Now I'm 23! :)
------------------------------------------------------------------------------

First tests with MSX-2 VDP (V9938)... Just logging VDP operations...

HALT Opcode rewritten. Now the main loop timing is still faster and more
 accurate than ever. Now, Thing Bounces Back intro doesn't get locked in a
 DI/HALT neither...

Screen 3 renderer strongly corrected/rewritten (A bit more of work needed,
 but not very important...). Now "Rappio" (Another COOOOL Bandwagon MSX-1
 demo), works 100% OK. What a pity, because I thought that I had found the
 remaining Z80 bugs I think I have, but no: it was a screen 3 renderer bug...
 argh!

Corrected a small bug in the MegaROM mapper. "Nergooli" works now.

Weird behaviour added... Some games make MSKISS crash when you enter into the
 debugger with F10... (?) It's a random bug, as it only appears sometimes...
 One known game that suffers from this, is FEUD. (?)

ALT+F9  now loads a BRMSX.STA file 99% correctly. (in MSX1 mode only !!)

ALT+F12 now saves a 99% valid BRMSX.STA file. (in MSX1 mode only !!)

Interface: ROM loader corrected. I wasn't freeing the last loaded Cartridge
 when loading a new one. Anyway, still not perfect and/or crashes on certain
 machines (?)

Z80: Added MOST of the dummy ED opcodes (mainly for Mappy). Now I also
 change to 80x25 text mode before printing "Invalid opcode". The emulator
 no longer hangs the whole PC (!) when the invalid opcode arrived in VESA 2.0
 videomodes.

Z80: MUCH faster way to handle R register (in theory), but NO speed up is
 noticeable (!?). Anyway, thanks to Ral Gmez for the brilliant idea... 

==============================================================================

Mon 26-Oct-1998 (eta 25) version 0.1.0

==============================================================================

Mega-RAM 256 KB primitive support added. Execrom works OK, even it detects
 768KB (!), but I've actually implemented 256KB only.

Z80: BIT opcode corrected. Now PV flag is correctly updated. (ZEXALL still
 fails though... BIT opcode is a DIFFICULT one...)

Optimized and corrected SEVERELLY IN/OUT functions. MSKISS is again faster.
 (And now it finally asks for date when booting disk.rom! :)

Disabled Pathetic-BIN-loader. (I needed those keys! :)

16x16 and 8x8 sprites (without zoom) renderer optimized. Slight speed up
 achieved...

"-jap" mode now starts MSKISS in 60 Hz

'R' key inside debugger (Warm Reset) fixed. Now Warm Resetting MSKISS is as
 safe and solid as a rock.

Added the ability to change the frame skip rate. You have to press 'F' inside
 the debugger.

Added the ability to change the SCC/PSG balance, to correctly emulate the
 different mixings that some real MSX's had (Philips=110% (?), Sony=95% (?),
 Toshiba=80% (?), ... ). You have to press 'L' inside the debugger.

Volume Control added. (For GUS only. Press F6 and F7)

VDP is now 99% compatible with a REAL MSX-1 VDP. 99% of the RARE and
 undocumented features are now implemented (Try "Atselous" demo with MSKISS).
 I hope that the 1% undocumented features will be soon implemented. 

Simple ROM loader from inside the debugger added... Press F10 to enter into
 the debugger, and then press F3 to enter into the ROM loader... It's still
 not perfect, but it's there... It's better that nothing... I suppose I'll
 have to improve it soon. If you have problems, use the DOS command line to
 load roms...

Now PSG and SCC sound have 8-bits resolution, instead of 4-bits. (GUS only).
 SCC is now also a 10% louder than PSG, and I think that now it sounds
 better...

Faster Megarom Mapper #0 and SCC handling.

Bug corrected in PSG noise channel 1 (GUS only).

Envelopes are now showed in the PSG_Bars.

Key '+' of the num-pad mapped.

Added ed71 and ed70 opcodes (in f,(c) and out (c),0), but no one seems to
 use them...

Improved debugger... Well, in fact, TOTALLY REWRITTEN debugger.

Optimized still more SCREEN 0,1,2 and 3 renderers. More speed gained again.

BASIC cartridges support added... ("Ligue-se ao Expert" now works).

Optimized main loop of the CPU. So MSKISS is again faster.

IRQ bug fixed... Zanac intro now works perfectly... (TONS AND TONS of thanks
 Ricardo Bittencourt for the tip).

First tests with screen 5... Arkanoid 2 intro screen works (with a MSX1 BIOS
 instead of the MSX 2 one!!! Anyway this is TOTALLY USELESS in a MSX1 ! :)

Slowness problems disappeared as the exe has started to grow... The cache
 now acts OK (! :) So I've included again zoomed sprites, adlib support,
 etc...

BTW, adlib support is now MUCH better.

==============================================================================

Mon 14-Sep-1998 (eta 24) version 0.0.9

==============================================================================

/*/*/*
/*
/*Zoomed sprites added. (Mainly for "Coaster" and "Fantasm Soldier"... I don't
/* know any other game that uses them :)
/*
/* BUT DISABLED because big slowness appears in MSKISS :( !!!
/*
/*/*/*

Original FM-Pac (64 KB) mapper added... For the moment, it's somewhat
 "useless" but it's already there... S-Ram is still NOT emulated though...
 First tests with VOLUME of FM-Pac channels... (I'm totally lost ! :))
 BTW, PSG Volume bars now show FM-Pac Volume also. (And different instruments
 are shown with different colors also! :)

PSG registers 1,3 and 5 properly masked...

Sound corrected... I was writing to the GUS in some parts of the sound code
 without knowing if there was a GUS detected.

VESA 2.0 Routines now correctly coded. MSKISS should work PERFECTLY over
 Hardware VESA 2.0 implementations, and not only SDD 5.3 . Anyway 512x384
 video mode is still not finished, and border colors are "uncontrolled"...

SB-Digital detector added. It still doesn't sound though...

/*/*/*
/*
/*Primitive Adlib/SB-FM support... Sounds as bad as hell, but I suppose it's
/* normal :)) Hard work needed, but I suppose it won't sound much better...
/*
/* DISABLED!!!!!
/*
/*/*/*

Weird behaviour added... MSKISS acts SLOOOOWLY if I link the adlib.o file
 into the exe (!?!?) So I've disabled adlib/SB-FM support for the moment...

Minor corrections to SCC pitch.

Slightly corrected the GUS noise-freq table... Still more work needed, but
 now it's near perfect... I've also modified the GUS handling of the noise
 channels to avoid flanger (I was using THE SAME GUS DRAM region for the 3
 noise channels and now I use 3 separate regions for each one of them).

MSKISS is again BRUTALLY faster that before, because I've inlined the whole
 Z80 into the main loop of the emulator, instead of using the Z80 via
 function calls. Now -frame 3 gives 95% speed even in my 486 Dx2 66... And PCM
 sound pitch sounds much better, so it was that my Z80 was still slow ! :) But
 PCM (1 and 4 bits) is NOT OK in fast computers, because I'm still not
 synchronizing it, and I doubt I'll be able to do it with my GUS (sigh :(

/*/*/*
/*
/*Envelopes generator corrected. Now envelopes work even when the tone
/* generators (bits 0,1 and 2 of PSG register 7) are 1 (disabled).
/*
/*PCM corrected. Time Curb, Oh-shit, Star-Wars, Fuzzball and some other
/* remaining PCM games that didn't sound, now sound very well. I was treating
/* bits 0,1 and 2 of PSG register 7 not OK. I was treating them according to
/* "official" docs. But now I treat them according to "unofficial" docs :)
/*
/* BOTH FEATURES DISABLED TEMPORALLY (clicks and beeps appear) 
/* 
/*/*/*/

------------------------------------------------------------------------------
Mon 13-Jul-1998 (eta 23)
------------------------------------------------------------------------------
Keyclick (and PCM 1 bit) corrected. Now Cobra's Arc voice can be heard
 (anyway it is unrecognizable :)) The PCM (1 and 4 bits ) is still
 downpitched... The output of the cassete can also be heard now... Of course,
 thanks to Ricardo Bittencourt for sending me the correct and accurate
 description of the 0xAA and 0xAB ports.

VESA 2.0 320x480 and 512x384 video modes added... 512x384 is not finished,
 (Notice that there ISN'T border color), but it's already working...

Sprites Renderer bug corrected. Now, ALMOST ALL sprite problems MSKISS had,
 have gone... (Goonies skulls, track field 1 & 2, desolator, ...). It wasn't
 a Z80 bug (! :). Anyway, "survivor" still shows garbled sprites in the intro
 screen, so there could exist some remaining bugs...

The screen is now updated line-by-line (to help vesa2 routines) and for
 future MSX2 video engine. There ISN'T a noticeable slowdown.

 key added (Num Lock). Code key (or "kana key" in japanese/korean bios),
 also added (END key). 'Minus' key and '5' key, both in the numeric pad, also
 added. (Interesting for SCC-Test disks...)

Added support for MSXHAN.ROM. So, from now, Korean mode needs these 2 files:
 KORMSX.ROM and MSXHAN.ROM

Disk routines fixed. Now KGC1(A) and KGC2 don't hang the emulator (and the
 whole PC heavily) anymore. (Knightmare SCC music is SOOOOOOOOOOOOO GOOD ! :)
 
PSG bars added... Not spectacular, but effective... Anyway, envelopes and
 4 bit PCM are still not properly showed.

Timing adjusted in the ED opcodes of the Z80... The cycle tables were 
 included in the .c file, but they were being ignored (!)... I changed ".h"
 files a bit... Now LDIR substracts 21+2 cycles and 16+2 cycles (I was
 previously substracting only 5+2 and 0+2 cycles)...

4 bits PCM added via GUS... Aleste2 voice, bosconian, readwav (from Ricardo
 Bittencourt), Valkyr, Eggerland 2, and MANY other samples are clearly
 recognized... Of course, the sound IS NOW updated whenever there is a writing
 to the sound ports, and not every 1/50 or 1/60 sec. This also "fixes" the
 sound and music in MSX 2 games, which previously sounded really bad...
 Anyway, there are still some PCM samples not sounding, like Oh-Shit, Cobra's
 Arc, Fuzzball, StarWars...

Envelopes added... Boxing, nemesis2 drums, Dunk shot intro, Bubble Bobble
 music, Survivor... start to sound VERY well... Anyway it still needs a lot of
 work and fine tuning, specially short envelopes ("ping pong" ball sounds
 "too long"... Majutusi dices at start don't sound very well also...) Thanks
 to Ral Gmez for adjusting some "envelope increment tables" with the
 official formula, not with trial and error like I was doing... (he just had
 better docs than me :)

==============================================================================

Mon 29-Jun-1998 (eta 22) version 0.0.8

==============================================================================

PSG and SCC sound is now finally 99% perfect... Now ALL notes are played
 with the perfect pitch, (specially VERY high ones... There are now some very
 low tones which sound "bad", but much better than before). The initialization
 routines I was using were pure crap... Of course, a hello here goes to Ral
 Gmez for bearing me while spending a whole afternoon in my house retouching
 the GUS routines used in our emulators (MSKISS and R80) (Como nos lo pasamos
 de bien, eh ? Cuando encontramos los errores, casi no nos lo creamos. Ahora
 nuestros emuladores se oyen BRUTALMENTE... (con una GUS, claro :)))

keyclick and 1 bit PCM sound added... Anyway, it still seems FAR from perfect
 but at least Super Laydock starting voice is recognizable... If you have
 a fast computer (or you render every 40 frames, for example), the sound will
 be very clear... Anyway, some remaining timing problems make the PCM sounds
 somewhat "down-pitched"... Try also "Auf Wiedersehen Monty" and you'll hear
 how the main character walks...

Screen 3 perfectly adjusted now... Now "Anime Girls" brazilian demo works
 perfectly...

IRQ bug corrected in the main loop... Those games which worked VERY
 SLOWLY, work perfectly now, like galaga, namco minigolf, pacman, Valkyr...
 Besides, another effect appears, which is that zanac logo finally appears
 NOT OK (like it should be... BrMsX and fMSX show this logo wrongly also, so
 my IRQ engine is at least as good as theirs :))

ADC16 finally, finally, finally corrected (I hope! :) It was a C-Macro
 problem, very hard to find... Now I've rewritten from scratch the ADC16
 opcode and it finally works. Now Hyper Sports 3 "Triple Jump" works
 perfectly, as well as pippols, pingpong, desolator, Konami Billiards (this
 game had NEVER worked before :)... "Thexder" also is able to get to the
 second stage (Finally! :)... "Aspar" FINALLY works...

Screen 2 renderer optimized... Some games work faster, some games act just
 like in previous versions... Some games may even act slower, but I've not
 found any of these... If I find that many of them act slowly, I can change
 back to the old renderer...

MegaROM type detector fixed... Now "Eggerland Mystery 2" and "Fantasm
 Soldier" are correctly detected... (Ascii 16 and Ascii 8)

New keys inside the debugger: 'V' key, shows the VRAM from inside the
 debugger. 'R' key makes a Warm_Reset of MSKISS (The RAM is NOT deleted)...
 Anyway 'R' key works strangely sometimes...

PCX dumper disabled temporally...

------------------------------------------------------------------------------
Mon 22-Jun-1998 (eta 21)
------------------------------------------------------------------------------
Toshiba HX-20 palete mode added... Just type the "-hx20pal" parameter and
 you'll see how my REAL MSX looks like :)

Slow Mode pixel added... If the pixel on the left of the screen turns on,
 then the emulator is working slower than a real MSX... Increase the frameskip
 rate to avoid this, and to make MSKISS "work fresher". (but then the graphics
 won't be so smoothly updated...)

Screen 2 renderer fixed to correctly handle "Thing Bounces Back" and "Like"
 ("Like" is a windowish environement for MSX). Anyway this patch-bug-fix may
 produce secondary effects on untested games...

MegaROM type detector is now MUCH stronger... In fact, ALL MSX1 ROMS I have,
 are perfectly detected now... MSX 2 ones are more difficult to detect, and
 some of them fail (Andorogynus, for example... Anyway, the copy I have
 also fails with fMSX even trying ALL rom mappers with it). The problem is
 that some MSX2 ROMS don't use the easy 4000/6000/8000/6800/7000/7800/etc...
 addresses, but I'm working also with them for future implementations... The
 autodetection may slow MSKISS at boot time, but I think that it is better
 to autodetect the ROMS than having to type the "-rom", "-roma", "-romb" or
 whatever parameters...
 Please, mail me if you find ROMS not correctly autodetected... Suspicious
 ROMS may be type 5 and 4 ones...

More megarom mapper types implemented: types 4 (ASCII 8KB) and 5 (ASCII 16KB)
 plus the already working 0 type (Generic Konami Megarom with or without SCC).
 Now almost 99.9999% of the MSX1 ROMS work...

Screen 3 support re-added again, now 100% working I think... (At least
 demonia intro, and some fast BASIC test programs made by me, work perfectly)

Megarom Mapper bug corrected. Now Demonia works again... (I don't know when
 it started not to work... Let's see the history file... A ha! In version
 0.0.7 I added "Slight speed up in megarom mapper", and that's why demonia
 stopped to work... :)).

ADD16/ADC16/SBC16 C flag corrected... Now Konami's Football is playable
 again, F1 Spirit accelerator responds OK at the beggining and you can finish
 a race, Hyper Sports II "Weight Lift" works OK again, Hyper Sports III
 "triple jump" works better, GOODY (bins) seems fully playable, Nemesis II
 inside-the-boss stages are fully playable, Konami's Golf is fully playable
 now........ But the GOOOOOD news is that MSX-DISKS BOOT NOW !!!! :)))))
 I CAN'T BELIEVE IT !!! :))) FINALLY!!! Of course TONS of thanks to Ricardo
 Bittencourt for BrMSX debugger... It REALLY helped me a lot in finding these
 bugs... Anyway, some small bugs remain in the Z80, as Hyper Sports III Triple
 Jump is somewhat funny now (you can jump 77 meters and so... :) Desolator has
 stopped to work also :( Even having changed C flag, ZEXDOC/ZEXALL still say
 OK, so ZEXDOC/ZEXALL seem not to be as useful as they did...

TERRIBLE bug corrected... (I was abusing of CUT+PASTE in the RES,SET and BIT
 opcodes... :))) RES and SET may need a fetch of the data from memory, then 
 the operation is executed, and then the data may be written back to memory...
 BUT 'BIT' DOESN'T NEED IT, OF COURSE ! :) I was writing back the operand to
 memory when performing a 'BIT' and then megarom mapper could act RANDOMLY...
 Now Nemesis 3 is FULLY playable, as well as Maze of Galious... (Finally :)

Configuration file MSKISS.INI added. Now many useful parameters can be
 specified there, and then you'll save a lot of command line lenght...
 It could be somewhat buggy, but if you don't do weird things, it works very
 well...

I've just upgraded my DJGPP (2.00 to 2.01) and GCC (from 2.7.1 to 2.8.1)
 I'm scared... Let's pray... BANG! Oh, no, it crashes! hmm... let's see... it
 seems that gcc-2.81 doesn't like some of my nice C-macros :( Ok then, let's
 change 2 of them, expanding their code by hand... (5 minutes later)... OK.
 Now MSKISS works exactly in the same way than with gcc 2.7.1, but the fetch
 of the opcodes in the DDCB and FCCB cases should be somewhat slower... I
 think I can notice a VERY slight slowdown :( BTW also, the EXE produced by
 gcc is now 20 KB larger, even after compressing it with DJP :(

Noise channel disabled temporally until I understand better how 7th PSG
 register works...

SCC changed to enable readings of the waveform, and so, scc detection should
 work... but NO, it doesn't work... :(

Tracing Master System roms (with my recently created Master System emulator,
 SISSTEM :), I've discovered a bug in OTDR... I was inc-ing hl when I should
 dec-it... but the only game which works better again is desolator...

PCX dumper with ALT+F11 via allegro... anyway, it makes the emulator exit to
 DOS in mode 13h (!?), and what is worst, uncompressed/compressed exe grows in
 100/30 KB (!!!!!!!!!!!!!!!!!!!)

Debugger can now be invoked whenever you press F10 in the middle of a game,
 and not only at boot time. Anyway, sometimes this feature isn' very useable,
 as it stops the emulation in "strange places" and you must set a
 breakpoint to go to a given place. There are also some minor cosmetic
 changes, like DI/EI status and so on... (iff1 and iff2 flags are still not
 implemented, and I show a 0). Now you can also write the status of MSKISS
 into a debug directory pressing the 'A' key, just like in BrMSX. (Notice that
 this debug info are NOT "savegames" like BrMSX .STA files, but useful info
 for debugging purposes only...)

==============================================================================

Mon  4-May-1998 (eta 20) Version 0.0.7

==============================================================================

Slight bug in sprites renderer corrected...

Slight speed up in megarom mapper...

I've touched something in the megarom mapper (I DON'T KNOW WHAT!!! :) and now
 Super Laydock and Hydlide 3 seem to work "100%" !! :)

First tests with memory mapper in RAM slot (Slot 3)... The technique is
 exactly the same as in megarom mapper: LOTS of memcpy's. So when the ram
 mapper is used too much, the emulator gets slow... So this will be another t
 hing to change in the future... At least, it seems to work, as KGC_3_SCC,
 KGC_4_SCC and KGC_Special_SCC_MSX1_games (Sean Young's SCC modified versions)
 DO work with SCC sound pressing '1' or '2' key, and forcing SCC detection.
 (Well, all games work except SCC-Nemesis1, because it needs 128 KB of memory,
 but I think that twinbee also needs 128 KB and it works with -mapram 8
 parameter so maybe weird things still happen with SCC-Nemesis1...) Anyway, as
 GUS routines are PURE crap, SCC sounds horrible... A new parameter is
 available then, which is "-mapram N"... You can select how many 16KB pages
 will be mapped via memory mapper...

BRMSX State files are now loadable... (Feature added in 2 minutes :) Thanks
 to Ricardo Bittencourt for explaining me the (easy) .STA format...Now you can
 load a .STA file from inside MSKISS... Anyway, as I only want to use it to
 test the Z80, the only 3 loadable .STA's are:  PRELIM.STA , ZEXDOC.STA and
 ZEXALL.STA. They contain the state of BRMSX just before running these 3
 .COM's from MSXDOS: ZEXDOC.COM, ZEXALL.COM and PRELIM.COM , so it's only
 useful for internal debugging use... Besides, I'm ignoring some fields of
 .STA files, like megarom selectors, and some others, so megarom save-states
 won't work...In the future, general use of this feature will be added...
 Press ALT+F6 to load PRELIM.STA
 Press ALT+F7 to load ZEXDOC.STA
 Press ALT+F8 to load ZEXALL.STA
 Anyway, RAM must be in SLOT 2 for BRMSX compatibility, so for the moment,
 this is a feature to be added... So the .STA loader is useful for me, for
 internal use only... Unless you know how to tweak .STA files to work with
 MSKISS, this feature is somewhat useless in the official release.
 (theorically you're reading now the official docs, not the beta ones, so RAM
 is in slot 3)

As a result of testing ZEXDOC/ZEXALL, almost ALL opcodes have been finally
 added, as well as VERY FEW bugs have been detected (Now the hard work is
 fixing them, as I'm sure the most important are in the LOOOOOOOOOOOOOOONG
 aluop a,<bcdeh......> which takes 3:20 hours in my 486 Dx2 66 to be executed(!)
 and when it finishes it vomits: CRC error (argh !)

NEG bug corrected... but not sure, as ZEXDOC/ZEXALL still complaints all the
 time even being sure I'm implementing NEG OK...(?) Anyway, even with this
 small fix, no new games work better...
 (1 day later)
 NEG totally rewritten... now zexall says OK... thanks to Ricardo Bittencourt
 for letting me the format of the lookup up table he used... It seems it was the
 cause for nemesis3 not working properly (Anyway depending on the ship you
 select, it starts more-less-OK or it still starts with the screen very
 grabled...) "Break in" also seems to work now... Thing Bounces Back enemies
 now act randomly...

DAA mega-table (which I "stole" from marat's z80) changed in run time to
 correctly handle bits 5 and 3... Now zexall says OK

I had a bug in the type of a temporal variable which made a lot of useful
 C macros I defined, not work properly, so they were still function calls...
 Now, with the bug removed, ALL memory references are finally C Macros... The
 remaining opcodes which still made use of function calls were ALL JR's... So,
 once I substituted ALL of them, the emulator works MUCH faster... Due to this
 speed boost, I've changed the default frame-skip rate from 4 to 3.

KOR mode enabled... You need kormsx.rom and you also need to start MSKISS with
 the "-kor" parameter...

support for 0x0000-boot cartridges (with some help from Ricardo Bittencourt)...

LDI(r)/LDD(r) emulated 100% perfect (zexall finally says OK)... Anyway correct
 handling of bits 5 and 3 makes the emulation of this opcodes somewhat slower.
 (Not much, anyway, as I haven't detected a significant slowdown...)

==============================================================================

Tue 14-Apr-1998 (eta 19) Version 0.0.6

==============================================================================

HEAVY bug in Megarom Mapper routines corrected (It wasn't a Z80 bug ! :). Now
 when 1st cartridge is a MEGA-ROM cartridge and 2nd Cartridge is anything else,
 MSKISS acts normally... So ALL cartridge combinations DO work now... BTW, from
 now, Megarom Mapper works also with SLOT 2 (FIREBIRD + KING KONG 2 start as
 it's supposed: KING KONG 2 takes control and you can save inside the game...
 OF COURSE, AS THEY ARE MSX 2 GAMES THEY CAN'T BE PLAYED!!!! YOU CAN ONLY HEAR
 THEIR MUSIC!!!!) BTW, the DISK.ROM "bug" MSKISS had when in MEGAROM mode, has
 also gone, so "-nodisk" parameter is somewhat useless now... (Anyway, as it
 doesn't hurt, I haven't removed it :)

First serious disk support (although pathetic :)... BIOS read/write sectors
 function (4010) works partially (it only reads...) Some Konami game collections
 DO work FULLY!!!!!! :) I'm so happy, because I NEVER had a disk drive when I
 had my MSX, and I didn't know if what I was doing would work "OK" so fast...
 BTW also, BASIC "files" works, but loading data still does NOT work! :(

Joystick routines corrected... I was reading from BOTH joystick ports at the
 same time !!! :) Salamander was VERY FUNNY to play !! :) Now Port A is chosen
 by default... If you want Port B support, type the "-joyb" parameter...
 Joystick support can also be disabled with the "-nojoy" parameter...

Corrected a slight bug in the Screen 0 renderer.

Pathetic ASCII 8KB Megarom Type detector added... Now I think that ASCII 8KB
 megaroms should work... Anyway, lack of test with this kind of megaroms (I only
 have "Super Laydock"), makes this detector not very good... (Although Super
 Laydock works now MUCH BETTER than before...)

Bug in Konami Megarom mapper detected, but don't know where... I think this is
 the reason why NEMESIS3 works so bad... I think Nemesis 3 doesn't write to the
 "standard" ROM addresses (!?!)

------------------------------------------------------------------------------
Thu 9-Apr-1998 (eta 18)
------------------------------------------------------------------------------
My D: drive FAT became a total mess, and so I LOST the WHOLE MSKISS project,
 my WHOLE DJGPP, my WHOLE "emul" directory (!!!!), and MANY MANY things... I'm
 sure it's because the "nice" W95 I just installed a week ago... Luckily I had
 many backups of the eta 16 in a diskette, and a friend of mine backuped many
 nice things of my HD just a few weeks ago (like the ones above :), so I've
 restarted the work from eta 16, re-adding most of the features of eta 17...

Joystick support for port A added... (via ALLEGRO of course :) Thanks to Ral
 Gmez for telling me that he added it very easily in its SPECTRUM emulator, and
 he suggested me to add it to MSKISS... I didn't even tried to read allegro docs
 to know how to start (as I don't have a joystick... BTW, thanks to my neighbour
 for lending me his joystick to make tests...:) It was REALLY easy, but I'm sooo
 lazy!!!! :) BTW: size of uncompressed MSKISS.EXE has grown in 30KB!!! I'm
 currently compressing it with DJP, but even with this, MSKISS is now 8KB larger
 than without joystick support!

5th sprite ocultation added! And it is NOT as slow as I thought!... :)
 Try "Goonies", "Antarctic Adventure", "Penguin Adventure", "Parodius intro" and
 some others to see "useful sprites ocultation"...
 Try "Nemesis", "Nemesis 2", "Nemesis 3", "Knightmare", "Salamander", "Twinbee"
 and many others to see how KONAMI programmers (almost-gods? :) implemented
 "controlled flickering"...

Screen 2 and Screen 1 renderers totally rewritten using a totally different
 technique based in look-up tables of longs... This method is MUCH faster than
 the typical shift and draw... Thanks of course to Ricardo Bittencourt for the
 hint... (Anyway, I was starting to do some tests with simmilar ideas of my own,
 so credits for Ricardo are not 100%, but 60% this time! :)

You can now load 2 cartridges... Anyway, as my Z80 is still buggy, MSKISS may
 act randomly when 2 ROMS are inserted...

Aspect ratio of 320x200 mode pixels changed as in 320x240 mode... Now, even
 being in pure mode 0x13, pixels are square...

Changed the virtual screen size (now is 320x256 again) to get more speed and
 to treat correctly sprites that disappear from the left/right... Screen 3
 renderer temporally disabled...

Primitive speed limiter added... Anyway, if you want to run MSKISS without this
 speed limitation (to perform speed tests, or whatever) try "-topspeed"
 parameter and MSKISS will try to run as crazy... BTW: to implement the speed
 limiter I have to do a VERY WEIRD thing...I have to do a "fclose(ftmp)" in the
 "while" I use to wait for the next frame (!!!!!)... If leave this "while"
 empty, or I fill it with "easy" statements, the emulator and my whole PC hangs
 HEAVILY(?!?!!!) I don't know the reason of that, so any help will be
 apreciated... Anyway, the normal user will see how MSKISS acts normally and
 transparently. (In theory, of course... If someone detects some kind of disk
 problem because of this crap, please e-mail me urgently... Anyway, I haven't
 detected any backside effect at home...)
 NOTE: I've just discovered that this effect happens ONLY with my PC !!!!! In
 the PC of a friend of mine, the speed limiter works perfectly without having to
 do this paranoid "fclose(ftmp)"... He doesn't have a GUS and this could be a
 reason, but anyway if I try it at home with "-nosound", it still hangs... (!?)

Crappy tests with DISK routines re-added again (the ones from eta 17)...

Added a new MRead_MemoryW macro to read a whole word directly from the MSX
 memory... Anyway I think I CAN'T notice a significative speed up...
 (MRead_MemoryW macro idea, courtesy of Ricardo Bittencourt :) BTW desolator
 has started to do weird things... it could be because I've started to mess also
 with PPI Ports (!?)...Anyway I doubt this could be the reason, I'm sure I could
 have added a new Z80 bug because of bad use of macros...

Added "-jap" parameter. If JAPMSX.ROM is present in the current directory, it
 will be loaded instead of the "international BIOS" MSX.ROM... Some games act
 differently under a japanese MSX... (Penguin Adventure, Nemesis 1,2 and 3,
 Salamander, Payload, King's valley2 (msx1), Maze of galious, Game
 Master 2...) Even BASIC is somewhat different... JAPMSX.ROM is intended to be
 a BIOS image of a japanese MSX1. Thanks a lot to KSH for providing me with
 some japanese BIOS to make these additional tests...

Corrected a bug in the handling of PSG registers 8,9 and 10... Now "PLAY" works
 inside BASIC, as well as Payload music inside the game... (Anyway there are
 still some high notes sounding randomly...) Of course, this bug was fixed
 thanks to Ricardo Bittencourt (Yes: it certainly seems he knows a lot about
 MSX! :)...

BRUTAL speed up due to the massive substitution of Read_Memory function by
 3 new macros (different macros from eta 17)... Anyway the speed up could be
 still better when I solve some problems with some macros that don't work with
 "easy" Z80 instructions like LD R8,MR16 or the simple JR's...

Finally I decided to expand by hand these macros that caused problems when GCC
 preprocessor expanded them ... The speed up is now IMPRESSIVE, so I had to add
 the very necessary speed limiter...

==============================================================================

Mon 30-Mar-1998 (eta 17) Version 0.0.5

==============================================================================

Divided the Read_Memory function into 2 macros: Read_Opcode() and
 Read_Memory(). Doing this, the fetch of the operands is BRUTALLY faster...
 Don't try -frame 40 even on slow computers like mine (486 Dx2 66) as it now
 works very fast! :)

First tests with DISK routines... (Not much really... I'm olny detecting the
 BIOS traps, and so...)

More illegal opcodes added.

MINOR Z80 optimizations...

------------------------------------------------------------------------------
Wed 25-Mar-1998 (eta 16)
------------------------------------------------------------------------------
LD SP,(nn) corrected. Now "Galaga", "Bosconian", ZEXDOC.ROM (thanks to god! :),
 "Payload", "Oh shit" (bins), "El misterio del Nilo" (bins), "Gunfright"
 (bins & rom), etc... DO work perfectly... "Pitfall II" (bins) works OK, but as
 sprite collisions are still not implemented, you are invulnerable and you can't
 get any diamond... "Thing bounces back" (bins) doesn't hang any more (Anyway
 the screen is still grabled. BTW, the screen is grabled DIFFERENTLY than in
 brmsx and fmsx :)

Z80_Read_Memory and Z80_Write_Memory routines totally rewritten as well as the
 OUT(0xA8) subcase. Now all of them are a bit faster, so the whole emulator
 works slightly faster... BTW: the debugger works BRUTALLY faster now...

Many GUS routines totally rewritten and now high notes sound with the correct
 pitch...(well, almost, because VERY VERY VERY high notes, still sound bad...)
 A bad effect also has appeared... this effect is that the square waves I play,
 don't sound as "sweet" as they did before... Now they sound sharp and crisp...

"-ifreq" parameter added... Now you can change the frequency of VDP interrupts.

Screen 3 support partially added... Anyway it's still crappy/buggy because I
 don't have many games to test it. Demonia intro works more or less OK now...

Added the emulation of the 7th bit of the sprite 4th attribute to make sprites
 appear 32 pixels shifted to the left. Now MR_Chin appears correctly from the
 right, ZANAC works perfectly, and Hyper sports 3 curling works OK also...

VDP bug fixed... When the autoincrement of the VDP arrived to 0x3FFF, it
 reached the 0x4000 value, when it should wrap to 0x0000... Now those Im0 Konami
 games (1985) work again... Of course: TONS of thanks to Ricardo Bittencourt
 (as always :)

Minor HALT correction/speedup. ("Auf wiedersehen monty", "arkanoid" and
 "thexder (intro)" are now BRUTALLY faster, even in my 486 Dx2 66)

Some more (illegal) opcodes added.

More "bin blocks" are now loadable (up to 6)... Press CTRL+F6,CTRL+F7, ... ,
 CTRL+F11 (except CTRL+F10)

==============================================================================

Fri 13-Mar-1998 (eta 15) Version 0.0.4

==============================================================================

YES!! Arf, arf... Finally! The well-known IRQ bug MSKISS had, (namco games
 weren't working at all, as well as "zanac" and some others) has been removed!
 Anyway, galaga and bosconian still don't work, as well as some others like
 Payload have stopped to work... I pray it's because of a Z80 bug, and not to
 remaining IRQ bugs...

HALT finally corrected. When the interrupt after the HALT ended and the code
 returned to the main routine, it returned to the HALT again, and then an
 infinite LOOP started.(!) Now I only have to return to PC+1 when the interrupt
 makes the "RETI", and then the HALT becomes ignored (as it's supposed to be).
 New games working because of that: Arkanoid, Green Beret (blergh :) and
 Thexder -> (Chexder ?)...

FINALLY corrected H and C flags of ADD8/ADC8/SUB8/SBC8... Now basic arithmetic
 operations work 99.9 % of the times...

Some sprite bugs corrected.

More opcodes added.

Added a PATHETIC method to load "BLOAD-able bin blocks"... If you have a game
 which is made of .bin's (BLOAD-able blocks), you can identify these bin blocks
 and rename them this way: first block -> "bin1", second block -> "bin2", etc...
 You can define up to 4 bin blocks to be in the same directory of MSKISS...
 OK then... You have to enter into BASIC, and when the OK prompt is there,
 press CTRL+F6 to load (and execute) "bin1", CTRL+F7 to load (and execute)
 "bin2", etc... If the game didn't need some special pokes to load and the bin
 blocks were loaded as BLOAD"cas:",r from inside BASIC, the game will boot...
 Of course only "easy" games will work, but hey, this is much better than
 nothing, while I implement disk support... Note: 10% of the times you try to
 load blocks with this method, MSKISS will probably be attending a IRQ and then,
 BASIC may hang, so better luck next time... Make a reset, and start from 1st
 block again...

==============================================================================

Mon 9-Mar-1998 (eta 14) Version 0.0.3

==============================================================================

ADC16/SBC16 totally rewritten... Arf... Now ZEXDOC says OK when testing these
 two opcodes :)

Strange bug added... Im0 games (Konami 1985) don't work at all... Besides
 A LOT of games add wrongly big numbers... I should revise DAA now that
 ADC16/SBC16 seem to work...

I wasn't substracting the extra number of cycles required when the conditions
 of the conditional JR's were true... Anyway timing problems didn't seem to be
 causing trouble at this point...

Eli Zaretskii solved me the main problem I had when compiling z80.c, so I can
 compile it with -O3 !!! :) He told me to use a larger stack for cc1.exe and it
 worked! DJGPP FAQ's were a bit unclear at this point, as I thought stack size
 had to do with free mem CWSDPMI.EXE provides, but it didn't... I'm still a
 newbee to DJGPP :) Anyway the speed gained here wasn't as much as I wanted :(
 As I already suspected I have to speed up video routines, not the Z80... Try
 running MSKISS with -frame 40 and you will see (better if you hear) the
 difference...

LDIR/LDDR again implemented as a bunch of LDI/LDD 's instead of executing it
 at once... I think I'm implementing it finally OK...

Added a pseudo "16 KB ROM type detector"... I determine the execution address
 of the ROM and if it is above 0x8000 and cart-size is below 16384, then I load
 the ROM from 0x8000 instead of 0x4000... This method is PATHETIC but it seems
 to work... Rollerball and MR_chin DO work now...

Totally rewritten the memory system... No more memcpy's when working in
 NO-Megarom mode (16 / 32 KB ROMS) Anyway now it's slower than before...
 Also halved the number of memcpy's of the megarom mapper, so when running a
 megarom cartridge, MSKISS is now MUCH faster. The combination of both the slow
 down and the sped up is a more constant speed... (slightly slower than before
 though)

Slight sped up of the screen 2 renderer...

DAA finally stolen -- what a shame from my part :( -- from Marat Fayzullin's
 Z80... Anyway my emulator still adds/subs wrong ! :( So I even could have been
 implementing my DAA OK, and I destroyed it (sniff !) I could come back to my
 DAA when I find the remaining add/sub bugs...

If DISK.ROM is present it will be loaded... Anyway if you want to play megarom
 games you MUST disable it with the -nodisk parameter (!). I have no idea of
 what can be causing this... :( I'm also patching BIOS.ROM and DISK.ROM
 where needed with "ED FE C9" for future implementation of disk/tape routines...

First tests with SCC... But as I'm programming the GUS wrongly, it sometimes
 sounds horribly... It seems that the GUS pointers-to-samples need some kind of
 initialization before they get to the correct values... Or maybe the way I'm
 programming the GUS creates problems with VERY SMALL loops (32 bytes or so)
 and high frequences...

IRQ handling bug corrected... When interrupts were disabled, an interrupt could
 arrive... Ok... I was simply ignoring these IRQ's... But it seems that I
 souldn't have ignored them, because when an EI arrives, this pending interrupt
 (interrupts maybe?) need to be attended... A lot of new games work/go faster
 now... The bad thing is that "Zanac" doesn't work now ! :(
 BIG THANKS (of course ;) to Ricardo Bittencourt for the tip...

Heavy VRAM bug finally fixed!!! I wasn't selecting the VRAM address when I
 was doing a VRAM read. As I only checked bit6 of the VRAM when writing, I
 didn't realize that this bit didn't need to be set when a VRAM read was going
 to be done... Now "everything" works "perfectly"... ALL games FULLY work now
 (except the ones which suffer from the still left z80 bugs). Now finally
 BASIC is FULLY usable !! :)

8x8 Sprites added... Some bugs are still there, though...

When screen output was disabled, I didn't "cleared" the screen, and screen
 mode switches were "instant". Now that I "clear" the screen, when screen
 output is disabled, these mode switches work like in a real MSX.


--------------------------------------------------------------------------------
Thu 12-Feb-1998 (eta 13)
--------------------------------------------------------------------------------
Some missing opcodes added... (Anyway there are some of them missing, because
 I like to see WHEN games make MSKISS crash when demanding a certain opcode...
 I have a very weird taste ;)

LDIR/LDDR now made at once without checking interrupts in the middle of the
 intermediate LDI/LDD 's... I'm not sure if I'm doing well...

I've started to run ZEX under MSKISS... (At least a ROM port made by Ricardo
 Bittencourt) As I already knew, ADC16/SBC16 fail...

==============================================================================

Mon 9-Feb-1998 (eta 12) Version 0.0.2

==============================================================================

Rotation flags rewritten... Anyway some of them must be still wrong as MANY
 games suffer from bad mirroring tiles... Or maybe it's a totally different
 bug...

SCC writings ignored, so there is no more general-protection-fault error when
 running megaroms... (except Nemesis 3) BIG slowdown due to the way I'm
 implementing megarom mapper...

Tried to add Auto frame feature... But the results were chaotic, so I've added
 a simple frame skipper... Anyway, with "-frame 1", VERY VERY VERY fast
 computers (Pentium II or so) still may run the emulator too fast... Buy a
 cheaper computer if you have this problem :) or try to run something CPU
 consuming in the background of W95 and launch a DOS-BOX with MSKISS...

Noise channel added, but frequency is still incorrect.

Added command line parameters

Ricardo Bittencourt told me to add +1 to ALL cycle tables of the Z80 because
 the MSX is supposed to have a extra state compared to the SPECTRUM... I did
 it, and the resulting speed seems to be more realistic... or not, I don't
 know...

==============================================================================

Fri 6-Feb-1998 (eta 11) FIRST official release. Version 0.0.1

==============================================================================

First implementation of Mega-ROM mapper (Konami 8KB only). I succeded at
 first try (!) it wasn't so difficult... Anyway some Mega-ROM still make
 MSKISS exit with a general protection fault error... I'll have to revise the
 routines then... BTW I'm doing it the hard way (TONS of memcpy's), but at
 least it works... When it works 100%  I'll change to a faster method instead
 of the big amount of memcpy()'s I currently do...

Minor Z80 bugfixing.

MSKISS.DOC created.


--------------------------------------------------------------------------------
Thu 5-Feb-1998 (eta 10)
--------------------------------------------------------------------------------
I wasn't implementing interrupt modes 0 and 2 in the main loop of the z80 (!)
 so, if the code changed to these two interrupt modes, interrupts were
 ignored (! :) Luckily in the MSX, im0 and im1 modes do the same thing: a
 RST 38h. im2 mode isn't also that difficult ... For the moment all of them
 seem to work... (well at least im0 and im1 modes. I don't have any piece of
 code containing a im2 interrupt) New games working because of this: pingpong,
 skyjaguar, yie-ar-kungfu 1, and some other...

Minor changes in some Z80 flags...

Added '-ffast-math' optimization parameter to GCC when compiling all the .c
 files of the emulator... I think I can notice a little speed up because of
 that... (Maybe is my imagination also :)

Sound isn't as good as I thought, mainly when the GUS tries to play high notes.
 Anyway, only 10% of the notes sent to the PSG are very high, so music and
 sound effects on games are still VERY recognisable... I suppose I'll have to
 change the way the GUS generates sound...

VESA 2.0 512x384 linear video mode detection added. Still not used, though...

LDIR,CPIR,etc were done step by step, not at once, so an interrupt could occur
 in the middle of a transfer and I don't know what could have happened... Now
 I do it "the right way" (?), but no new games seem to work...

First attempts to implement Mega-ROM mapper, but without success... The only
 thing I do is load the whole Mega-ROM into a malloc-ated zone and I copy its
 firsts 32 KB into the 4000-BFFF zone... As it's normal, the emulator hangs...


--------------------------------------------------------------------------------
Wed 4-Feb-1998 (eta 9)
--------------------------------------------------------------------------------
Whoaaaarrrrggggh!!!! I wasn't implementing the joystick, so PSG register 14
 was all the time 0x00... This meant that MSKISS was detecting ALL buttons of
 the joystick and the triggers pressed all the time, and so, the space bar and
 the cursor keys didn't work inside games... Now I only have to force a 0xFF in
 the 14th register of the PSG and then, the keyboard can respond !!!!! :) The
 bad thing is that there isn't joystick support for the moment, but in a future
 I can add this feature...

V flag definitely corrected in some opcodes... Some of them are missing
 though...


--------------------------------------------------------------------------------
Tue 3-Feb-1998 (eta 8)
--------------------------------------------------------------------------------
Finally! I think I'm implementing DAA 99% correctly... Now arithmetic
 operations fail because I don't implement h flag correctly in some operations,
 but now antarctic adventure is 98% playable... Corrected h-flag in add,adc,sub,
 sbc and cp opcodes...

I CAN compile again z80.c with -O1... Someone seems to be joking with me :)


--------------------------------------------------------------------------------
Mon 2-Feb-1998 (eta 7)
--------------------------------------------------------------------------------
Color base and char generator addresses of screen 2 now correctly calculated
 (I think)... Non-Konami games are correct now. I was adapting the color table
 according to Konami games but trial and error have permited me calculate how
 color address works in screen2 for ALL games... PORTAR.DOC and Sean Young's
 VDP1.HTM seemed to be inaccurate describing this...

Sprites added, even 208 and 209 "Y" coordinate. There could be some
 bugs though... There is no 5th sprite ocultation... Changed the VGA-Dump
 routine to handle correctly sprites getting out of the boundaries of the
 screen. Now knightmare "black balls" appear correctly from the upper zone of
 the screen.

I can't compile z80.c again with -O1 -O2 or -O3 because gcc tries to inline a
 lot of functions, and even I force gcc not to inline them, it still hangs
 because of that (I think)... There could be even more -f flags which can make
 gcc hang... This seems to be a sad problem...


--------------------------------------------------------------------------------
Thu 29-Jan-1998 (eta 6)
--------------------------------------------------------------------------------
Keyboard support partially added... Anyway something weird still happens...
 Space key and some other keys are still NOT detected (!%$#@) or seem to be
 pressed all the time...

GREAT speed boost due to the fact that now I render the screen to a TEMP buffer
 and then I dump this Buffer to the VGA instead of dumping pixel by pixel to
 the VGA.

Minor Z80 flag corrections...

HALT is now implemented this way: "PC=PC-1" It seems to work as the old
 implementation, but I think that it's a "more legal way" to implement it...


------------------------------------------------------------------------------
Wed 28-Jan-1998 (eta 5)
------------------------------------------------------------------------------
Corrected some opcodes, mainly h and v flags, but it still needs a lot of
 work.

DAA Added. Anyway I think it works badly because h and v flags are still
 incorrectly updated in the Z80 code.

GUS sound added !!!!!!!!! Even some melodies are recognisable. Anyway
 the sound renderer is VERY buggy and crappy and needs A LOT of work. But for
 now it's better than nothing :) And hey! it's the third main recompilation I
 do! :)
 ... (1 hour later :) ...
 PSG sound (square waves) is near perfect!!!! Now almost every song is
 recognisable. Noise channel isn't still emulated but I have ideas... SCC is
 still far from being emulated because I don't emulate Mega-ROM mapper. When I
 emulate Mega-ROM mapper SCC sound should be as easy as PSG sound...

Tried to add keyboard support but weird things happen... I don't understand
 why I'm not succesful on that, because I think I know how to handle keyboard
 :(

I've discovered that I can compile z80.c from outside RHIDE with -O1, and my
 PC doesn't hang. A bit of speed gained here. Anyway -O2 and -O3 still makes
 gcc hang...


------------------------------------------------------------------------------
Mon 26-Jan-1998 (eta 4)
------------------------------------------------------------------------------
A lot of SHIFT/ROTATIONS Flags corrected. Now "Road fighter" and "Knightmare"
 work better.

Added color 0/border.

Splited the sources in various files to compile some of them with -O3.
 For the moment, if I try to compile z80.c with -O1 -O2 or -O3 DJGPP/RHIDE
 hangs. The result has been a significant speed boost.


------------------------------------------------------------------------------
Sun 25-Jan-1998 (eta 3)
------------------------------------------------------------------------------
Most Z80 opcodes implemented

Some opcodes still missing, like DAA, so Antarctic adventure, hyper rally,
 synthesizer and some others act strangely...

I implement HALT putting a 0 in the counter, and then an interrupt occurs,
 but I don't know if this method is valid... At least it seems to work...

Some opcodes are still buggy mainly H and V flags

Screen 0 and 1 color added. Slight sped up also.

Screen 2 color corrected.

No sprites

No sound

No keyboard (Anyway Konami's demos are nice to see :)


------------------------------------------------------------------------------
Sat 24-Jan-1998 (eta 2)
------------------------------------------------------------------------------
Z80 Opcodes heavily revised and corrected. First games start to work.

Primitive Screen 2 renderer


------------------------------------------------------------------------------
Fri 23-Jan-1998 (eta 1)
------------------------------------------------------------------------------
MSX BOOTS! sniff :~) It displays "MSX system version 1.0..." message at boot
 and starts basic. MSKISS was born.

Primitive Screen 0 renderer

Primitive Screen 1 renderer


------------------------------------------------------------------------------
From October 1997 to Early January 1998 (eta 0) (never released)
------------------------------------------------------------------------------
Z80 Engine and debugger implemented from scratch with the help of Marat
 Fayzullin's document: "HOW-TO Make an emulator"


______________________________________________________________________________

            Isaac Santaolalla Solrzano          is05562@salleURL.edu

                  http://www.salleURL.edu/~is05562/msx_ing.html
                  http://www.salleURL.edu/~is05562/mskiss.zip
______________________________________________________________________________

SYDMMRFNQQFSFRUHNZSDNDSHUWFKKTDNOSDUDTSJLBQFLFQJSYDMMRFNQQFSFRUHNZSDNDSHUWFKK6
______________________________________________________________________________


