Here you can download everything related to version 2.11 of SMSQmulator.
1 - Everything you need to run SMSQmulator:
Unsure which version is for you?
Then download and run the version for Java 8 first. If this doesn't run on your machine, download the version for java 7 and try that.
If this still doesn't run on your machine, download the version for java 6 and try that (1).
These files are zip fles and need to be unzipped once downloaded.
There is a readme file (as a PDF or ODT document) in the smsqmulator directory : please read this carefully!!!!
There is also a UserGuide pdf file in that same directory.
(1) Sooner or later I'm going to drop the support for java 6. Please upgrade your java version!
2 - The source code if you wish to see that:
Below are the SMSQmulator versions.
----------------- SMSQmulator versions -----------------
Bug fixes : renaming files, resetting consequences for xFA devices,
Windrive correct dir opening for files that aren't dirs.
- XfaDriver 1.00 ; SfaFileheader 1.03 use StringBuilder whenever appropriate
- NfaFileheader 1.04 ; QemuFileheader 1.01 use StringBuilder whenever appropriate
- XFADriver v.1.00 use StringBuilder whenever appropriate ; closeAllFiles doesn't set the cpu to null.
- XfaFile 1.04 don't rename to an existing file.
- MC68000Cpu 2.06 main mem array made final. Needs also size of rom image when created
- WinDrive 1.05 opening as dir a file that isn't a dir, opens the dir the file is in ; rename checks whether file exists on destination (!).
Bug fix : floating point handling.
- RTC routines are no longer a separate module, integrated into driver_most_asm
- Arith v.1.04 better handling of some negative values.
Bug fix : floating point handling.
- Arith v.1.03 (very slightly) faster ql->ieee fp conversion, correct handling of some negative values.
Better floating point handling.
- Screen32 v.1.10 copyMem32 streamlined (micro-optimization).
- Arith v.1.02 (i.01 was internal) don't use c68 ql->ieee routine, too many pbs (e.g.with $80e,$100000).
Bugfix (manifested itself in emacs).
Possibly use faster floating point routines.
- java_fd_drive_asm set sb_arthp after java call
- java_driver_nfa_useq_asm " " " "
- smsq_java_hwinit_asm config for new FP routines
- smsq_java_driver_most_asm Possibly use java routines for some fp ops
- Move_To_SR, ADDI_SR, ORI_SR, EORI_SR 1.01 use Types.SRMask.
- MC68000Cpu 2.05 xorBlock set reg_sr correctly in case of error (only unset Z flag!).
- MonitorGoThread 1.02 DebugList uses array.
- Monitor 1.11 call TrapDispatcher.reset() when reset.
- TrapDispatcher 1.14 reset calls closeAllFIles for all device drivers,
setup arith object & (possibly) use it, use A-line for java comms instead of $eb00.
- WinDriver 1.03 implement closeAllFiles, called for each drive in turn.
- WinDrive 1.04 implement closeAllFiles.
- Types v. 1.02 communication with java is now based on A line (instructions $a000 +) instead of eb00+.
- JavaComm v. 1.01 use Aline instructions for "traps".
- Arith v. 1.00 use java doubles for some floating point ops.
Bugfix for xxx_use$.
Implements a VERY primitive TCP device (no UDP, no SCK).
- dev8_smsq_java_ip_xxxx all added.
- dev8_smsq_java_driver_nfa_use_asm set bv_rip to A1 after javatrap call.
- FlopyDriver 1.04 getDrive correctly sets the address to write the String into SMSQE.
- MonitorGui 1.25 use java.awt.event.InputEvent.BUTTON1_MASK instead of java.awt.event.InputEvent.BUTTON1_DOWN_MASK in doAltSpace,
don't print ALT F3 to system.out.
- IPHandler 1.00 added (primitive version, do not use).
- TrapDispatcher 1.13 implements "TRAP9" for TCP/IP sockets ; "Trap#5"-15 ; oorrect handling of A1 & where the data will be written.
- WinFile 1.04 readBytes catches EOF error when nothing is read from channel.
- MC68000Cpu 2.04 readFromFile returns -1 if EOF, not 0.
- QL50HzInterrupt 1.05 revert to earlier thread behaviour, sleep for nominal 1/50th of a second, screen update in same thread.
Configuration item for delay after mouse click.
Better handing of 0 count scroll wheel action (0 count is simply ignored)
- SMSQmulator 1.18 inifile data for delay after mouse click.
- MonitorGui 1.23 new config item for delay after mouse click.
- Screen 1.13 better handling of 0 count scroll,wheel action; mouse click delay added.
Bugfix for remote qxl.win file access, where file-locking isn't possible.
- SMSQmulator 1.17 inifile data for qxl.win files lock error.
- MonitorGui 1.23 new config item for qxl.win files lock error..
- WinDrive 1.03 if so configured (in ini file), will now ignore lock errors for qxl.win file.
- WinDriver 1.02 setNames catches UnsupportedOperationException, if file lock can't be acquired.
Bug fixes. Better handling of ctrl-space under windows: F12 no longer needed.
Alternative mapping of CTRL-F5 to scroll lock, ctrl-space to pause/break.
- MC68000Cpu v. 2.03 .03 only check for minor version if major version == smsqe version
- MonitorGui 1.22 only use alt-space kludge for windows, better ALT+SPACE handling when in windows.
- Screen 1.12 faster handling of keyrow, scroll_lock is mapped to ctrl-f5, break is mapped to ctrl-space.
- MOVEA4 corrected: increase source reg BEFORE the data is moved into destn (MOVEA.L(a7)+,A7 would be wrong)
Can handle read only floppy image files. C programs kludge.
- smsq_dv3_java_ added read only check etc.
- MOVEAn2bis kludge introduced. This is the MOVE.L A0,(A2) instruction. Some stupid C progs check whether they can write to address $10 and if so,
make (WRONG!!!) assumptions about the machine. This special instruction does NOT write to address $10 (all writes to all other address = OK).
- FloppyDriver 1.03 checks for read only image files and warns of them, warning for non existent files made configurable, check for write protect
- MonitorGui 1.21 warning for read-only & non existent floppy drives.
- Warnings 1.03 added warnIfFLPDriveIsReadOnly & warnIfNonexistingFLPDrive.
- SMSQmulator 1.16 added inifile items for inexistent and read-only floppy image files.
- SCreen 1.11 paint sets isDirty status (false) before redrawing the screen from the image, so that the main thread can set this to true whilst re
Some bugfixes. Shift Space produces correct character ($FC).
- ILLEGALQmon : actually set the exception.
- EORI_CCR, EORI_SR : increment PC correctly.
- ROXLimm and ROXRimm : set status flags correctly.
- Screen 1.10 SHIFT SPACE produces char $FC.
- TrapDispatcher v. 1.12 floppy check for drive change added, hooks for flp_drive and flp_drive$ added ; uses int in writeSMSQEString..
- FloppyDriver 1.01 checks whether drive has changed, closes rachannel when filename has changed ; uses int in writeSMSQEString.
- MC68000Cpu 2.01 get/setKeyrow peeks/pokes in value directly into keyboard linkage block, presumes sysvars are at $28000 (!); writeSmsqeString uses int instead of short for parameter makes sure short doesn't overflow
- MonitorGoThread 1.01 set TrapDispatcher for CPU even if slow mode
- SMSQmulator 1.15 don't use fast mode if this is disabled in config file.
- Helper v.1.02 writeSMSQEString no longer used (is in cpu anyway).
- ClipBoardXfer, WinDrive, XfaFile (no version bump for this) use int param in writeSMSQEString.
As of this version, Tony Headford's MC68K project library is no longer needed/used.
- Some cleanup in my init files.
- dv3_java_ subdir and included files added : handle floppy drives.
This is now split into most of the objects on the one hand and the cpu and its instructions on the other hand.
- DIVU, DIVS v. 1.01 correctly handle some neg numbers (-256 mod 256)
- MOVEA9 when word moved: fixed
- ABCD, SBCD, NBCD : all corrected (thanks Marcel).
- WinDrive v.1.02 correctly sets new dir of open files if a dir was created and an open file moved into it.
- WinDir v.1.03 correct file/subdir handling when a subdir is created and files should be moved into it.
- FlpDrive, FlpDriver, FlpFile removed.
- FloppyDriver v. 1.00 added, can read/write/format (720K or 1.44 M disks only) floppy disks : most of the work is done by SMSQ/E.
- MonitorGui 1.20 only call getOptions once wdw is open - shows errors in wdw.
- TrapDispatcher v.1.11 special floppy handling trap (java trap #8) implemented.
- Monitor v.1.09 handle floppy disks separately ; device drivers are only loaded if they aren't disabled.
- Helper v.1.01 ConvertStringToInt don't skip last char anymore.
- DriveAssignmentsDialog 1.03 ESC closes the window without modifictions.
Better CPU idle handling. Many bugfixes in the emulation core. Shift +ESC produces (c).
- smsq_java_driver_most_asm 1.01 possibly set up scheduler routine for sleeping if idle.
- Screen v.1.10 Shift ESC gives chr$(127).
- SUBI v.1.01 correctly handle flags if word sized operation.
- NEGX v.1.01 correctly handle Z flag.
- EOR v.1.01 correctly handle long words when dest is a data reg.
- CMP v.1.01 correctly handle bytes & words in some circumstances.
- All ADD2DN and ADD2EA : v. 1.01 correctly test for Z in byte & word sized modes
- All SUB2DN and SUB2EA : v. 1.01 correctly test for Z in byte & word sized modes
- ASRreg/LSRreg the bytes sized instructions weren't implemented (for int sz=1 instead of int sz=0)
- MonitorGui v.1.19 new config menu item (use less CPU time when idle) ; in config menu made group of everything relating to energy/cpu saving.
- SMSQMulator v.1.14 new config item use less cpu when idle.
- MOVEAnLxxx : disassembled op correctly shows size.Byte and not .Word.
- MC68000Cpu set config item value "use less cpu when idle" in config block.
- TrapDispatcher v1.10 implement trap#7, put thread to sleep if machine isn't busy.
- CMP_An : correct compare if word sized.
- SMSQMulator v.1.13 preset options for screen colours is set to 0.
All instructions are now replaced with mine.
The page up/down and home/end keys now generate different keystrokes.
Primitive millisecond timer implemented.
- No Instruction from this is used any longer, all replaced by mine<./li>
- smsq_java_timer_asm : JTMRSET and JTMRGET implemented.
- SUBX, ADDX, LINK, UNLK v.1.00 added : replacement instructions.
- CHK , NOP, STOP, RESET, A,N and SBCD v.1.00 added : replacement instructions.
- RTE, RTR, MOVE_USP, MOVE_TO_CCR v. 1.00 added : replacement instructions.
- BCLR,BCHG,BSET, ILLEGAL, MOVE _TO/FROM_SR v. 1.00 added : replacement instructions.
- Sub2Dn.SUB_An, Add2Dn.ADD_An only register 4 types of instructions.
- TrapDispatcher 1.09 implements trap#5, 27 & 28 (set/get timer) ; sets error return if Trap#3 call not valid for directory device drivers to err.ipar, not err.nimp.
- WinDir v.1.02 sets date of newly created dir to 0 ; writes out dir & Fat after file creation, deletion.
- WinSpecialFile v.1.01 correct handling of sector size return if read and buffer size = 2.
- Screen v.1.09 changed keycodes generated for home, end, page up and page down.
Bugfixes, Some new replacement instructions.
- Many instructions no longer used, replaced by mine
- MULU v.1.00 added : replacement MULU instruction(s).
- MULS v.1.00 added : replacement MULS instruction(s).
- DIVU v.1.00 added : replacement DIVU instruction(s).
- DIVS v.1.00 added : replacement DIVS instruction(s).
- ASL,ASR,LSL,LSR,ROR,ROL,ROXR,ROXL added : replacement instructions.
- TRAP, TRAPV,EXG, NEG , NEGXv.1.00 added : replacement instructions.
- ANDreg,ANDmem, ORreg,ORmem v.1.00 added : replacement instructions.
- New ANDI,ORI,EORI,NOT v.1.00 added : replacement instructions.
- New ANDI,ORI,EORI to CCR & SR,v.1.00 added : replacement instructions.
- New MOVEP, ADDI, SUBI, EXT v.1.00 added : replacement instructions.
- CMPI_Dn size loop counter goes around 3 times, not 5.
- SUB_AnCOntent : removed debug code.
- ADD2DN.ADD_W correctly uses long sized add, same for SUB.
Bug fixes. Embedded applet implemented. MEM device added. SOUND device added. Needs SMSQE 3.18.
- smsq_java_driver_mem_init_asm, smsq_java_driver_mem_wrt_asm v.1.00 added.
- smsq_java_driver_nfa_cct, smsq_java_driver_nfa_useq_asm and smsq_java_driver_nfa_use_asm amended to suit.
- smsq_java_driver_snd_sound_asm renamed to ...sndfil_asm.
- smsq_java_driver_snd_init_asm, ...cnam_asm, ...sound_asm all v. 1.00, all added forSOUND device.
- TrapDispatcher 1.08 before using
this.gui check that it isn't null, which it will be if embedded applet.
- CircularBuffer v. 1.00 added : a simple circular buffer (used for debugging).
- MonitorPanel v.1.00 created (removed from MonitorGui); use CircularBuffer for a primitive command line history.
- MonitorGui 1.18 many functions moved to screen object ; use MonitorPanel object instead of creating these panels myself ;
formWindowOpened starts the emulation, not the Monitor object when loading ROM ; MonitorPanel is independent class.
- Screen v. 1.08 now handles the keypresses etc on the screen (this is split off from MonitorGui 1.17).
- MyApplet v.1.00 implemented - the gui when executed as an embedded applet..
- WinDir v.1.01 correctly copy files from old dir to new dir when new dir is created in the old dir and old dir contained files that must now be in new dir..
- WinFile v.1.02 when converting file into dir get correct filesize after all corresponding files are moved into the new dir ;
read files headers : handle subdirs like files.
- WinDrive v.1.01 trap 4f : name is 0 filled, not space filled.
- BTST v.1.00 added : replacement BTST instruction(s).
- Monitor v.1.08 the monitor no longer starts the emulation when loading the rom file, each of the guis does ;
setLogger added (may set the loggers after creation).
- DeviceDriver v.1.00 writeBack added (for MEM device). All other drivers amended to suit (only mem device implements it for now).
- MemDriver v.1.00 added
- MemDrive v.1.00 added
- MC68000Cpu v.1.11 loadRomImage provides for embedded applet via a Security exception ; provisions for MEM device in setupSMSQE.
- SoundDevice v.1.00 added
- iod_con2_java8_save_sprite_asm used instead of the iod_con2_8_save_sprite routine: could be long word move to odd addresses
- FlpDriver v. 1.02 fixed file open bug (correct filename + return true).
- FlpDrive v. 1.01 handle trap#3, DO=0, handle 1.44 MB "drives" correctly again.
- Some english error texts corrected (Thanks Urs).
- Screen32 1.09 long+ word sized read/write: make sure it doesn't overshoot edge of screen.
- M68000Cpu v. 1.10 screenStopW and screenStopL no longer used, check is made in screen mem (gets rid of bug in screen mode0, last LW wasn't written).
- Screen16 1.03 long+ word sized read/write: make sure it doesn't overshoot edge of screen.
- All SUB2EA (except SUb_AnContent) and their ADD pendants : if LONG, Z flag was calculated wrong.
- ADDQ_d16An, ADDQ_AnPtr, ADDQ_L, ADDQ_MinusAn, ADDQ_W,ADDQ_d8AnXn : N and V status flags could be calculated wrong if byte & word ops.
Sound volume tries different volume controls.
- SampledSound 1.01 Volume control tries volume then master gain. Popup warnign is made configurable.
- Beep 1.02 Volume control tries volume then master gain.
- Warnings 1.02 added warnIfSoundProblem.
- MSMSQmulator 1.11 added WARN-ON-SOUND-PROBLEM config item.
- MonitorGui 1.17 "warn if sound problem" config item & supporting code added.
Bug fixes. The screen x size must be a multiple of 8 in all screen modes. New WIN driver.
Sound volume may be set.
- iod_con2_java16_block_asm : xor block calls java
- iod_con2_java8_block_asm : xor block calls java
- SMSQmulator 1.10 xsize must be multiple of 8 for all screen modes ; provides for BEEP volume in ini file ; nicer subwindow/dialog popup locations.
- MonitorGui 1.16 screen xsize must be a multiple of 8 when configuring the screen size ; provide for beep volume level.
- TrapDispatcher 1.07 name is passed to open trap as an array of bytes ; Aal device drivers adjusted to suit ; implements Trap#5,D0=21 ;
provides for sound volume setting ; implements trap#5, d0=22 (set sound).
- MC68000Cpu 1.09 screenStopW and screenStopL introduced to stop sprite clipping from overshooting screen end and avoid subtraction when checking addresses.
- Screen 1.07 correctly set the dirty flag to false once repainting is done. Don't check for dirty flag when painting component
- Screen16 1.02 optimized (I hope!) fillBlock ; implemented xorBlock.
- Screen32 1.08 byte-sized reading/writing from/to screen is now allowed ; optimized (I hope!) fillBlock , implemented xorBlock.
- WinDriver, WinDrive, WinDir, WinFile, WinSpecialFile : all new.
- Monitor 1.07, Beep v. 1.01 and SampledSound 1.00 provide for volume setting.
- DriveAssignmentDialog 1.02 window pops up at a nicer location (less mouse movement).
- QL50HzInterrupt 1.04 check whether screen is "dirty" is made here, not in the screen paintComponent routine.
Bug fixes. You can use XY when setting window size instead of XxY.
Slightly brighter colours possible (only noticeable for some).
When moving windows, they may be made transparent (WM_MOVEMODE 3) in higher colour modes (8 bit and 16 bit).
When window is minimized execution may be suspended.
Needs SMSQE v.3.16.
- SMSQmulator now uses two modules for the "os": one for more than 1mb of memory, the other for less.
- smsq_java_smsq_header_asm : new (copied from smsq_smsq_header asm) for machines with 1mb or less of memory.
This checks the amount of mem and doesn't load itself if more than 1mb mem is present.
- iod_con2_java6_cmbblk_asm new for wdw move with transparency.
- MC68000Cpu 1.08 faster writeToFile (for XFA). fillBlock fills in background OK. moveBlock : anything screen related is handled by the screen object.
Implements combineBlocks as pass though to screen object.
- Screen 1.06 paintComponent no longer uses a G2d ; vibrantColours switch added ; combineBlock abstract method added. Part of screen initializing moved here.
- Screen32 1.07 moveBlock optimized. combineBlock implemented (for wdw move with transparency). Slightly brighter colours possibility added. .
- Screen16 1.02 slightly brighter colours possibility added. moveBlock optimized. combineBlock implemented (for wdw move with transparency).
- QL50HzInterrupt 1.03 Try to make sure the screen object is no longer referenced when screen is changed.
- MonitorGui 1.15 cleanup (make sure screen object is removed when new screen is made). Screen size may be given as a b instead of a x b.
Slightly brighter colours menu item added. Set windowActivated status, ptr in wdw is only set from SMSQE when ptr "in screen" & wdw is activated.
Provide for checkbox to suspend execution if window is minimized (& call monitor to do so).
- TrapDispatcher 1.06 Trap#5 D0=20 (combineBlocks) implemented.
Bug fixes. Mode 8 works again. Aurora compatible 8 bit colour mode.
- iod_con2_java8_mblock_asm, iod_con2_java8_block_asm : new, call java.
- Screen 1.05 totally revamped, becomes an abstract class.
- Screen0 1.05 : "new", screen for modes 0 (4) and 8. Fixed mode 8.
- Screen32 1.05 : "new" (adapted from old combined screen), for mode 32.
- Screen16 1.00 : new, screen for mode 16 (8 bit aurora colours)
- SMSQmulator 1.09 new (unused) config option more vibrant colours. Optimisations. Cpu uses MB and not KB for mem size.
- MonitorGui 1.14 provides for 8 bit colours choice ; save rom file name before raising OOM error.
- Monitor 1.06 only input mouse and keys if rom loaded ok.
- MC68000PCpu 1.07 warn on out of memory error ; fillBlock and moveBlock are also (partially) used for mode16 ; don't allocate mem on creation, only when loading OS.
Bug fixes. The "about" menu item shows for which version (6 or 7) this SMSQmulator was built. SMSQmulator opens its window at the position it was in when closed.
- smsq_kbd_read_asm: mouse wheel generates three keystrokes
- MonitorGui 1.13 handles alt + cursor keys ; mouse wheel generates three keystrokes ; about shows java version for which this was compiled ;
when opening wdw, reposition wdw at its last position.
- QxlWinFile 1.06 'writeEntireFile' is scrapped entirely :trap#3 with d0=$49 behaves exactly like trap#3,d0=7; except that the size in D2 is long;
sendMultipleBytes writes words not bytes to the clusterbuffer.
- XfaFile 1.03 trap#3 with d0=$49 behaves exactly like trap#3,d0=7; except that the size in D2 is long.
- MC68000Cpu 1.06 readMemoryShort implemented (and used by QxlWinFile).
- SMSQmulator 1.08 some cleanup, get the java version for which SMSqmulator was compiled.; new ini options window x and y positions.
Bug fixes, use SMSQE v. 3.15.
- Use iod_con2_qxl16_sprite_drop_asm instead of iod_con2_java16_sprite_drop_asm.
- Various (non java) bugfixes in smsqe by MK -- SMSQ/E v. 3.15.
- MonitorGui 1.12 set "pointer in screen" status; use new icon; changed some "config" menu item positions.
- TrapDispatcher 1.05 do not set pointer position if mouse not in screen..
- MonitorGui 1.11 correctly set status of read only warning item on startup; handle Shift tab, shift del, alt del, shift alt del.
Better pointer handling, can handle read only qxl.win files, needs new SMSQE file.
- iod_con2_ptr_sptr_asm copied to iod_con2_java, trap#6, calls java when ptr is moved
- iod_con2_java16_sprite_drop_asm correctly handle pointer sprites with solid (=0) mask.
- DBcc,CMPI, ADDEA ADD2Dn, SUBEA,SUB2Dn: new & faster instructions (I hope).
- MC68000Cpu checks ROM version, will not load older ones; copyMem uses system.arrayCopy.
- QxlWinDrive 1.02 can handle read only container files (or container files on read only devices), warns if this is the case.
- QxlWinDriver 1.03 possibly warn if drive is read only.
- Warnings 1.01 adjusted to suit - new warning item disk is read only.
- MonitorGui 1.10 better mouse handling when in double sized mode ; new warning item (drive is read only) ; set screen object coordinates when window moved /resized ;
ignore mouse moved event when mouse position in wdw is changed from within SMSQE via sptr.
- SMSQmulator 1.07 provide for warn drive is read only ini file option ; check for SMSQE version
- NfaFileheader 1.03 correct length of filename used in getSMSQEFilename (stopped makeDirectory from working).
- QxlWinFile 1.04 clusterBuffer is set to 0 when a newly created cluster is added; writeEntireFile correctly sets clusterbuffer position to current file position if special case copying. .
- QxlWinDir 1.02 openFile : set the access bit for the correct file.
- TrapDispatcher 1.04 implement trap#6 (set ptr position).
- Monitor 1.05 pass screen position to TrapDispatcher when wdw is moved/resized.
File devices may be switched off, more correct clock handling.
- nfa,sfa,win,flp_init : provide for 'disable device' config item & act on configured value.
- QxlWinFile 1.04 faster readLine if entire SMSQ/E buffer (length of line to read) is within clusterBuffer.
- QxlWinDrive 1.01 trap#3,4f (re) set the correct drive number (when did that change?).
- MonitorGui 1.10 provide for "disable xxx device" options. Max mem size = 96 MiB
- SMSQmulator 1.7 provide for "disable xxx device" ini file options.
- MC68000Cpu 1.03 reset: check for newer SMSQE version, warn if too old.
- ADDQ, SUBQ : new & faster instructions (I hope).
- QL50HzInterrupt 1.01 better way of calculating the sleep time (I hope).
- CLR sets the Z flag correctly
- SMSQmulator 1.06 fixed getBootDir for windows where the filename doesn't always contain java.io.File.separators but "/" instead. If an ini file
is present on the boot device, always use that, even for saving the ini file.
- MonitorGui 1.09 in memsize choice box current memsize is the default value.
- QxlWinDrive 1.00 unuse : set some objects to null, allows for GC.
- QxlWinDriver 1.02 better way of unsetting drives when drive names changed :unset first,then set new ones.
- SMSQmulator 1.05 try to read ini file from install dir first, then from home dir.
- ILLEGALQMon instruction added, better Qmon breakpoints.
- Monitor 1.04 changeMemSize makes a new interrupt server (when did that get lost?).
- MonitorGui 1.08 make sure screen is at least 512 x 256 pixels.
- SMSQmulator 1.04 make sure screen is at least 512 x 256 pixels.
- Screen 1.02 correct fill block parameters for one line blocks.
- MonitorGui 1.07 when screen size is set, record true screen size in .ini file (could have been changed if in mode 4).
Caps lock status is set in SMSQ/E. Show the SMSQ/E screen size when changing screen size, not the window size.
Better handling of doubling/halving screen size.
- Monitor 1.03 caps lock status is written directly into system variables (!).
- Replaced some instructions with my own(MOVE,MOVEM,JSR,MOVEQ,CMP,MOVEA,TST). The speed increase is minimal.
- smsq_java_driver_scrap_asm : implements the JVAMBAR keyword.
- MonitorGui 1.06 correct check whether screen was in double size upon launching or not. Warning items status set in ini file again.
Menu bar can be made invisible (use JVAMBAR Sbasic command to get it back).
- MC68000Cpu 1.02 write to file : correct write if memory starts at an odd address impacted NFA & SFA drivers).
Pure bugfix release.
- Warning 1.00 use the correct tokens after change from QXL to WIN.
- MonitorGui 1.05 the time correction item really calls the time correction code.
- Added EORI_TO_SR instruction.
- java_rtc_asm calls on java directly to get the time.
- DriveAssignmentDialog 1.01 make sure all double file separators are replaced with single ones.
- Screen 1.00 if we're in QL colours mode, the xsize must be a multiple of 8, if it isn't, it is INCREASED to be so.
1.01 this doesn't call repaint() itself anymore, just sets a flag that it is dirty. Repaint is called by the interrupt thread.
Clut initialized at component creation, general cleanup.Faster moveblock & fillblock routines.
Attempt at general speedup by writing to the bufferedImage.raster.databuffer directly
- MonitorGui 1.03 mention the QL colour mode xsize requirement and warn that machine will be reset when screen size is changed.
1.04 screen size (but not resolution) changes when the window is resized. Possibility to double the window size (not resolution) introduced.
- XfaFile 01.02 dirs are handled differently : read the entire dir in a go; also, check for pending input handled correctly
even for dirs. Creates files with QemuFileheaders by default. Default fileheader = QemuHeader, not SFA header
- TrapDispatcher 1.03 implement trap#5, d0=18 (read rtc directly from java).
- QL50HzInterrupt 1.01 no longer set time each time this is called. It calls screen.repaint every secont time it executes
- NfaFileHeader, SfaFileHeader 1.01 set bogus file length if directory.
- Replaced some instructions with my own>
- QXL name changed to WIN. SMSQmulator 1.02 amended to suit.
- QemuFileheader 1.00 created : header compatible with Q-emulator.
- XfaFile 01.01 trap#3 set file positions (rel or abs) : if position to set is beyond end of file, return error eof.
01.02 dirs are handled differently : read the entire dir in a go. - Check for pending input handled correctly even for dirs.
- Double file separators converted into single ones for the filename. - Default fileheader = QemuHeader, not SFA header.
- smsq_java_driver_scrap_asm newly created.
- ClipBoardXfer 1.00 created, trnsfer to/from scrap to/from system clipboard.
- TrapDispatcher 1.02 added routine for this.
- QxlWinDir 1.01 when creating a file, make sure name of subdir is copied first.
- QxlWinFile 1.02 when making a dir and copying existing files into it, correctly calculate fileSize (findNextEDntry),
when making a dir & existing files are moved there, correctly copy name of dir into name of file,
when making a dir & existing files are moved there, correctly set filesize.
- MC68000CPU 1.00, NfaFileheader 1.00, QL50HzInterupt 1.00, QXLWinDir 1.00 : use time adjustment from Monitor (Monitor.TIME_OFFSET)
- QxlWinFile 1.01, : use time adjustment from Monitor (Monitor.TIME_OFFSET)
- Monitor 1.02 Use time adjustment
- MonitorGui 1.02 provide for time correction option in options menu..
- SfaFileheader 1.00 , XFAFile 1.00 use time adjustment from Monitor (Monitor.TIME_OFFSET)
- SMSQmulator 1.01 provide for time offset option, use it for monitor..
- smsq_con_sched_asm : call java whenever the cursor is blinked.
- iod_con2_java16_cct : adjusted to suit
- iod_con2_javaql_cct : adjusted to suit
- FlpDrive 1.00 openFile : handle wildcards correctly
- SMSQmulator 1.00 throttle is a configurable value,
- MonitorGui 1.01 set warning checkboxes status on startup, only make new (QXL,SFA,NFA,FLP) filenames if OK was hit in DAD wdw,
Added Throttle config item. "Wake up" monitorGo thread if asleep and key typed. Handle some accented chars.
- QxlWinFile 1.00 correct handling of file time setting.
- DriveAssignmentDialog 1.00 set better JTextField sizes : min 200 or max string length.
- TrapDispatcher 1.01 throttle is a configurable value; throttle may be "interrupted" by key typed.
- Monitor 1.01 "wake" monitorGo thread if key typed.
- QxlWinFile 0.09 handleTrap3 d0=$47:limit max size of header read to 64 bytes
- XfaFile 0.09 handleTrap3 d0=$47:limit max size of header read to 64 bytes
- FlpDrive 0.04 handleTrap3 d0=$47:limit max size of header read to 64 bytes
- Screen 0.01 1 in 4 colour stipples handled correctly
- QxlWinFile,FlpDrive & XfaFile: getLine : if no LF found but bytes got is less than buffersize,return eof, not bufferfull
- All of these changes: thanks to Marcel Kilgus for pointing them out
- ANDI_TO_CCR mask out unwanted bits!
- ANDI_TO_SR mask out bits 5,6,7 & 11 : they are always 0
- EORI_TO_CCR mask out bits 5,6,7 : they are always 0
- MOVE_TO_CCR mask out bits 5,6,7 : they are always 0
- MOVE_TO_SR mask out bits 5,6,7 & 11 : they are always 0
- ORI_TO_CCR mask out bits 5,6,7 : they are always 0
- ORI_TO_SR mask out bits 5,6,7 & 11 : they are always 0
- FlpDrive 0.02 :also handles 1.44 MB (QL5B) disk images
- MonitorGui 0.05 added some Mac specific code for keyboard handling and window appearance, courtesy of Tobias Fröschle
- SMSQmulator 0.02 added some Mac specific code for application appearance, courtesy of Tobias Fröschle
- smsq_java_driver_flpinit_asm : implements flp driver.
- smsq_java_driver_most_asm : amended to suit.
- smsq_java_driver_snd_ssss_asm : added sound routine
- smsq_java_base_asm : sets random number from java
- FlpDriver,FlpDrive,FlpFile implemented : SMSQmulator can now read 720 K floppy disk images.
- SampledSound 0.01 : attempt to minimise impact of java bug.
- Warnings added and made configurable.
- MC68000Cpu : sets random number in linkage block
- SMSQmulator 0.01 : if smsqe file not configured,try to use one called "SMSQE" in the dir where the jar file lies.
- FlpDrive 0.01 :correct handling of lvel2 dirs, correct handling od dir size
- smsq_java_hdop_sms_asm 0.01 : implements beep
- Beep implemented
- QxlWinDrive protests when nonstandard disks detected
- Fixed a bug in MOVEM (if pre-dec and ea is also moved, use initial value of ea)
- smsq_java_ssss_asm 0.01 : implements ssss sound device
- SoundSample object implemented, primitive ssss sound driver
- QxlWinFile when saving bytes/mutiple bytes, only increase filesize if save was at send of file
- QxlWinFile read cluster anew only when the cluster HAS changed
- NFA and SFA drivers : set/get file dates and versions implemented.
- NFA and SFAFileHeaders amended to suit
- NFA,SFA and QXL drivers : don't write to read only files.
- smsq_java_driver_nfa_use_asm 0.01 : the device USE name gets passed on to java (for better rename)
- All filetraps on QxlWin files/drives implemented.
- QxlWinDir ,QxlWinDrver, QxlWinDrve, QxlWinFile writing to disk implemented
- TrapDispatcher,DeviceDriver,XfaDriver,QxlWinDriver adapted for device USE call.
- Rename on QxlWin files implemented.
- iod_con2_java_procv_asm : QVME thing is installed, only DISP_TYPE has any effect.
- smsq_java_driver_nfa_trp2_asm : close file routine decreases nbr of open files and releases chan defn block
- Screen : fixed screen size of 512x256 in mode 32.
- DriveAssignmentDialog : fixed direct editing of dirs.
- Localization object created & used throughout.
- MonitorGui uses localization throughout.
- Xfafile: resolved bug with Sfa filenames introduced in 0.6.e
- Xfafile: wdir works as expected
- Xfafile: bug introducing wrong fileposition removed
- XfaDriver 0.02 : the SfaDriver sets error returns if error in readHeaderOk.
- SfaDriver : amended to suit
- QxlWinDir implemented
- QxlWinDrver implemented
- QxlWinDrve implemented
- QxlWinFile partially implemented
- fixed my own EORI_TO_CCR class.... (fixes problems with easel)
- iod_con2_java16_sprite_drop_asm 1.11 : provide for sprites with no mask pointer (= solid mask).
- QxlWinFile : file header is read correctly
- MonitorGui : new attempt at mac fix
- QxlWinDrive : ok if filename contains accented chars, ok if a (sub) dir is opened as a normal file.
- Screen : correct display of mode 8 when in QL colours mode.
- DriveAssignmentDialog : take into account text typed directly into the textfields.
- SfaFileheader : readfileheader limits the amount to be read to 64 bytes.
- SfaFileheader : when creating fileheader (for existing file), set the name to the name this file is actually used under.
- XfaFile : for SFA files, a "dir" shows the "correct" filename (i.e. that of the underlying file) if that name and that in the header differ (e.g. when files are copied under the native filesystem).
- Helper: convert to/from Smsqe accented chars.
- Mc68000cpu cpu : use this to convert filenames in read/writeSmsqeString routines
- Mc68000cpu cpu : writeToFile caters for the write starting at an odd address
- XfaFile : make use of char conversion if bytes read from dir.
- Re-debugged ASR and ASL: the shift count is mod 64 (not mod 32), same for LSR, LSL, ROL,ROR.
- Fixed SUBX and ADDX.
- Fixed NOT (.b and .w).
- QXL.WIN driver implemented : OK, but read only.
- Hwinit modified.
- iod_con2_ptr_rle_asm modified for Smsqmulator only : : it could make word sized accesses to odd adresses.
- MonitorGui : F12 emulates Alt+space. Fast mode become configurable.
- MonitorGui : More config items. Most are used at startup. Set screen mode./nfa drives etc.
- MC68000 is renamed MC68000Cpu. Some instuctions are "ported" to this. Still slow. (Profiling shows that most of the time is spent decoding the address modes)
- XfaFile: rename implemented. Correct file positioning & error returns if file positioned beyond end of file.
- XfaFile: dirfile size shown correctly.
- XfaFileheader : get/set dates rouytines provoded for
- SfaFileheader : get/set dates implemented. For read only files the backup date will NOT be set, contrary to what is expected
- NfaFileheader : get/set dates implemented for the update date. The backup date will always be equal to the update date, contrary to what is expected
- M68000K :
- SMSQE :
- iod_con2_16: move block and fill block : when in screen mode mode 32 do this in Java.
- hwinit_asm : set screen mode byte to 0 or 3.
- started to integrate the qxl driver : java_driver_qxl_init_asm
- implemented sfa_use and nfa_use. If you set one of them to win, SMSQE will boot from (win1_boot) automatically.
- SMSQmulator :
- MonitorGui : trap mousewheel events.
- MonitorGui : More config items. Most are used at startup. Set screen mode.
- Better handling of change memory , no need to leave the emulation again :Screen, Trapdispatcher, MC680000 adapted as needed
- If 16 bit colour is used, then the emulator needs at least 8 MB of memory. 4 MB won't cut it.
- SMSQmulator : if screen mode 32 the emulator always uses at least 8 MB of memory
- MC 68000 & Screen: move block and fillblock operations are handled by the screen object/MC6800 object
- XfaFile: rename implemented. Correct file positioning & error returns if file postiioned beyond end of file
- fixed CMPI entirely (hopefully), modified raiseInterrupt,modified raiseException,added setSR2
- SMSQE :
- hwinit distinguishes between soft & hard reset (soft reset leads to hard reset).
- java_iod_con2_sched_asm: sleep a bit when flipping cursor (will probably be thrown out again).
- SMSQmulator :
- XFAFile : write bytes returns the number of bytes written in D1.
- XFAFile : set File position returns the actual fileposition if set beyond end of file.
- XFAFile : better check that file is an SFA file on file open.
- XFAFile : file delete and makedir implemented.
- MemoryMap : better reset handling.
- MC68000 Correct handling of interrupts and of trace bit.
- MC68000 Intergrates the memory, doesn't use a separate memory object any more, all routines from memory map included in MC 68000.
- MC68000 all memory accesses above 0x07ffffff are cut off (!!!!!!) due to some progs using the higher bits of addresses
for their own purposes.
- Screen and Colourpanel merged into one object (Screen).
- MonitorGui : multiple new possibilities for configuration.
- JMP this replaces the normal jump instruction : a check is made for memory cutoff
- M68000K :
- fixed CMPA.W, added ORI_TO_CCR, revamped ORI_TO_SR, added ANDI_TO_CCR, revamped ANDI_TO_SR
- debugged ROXL and ROXR (again - to get rid of bug introduced by me)
- SMSQE :
- realtime clock is really there!
- set nfa device as PROGS and DATA default device, if nfa1_boot is there.
- mouse & keyrow totally implemented. SMSQmulator now identifies itself as MACHINE = 20.
- SMSQmulator :
- use javacom trap 0 as hard breakpoint (instead of illegal instruction, used by QMON)
- you can mask the monitor windows.
- all trap #3 calls for SFA & NFA drivers implemented (including check for pending input)
- Compiled for java 6
- TAB no longer switches between windows
- keyrow & mouse button events trapped for keyrow emulation
- debugged BTST, BCLR, BSET & BCHG, debugged ROXL and ROXR (again), another bug in MOVEM fixed, MULS fixed
- debugged ASR, MOVEP,CLR,SWAP
- SMSQE :
- implement read realtime clock (smsq_java_rtc_asm)- setting & adjusting are not supported.
- mouse implemented, this branches off the keyboard read routine (mouse doesn't support dragging)
- larger screen sizes allowed, mode 8 implemented
- 50 Hz interrupt also sets the rtc in the linkage block
- better Nfa driver.
- Sfa driver implemented (this might still have a few bugs).
- mouse mvt & buttons trapped & sent to SMSQE by MonitorGui.
- screen MODE change trap caught, it uses a JAVACOMM "Trap#5" call, D0=1, D1 = mode wished (0 or 8)
v. 0.00 --
-------------------- To do list ---------------------------
Known bugs/Still to do are (at least):
Bugs or necessary things to do:
Desirable enhancements :
- PAR, SER drivers (probably never gonna happen)
@author and copyright (C) W. Lenerz 2012.-2013