| 
					
						| 
						 | The Memotech MTX Series  | 
						
						 |  
				MTX  / Z80 Assembly Language 
				 
				Introduction 
				Paul Daniels is working on an Assembler environment for the MTX 
				under Windows, but it should also work under Linux If 
					anyone has any ideas or code that would be useful when 
					writing games please let Paul know via the
				Memorum forum thread .
				  The shell takes over the machine, setting 
				up its own VDP interrupt, scans for the joystick and 
				incorporates PSGLib. Compiling a bit of code should be as easy 
				as editing the main_assem.z80 file and 
				then typing "nmake". The 
				nmake 
				command is usually provided by Microsoft's free C compiler.  Make files are used to simplify the process. 
				There is an env.bat file which sets up the path for
				wla-dx,
				memu and
				mtx2bas. Update as 
				required.    There is a make file to generate a MAIN.mtx 
				file.  
					
						| There is a user 
						defined section in the Make file :- |  
						| MACHINE=MTX512 | Builds a 48Kb image for MTX512 |  
						| MACHINE-MTX500 | Builds a 32Kb image for MTX500 
						and MTX512 |  
						| PAYLOAD=1 | Compiles the code so that it is 
						loaded at $4100 or $8100 |  
						| PAYLOAD=2 | Compiles the code as part of a 
						ASSEM statement |  
						| AUTOSTART=0 | Don't auto-start the program |  
						| AUTOSTART=1 | Auto-start the program |  Sprites  To use sprites, a table at 
				VDP_SPR_TAB is used to hold the Sprite Attributes. This differs 
				from the VDP sprite attribute table in that the horizontal 
				coordinate is 16bit. The other change is vertical sprite 
				coordinates are from 0 to 208 and horizontal coordinates from 0 
				to 272.  Coordinate 0 is 16 pixels before the actual 
				screen so the sprite will not be seen. Coordinate 16 is the 
				first pixal on the screen. likewise vertical coordinate 208 will 
				put the sprite below the screen and 272 to the left of the 
				screen. This should allow easy placement of sprites for bleed-in 
				from the edges.  Another variable, VDP_SPR_CNT, holds the 
				number of sprites to process. This is reset after every 
				interrupt. The VDP Interrupt handles the conversion to 
				coordinates required by the VDP, e.g. Early Clock.    Prerequisites Optional 
					
					
					MEMU - For testing
					
					MTX2BAS - A 
					program to convert .mtx, .sdx and .run files to text 
					
					PSGLib - Z80 
					ASM library (and C conversion/compression tools) to allow 
					replay of VGMs as background music/SFX in SEGA 8 bit 
					homebrew programs        
					
						| Zip | Version | Description |  
						|  | v0.6 06/01/18
 | Put Events into own library. Triggered event returns 
						event number in A reg
 Add zx7 decompression to RAM.
 Added macros :
 VDP_SETUPFONT, 
						VDP_SETSPRDATA, VDP_SETSPRATR,
 VDP_SETVDPINT, VDP_SETNAMPOS_W, VDP_SETNAMPOS_R,
 VDP_WRITE_A, VDP_WRITE_N, VDP_READ_A, VDP_FILL_A,
 VDP_WRITE_STR, SCO_INIT, SCO_PRINT, SCO_ADDVAL, 
						SCO_ADDHI Added VDP_WRITE_FF.
 Document library 
						functions in header files.
 Add defines for VDP 
						graphic type, sprite size and mag.
 Add defines for 
						border colour.
 Also includes the game 
						Head On, as demonstrated at
						
						Memofest 2017.
 |  
						|  | v0.5 27/10/16
 | Released at Memofest 2016 WLA-DX Libraries now 
						being used.
 Improved WLA-DX memory mapping.
 Restructured folders.
 Added ZX7 decoder by Einar 
						Saukas & Urusergi.
 ZX7 updated by Daniel Bienvenu 
						for VRAM decompression.
 Added 61Hz CTC interrupt.
 Renamed JOY_READ to JOY_ISR.
 Added simple Event 
						semaphore.
 Added EVT_UNSET to remove given event.
 Updated VDP to allow for other interrupt sources.
 Constants for VDP registers now using values from 
						include file.
 Replace VDP_CLRNAM with VDP_FILL 
						routine.
 Swapped hl & de register usage for VDL_LDIR 
						to match ldir.
 Added VDP_SETFONT routine.
 |  
						|  | v0.4 10/03/16
 | Change Log (Now included in the archive file) Changelog added.
 Readme added.
 Licence added - 
						GPL v3.0.
 Pass initial paper/border colour to 
						VDP_INIT.
 Change PAYLOAD to use CODE and BASIC.
 Change MTX512 and MTX500 to be MACHINE=MTX???.
 Change AUTOSTART to be YES or NO.
 User code now 
						appears in usercode.z80.
 Change VDP_SPR_CNT to be a 
						pointer, not a table.
 New lib_stdlib.inc file with 
						standard library functions.
 Add random number 
						generator, a CMWC from WOS by Patrik Rak.
 Changed to 
						256 char font from a 768 char font.
 Add Event 
						system.
 Demo of Events to bounce skull around screen 
						and change colour.
 |  
						|  | v0.3 04/12/15
 | Change Log Single Project which can build 
						either 32kb or 48kb images.
 Code payload can be 
						included as part of BASIC or loaded afterwards.
 Ability to Auto-start.
 Interface to VDP sprites.
 Demo of 32 sprites being moved by Joystick or numeric 
						keypad, showing how sprites can hide behind the borders.
 |  
						|   | v0.2 14/11/15
 | 
						Change LogThe memory model is now determined 
						by a variable in the Makefile
 Started to use 
						headers and include files for the libraries (a la "C")
 The font used is apparently the 
						Namco arcade one. The Code project uses the music from 
						the first level of
						
						Sonic the Hedgehog, the Basic project uses the music 
						from
						
						Rainbow Island (I think). Added  :
 1. 
						VDP interrupt based.
 2. Joystick sensing.
 3. PSGLib providing interrupt 
						VGM music and effects  |  
						|  | v0.1 | Initial release 02/11/2015 |  |