

		      The Minus/4 Emulator V1.3!
		    Copyright Mike Dailly 1996,97

		           With help from 
                             Tibor Biczo


			     E-Mail me on
		       mike@scotch.demon.co.uk


		  The latest relase can be found at
			www.scotch.demon.co.uk




			      DISCLIAMER


	 THE BORING BIT! THIS PRODUCT IS FREE. AND AS SUCH I
	 ACCEPT NO RESPONSIBILITY FOR ANY DAMAGE DONE BY THIS
	 PRODUCT. IF YOU USE IT, ITS YOUR FAULT. IF SOMETHING
	 HAPPENS COZ YOU USED IT, ITS YOUR FAULT. IF THE EARTH
	 EXPLODES WHILE YOU USE IT, IT'S YOUR FAULT. IF I HAVE
	 A BAD DAY COZ YOU USED IT. YOU GUESSED IT - ITS YOU'R
	 FAULT! ALL IN ALL - YOU USE IT AT YOUR OWN RISK!


			   Whats NEW now!!
			   ---------------
       For V1.3
       ----------
      1) SOUND!!! Yep, at long last sound has been added. An 
         AdLib card is needed for this, and it will play all
	 Plus/4 "TED" sounds. I am now looking at the "SID" card
	 made by solder	and will add this via a sound blaster.
	 You can disable sound by using "-a" on the command line.

      2) JOYSTICK SUPPORT! And another "at long last" one.
	 Minus/4 at last supports real joysticks. F5 and F6
	 still enable and disable the joystick for THAT port,
	 but F8 will allow you calabrate it. You must calabrate
	 at least once before you use it - or you can't! :-)
	 I also have a digital JOYPAD, and it works with that 
         as well. You still need to calabrate them first though.
	 NOTE: Joysticks are SLOW!! don't be surprised if the
               emulator slows down while using it.

      3) I have changed the way the Mode X works, it should smooth
	 out much of the gliching some folk were getting. It also
	 stops some of the "tears" you may have seen...
	 NOTE: Mode X is VERY slow compared to "standard 320x200"
	       if the enmulation is running slow, try the -x switch

      4) I have added the "TED" rule of finish drawing the character
	 I have started drawing.. (whats that then!) It stops most
	 scrolling tears you see in scrolly messages...

      5) Exact cycle timings have been added on all known
         instructions.

      6) removed the need for the CHAR.ROM file, as its already
	 in the kernal rom.

      7) Now "cache" the currect ROMs selected. speeds up all
	 "normal" IRQ's. i.e. Any game that used the kernal IRQ
	 jump address's will now be much faster.

      8) Added variable cycles a scan line to try and emulate the
	 Plus/4's DMA stealing. "Genetic Fault" now works correctly 
         again! So it must be doing something! <g>

      9) Added $ff1a and $ff1b emulation.

     10) Added a 50Hz timer. So it will run at plus/4 speed
	 50Hz is PAL speed. I'll do NTSC later. You can turn it off
	 buy using the "-t" command line switch. By using this switch
	 and the "-x" option (see point 11) the emulator should run
	 at full plus/4 speed. on a P100 or P133. Sound will play at
         the correct rate, and game play will be the same. But, if
         you want to see every thing "silky-smooth" (saying your
         machine can handle it) use "-t -v" or "-t -v -x"

     11) The best way to run the emulator is in mode 13. Its just
         plain faster. And usually the border is black so you don't 
	 see it. So use the "-x" switch for normal use, and the
         mode-x to see the effects. 

     12) Fixed a bug in the debugger. Well, actually in the MODE-X
	 screen copy. It wasn't restoring the PLANE to 0, so it
	 looked like the debugger was freezing.

     13) Added "SAMPLE" playing. This is not enabled by default!
	 Its hardwired just now for port 220 and DMA 1. If you 
	 don't have that, sorry! it'll change in the next release.
	 to enable this use "-s" on the command line.

     14) I've changed the "snap-shot" size down to 320x200. The
	 360x240 was just a pain as myself and others were always
	 cropping the image backdown in size..

     15) I'd just like to publicly say thanks to Tibor Biczo for
	 his invaluable aid, in finding bugs (see points 6 & 7 and
         more!). Not only that, but having someone ELSE helping with 
         the code keeps me interested!. Thanks mate!
       

     Well, its getting there at long last! I'll be looking into solders 
     "SID" card next, allowing even BETTER sound to be heard. And with 
     Tibor Biczo's help, we should be able to speed it up some more!
     I may also do TED sound using the soundblaster, and actually
     sample the plus/4 to get the "real" sound emulated. We're also
     getting better at the character emulation, and then sometime
     we'll need to get a DISK system working..

 

       For V1.2.2 - Even fewer fixes!
       ----------
      1) Just figured out what was wrong with the joystick.
         Controlling BOTH joysticks WAS causing problems.
	 F5 is now "enable joystick 1" (I think..?)
         F6 is now "enable joystick 2" - same keys. 
         Keyboard and joystick control now 100% (I think <g>)
	 "Finders Keepers" now works on both joystick and keyboard.



       For V1.2.1 - A few minor fixes.
       ----------
      1) Fixed up the keyboard and joystick a bit. Thanks to 
         "Tibor Biczo" for the info. The joystick is still not 100%
         but its much closer. the keyboard should now work perfectly.
	 "Elite" which didn't quite work, now does. 

      2) Added few more undocumented instructions. AFL Boulder Dash
         now works.

      3) Raster Cycles now set to 57 and 109. This will change when I
         finaly do a dynamic system that'll handle for the plus/4's
         "cycle pinching"

      4) Sound stuff removed to avoid problems - just now. Will be
         done correctly one day.

      5) Thanks for all the help everyones been giving after reading
         the source. Its a great help.



      
       For V1.2
       ---------
      1) Added jostick 2. Up/Down/Left/Right and Space will now
	 control BOTH joysticks at the same time. I will add a 
	 redefine keys option later, and allow each to be on and
	 off. Make sure "NUMLOCK" is off. 

      2) F12 now resets correctly. It does not automaticaly page in
	 the system ROMS. If you press SHIFT-F12 it will reset back
	 to basic. (in other words... F12 resets, Shift-F12 resets
	 back to basic).

      3) Added SNAP shot. Press F9 while in emulation mode(not debug)
	 and a test.fre file will be saved. File must be called .FRE 
         to reload. If anyone wants the format of this, Ill add it in
         to the docs. I did think it'd be neat to do a REAL plus/4
	 compressor etc, so it would all reload on an actual plus 4!
         perhaps later...
	 I'll add a proper file name requester later..

      5) I've changed the .D64 loader menu to only reprint when a key
	 is pressed. This was causeing problems in windows and some
	 slow video cards. 

         Sorry theres not more. But I've not have much time to do
	 stuff. Even this version has been sitting around for a
         while.



       For V1.1
       ---------
      1) It now doesn't crash in windows!
         The last one featured a new memory system with a fudge I
         thought would "NEVER" cause any problems... unless you had
         2 GIGS of memory! :-)
         however, windows being windows... it messed it all up!
         This is now fixed. It still crashes in the debugger if
         you trace for a while at high speed. (not in DOS)

      2) Timer1 is now 100% in SLOW and FAST mode!
         In FAST mode it will add exactly HALF the cycles. 
         (including fractions) This fixes the delay problems in the 
         last version. Many demos now work correctly.

      3) I have settled on 57 and 114 cycles for fast and slow mode.
         This fixes EXACTLY a few demos that seem to use timer loops.
         It also matches a text file I have on the speed on the system.
         "Genetic Fault" Now doesn't work in the Plasma section. I have
         A few Ideas about this.. and some other "glitching" could be
         due to the delay before drawing the screen...

      4) Added "ASO" instruction. ACE2 (version I have) now decompresses
         and runs correctly.

      5) Its getting a bit slower on Pentium machines... but faster for
         486 ones... Some feed back on this would help folks! :-)

      6) errr...Im sure I did something else <g>




       For V1.0
       ---------
       1) Fixed a bug in the keyboard routine. the "?" key now
	  works... stupid bug...sorry. :-)

       2) The emulator now runs at almost Plus/4 speed on my P100!!!
	  In mode 13 it runs faster! cool! The CPU emulation is still
	  in "C" - but after doing some in assembler, it seems that
	  it kills the cache and slows it down?!?!
	  So I'll prob leave it in C. Its far easier to maintain
          anyway! 

       3) This isn't "IN" as such, just lots of ground work...
          I have decided to "try" and get hardware 1541 emulation
	  This means I will emulate the full ROM/CPU of the drive,
          along with the hardware GCR reader. This will still work
          with .D64 files. (I'll just translate this into GCR data)
	  This will take a LONG time to implement. BUT it should work
	  with EVERY loader!!! I also don't know how fast it'll be as
	  I'll be emulating 2 machines at once!

       4) The timer is now 100% in 1Mhz mode. It even runs the demo I 
	  thought it never would! :-)
	  In 1.78Mhz mode...I don't know how I'll work this one!
	  It may end up close...but not exact...

         	  
	  Thanks to everyone that e-mailed me about releasing small
	  versions... You all want it so! Here you go!

	  This version is mostly a speed up... But theres still a
          LONG way to go. The CPU is okay, but the screen render is
	  CRAP!!! Thats next I think! :-)


	  I may be helping on the VICE project soon as well. This
	  is a very cool project to emulate ALL C= machines in one
	  project. It already has C64,Vic and Pet! AND It does
          hardware 1541 emulation! (very nice too!)
	  I have been asked to help and add Plus/4 support - which 
	  I'm going to try! It runs mostly on Unix (linux, Irix etc)
	  but they are doing an MS-DOS port as well..


	  As a result... development may slow down on THIS version,
          as I try and do that one... And in the end, this one may
          STOP altogether! (If the other one is better, they why carry
	  this on?) The other version is also doing SID emulation..

	  Any worries, questions.. e-mail me!



       For V0.9
       ---------
       1) I'm trying a new approch to the keyboard. (again).
	  But as I still don't know how it all works, Im still
	  playing. This "seems" to be better.. but still not right
	  as games like Elite STILL don't respond to keypresses..

       2) I've switched off VBLANK syncing by default. This speeds
          things up a bit. If you want to use the 360x240 mode, your
	  video card MAY insist on VBLANK syncing.. use the -v
	  command line option.

       3) Thanks to Luca/FIRE for pointing me to a NON standard
          opcode program. I have now added quite a few non-standard
	  opcodes. Many more decrunchers now work fine! Theres still
	  a few left, but some may never work as they EOR with the
	  timer!!?!??!? I may get it, but no time soon..

       4) Added register $ff1e correctly. This solves MANY raster
	  glitches. $ff1f has not been added yet...
 
       5) Timers now work. $ff00 and $ff01 work at a resonable speed.
	  But not 100% correct. Its right for the single clock mode
	  only.. Timer 1 will also reload correctly. Timers 2 and 3
	  just count down and set IRQ bits 3 and 4. they DON'T
          generate IRQ's just yet. Anyone have a game/demo that uses
          this? Timer 0 DOES generate IRQ's.

       6) Added ECM mode. "Genetic Faulty" now seems to work
          correctly. This is the ONLY thing I found that uses ECM! 
	  anyone got any others?? 

       7) Added the ECM+MCM screen black out. Again "Genetic Faulty"
	  uses this.

       8) Added a VIEW current frame in debugger, Lets you see what
          the screen is like so far. This is updated every scan line
	  so you can watch each raster being drawn. Quite cool.

       9) Added a picture saver! It saves .BMP's  Sorry its not
	  something like .PCX or .GIF, but BMP files are just SO
	  simple to write, no compression, no problem. you can use
	  Paint Shop Pro or something to convert it.

      10) Changed and added some keys in the debugger. See below for
	  a complete list.
	  Any requests? Anything more you'd like to see? FULL break
          points? anything? Im not promising, but you never know!

      11) Added this history.txt file. It was getting a bit big!
	  I also moved the other file around a bit.


       On the whole, its getting quite good now. It seems to be able
       to run 95% of stuff now. I did speed it up quite a bit, but
       then I added a whole load of stuff, so its back to where it
       was... typical! :-)


       Sorry for all these "little" releases. But Im just doing this
       when I've got time! V0.7 took SOOO long to come out that I
       don't want that to happen again. So, whenever I add something,
       I'll release it. If you don't think this is a good idea,
       e-mail me. I don't know unless you tell me!!!


				      
       For V0.8
       --------
       1) Fixed a NASTY bug in the debugger (of all things:-)
	  Was crashing the machine. Sorry!

       2) remapped GO key to F8 in the debugger.

       3) Added a Loader. Now when you press F10, you are presented
	  with a list of files to load! 

       4) The loader can now load .D64 type files, and will list the
	  disk directory when selected. Unless there is a real need,
	  I don't think I'll bother with .T64 files... who uses them?

       5) Added a bit of a delay to the raster IRQ's. This was
          causing some glitching in games like "The Hobbit" and cool
	  demos like "Genetic Faulty". I don't actually know the delay
	  the Plus/4 has on interupts, so I've guessed a little. It
          doesn't fix EVERY glitch... but its much better.

       6) The command line has changed. You no longer specify the
          GAME on the command line, but the directory where your
          games are. I'll add a directory system in later. 
      

       This relase is really just a fix for the debugger bug. It was
       quite nasty, but I wanted you to have another reason to get
       the latest version, so I added some other bits. Besides,
       thanks to "Marco Polo" I now a CD FULL of Plus/4 .D64 files!!!




       For V0.7
       --------
       1) The biggest change is that I have added MODE-X support.
	  This allows for a strange mode of 360x240. It also gives me
	  a 20 pixel area each side to draw the border. It even
	  allows for the effects of text in the border (which now
	  seems to work on some intros!).

       2) The joystick can now be used by pressing F5(on/off).
	  The keys are up,down,left,right and space. However
	  theres still some real problems with this...

       3) I have added some processor timings, meaning that its about
	  the same number of cycles a frame, it also helps some demos
	  work better.

       4) And a bad one.. Its a bit slower now because of the Mode-X
	  screen flip. This must be synced with the VBLANK, and it
	  was free running before.. so its a bit slower...sorry.
	  you CAN switch this off if you don't care about the
          borders.

       5) Command line options!
	  Not much just now. /? for a list, and -x to disable mode-x
	  The first command line option MUSt be a game! then the
          options

       6) Y smooth scrolling. At last. This is more or less in. I
	  never used this when writing stuff on the Plus/4 myself,
	  so I don't know exactly how it works. The basic screen
	  and split screen works, but You get garbage in the middle
	  on split screen games. Anyone know how this works?

       7) Keyboard routine has be rewriten. BUT! My keyboard routine
	  sucks! So you cant press RIGHT-SHIFT then the "/?" key!
	  as the "/?" key wipes the shift?!?!? anyone know how to fix
          this? Im also having problems with games like Elite and
          Mercenry and key presses. They don't work! Well, elite sort
          of does...at the start? Any clues??
	  Caps-Lock is now Run/Stop BTW

       8) F12 now acts as the soft reset (so F12+CAPSLOCK will give
          the monitor) Does NOT wipe memory!

          Sorry theres not more in. Im finding it hard to find time
	  to do more.


       For V0.6
       --------
       1) Added "DOS4GW.EXE" to the archive... sorry chaps!

       2) Added screen "BLANKED" mode ($ff06, bit 4)

       3) Register $ff1c and $ff1d are now, read write. (I hope!)



       For V0.5
       --------
       1) Most games now seem to work! whaahay!
	  Still can't get the processor speed quite right (cycles per
          scan line). Some require about 61, and others about 100!
	  Ah well, I'll work it out..

       2) The packer problem in V0.4 turned out to be corrupted
          files! great! the best kind of problem!

       3) I've added scrolling in X, but not Y yet...

       4) Fixed up small problems in the raster system...
	  I still seem to get a glitch in graphic mode 2
	  (BASIC's split screen graphics). There shouldn't be 
	  a black line there... Mmmm..

       5) Fixed some crashes, but it still happens now and then...



       For V0.4	
       --------

       1) Well, I've added the bit maps modes. Hires, and Hi-res 
          multi colour! What this means, is games like 3DPOOL now 
          work!

       2) I've also added a command line option to allow you to load
          any game (.PRG file) you want! Most still dont work, so
          don't get too excited! but the problems seem to be with the
          packers, and not the games... 
          I'm still working hard on it, so don't worry!

       3) working games so far... (that de-crunch that is..)

	  All basic programs seem to work...
	  Finders keepers (default game)
	  Trailblazer (the file called "a" in the .ZIP??)
	  Airwolf - except the scrolling....(Next?)
	  3DPool!
	  if you find any more, let me know!



