	Z80 Emulator
---------------------

CHANGES to 1.0.44

bug report by

scott.l.baker@gmail (thank you for your bug report..it helped alot)
C=0
A=0xFA
DAA
should = 60 but =00

added test for carry after adjust of +6...  this makes everything greater than F9 cause +60 to be added in second step of DAA...fixed it for add...dont think DAA for SBB needs fix, never borrows during adjust of -6 (lsd must be >9) nor during adjust for -60 (msd must be >9)

this fixes problem with INITDIR (CPM3) where the program bombs if SPT > 60

----------------------

CHANGES to 1.0.43

removed contact info... do not attempt to use the e-mails i used to provide... someone else has access and is intent on hurting anyone who uses this emulator...

i never charge anything for this emulator or for anything associated with it. nor do i sell my real hardware.

---------------------

CHANGES to 1.0.42

fixed so bug in KILL is not seen when deleting files with long path or spaces

fixed bug in dropzone where skipped files messed up the dropzone count

added extra test to make sure filenames are valid for dropzone

moved Dropzone Format menu item to Options.

fixed bug in NET device where restart converted to client

---------------------

CHANGES to 1.0.41

fixed Item in select for CursorLeftWrap (was erroreously CusorLeftNoWrap)

fixed dropzone so that it no longer causes EMUlator to crash when unused file pointer is used to read filenames.

Fixed DC to use VME10 96TPI disks properly. EXM was wrong.

---------------------

CHANGES to 1.0.40

Added extra operating mode for the Network devices

  One byte at a time... this mode transfers every byte in its own packet(old way)
All other modes transmit a whole Length number of bytes in one packet
  First byte is length...
  First byte is length, but do not tranmit length with packet
  First two bytes are length (Big endian) (WARNING DO not send more bytes than Maximum)
  First two bytes are length (Big endian), but do not tranmit length with packet
  Z80Sim Mode ..second byte is length.. 
  Last Character is terminator
  Last Character is terminator, but do not transmit last character

NOTE using Z80sim mode for the Z80sim TDOS speeds it up.
 
NOTE the tdos 1.43 network drivers can be modified to out length as first byte to speed 
     them up..but as shipped require one byte at a time

Use SET TERMINATOR menu item to set the value of the terminator character.

RESET NET IO is to clear failed packets 

(WARNING DO not send more bytes than Maximum allowed in TCP/IP packet) 
   Have not tested, but Winsock might break into smaller packets, or might NOT.
   Might lock up or might self fix ..simply don't know

Fixed Load Save dialog

Clear memory menu now also sets memory attributes to default as RAM...

Added Load As ROM to main z80 emulator menu... this does the same as LOAD  but also causes 
the memory atributes to be set to ROM.

CAUTION...ROM is permenent until you either LOAD as RAM (the normal load),
 or Clear MEMORY, or use debug console to set atributes to RAM..

CHANGES to 1.0.39

ported TurboDOS 1.43 to z80 emulator (separate disk image package, also contains Mario Viara's TurboDOS 1.30 for Z80 sim, which runs on z80 emu, too)

fixed bug where drive path is wrong for drives above 13

added better error report to FIF, but still really wrong...added errors to FIF help file

added console 6 to z80 sim ports at 0x32 and 0x33. this can be used as client...
32: 	Console 6  status/control
33:	Console 6 data i/o

there is no console 5 in z80 sim support

 *	32 50 - client socket #1 status
 *	33 51 - client socket #1 data

modified NET dev to be a bit more robust and efficient(still very slow)

added option to NET device to turn OFF the Issue message...the Issue message MUST be turned OFF to allow TurboDOS networking to funtion properly..

note..when using NET devices as Network connection, turn off CRLF=CR and ISSUE


added check for IMD file  trk, sec, head errors , if bogus Drive Parameters...

made major modification of how z80 emulator's disk controller handles IMD files...
the check box, USE SECTOR MAP, basically does nothing, because nothing in the emulator uses it NOW..however, now the emulator always uses the sector map to access the IMD image...
ZERO BASE ADJUST is used to detemine HOW the emulator uses Sector Map in IMD file...

if ZERO BASE ADJUST is NOT selected, then the sector map in the IMD file is used as is..whatever sector numbers in the IMD file must be used to access the image...  also, when ZERO BASE ADJUST is selected, selecting a Logical sector size which is NOT the same as the Physical sector size makes no sense..all sector numbers are validated using the sector map, which contains physical sector IDs... 

if ZERO BASE ADJUST is selected, then the emulator acts as before... the IMD file's SECTOR MAP is used to create a second SECTORZ map , which is zero based. this second sector map is always created when a IMD file is processed...and all requested sectors MUST be ONE based... (the emulator substracts 1 from each requested sector number to calculate the IMD sector.. if ZERO BASE ADJUST is selected, then you may access the disk using the auto-de-blocking function of the emulator... you can set logical sector size to something smaller than physical sector size... 

WARNING--ZERO BASE ADJUST may fail to work with disk images where the sectors are NOT sequencially numbered... 

assume a track on a disk image with 3 sectors, numbered 85,86,83..the new SECTORZ map would have sectors numbered 2,3,0..

typically you should only use disk images with sequencially numbered sectors when using ZERO BASE ADJUST... this allows disks with sequencially numbered sectors to be accessed one based even if zero based... 0,1,2 would remap to 0,1,2 and 1,2,3 woud remap to 0,1,2 , but since the emulator, for raw and ZERO BASE ADJUSTed images, always expects the requested sector number to be 1 based , you must use 1,2,3 as sector numbers. 

OK.. it's a mess... but when i first wrote the emulator, i thought all disks had sequencial numbers starting with 1.. 

all raw disk images must be one based with sequencial sector numbers... (note-XLAT tables used in CPM don't count)

IMD files can handled three ways...

one ... 0 based image where user must request 1 based...(ZERO BASE ADJUST selected)(can use auto-de-block)

two ... 1 based image where user must request 1 based...(ZERO BASE ADJUST selected))(can use auto-de-block)

three ... custom physical sector numbers where user must use actual custom numbers as request...(ZERO BASE ADJUST not selected))(can not use auto-de-block) this will allow an OS to make 0 based requests, to a 0 based image...also SDOS should now work with IMD images..

---------------------

CHANGES to 1.0.38

fixed disk preamble and postamble to allow larger than 256 bytes(some IMD files have large comments).

made a few changes to the Help file.

corrected spelling of Finished in Debug Console

added support for VME10 CPM68k 5.25 inch disks to DC.COM.. 

modified IMD processor to correctly open IMD files with missing tracks(excluded tracks) 
the Drive Properties will show invalid SPT of 0... that's because a missing track has no info at all to describe how many SPT... so you must input it... if the track is a track that will never be accessed (system tracks) then just use any value you like... best to use the value that should be there, but if you don't know it??? ...any sectors on a missing track, will return the same as missing sector data... (zeroes or error)..(VME10 5.25 inch disks must be read with a disk controller, that can read FM encoded sectors... so some VME10 disks are missing track 0...as well as other system disks with the same problem.)

fixed bug in NEW DISK (for IMD) where Homo/hetero is ignored when calculating total tracks..now it correctly ignores number of System tracks and number of Track 0s when disk type is homogenous...

started new emulator to simulate a VME10 to run CPM68k, VersaDOS and ATT SysV...if interested, feel free to contact.. 

in debug console, fixed set default bank to set Last Bank Searched correctly

fixed bug in CPM 3 BIOSihv33 (now v331) where xdph was accessed wrong (affected only drives with SPT>255...)CPM bios 23 does not have this bug because dph is saved in seldsk rather than in LOG$IN..


---------------------

CHANGES to 1.0.37

added ambiguous Memory Search to Debug Console or emulator and Dissassembler in package AS8080
example ..
 first define Find Criteria
   >>DFC 4 0x?4 0b11??0000 Te?t 0x20 it
    this defines an ambiguous search criteria numbered 4, which looks for 9 bytes
    Question marks match anything  (0x for hex 0b for binary everything else is characters)
    note that blanks can not be entered ,since the blank is the field separator...
 Whence the criteria has been defined , then do the search
   >>Find 6/100 200 4
    this searches address hex 100 to 200 in bank 6 for criteria in Define criteria numbered 4

fixed run/stop display when RST in debug console is used. 

changed debug console's method of specifying the Bank... now <address>/<bank>

fixed incorrect display of disk size when hetero and use pre/post was active

disk size displayed does not include IMD extra data.

added path search for LIB and INCLUDE files for AS8080

added individual search path for each drive A:-P:

added ability to create an IMD file to Create New Disk Image..

rewrote how the emualtor handles IMD files... now, when the emulator opens an IMD file, it creates an IMDfile Class object.. the IMD file is processed and the IMD file object filled with everthing in the IMD file except the actual data..  interleaved, compressed, and error sectors are supported... when an IMD file contains sectors without the full data, the file is forced to open, Read Only...  sectors marked as errors return a read error if option is set...compressed sectors are dynamically de-compressed.. interleaved sectors are auto matically de-interleaved... 

sector maps are used to de-interleave... cylinder and head maps are only used inthe WD17xx read track address...if IDMflag is not set...

disks with more than 3 areas are now handled differently for IMD file... the first three areas are used to set drive properties.. the remaining areas are inaccessible, THIS IS OK for most, because usually the extra areas are anomalies, cause by re-use of an already formatted real disk, with more cylinders than reformatted to. ( a single sided disk with 41 cylinders might be re-formated as a 40 cylinder disk with 2 sides.. now the 41rst cylinder exists only on side one , not side 2..and is extraneous... IMD just put what was there , in the file..)

IMD files NO LONGER use the "Use Pre/Post" flag ... IMD files appear the Same as RAW files now. RAW images may still use the Pre/Post flag (Altair floppy with 137 byte sectors) If an IMD file is Opened the Pre/Post flag is ignored. 

WARNINIG - It is not wise to try to change IMD file drive properties (except for Logical sector size) you can try, but you probably won't get what you think... because geometry is immutable with IMD files

WD17xx now used the Adress Mark info from an IMD file in the read track function(unless the IDMflag option is set, then for the emulator does exactly what it used to do)...the IDM flag  simply simulated the existance of Address Mark info(for VFII), since IMD files have it, may as well use it.

updated disk packages for Cromemco, Jade and DSFDCONE

fixed CROMEMCO.TAB file to include attributes.. 

added several new TAB files.. They are sparse and need additions to improve functionality

Changed XYoffset to Xoffset and Yoffset, for GOTO XY Custom...

added wrap/nowrap to TTY
added line length to TTY

fixed DSFDCONE simulation to handle the format command without trashing a disk...it ignores the command...(ignores an 0x80(write) if Init switch is ON in confgiure IO DSFDCONE tab). The INIT program is a big NO OPERATION.  Formatted disks are all 0xE5s, so just create a blank disk.

added auto boot to DSFDCONE, controlled by switch in config IO DSFDCONE tab
added system reset for read of port 125 or 126 , controlled by switch in config IO DSFDCONE tab

WARNING-SYSTEM reset function and AUTO BOOT function is NOT saved, so you have to set it if you want, each time you start Z80 emulator... 

WARNING-AUTO BOOT on Reset will cause DSFDCONE to auto boot even if not mapped into the current IO map. So, dont set unless you are using it.....
 
removed CDOS support from Disk configure programs and created a new DCC.COM to do CDOS disks...required because CDOS disks can have number of files in directory stored in disk label... CDOS disks contain some meta data that may confuse CPM.. better not to write to them unless you know what you are doing....some CDOS meta data makes some CDOS file invisible to CPM...

modified DC.COM to acept command line option to choose IMD and HD, and moved IMDs to IMD and HDs to HD..invoke as A>DC IMD,  added formats for 8 inch CompuPRO disks... IMD only...


DCC.COM's auto configure of NoN-IMD sets the disk to IBM 3740 first then configures, so if it fails, disk is left configured as IBM 3740...for IMD, auto config, drive is left as IMD set it.. 

corrected one CDOS format and added formats for all 8 and 5 inch CDOS formats..


---------------------

CHANGES to 1.0.36

Added Imsai FIF simulation and new disk package to support
Added new disk package for DSFDCONE.
Added new disk images to INTELLEC disk package

Fixed problem with Generic Device's default Interrupt enable mask and value(sometimes a value could be written to enable interrupts erroneously). 

Fixed Disable All on breakpoint form to work properly and disable I/O all's

Found in Blinking lights and flipping switches a horendous bug in saving and loading IO Panel files (.IOP) any IO port that used two panels would save two definitions of the port redirect data.. on load the last loaded was used even if , now , a port was defined wrong... corrected load of old format to prevent...added new save format

also, discovered that i forgot to change the MAGIC when i added a field to the files, so much older files(prior to 1.0.25) are all read wrong... if you read in the old .IOP files, but they might crash the emulator.. the emulator makes a new format that saves and restores corectly... best to recreate ALL your IO Panels (at least those made prior to 1.0.25)...

fixed B and L so that you can not assign the same in or out function on the same port to more than one panel

---------------------

CHANGES to 1.0.35

fixed error where labels and caption is not updated properly after certain Breakpoints

modified CPM 3 ih disks to CPM 3 ihv33 disks...ihv33 disks use auto-login on drives A:-D:, E:-F:, and I:-J: so that PC1440, 4104 and 8190 images auto login if they have DDs or IDTs...
(added three disks with proper system tracks for use with ihv33 BIOSes...)

added program INITDIRN.COM for CPM 3...this is a simple version of INITDIR to use with PCxxxx disk images.
(original INITDIR fails to work with disk containing more than 59 physical SPT)

added program BLANK.COM ... this program will write 0xE5 to the entire Data Area of a disk, leaving the System Tracks and other logical disks which may be in the disk image file unaffected.

changed DPB.com to work with either CPM 2 or CPM 3

changed putsys.com to work with either CPM 2 or CPM 3

changed zcpr.com zccp.com anc ccp.com to detect cpm (not) 2

added Disk request DMA bank to NDI interface, select =0x11=17

fixed bug in clock where bcd value was incorrectly calculated

fixed update in clock so matches help file

fixed clock to return binary correctly

corrected spelling of "emulator" in Uload error message

fixed ULOAD to check for open Uload file...

---------------------

CHANGES to 1.0.34

added periodic tabs to TTY

fixed bug where density of intellec FDC0 is saved for both FDC0 abd FDC1

fixed upper case bug in putsys

rewrote DLOAD for CPM to compile with HI-TECH-C 

changed DLOAD to allow user to specify either TEXT or BINARY for operation.. (corrects problem with Text files that are MOD128 without CNTRL-Z)

rewrote ULOAD for CPM to compile with HI-TECH-C 

fixed bug in ULOAD, where if text file is transferred with no CNTRL-Z, locks up

fixed bug in Imsai 9k CPM version of basic... turns out that the bug was not the Tarbel BIOS but in the Basic... (Larry Greene discovered)

fixed interrupt assignment to check for invalid values, and added ability to set a device as "un-associated" with an interupt stub...(not all dev support un-association... )

fixed bug where wrong info is loaded for interrupt for tuart.. 


CHANGES to 1.0.33

added to debug console INT and RST commands. RST command s can be used to simulate interrupts for testing, or to simulate push buttons on the MDS-800.

(SPECIAL THANKS TO LARRY GREENE FOR HELPING DEBUG INTELLEC AND TORRONE FDCS)

FIxed error in COM dev that allowed output ready to get stuck at NOT ready...(SPECIAL THANKS TO WOLFGANG KOCH FOR HELPING FIND THE PROBLEM)

Added HaltFactor ... the slider next to the Throttle is used to adjust the number of times during a HALT instruction that the Emulator releases control to the OS.. HaltFactor should be adjusted to make interrupts using the HLT instruction more responsive.. There is a trade off between Realtime(VB timer) TImer performance and faketime(TS based) timer performance... you must pick a balance...as before, the throttle can also be used to make interrupts more responsive.. 

Fixed bug in timers.. Timer1 control register now controls timer 1 instead of timer 0

Fixed bug in TUART where wrong bit of interrupt mask was used..

Fixed bug in loading of symbols from HEX file produced by PLM xCompiler. Also fixed in AS8080's dissassembler 1.0.12

Corrected bug in Status Value field of Device IO properties... correctly interrprets as hex now. 

Added ability to invert DATA io ports for Generic devices... set invert for In or Out via dev IO properties...

Added feedback to DROPZONE  double click Dropzone image for info..

Added Digital Systems FDC One .. this is for an old original CPM..and some IMSAI systems

Added choice of Binary or Text input mode for COM DEV 

Fixed bug where COM DEV input was incorrectly converted to UNICODE (UCS2)...

Added DROPZONE selection for ISIS filename specs (6.3 AlphaNumeric)

Fixed Intellec FDC Result Type to return right values..was returning only 0x00, now also 0x02 (32a)

fixed Intellec BIOS PROM to "fakely" return RDY to NRDY transition in CSTS, so that "paste as input" and key definitions will work....(32a)

fixed Intellec BOOT/INIT PROM to actually check for SPACE, as it says it will...


CHANGES to 1.0.32

Fixed bug in COM dev where buffer overrun occurred on fast input. buffer overrun can still occur if there's no handshaking.

Fixed bug in load binary file to properly detect end of memory

Fixed bug in IO breakpoints, that printed bogus info 

Added MDS800 Intelec FDCs .  Each FDC can be configured as Single or a Double density controller. Interrupt stubs can be specified. And Disks can be assigned. 

Added modified Intellec Series II PROMS, modified special for Z80 emulators hardware. This allows ISIS and original DRI CPM for MDS-800 to run natively.

added a special IV mask register for use with the Intellec FDCs, but should not be used since it needs to be re-done, but if you absolutely need to handle interrupts from the Intellec FDC, its there. It WILL change.


CHANGES to 1.0.31

added the underscore(0x5f) as disallowed characters in a CPM filename... not documented but the source indicates..

changed max file size in dropzone for CPM to be 8MB.. What out for disk full!

added Generic DropZone usage, which returns windows filename instead of CPM fileName.. the user's guest OS program must process... Z80 emu will not prompt for anything, and the windows file name will be placed in the CPM file name in the drop zone.

Warning... if Generic Dropzone Usage is selected and if you use CPM's Dropzone program, files with invalid names may be created..

modified NDI's login so that the login sector is always at disk image byte offset 128 * 4 and is always read as 128 bytes thus ensuring success. The NDI New login can not be used to read larger sectors. (use regular read for that. the reg read can be made to work the same as a Login, except no external files data is used, but like in the Jade z80emu bios, you must configure for a regular read to ensure successfull read of the log sector before attempting. )

Added ability to select Old Login method if desired. (doubt it is needed, but there anyway)
NOTE - old login works fine as long as you never use disks with differing sector sizes in the same drive.(reading a 1k sector into a buffer of only 128 bytes will overflow and possibly crash OS, the drive must already be configured for the appropriate sector size)

modified  NDI's New login function (command=4) to first check the existance of external files which may contain IDT or DD structures, and then supply the contents of the file as if the data was read from login sector. 

Files are searched for in this order(in the image file's dir)...

<imageFilename>.IDT ,<imageFilename>.DD, Default.IDT ,Default.DD 

IF none of the files exist, then the regular login function occurs (sector 5, track 0(128*4), is read) This allows a disk with something other than an IDT or DD already in sector, 5 track zero, to still be logged-in, by simply providing the login info(DD or IDT) in a separate file. (<imageFilename> is the image file's full name)

NOTE the names of the files do not need to represent what is in the file. Any data in the file will be supplied as though it was read from sector 5, track 0. The extensions .DD and .IDT are purely mnemonic

modified BIOS22D-v2.2 to BIOS22Dv2.2.1 to allow improperly written programs that call bios directly to work if they fail to send 16 bit sector numbers.....sector numbers and track numbers MUST be 16 bits, however so as to not require re-writes of lots of incorrectly written direct bios calling programs(copysys.com is one), for disks with SPT less than 8 bits, the bios masks the upper 8 bits

created new bios(derived form BIOS22Dv221) Bios22d-v2.3 that uses auto disk log-in.. simular to the old Bios22/I(and Jade bios) auto log-in, but very different... the magic is different, and now the bios also configures the NDI using data stored in the Disk Definition sector. also there's no default. The Magic can be either the old IDT(I.D.Table) or a new DD(Disk Definition). If a disk contains NO disk definiton sector data, then the BiosDv23 does not make any changes to the current disk configuration. this allows existing disk configuration techniques to still work. 

moved directory buffer in BIOSDv2.3 to end of BIOS so attempts to select a disk with sectors larger than 128 bytes will not trash the bios code. The DMA device always DMA's the whole sector. Now, the dir buffer overflows into the area reserved for XBIOS, so if XBIOS is currently loaded, then it gets trashed (and down goes the bios) Either, don't attempt to access disks with sectors bigger than 128 bytes, or don't load XBIOS.

Added new disk definition source and binary for PC1440, plus a 4MB (PC4104) and an 8mb (PC8190) disk for use with BIOSDv2.3..  (REMEMBER, copysys copies the disk definition sector too, so DO NOT (only) use copysys to transfer system tracks from one size disk to another, if the disk cantains a disk definition table. you must put the correct disk definition (in sector 5) on the disk too)

(NOTE - the new DD looks to an old BIOS, like BIOS22 and BIOS22I as though no IDT is present.)

modified DC.com to version 2.2.1 to support the new PC4104 and PC8190 formats. Needed for BIOS22Dv22. Not really needed for BIOS22Dv23.. in fact the auto logins will undo dc.com config if there's a DD or IDT on the disk in question.

Added a CPM-80 program, PutSys.com for PCxxxx disks with 72 SPT and system in track 0. Putsys works a little like Copysys, but you can specify parts of the system rather than the whole track. If you specify a file, then the system part comes from that file, if no file is given then the system part can be read from another disk. Writen in HiTech-C.

CHANGES to 1.0.30

Changed speed display to indicate hertz mhz or ghz

Changed commandline to reject any value with ".",":" or "\" in it. this prevents erroneous qualifiers being created when the emulator is started via drag-n-drop or explorer executing a standard verb...such as sendto, open etc...

Fixed CRT to NOT loose abilities and navigate and key definitions when unloaded
added Set tab at current position, and Clear tab at current position 
added TabWrap, and TabWrapScreen
added BackTabNoWrap, BackTabWrap, BackTabWrapScreen
added Filled and Unfilled Caret as cursor (Hazeltine style)
changed periodic Tab settings to include column 0(zero)
added AutoLF, AutoCR, ANSI, Ascii, Parity, CursorType and Cursor Front/back to TAB file
fixed failure to sync GUI with NOWrap in TAB file

Fixed saving of FixedFontsOnly Option

added 4 IO breakpoints
fixed error in gui on Breakpoint form when write match data is invalid.
modified gui for Step/Cont at BreakPoint and Single Stepping

changed CRT form to autoredraw

corrected some typos in help file

made slight changes to Dropzone's CPM helper program.

added new utility programs for displaying windows files with line numbers
 and for calculating CPM DPB and XLT values


CHANGES to 1.0.29

added cromemco 3202 attribute codes to CRT emulator. Created new Cromemco.TAB file.

Changed Blinking attribute from strikethrough to bold (not HI)

added the .IHX extension as a valid intel hex extention for GNU Small Device C Compiler(SDCC).

NOTE HLT instruction no longer releases OS every instruction cycle. this improves interrupts but stiffles OS reponse during waits. Now released every 65535 instructions.

note can not figure out how to fix error 10014 when starting main server under WINE.

changed printer font select to include "all fonts" not just printer fonts. Also fixed bug in AS8080 Assembler and disassembler, and Image build to display all fonts instead of printer fonts only. (don't have to install printer anymore, but recommend installing Adobe PS driver for windows, with Ghostscript PPD, to FILE. this makes all fonts available, plus is a good driver.)

fixed modal lockup when DiskDebugMode is on during emulator initiated boot. Simply turned off Debug during Boot, because i can not figure out how the CRT Initilize event is being called after Debug form asserts Modal display. might be VB6 runtime bug. Now, during Emulator initiated boot, NO debug messages will be made. Debug messages will still be issued for any disk IO initiated by software.

---------------------
CHANGES to 1.0.28

added ability to define and switch upper bank memory. 

works similar to Common Memory Start. 

added ports 

0xEE Upper memory bank select
0xEF Upper memory start address(high byte)

If common memory start is 0xC0 and Upper Bank Start is 0xFA then
Lower Bank runs from 0x0000 to 0xBFFF, (in selected memory bank)
common memory runs from 0xC000 to 0xF9FF (in bank 0)
Upper Bank memory runs from 0xFA00 to 0xFFFF (in selected upper memory bank)

If common memory start is 0x80 and Upper Bank Start is 0x80 then
lower bank runs from 0x0000 to 0x7FFF and upper bank runs from 0x8000 to 0xFFFF
with NO Common memory

this feature allows some of the upper memory in banks 1-15 to be used easily.
Bios 22D version 2.1 uses the area from 0xFA00 to 0xFFFF as disk parameters for drives A-P
upper memory in bank 0 is drive A: and upper memory in bank 1 is B: etc,etc bank 15 is P:

modified DC.COM , DCI.COM, and DCJ.COM to work with BIOS62Dv22.ASM

---------------------
CHANGES to 1.0.27

Added CPM program DropZone.com to support DropZone. 
To use DropZone, simply drag some files from windows explorer to the DropZone, then run the program DropZone.com, with either no parameters or a Drive Spec. 
If you feel you made an error in the choice of files dragged to the dropzone, simply run "DropZone RESET". This removes all files from the dropzone. 
To see what files are in the DropZone, simply run "DropZone LIST". 
After you run DropZone.com with eihter no parameters or a single Drive Spec, the Dropzone is automatically reset.

Warning-draging any files to the dropzone removes files already there. is the dropzone is in use by a CPM program, Dropping files is prohibited. This is to prevent overloading of the DropZone. The DropZone can hold 255 files at a time. 

added DropZone to main form. Drag Windows' files from Explorer to the DropZone to place filenames in internal filelist to be used by DropZone.com

added default User Number drop down list box for DropZone. 

Added followinig ports to support Drop Zone

Ox80: 'Dropzone File Count/Set Current File
Ox81:
Ox82: 'DropZone Windows File Name byte (read until NULL)
Ox83: 'DropZone CPM File Name byte (read until NULL)
Ox84: 'DropZone FileSize byte 0 LL
Ox85: 'DropZone FileSize byte 1 LH
Ox86: 'DropZone FileSize byte 2 HL
Ox87: 'DropZone FileSize byte 3 HH
Ox88: 'DropZone Input Status/Control
0x89: 'DropZone Data Input

(0x88)STATUS 	0=NOT EOF, 1=EOF (note - status is reverse of DLOAD)
(0x89)DATA

	in	status
	if 	status=0 then 
		in	data
		in	status
		if 	status=0 then 
			data is good
		else
			data is not valid, no more data
		endif
	endif

Read of port 0x80(File Count)indicates how many files were dropped in the DropZone.

Write to Port 0x80 is used to select which file to open (1 through File Count)

After selecting a file, you can read size and filenames.

When finished with the DropZone, write a zero to 0x80 to reset DropZone, DropZone can NOT be used again until reset.

fixed Z80 Emulator DLOAD and ULOAD error messages so they are not suppressed. 
added code to prevent extraneous DLOAD errors.

Fixed CPM program Dload to not Clear file is download is not done.

added feature to display server error in popup label if message is too big for the existing label size

---------------------
CHANGES to 1.0.26

Added ability to place qualifier on Command line which is used to separate registry values from other instances of the Z80 emulator.  For instance, to run two copies of z80 emulator simultaneously, simply create two Links for the emulator and edit the proerties of one Link to contain a qualifier. 

(some path to the executable)zemu.exe Cromemco

Now there will be two sets of registry keys in "VB and VBA Program Settings", one called "zemu" and the other named "zemuCROMEMCO"

Only A-Z, a-z, and 0-9 are permitted, all other characters will be squashed.
The qualifier only separates the registry entries, everything else is still shared.
Also note, that each new qualifier starts out with all default values.
The only way to remove these qualified keys(or the default keys) in the registry, is to use the registry editor. BE CAREFULL.

Added a simple Network server. Can now use a TelNet client as a generic device.

There is a Main Server and each NET device can act as either a Standalone server, a Child server, or a Client.

The Main sever, listens on the Main server port. Any connection requests are passes to the first available Child server, if that child server is NOT in use.

When a NET device acts as a Child server, it can accept connection requests from the Main server(which listens on the Main server port).

IF no child server is available the connection is made temporily and a message issued. then the connection is closed.

When a NET device acts as a Standalone server, it listens on its own Listening Port. A Standalone NET device server can NOT accept connection requests from the Main server.

To make a NET device a Child server, Start as Child Server(via menu).

To make a NET device a Standalone server, Start as Standalone Server(via menu).

To make a NET device a Client(default), do nothing. To connect via Client, set hostname and port and Connect(via menu).

When a connection is made to the Main server, it is "pot luck" as to which generic Device it will become. This is fine for BBS style operations where it does not matter which Device you are connected to. (They are alocated sequencially, as available.)

When you use a Standalone server, then you know which generic Device you are connected as.

Each Net device will be base port + device number. Default base port is 30000... by default port for dev0 is 30000 and port for dev 6 is 30006. You may select any port for a Standalone server. 

The defualt port for the Main server is the standard TelNet port 23. You may change this if it conflicts.

(remember- most telnet clients are ansi terminal emulators.)
Works with MS TelNet, MS Hyperterm, and GNU TelNet.
(make sure the telnet client is set up to have the correct number of lines per screen as required by the software you are running.) 
To work properly, the TelNet client MUST be placed in Character Mode NOT Line Mode.
It appears to work in Line Mode, but does not. 
The NET Servers are raw TCP transfers and support NO TelNet negotiation functions.
NET device server can substitute CR for CRLF on input, if TelNet can not.(some TelNet clients send CR NUL)

Added Terminal Emulator program for CPM to Boot62bd.img

Fixed bug in saving of paths for RTF and TXT files

Changed default 16/64FDC dip switch settings.

Added new memory load file format for PTSOL ENT files(paper tape)

---------------------
CHANGES to 1.0.25

z80 emulator will now boot CROMIX.

Added cpm program to boot62bd.img that hot swaps warm boot CCPs.

Corrected Incrementing and decrementing instructions to work properly with interrupts. the instructions now refetch for each iterration. This allows interrupts to occur in the middle of the instruction.

Re-tasked Version Label, to display number of T-states that have passed. This is an indication of how fast the Emulator is running. The speed is variable. depending on the mix of instructions and IO accesses, the speed will fluxuate greatly. 

added ability to tell the emulator what speed it "thinks" it is running at. this makes the New T-state based Timers generate proper 1uSec timing pulses relative to apparent t-states. 

added index pulse generator for WD17xx. The WD17xx now supports all commands except Read Track. Index pulse generator will produce either 300rpm or 360rpm pulses relative to t-states. a t-state timer can measure the index pulse properly regardless of what user observed speed the emulator is running. the pulses and timers are all relative to t-states.
(this addition allows CDOS Init disk program to work, but only if disk image is already in the same format as INIT intends to write. SPT C/HPD and Sector sizes, density and clock must match)

modified Timers to either measure real time(v 1.0.24 or earlier) or measure t-state relative times. The emulator now keeps track of the number of t-state that pass, and can generate Timer ticks relative to the passage of t-states. 

added Disk Debug Mode which prints messages at every disk command completion (note-WDread and WDwrite commands are not complete until the data has been read or written. the message is issued before any data is transferred.

Modified how IMD files are processed. Now Clock/Kind is set exactly to what is in the IMD file. This means that some Stuff will quit working. So i added some options to determine the method used to Match Clock Kind to what is requested. 

Modified how Clock/Kind is used in determining if a request matches a Clock/Kind of a track. From a Menu on the main form, you can select the type of Compare for Disk Clock/Kind. There are 5 compare modes.

1)Dont care-- in this mode all requests match any track Clock/Kind type.
2)Exact-- Only requests that exactly match the Clock/Kind match.(this is how versions < 1.0.25 worked)
3)Requests for 3,5,8 match any suitable Clock/kind--- 

  Request    matches     Clock/Kind of track
     3inch             3inch, 250, 500, 1000khz
     5inch             5inch, 250,300,((500khz))
     8inch             8inch, 500khz
   All others must match exactly

4)Disk Clock/Kind of 3,5,8 match any suitable Request--- 

  Clock/Kind of Track   Matches       Request
        3inch                   3inch, 250, 500, 1000khz
        5inch                   5inch, 250,300,((500khz))
        8inch                   8inch, 500khz
   All others must match exactly

5)Rational---
  Request    matches     Clock/Kind of track
     3inch             3inch, 250, 500, 1000khz
     5inch             5inch, 250,300,((500khz))
     8inch             8inch, 500khz
     250               5inch 250,(300)khz
     300               5inch (250),300khz
     500               3,((5)),8inch 500khz
    1000               3inch, 1000khz
   All others must match exactly

Values in ( ) are only matched if Option "250=300" is set. This should be normal as 300's are just 250's that were defined as 300' because they were read from an HD drive. 250's are read at 250 on DD and QD 5inch drives, and at 300 on an HD 5 inch drive. 

Values in (( )) are only matched if Option "Allow 5 Inch HD Clock" is set. The only 5 inch drive that uses 500 is an HD, and they did not exist when most of the stuff this emulator uses was new. 

fixed bug on breakpoints page where data values disappeared when closed. Added 16 bit capability to datapoints. Can now input data values in decimal or hex.

fixed bug in z80sim IO for reading printer output status. Status is output status now.

added return to defaults in several places.

Made hex and/or decimal display of port address and data visible on Blinking lights and flipping switches.

Added OnLine/OffLine switch to printer.

fixed bug, where a backspace sent to a TTY when display text is empty, caused crash.
fixed same bug in Printer

fixed Cassette IO properties bug where no type or name was saved or read. Also fixed bug where Cassette path was not processed properly.

Fixed timer bug where TICKED is reset during ack when ack mode=2. Should remain set until after write to control register. Corrected Error in help file about how Timer's I bit is reset.

Added interrupt capability to New Disk Interface. Bit 3 of command byte is enable for command completion interrupt. Each invocation of command must specify.

Added interrupt capability for Generic devices.  Each Generic device can have the control bits which control interrupts for TXempty and RXfull defined on the IO Properties form. Some devices, like the 8251 do not have a single control register, so this paradigm does not work properly. Also some other devices violate the simple paradigm such as the 6850.

Added ability to chain an interrupt to another. Example, all interrupts for the cromemco Tuart device B can be chained to SensA interrupt on Device A. This allows the tuart to respond appropriately for 8080 interrupt mode. Intrrupt ack mode 3 and 4 allow chaining. ackmode=3 is for devices with interrupt enable bits in a control register, while ackmode 4 is for devices which must rely on the chained-to device for interrupt enable control.

It looks like many devices rely on external Interrupt Hardware and then jumpers are set and wires are run (8251, uPD369, uPD379, 1650 , etc). Sometimes, even registers must be created. Can use unassigned generic device as chain target, for devices like Tarbel disk controller which needs the WD17xx Intrq connected to some interrupt generating device. 

Added logic to make 8251/9551 control register work .
WARNING - 8251/9551 txEN does NOT disable tranmission as specs requiere, it only diables interrupts from txEmpty. Based on software examples, this should not hurt.

WARNING - 8251/9551 assumes pins for tx and rx are connected to an IRQ source, therefore as soon as interrupt are enabled , interrupts can be generated. Use USART if interrupts are undesired. USART dumps control bits, but otherwise works as a 8251/9551.

added logic to make 6850 ( and 2SIO because implemented with 2 6850s) control register work properly with CR0,CR1 and CR5. Only works when 6850 (or 2SIO) is selected from drop down list. Does not work if custom or from file.

Added interrupt capability to FDC16 serial port.(still not good enough to run CROMIX)

Added interrupt capability to TUART serial ports and SensA/B and XI7 (PI7).

Added interrupt capability to PRI dot matrix parallel port.

Changed IO Properties. There's only one set of Generic Device interface IO properties now. Each Generic device 0-15, assigned to CRT,TTY,PRT,SPL,SER, no longer have their own IO port proerties for each CRT,TTY,etc. This is more correct. Now IO properties describe the Port and selecting a CRT, TTY, etc is synonymous with plugging a device, TTY, CRT, etc, into said port.  Old saved settings for each CRT,TTY,etc port are lost. Only one configuration, per Generic Device, is saved and shared with each TTY,CRT,etc asssigned to the Generic Device. The IO properties configure form can be invoked from the Generic Device selection form or from each CRT, TTY, etc.

Note, each IO device has port IO properties and device properties. the IO port properties are shared among Generic Devices and saved from the IO properties form, while the device properties are saved each time the CRT,TTY,etc form is closed.

IO properties for generic devices still apply only to generic devices 0-15 and the aliases(tty,sera,serb,lpt,crt). They do not apply to composite devices.

Changed Ascii(7/8bit) and Parity option locations. Now located on menu instead of IO properties form. No longer saved with IO properties. Each TTY,CRT,etc has own 7/8 bit and parity options. Now saved each time CRT,TTY,etc closes.

---------------------
CHANGES to 1.0.24

Added a throttle to z80 Emulator. A slider now controls the speed of the emulator. However, the resolution is not very good(can NOT do it right, because Windows is NOT realtime, well... might could, but logic is complex when IO is taken into account..keep two counters, one real time the other what should be then make them match before each IO, also acounting for IO time, ah too many numbers, and this emualtor is really just for running my CPM stuff. If you need better timing get z80altair at www.shorn.org). Fast mode still exists. In fast mode, the emulator runs anywhere from 1 to 65536 instruction between relinquinshing to the OS to handle events. In slow mode(not fast) the emulator relinquinshes multiple times per instruction anywhere between 1 to 20 times this slows the machine significantly. This works best on the chicago kernel, the cairo kernel is pre-emptive so the emulator normally runs slower on cairo than chicago. On my 1400mhz Celeron, W98, throttle reports in fastest mode, aproximately 17 million Tstates per second. This is bogus info because there's no, fixed to actual CPU, timing for any instruction. Different mix of instructions in timing loop will report different Tstate counts. 

Wrote Throttle.COM which can be used to help set Throottle. Find on bios22bd.

Also noted that the log drives in Wordstar are configured wrong for CDOS and bios22bd. Configured for bios22IH, with more than 4 drives. Left broken.

added support for WD17xx to interrupt via INTRQ (NOT DRQ). Only works with FDC16/64.(still not enough supported to run CROMIX. (NOTE - force interrupt only interrupts NOW.. no wait for ready transition or index, yeah, not enough)

added support for FDC timers. since VB timer uses millisecs, value writen to FDC timer interval is divided by 16 and 1 added. this means that a write of 1 to FDC timer actually waits at least 1MS(maybe as much as 18MS, Windows is NOT a realtime OS) rather than interrupts NOW. FDC timers DO NOT keep good time. They are only fit for timeslicing. Hopefully this bad timing won't matter. 

Corrected timer bug. Previously no check was made to ensure that timer tick was enabled before generating a timer interrupt. Also, previously timer ticks could not be generated unless the timer interrupt was also enabled. Now timer can tick without generating interrupts.  But now you must ensure that ticks are enabled else no interrupt. The source for MPM already assumed the correct method. 

Modified internal interrupt structure to allow for additional interrupt handling abilities.
Added new ack mode 0=read/write register(software poll),1=int ack cycle, 2=z80 reti (only zemu timers use the "A" bit (for timers, setting "A" bit cause ack mode =2,else ack mode =0) ACK mode =2 is auto set for Z80Sim timer. The new ackmode =1 is used in FDC16/64 timers. WARNING don't use two different control registers or read wrong status registers to control one timer. Ack Mode will be set during control register writes.

Corrected IOremap to not change port remap when changing map remap(unless, of course, you remap to return value map)

Added Invert Data bus for WD179x

Corrected some debug console help descriptions

Added NMI support (REMEMBER, NMI is non-maskable.. Don't push NMI button unless there's a NMI interrupt handler at address 0x66) NMI is assumed to be used only for a software abort, but CPM can not use it, because the default FCB overlays location 66H

---------------------
CHANGES to 1.0.23

Corrected bug in processing that fails to access last track on a disk.

Corrected serious bug in saving disk formats..Disk formats saved by version 1.0.22 are incorrectly saved. You need to load and then correct errors and resave. 

Corrected bug in drive properties that failed to clear Pre/Post info for drop down list formats.

------------
notes on confgiuring disk parameters...
 The NULL disk IO command (127) causes all config data to be applied without doing IO.
 The NULL disk IO command (00) causes all config data to be applied and errors reported by emulator without doing IO.
 When any IO command is executed, all newly written config data(data written before a disk IO command has been issued) is applied to the currently selected drive.

Newly written Config Data is NOT applied if no disk IO command is executed, but remains and can be stale, possibly corrupting configuration. If you write config data while a drive is selected and then, without executing an IO command, change the drive selected, the config data will be applied to the new drive when a DISK IO command is executed. 

write to select drive before reading any config data.
execute any disk IO command before reading any config data 

Before executing a disk IO command, configuration values may be stale
After executing a disk IO command all configuration data is fresh and is associated with the currently selected drive.
-----------

Removed auto reset of UsePrePost when Heterogeneous/homogeneous is selected, in new disk interface. UsePrePost is always set false if ANY config value is written in old interface. 

Rewrote Jade DD bios (DD50BIOS.ASM) to use both 48 and 50 SPT Jade disk images. (stop using the old incorrect jade images with 48 SPT in track 0, can extract data with CnfgDisk.COM or DCJ.COM) Also note that 50 SPT Double sided disks appear to work with the old jade bios called NEWBIOS but actulally do not, as there's not enough CHK vector.

Added code to fake out SDM monitor for SBC 200's baud rate measure for port at 7D (TTY)
Just toggles bit 7 on each read. 

Printers now can have a return value specified for input for parallel printers that use input port to return status. 

Added partial Cromemco TUART, for printer support, to Real Hardware IO Map. TUART only supports serial IO (extra serial) and Parallel Out(for printer)

Realized TUART is not used for printer in CDOS (doh) so added cromemco PRI (Printer Interface) PRI only supports dot matrix port (53 and 54) not Full Form Printer at (5a-5d)

Corrected bug that incorrectly set which menu item for Unused Port Value is checked.

Removed all Hardware related IO ports to its own map(6), made map 2 look like old Z80 Emu Only map.

Added default IO remap file. New IO remap files for altair, cromemco, imsai, and tarbell CPM1.4

Modified IO Remap, to support dedicated return of 0 or FF or unused port value (you no longer need to find an unused port)
each IO port, remapped, is now associated with an IO map. This allows you to make a Map that has ports from any existing map. However, only maps 1, 5 and 6 are unique. All other maps can be derived from those. Maps 0, 2, 3, 4 remain for compatability.

Old IOM files still work, but require you set the default IO map in menu. Loading a new IO map with at least one port that references the default map selected via menu, will also set IO map menu item. Those with no reference to the selected IO MAp will leave the menu item unchanged.

Existing maps are still there, but new maps are added..

0-127	use that IO map 
    IOMapNames(0) = "Z80Emu+Z80Sim32"
    IOMapNames(1) = "Z80Sim Only"
    IOMapNames(2) = "Z80Emu+Hard32/PIO"
    IOMapNames(3) = "Z80Emu+Z80Sim48"
    IOMapNames(4) = "Z80Emu V17"
    IOMapNames(5) = "Z80Emu Only"
    IOMapNames(6) = "Hardware Only"

NOTE- there's really only 3 maps map 1, map 5 and map 6. All other maps are combinations of those 3.

NOTE- the old default map is 2 EMU+Hardware32/PIO.. It was called Z80Emu Only.

NOTE - new hardware, like TUART, is only in Hardware only map (6)

Following are special maps that the user never really sees, and can not be selected via port or menu.

250	use default port map specified by selection of IO MAP - this map uses whatever map is set via menus.
252	always return mapped IO port number   - this map always returns the newly mapped port number for each port. This allows a default return value between 0 and 255
253	always return unused port value   - this map always returns the unused port value set via menu for every port
254	always return 0   - this map always returns 00 for every port
255	always return FF  - this map always returns FF for every port

IO Remap files also now save a value for unused port value, default IO port MAP and CPU type..

NOTES- if all ports are associated with a IOMAP(none use default) then it does not matter what map is selected via menu. If any port, defined in the IO remap file, uses the selected menu default map, then the menu item will be changed to whatever is stored in the IO Remap file as default IO MAP.

Startup sets IO MAPPING to work as it used to. all ports are set to use default IO MAP selected via menu.

---------------------
CHANGES to 1.0.22

Corrected bug in BIOS22D where home failed to set full 16 bit sector value. (still worked)

corrected bug in Drive Properties, save disk format which failed to save preambles and postambles

fixed calculation of disk size for pre/post ambles

added more checks for physical sector errors

Realized that NO pc1440 disk has a ID table in Sector 5 as is required by BIOS22I, BIOS22 defaults to PC1440, in fact all BIOSes (CPM2.2/3.0/MPM for pc1440 disk images) except BIOS22I default to PC1440 disk images, so ID tables were not needed.

Have added a ID table (IDT1440.ASM/BIN) for PC1440 disks. IF you use drives C and D of BIOS22I for PC1440 disk images, you must add the ID table to the disk image, in sector 5; else without the ID table, BIOS22I will default drives C and D to IBM3740 disk images, only. BIOS22I is made with BIOS22.ASM

To add the Disk Definition (128 max) from a binary file to a PC1440 disk Image (sector 5) with DD.EXE..

  dd.exe if=<IDT1440.bin> of=<DiskImageFile> bs=128 skip=4 count=1

DO NOT ADD to non pc1440.img files. the Jade ID table is different and in sector 1, and is added with the format program found on the jade disk images. 

added Insert Mode ON and Insert Mode OFF to CRT functions

added AutoLF option to CRT (for those who only want to use CR)
added AutoCR option to CRT (for those who only want to use LF)

added Reset to CRT.. Reset clears ANSI and other State Driven Parameters, like Insert Mode

Fixed bug in Custom GOTO for CRT.. now works when X Y are switched Y X 

Fixed bug in DUMP2-8 for CRT..now works... no longer gets stuck in infinite loop...

added physical sector size specifications to drive parameters..this allows the emulator to auto deblock when pre/postambles are used...

pre/post ambles apply to physical sectors only... logical sectors within physical sectors must be raw... with no pre/post info.. this allows the emulator to rid itself of extras in the disk image and still access logical sectors within the physical sector properly. 

added error checking for sector size less than 1 and for physical not mod logical
(configure status bit 1)

removed AUTO CLOSE after changing Drive PRoperties... this allows you to make changes to a disk format while a disk image is assigned..without closing ...WARNING --you can make a misstake (SS)

when opening an IMD disk image file, you are now given chance to either set disk preamble only, or process the IMD file for all data required to set drive properties. 

Added two extra bytes of 0 for PSH and PHM to each DPB in BIOS22D. This makes the BIOS22D compatible with programs written for the AltairZ80 simulator, which uses a CPM3 DPB instead of CPM2 DPB. (note--these bytes must be 0 for CPM2, so CNFGDISK does not write them, this is not the right way to do it, but i dont want to reassemble stuff that uses it)

---------------------
CHANGES to 1.0.21

added multiple read/write functions to WD17xx chip (so CDOS boot loader works now)
(NOTE-during normal operation of systems that use the emulated real hardware(WD17xx,tarbel,16FDC,VersafloppyII,etc...) disk errors will be reported by the Z80 emulator that are normal... this is the software testing for various formats of disks... also, during multi- reads and writes, the normal exit is via an error...the wd17xx reads or writes until RECORD NOT FOUND or Force Interrupt)

you can turn off disk error messages.

Modified BIOS22IH to stop writing extraneous disk configuration, and to put "IH" in boot message.
(note CPM 3 and MPM still wirte extraneous disk config info...early emulator versions required that SPT and Order(now Order/Format Type) be written each access)

Added BIOS22D which uses the new disk interface and also allows dynamic re-configuration of drive parameters. Put "D" in boot message. Has companion program (CnfgDisk.com) which will dynamically re-configure drive parameters. 

Drive properties now indicate "Set by BIOS" anytime the BIOS changes ANY config parameter.

fixed bug in Drive properties page where values set in BIOS are used invalidly to initialize combo box

fixed bug in save of hex file where symbols were truncated to 5 chars instead of 6
(fixed by saving symbols as 8 characters... this violates hex file rules but so-what)
(if you need to adhere to hex file rules, dont save symbols)

fixed error that did not matter... stopped using global FILENAME and now use local FILENAME in all places where filenames are needed. 

added support for 64FDC
added labels to diferentiate between 16FDC and 64FDC switches and jumpers..
16FDC has SW1-SW8
64FDC has jp1-jp4 and SW1-SW5

corrected 16FDC Restore command bit in auxillary disk register.
(note Cromemco software usually is written to work on all FDCs 4/16/64)

added support for different clock rates for each disk area...(probably never need)

the clock kind at config 128+25 sets all three values...(for backward compatablilty)

added ability to pick data out of various other emulator disk images..
added preambles and postambles for disk, tracks, and sectors.
now disks images with extra embedded info MAY be accessed using preambles and postambles...

sector sizes from 1 byte to 16384 bytes are supported.

added program and specially designed BIOS to demostrate dynamic configuration of disk parameters.
Use the disk (BOOT62BD.IMG) and the program (CnfgDisk.com) to exchange data amoung various disk formats.
BOOT62BD is a banked CPM 2.2 system which uses BIOS22D that reserves plenty of room for individual DPBs,XLTs, CHK, and ALLoc tables. It supports 4 drives A and b are PC1440 and C and D are configurable.

note--- that while many new formats can be read and/or written, just being able to read or write the disks, does not mean that the programs on those disks will run on the Z80 Emulator..

Disks for Z80 Emulator and some Z80 Simulator disks will Boot. 
Disks for VF2, tarbel sd and dd and 16/64FDC MAY boot.
Disks for AltairZ80 simulator disk images will not boot, as there's no support for the needed hardware. FIND AltairZ80 disks at www.schorn.ch, find Z80Sim disks at www.unix4fun.org

Made changes to how data is located on the emulated drives... Orders 1 and 2 will now work with hetrogenous tracks. The tracks on the properties page are tracks after translation in orders 1 and 2.
Accesses using Cylinder/Head ignore order and access disk as though order =0.

Order = 3 is gone... now a separate selector for heterogenous tracks is implemented. however, the emulator will still accept order =3 from old disk FMT files, and from the BIOS (if the old disk interface is used... the new disk interface will NOT accept order =3). Order = 3 sets "order = 0" and "heterogenous tracks" and "dont use prepost ambles". 

added second method of specifying sector sizes.. along with sector size codes, you may also enter any 16 bit value for sector size using added config registers at a7,b7,c7. Sector sizes can be 1 to 16384 bytes.

now disks can have custom sectors sizes, like 137 for Altair Disks(must use software that understands) or for sogftware that does NOT understand you can use pre/postambles to exclude extraneous data.

warning--there's a difference between 137 byte sector size and 128 byte sector with pre3 post6. Only data-size bytes is transfered. Both sectors use 137 bytes but one transfers 137 bytes and the other 128.

Pre and post bytes are considered overhead in the image file to be discarded.

updated AS8080 Package, z80 assembler and dissassembler..

-----------
CHANGES to 1.0.20

rewrote CRT to paint each character cell on the form's bitmap image...

CRT now uses almost NO windows resources.. consists of a form with NO controls(except MENU and Common Dialog)

CRT now works with individual forecolors and back colors...

added Colors selection dialog box for CRT colors and cursor color

Added selectable Cursor type... Vertical Bar, Horizontal Underline, Box or NONE.

added set/reset/toggle bold,strike,underline,italic to CRT functions.

added EraseCharRight and EraseCharLeft to CRT funtions.
added InsertCharRight and InsertCharLeft to CRT funtions.

CRT-added ability to select proportional fonts (all fonts are placed in a fixed character cell)

replaced "select case" for CRT command codes with "on x goto" (speed improvement)

CRT-added new attributes to ANSI set graphics .. (made Blinking = StrikeThrough)

NOTE WARNING---Bold and Italic font attributes do not work properly.. for many Fonts, they are wider than the Character width of the normal font...so best to not use bold or italic, with some fonts.

NOTE -- don't confuse bright/dim (TextHi/Lo) with bold..ANSI bold is actually Bright

corrected error in ANSI clearscreen (now UCSD pascal screen control works right)
ESC[J 	=ClearEOS 
ESC[2J 	=ClearScreen 

discovered WordStar uses ANSI codes not in previous version, so added 
ESC[<lines>M	Delete lines
ESC[<lines>L	Insert lines
ESC[<chars>P	Delete charaters
ESC[<chars>X	Erase Characters
ESC[<chars]@	Insert Characters

PRINTER - added printer control codes

(note - eventually printer control code will be configurable like CRT codes..but for now, only one printer defined, need to figure out how to do some real printers, but no info.)

ESC 0x01	toggle Bold
ESC 0x02	set Bold
ESC 0x03	reset Bold
ESC 0x04	toggle Underline
ESC 0x05	set Underline
ESC 0x06	reset Underline
ESC 0x07	toggle Strikethrough
ESC 0x08	set Strikethrough
ESC 0x09	reset Strikethrough
ESC 0x0a	toggle Italic
ESC 0x0b	set Italic
ESC 0x0c	reset Italic
ESC 0x0d	toggle Super
ESC 0x0e	set Super
ESC 0x0f	reset Super
ESC 0x10	toggle Sub
ESC 0x11	set Sub
ESC 0x12	reset Sub
ESC 0x13	set 10cpi (12 point)
ESC 0x14	set 12cpi (10 point)
ESC 0x15	set 17cpi (8 point)

ESC 0x19	BOJ(10cpi Normal)
ESC 0x1c	EOJ(resets font to whatever font was last selected)

ESC 0x48 	SetTextHI
ESC 0x4c 	SetTextLO

ESC 0x30 	TextColorBlack
ESC 0x31 	TextColorBlue
ESC 0x32 	TextColorGreen
ESC 0x33 	TextColorCyan
ESC 0x34 	TextColorRed
ESC 0x35 	TextColorMagenta
ESC 0x36 	TextColorYellow
ESC 0x37 	TextColorWhite

(note - to use with wordstar4, simply patch codes into ON and OFF in Simple Printer..)
(note - the WS4, avaiable on internet, seems to have a bug in the routine to print soft hyphens
it gets stuck in an infinite loop)

Added Jobs to printer.

added mnu items to select old style printer font selection for editing, or new style font selection (no attributes)

------------

CHANGES to 1.0.19

modified I/O Properties, for consoles, so you can save to file and load from file...
Due to methods used, all IO properties re-default to USART... you must reselect and save if USART is not what you want..

corrected inconsistancies in Help file...

made new IO map for state of IO map during version 1.0.17.. 
removed some IO ports (0xf0-0xfa)from regular IO MAp
MAP 17 is only for those who may have used IO ports defined in version 1.0.17 of Emulator.. 
Disk config for order =3 removed from new map, only the NEW disk interface can be used to define Order=3(Format Type1/order=0) disk config parameters, now...(however, still in map 17, for compatability only)

added Save/Restore Line/Column/position to CRT functions.

added ANSI Escape sequences to support Z80 SIM disks...
	ESC[<line>;<column>H   GOTO Fixed positon
	ESC[<line>;<column>f   GOTO Fixed positon
	ESC[<lines>A   Cursor UP
	ESC[<lines>B   Cursor DOWN
	ESC[<columns>C   Cursor RIGHT
	ESC[<columns>D   Cursor LEFT
	ESC[6n Report Position   Returns - ESC[<line>;<column>R
	ESC[s   Save position
	ESC[u   Restore position
	ESC[2J   Clear Screen
	ESC[j    Clear EOS (added in 1.0.20)
	ESC[K   Erase to end of line
	ESC[<code>;<code>...m   Set Video attributes (back color applies to whole line)
	ESC[<code>h   ONLY code=7 supported (wrap)
	ESC[<code>l   ONLY code=7 supported (nowrap)
	ESC[<code>...;"string";p  You may only redefine keys that are on the edit keys page
					and then only single modifiers Norm,Shift,Cntrl,Alt

NOTE-the 6 in Report position  are the defaults if NULL (changed---and the 2 in Clear Screen)
Defaults for line and column is 1 if NULL. Default for string is ""(NULL)

The Ansi Codes can be disabled. Normally they are enabled and checked first. 
Existing Code as defined in terminal Abilities are still in effect. 
Both Terminal abilities and Ansi codes work.
IF the Ansi ESC[ is needed by Terminal abilities, then disable Ansi.
If you need ONLY Ansi, then make a TAB file with commands disassociated..BUT remember that some Single Command Codes are required for any terminal to work, such as LineFeed, Carrage return.
IF Ansi is enabled, the ESC character is Delayed by one IO operation so that a check for the ANSI Brace can be made.
Ansi works best if CRT is set White characters on Black Background. The background color applies to the whole line, because the MS RTF control, used to implement the CRT's Lines does NOT support individual background colors for each Character. Using individual controls for each character is NOT reasonable.(changed in 1.0.20)
Inverse, blinking, hidden and underscore are not supported.(changed in 1.0.20)
.. 

corrected runtime error when attempts to change font of multifont region is done in printer.(invalid use of NULL)

corrected font dialogs with NULLs

printer no longer auto saves font... if you want it saved, use menu item to save font which will be used as the default font.

------------

CHANGES to 1.0.18

added new way to access Disk IO registers (see DiskIO.txt)

  now all disk configurqation registers can be accessed via 3 IO ports

	C8	Disk Register Select
	C9	Disk Register Low
	CA	Disk Register High (if needed)

added CHS select logic
If you do NOT write to Tracks per disk, then TDP = CPD * HDS
If you write to Track per Disk, then CPD = TPD div HDS

added extra status and config status for disk IO(see DiskIO.txt)

the CHS select, extra status1, status2, and config status is only available though the new disk IO interface(see DiskIO.txt)

added new command bits to disk controller, which use Heads and Cylinders instead of Track to do IO

if bit 7 of the disk command is 1, then Head and Cylinders (CHS) are used instead of Track
if bit 7 is 0 then Track (TS) is used instead of Head and Cylinders 

use of Cylinder and Head is undefined when used with order = 1 or 2(may remove order 1 and 2)

Added support for Physical description of disk (Densities, Data Clocks and Flags)

added WD17xx Floppy Disk Controlled chip (does subset of WD17xx)
added Tarbell FDCs (original and Double Density)(based on WD17xx)
added Cromemco 16FDC (based on WD17xx)
added VersaFloppy II (based on WD1795)

added option select for implementing WD1795 side select logic (IDM DS Flag)
added Density select and density definition for Each area on disk
added Disk Clock Kind for HD 8" 5" 3" disks

updated Disk Format files to contain Density(dont care, single, double) 
and Disk Clock Kind (Dont care, 3,5,8,HD) and Flags(IDM DS)

DS IDM flag.. when set, Double sided floppies are assumed to be recorded 
with an 0x80 or'ed with the Side ID Mark.
This is for Versafloppy II double Sided disks. 
This Flag MUST be set for Versafloppy II UNITSL to work on Double sided disks.
old format files default to Density and Kind = Dont care (all defaults are PC1440)

HINT - you should make sure Disk parameters are correct and save them to store new parameters

added simple Cromemco bank select port
(only supports bank 0 at A15=1, other banks 0-7 at A15=0)
if needed, to make work, you should set common start to 32K

these disk IO additions provides enough functionality of the real Tarbell, VersaFloppy II and 
Cromemco controllers to allow the z80 emaultor to run CDOS 2.1 and CPM 1.4 "AS-IS"
no need to modify the original code to run on Z80 Emualtor.

the folling ports were added
(note--these ports are not at the right addresses. you must use IOremap to place them where they belong.

	0x08	WD17xx Command/status(needs to be at 0xF8-0xFB-Tar, 0x64-0x67-Versa, 0x30-0x33-16FDC)
	0x09	WD17xx track
	0x0A	WD17xx sector
	0x0B	WD17xx data

	0x0C	Tarbell Double Density Disk Controller Command/Wait(normal logic)(needs to be at 0xFC)
	0x0D	Tarbell Original Disk Controller Command/Wait(INVERTED LOGIC)(needs to be at 0xFC)

	0x0e	VersaFloppy II Reset (needs to be at 0x60)
	0x0f	Versafloppy II Select (needs to be at 0x63)

	0x10	16FDC serial status/baud(needs to be at 0x00-0x09)
	0x11	16FDC serial data
	0x12	16FDC serial command
	0x13	16FDC IRQ Vector/interupt mask
	0x14	16FDC Aux Disk Stat/Ext Command
	0x15	Timer 1 (timers not implemented)
	0x16	Timer 2
	0x17	Timer 3   
	0x18	Timer 4
	0x19	Timer 5

	0x1A	16FDC Disk Flags(needs to be at 0x34)

	0x1B	Cromemco bank select port(needs to be at 0x40)

corrected ommission of the Block Move command in Debug console help

fixed TTY to return DEL (0x7f) for DELETE key

Corrected DIV/0 when accessing sectors greater than 128 bytes.
Corrected DIV/0 when using saved drive properties
Both caused by Real Drive stuff that has now been removed. (they don't make floppies anymore)

Changed directory tracking for several file types.

Modified how Emulator reporting of disk IO errors occur. Now you can turn-off reporting of disk IO error messages and rely on the BIOS/OS to report errors. 

Added better checking of drive parameters supplied by BIOSes.(can not turn off reporting of drive config errors)

Modified IO device menu selection for Z80SIM combo Z80EMU ports 
Renamed "Both Emu and SIM" to "SIM 32 EMU" (ports 0-1f(31))
Added new item named  "SIM 48 EMU" (ports 0-0x2f(47))
This allows MPM for Z80SIM to run with shared EMU ports 48-255
(NOTE- implementation is different but should see no difference)

corrected boot routines to work with sector size not 128.

------------

CHANGES to 1.0.17

added IO ports to alow setting and getting of CPU type and IO MAPs

ports	c2 select CPU		0=z80 1=8080
	c3 select IO Map	0=z80emu+z80sim  1=z80simOnly 2=z80emuONLY

added input only I/O ports to provide emulator major,minor and revision numbers

ports 	C4 major
	C5 minor
	C6 rev

emulator version ports return byte values (0-255), so range is smaller than allowed 0-9999

port c2-c6 exist in all IO Maps

Changed all Hard disk Drive definitions to set OverRideBIOS..  

(note- it is perfectly OK to set overRideBIOS on any drive for which the BIOS does NOT dynamically set values.. and it is imperitive NOT to set OverRideBIOS on drives that the BIOS can change the format dynamically---the Jade BIOS does change disk properties dynamically..so does the OLD BIOS for PC1440 disks that used magic in sector 5 ---the PC1440 BIOSes that have 'ih' in the name of the disk image do NOT dynamically change drive properties. )

use caution when rebooting with different BIOSes.. drive properties may be stale 

added disk feature that allows the disk to be divided into 3 areas... Track0, System Tracks and Data Tracks...to select this feature Order must be "3" ... order = 3 sets disk track order the same as order=0 but now allows track0 and system track sizes to be defined... to maintain compatibility orders NOT =3 use only one SPT value for all areas... 

order = 3 works for all types of disk images as long as the image has 1 side, or tracks are setup as order=0 

added disk formats for Jade Single Sided Single density (JadeSSSD) and Jade Single Sided Double Density (JadeSSDD )with different SPT for Track0, system, and data tracks

added ability to save disk formats to files and load from same. 

added disk format files for IBM Diskette 1, 2 and 2D (IBM3740 is Diskette 1 SSSD)...NOTE... selection of which tracks are System and which tracks are Track0 is more or less arbitrary.. The IBM diskette 2d 1024 and 512 formats have three different size sectors on one disk.. 128 256 and 512/1024

              IBMSSSD128    1Track0=26(128) 1System=26(128) and 75Data=26(128)
              IBMSSSD256    1Track0=26(128) 1System=15(256) and 75Data=15(256)
              IBMSSSD512    1Track0=26(128) 1System=8(512) and 75Data=8(512)

              IBMDSSD128    2Track0=26(128) 2System=26(128) and 150Data=26(128)
              IBMDSSD256    2Track0=26(128) 2System=15(256) and 150Data=15(256)

              IBMDSDD256    1Track0=26(128) 1System=26(256) and 152Data=26(256)
              IBMDSDD512    1Track0=26(128) 1System=26(256) and 152Data=15(512)
              IBMDSDD1024   1Track0=26(128) 1System=26(256) and 152Data=8(1024)

new ports are added to Z80Emulator disk controllers IO device in all IO maps that contain the 
Z80Emulator's disk controller.. these new ports are not availble in the Z80SIM disk controller, 
but since the Z80SIMs disk controller uses the Z80EMUs disk controller, the Order=3 will affect 
all Z80SIM disk IO... to avoid catastrophe, all older Disk formats define Track0 and System Track values 
which make them function the same in order=3 as they do in order=0.  HOWEVER, it would be prudent to use the drive properties page to re-select any disk image types that have been saved, and save them again. This will gaurantee that values for the new properties(sector sizes and number of tracks) are saved and restored when the emulator is run and that no defaults are used that are stale.


ports DE and DF were implemented wrong... these ports accept a value for bytes per sector... i would 
like to remove them, but it is possible that someone, somewhere used them.. so they will be left 
in, and become undocumented...

WARNING the existing disk image "JadeDD62.img"(disk type JadeDD) does NOT use this new feature(it writes order=0 to port DB before each disk IO) and the BIOS on that image is NOT compatible with JadeSSSD and JadeSSDD images... if you mix without matching, corruption WILL occur...

HERE's why... JadeDD format is 48 SPT (all 77 tracks)   1Track0=48 1System=48 and 75Data=48
              JadeSSSD format each area are different   1Track0=26 1System=48 and 75Data=26
              JadeSSDD format each area are different   1Track0=26 1System=48 and 75Data=48

but both JadeDD and JadeSSDD return the same DPB and Track density information to the BIOS... neither BIOS can not tell the difference...you MUST set the appropriate disk image type on the drive properties page. The old Jade Bios does NOT differentiate between single and double density disks... USE the NEW JadeDD62 disk(JDD62n.img) ONLY and stop using old Jade disk(JadeDD62.img).(see jadedd.txt for more info)

REMEMBER... accessing any disk image with the WRONG disk parameters may CORRUPT the disk.

NOTE.. some BIOSes write order = 0(or what ever they use) to port 0xDB to select order, before every disk access; while some do NOT.. if disk order is wrong.. image corruption may occur... so be carefull when changing OS(BIOS) if you boot an OS that writes 3 to port DB then if you boot, say, CPM1.4(which does not write 0 to DB) then corruption might occur... to avoid...you can reselect the disk type (IBM3740 for CPM1.4) on the drive properties page or you can use the debug console to write a value to any port, or you can reset the emulator ...order defaults to 0 (relying on defaults is bad, but i did) NOTE that it is possible to run order=3 with an OS like CPM1.4, if all tracks are defined correctly (like an IBM3740)

setting OverRideBIOS can prevent some problems... but only if the BIOS does not need to change 
disk parameters dynamically.

corrected situation on drive properties page, where hidden boot infomation on drives, not-the-boot-drive, flagged as errors, conflicting-data about Track0

made error checking on drive properties page more robust...

corrected bug in debug console command OUTS which output a space prior to the first parmeter.

added DeleteCharRight and DelCharLeft to CRT...

discovered bug in CRT that is not fixed... cursor can not be placed at end of line. logic too dificult to fix..without major rewrite...luckily , most screen control programs avoid the situation, because many real CRTs have the same problem

removed CRT Maximize button.

made Load of Symbols from hex file more robust... 

added TMS5501 and Cromemco 16FDC USART to Console IO properties..

added Remap ALL buttons to IO Remap

removed changes from readme file to changes file

------------

CHANGES to 1.0.16

added new icons to distinguish between multiple ZEMU forms... 

corrected bug where CRT causes runtime error if not activated before typing... (had to click on CRT Screen before typing, if starting emu with two or more Consoles and the boot console was not already activated... clicking on form borders did not do proper because the key event was in the screen control instead of the form event. )

also added auto activation of console 0 when booting... (removed it earlier but can not remember why... so added it back)

modified Debug Console commands "Examine" and "Memory" to skip input of value if spacebar is pressed

corrected "CreateSymbols" command to display correct start and end values and corrected the help entry for it to indicate correct syntax.

------------

changes to 1.0.15

added cancel button to disk error Message box so you can stop emulator if stuck in an infinite loop accessing invalid disk parameters. 

added Jade DD disk type to Drive Properties.

Created Jade DD formated emulator disk image with CPM 2.2. Missing Jade utilities.

changed drive properties Format type buttons to drop down list..NOTE...Disk Formats are indicated as custom until reselected and saved. 

added 3 more 6820s to the 4PIO board...(there was a sale on virtual 6820's)

now..

	port 60-63 to DEV-10 4PIO
	port 64-67 to DEV-11 4PIO
	port 68-6b to DEV-12 4PIO
	port 6c-6f to DEV-13 4PIO

Fixed Emulator abend when encountering a ERROR # 75. Now write and error message. 

NOTE... unable to fix Emulator refuses to open a network UNC from Cairo kernel based windows... works fine on Chicago kernel based windows... suspect some path object is failing with UNC. This is most likely a bug in MS windows and/or MS Visual Basic. If you encounter this problem (error #75) try making the SHARE FULL control or try mapping the network drive and use a drive:path instead of a \\machine\share.. Apparently the Cairo kernel requires a file be located on a share with FULL control before opennig in Binary mode...even if R/O...

(if some one knows a work around in software, please contact me, 
see help--> about)

Fixed Font save and restore for Debug Console...works now..

Fixed FOnt save and restore for TTY

Fixed value save and restore for Audio Cassette.

added more information to Dialog titles

drive properties can be displayed by name instead of parameters. NOTE bios changes of drive parameters does NOT change name of disk Format.

------------

changes to 1.0.14

added support for 8 colors to CRT...added white on black screen...added dim/bright (LO/HI)...changed CRT internal defaults to do H1500 background follows and foreground follows as LO and HI

fixed show all control characters in printer... now shows all control characters and removes DEL

changed default CRT internal defintions... nowrap=true(was false) changed defaults to allow both tilde and esc perform escape function... this allows the CRT as default to work as H1500 as both Tilde and Esc...

changed both H1500 .TAB files to include foreground follows and background follows..(HI an LO).TAB files only support one escape char (tilde or Esc)

added Load Code to load save settings, now can load only symbols...for hex files

fixed load symbols and mod16 so that "cancel" works in load save settings

added ability to define inline parameters for RST instructions.

fixed Create Symbols bug where any invocation with FFFFh as ending address never ends... 

added .. in debug console, any character aborts DUMP, LIST, Equates or CreateSymbols

added ability to UN-Define a label...to disassembler

added progress bar to generation of disassembled output to file. 

moved cassette menu to devices menu

made changes to DAA instruction again... now Carry not affected if no Carry  occurs..(per 8080 programmers manual.. this differs from the 8086 manual..the 8086 set C bit and H bit even if no carry)(and your guess is probably better than mine as to whether the DAA works right after a subtract.)

added default min memory and max memory for save and create symbols... default is 0-ffff unless an iHex, Srec or binary file is loaded and then min and max of file loaded.

added menu item to load and save DAD files..

Emulator no longer disables clear,save, and load memory... it's your choice and/or responsibility not to mess up memory while executing...

moved location of "Clear Memory" Menu to help prevent accidents

added ability to search for location of symbol/value references to disassembler

fixed disassembler for RIM and SIM instructions

corrected checksum for iHex and Srec records.

Changed I/O DEVice assignments for MIO and 4PIO boards so they can be configured to NOT conflict with other existing ports. 

	port 7a-7b to DEV-1 CRT \
	port 7c-7d to DEV-0 TTY  |-SBC200
	port 7e-7f to DEV-8 LPT /

	port 01,02 to DEV-8  PAR1 \
	port 01,02 to DEV-9 PAR2  |- MIO board
	port 03,02 to DEV-0  SER  /

	port 60-63 to DEV-10 4PIO
	port 64-6f NO CHIPs

The defaults can be changed via a new menu called Configure I/O Devices

but 
	port 06-07 ACR        \
	port 1c-1f HSR         |-are all set to the Cassette Interface.
	port 00,02 CSI of MIO / 

can not be re-configured.

------------

Changes to 1.0.13

fixed trace bug where no steps are printed if multimute is on and step count has never been changed. (initial stepcount = 1 now instead of 0)

added 8080 instruction set (DAA as in NEC8080).. Can run altair and imsai programs now..

modified trace table to display only 8080 registers if 8080/NEC8080 instruction set choosen. (note NEC8080 N bit is bit 5 while Z80 N bit is 2) 

modified hex display to show proper N bit when 8080 or z80 instruction set is choosen.

added RIM and SIM instruction to 8080 instruction set. 

added support for simulated SID and SOD for RIM and SIM instructions.

mitigated  out of memory... no longer loads 80 forms at startup for generic devices, now only forms in actual use are loaded and as forms are not needed they are unloaded. 

changed MaxLines for CRT back to 67

changed CRT to dynamically load and unload controls used as lines..now 12 CRTs with 67 lines can be loaded before "out of Memory" (total of 800 lines can be used in CRTs before out of memory)  can easily load 16 CRTs each with only 25 lines (changed - see 1.0.20)

WARNING - out of memory is fatal.... 

Better I/O integrity by the addition of status bytes for no console.  (can set DTR and CTS stuff for NONE (appears as a disconnected serial link)

removed disaassembler hack and added new disassembler for 8080 and  z80.. disassembler is not table driven anymore.. it is brute force.
 
added ability to load symbols from iHex file and display them in disassembled output (a guess...not complete as i dont have documentation on symbols in an iHex file.)

added ability to define Data Only areas for disassembler. can save and load Data Area definitions(can load Disaasembler8080 data def files.)

z80 disassembler now can displays either intel or zilog nmemonics for the z80.

can now save disassembled soucre or listing using standard save memory menu.(choose extension = dasm or dlst)

added debug console...input/output to ports... control the disassembler.. view and modify symbol table....and other miscellaneous stuff...(use to load memory using octal(for altair boot loaders))

fixed terminal to chop 1000 chars using seltext, set maxsize to 25000(no more "out of memory" if too much goes to terminal) (---changed later to use RTF)

reduced tracetable size to 4096 from 65535 (might up it later)

fixed "Show Control Chars" to Show All control Characters.

fixed default CRT abilities so that DELetes are Dumped (127=CRTfDump1)

added Simulation of Audio Cassette Recorder interface

added Altair ACR (Audio Cassette Interface)

added Simulated Imsai MIO board with 2 Par 1 Ser 1 CRI (Cassette Recorder Interface)

changed hex, octal and decimal input routines to allow for leading zeros. 

fixed path memory for accessing .tab , .kbd , .fky files

corrected font mixup between italic and bold on CRT

------------

changes to 1.0.12

corrected error in load of hex and srec files. can load past address 0x8000 now.

added query "do you want to continue" if loading past end of bank

load of HEX and Srec files no longer set PC with :00 or S9... now only set GOTO address. 

HEX and Srec files can now read files using either DOS or UNIX style EOL terminators. 

HEX records ignore leading white space.

Binary load no longer loads one extra byte

added save memory functions- Binary, HEX, SREC and Dump format

added ability to select font on HEX DISPLAY form. also added option to ignore parity in Ascii display area. 

added Ascii(7 bit) option to all user IO devices (CRT,TTY,and LPT)

added parity generation to user IO devices. 

added ability to change location of IO ready bits and polarity in user IO device's status register.

changed where main parameters are input. NO more query to save if you made changes. If you want to save... then save them. You will not be asked.

added ability to open drive properties page to get default values for creating a new disk image. 

added default selection buttons for PC1440, IBM3740, 4 MB and 512MB Hardrives to Drive Properties page. 

more forms remember their positions. 

added IO port implementation for ports 0-31 to act simular to the io ports in the z80sim simulator. this allows z80 emulator to boot and run disks made for z80-sim. Not MPM becasue the z80-sim version uses port above 31 (not implemented)

added Z80-SIM IOwait LED on main form. 

added Z80-SIM IOwait enable/disable option (for Z80-sim ports only)

added I/O port monitor/capture. 

added an IOwait LED on main form for monitor/capture feature. 

added ability to remap an I/O port to any other IO port and save/load the IO map in/from a file

added LEDs to Printers

Printer accessed via port 7e-7f now returns input values.

corrected bug in trace routines where ABEND if single stepping and queue is full. added generic circular queue management.

fixed CRT abilities and options to be separate for each CRT instance.

reduced maximum number of lines on a CRT to 40(from 67) this allows 16 CRTs to be loaded without abend. I expect CPMs for word processing that use 66 lines to cause complaints.

corrected bug in one of the IO instructions that set psw using wrong register. now all 8 bit PSW setting of s, z and p bits are done by two functions. One for instructions that only set s and z and another for setting s, z and p.

corrected interupt instructions to include IFF2

modified Timer to generate better Z80 interrupts. Can be polled or acked in simulated hardware daisy chiain.

corrected input bug that caused emulator to abend if an overflow occured. Now all input values are checked to insure that they do not cause an overflow. Or if they cause an overflow , it is trapped and the input value is forced to zero. This bug manifested itself when a user input a value in excess of 16 or 32 bits in 4 places and in almost all places if the user input a value in excess of MAX/MIN double (required E notation to do it)

included DOS based rom utilities programs, DD, HEXDUMP, SPLIT, MERGE, TWIDDLE and for lagniappe DUMPCMOS...

modified Help file to reflect changes.


------------

Changes to 1.0.11

corrected return values of consoles not assigned. MPM will now run with only one console, as unassigned consoles return not ready. printers return ready when assigned, so now cntrl-P works properly in CPM/MPM .

NOTE. there is a subtile difference between unchecking a device on the devices form and closing a device via the forms close button. the close button removes the form (device) from memory. unchecking the box on the devices form, only hides the form. 

corrected input options on output only devices. 


------------


Changes to 1.0.10

DAA sign bit set according to binary value in A rather than Decimal val in A

CMC now puts old C in H

lower 7 bits of R is incremented on each M1

SP and AF now resets to FFFF instead of 0000

implemented undocumented SLL instruction CB30-cb37

implemented undocumented out (c),0 ED71

changed rld and rrd to set PSW according to value in A rather than memory

----------

