<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>http://wiki.specnext.dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Taylorza</id>
	<title>SpecNext Wiki - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.specnext.dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Taylorza"/>
	<link rel="alternate" type="text/html" href="http://wiki.specnext.dev/Special:Contributions/Taylorza"/>
	<updated>2026-05-31T08:14:19Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>http://wiki.specnext.dev/index.php?title=Compilers&amp;diff=41849</id>
		<title>Compilers</title>
		<link rel="alternate" type="text/html" href="http://wiki.specnext.dev/index.php?title=Compilers&amp;diff=41849"/>
		<updated>2026-02-22T16:12:27Z</updated>

		<summary type="html">&lt;p&gt;Taylorza: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== BASIC ==&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;[https://zxbasic.readthedocs.io/ ZX Basic]&#039;&#039; ===&lt;br /&gt;
: A Basic to Z80 compiler with extensions added to Sinclair Basic.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;[https://github.com/em00k/NextBuild NextBuild v7]&#039;&#039; ===&lt;br /&gt;
: NextBuild is a suite of tools for Windows which uses Boriel&#039;s ZX Basic Compiler. It comes with a Next library of routines to take advantage of the Nexts hardware. Examples included.&lt;br /&gt;
: See [[NextBuild:Main Page| NextBuild dedicated Wiki section]].&lt;br /&gt;
&lt;br /&gt;
== C ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;z88dk-scc80&#039;&#039; and &#039;&#039;z88dk-zsdcc&#039;&#039; === &lt;br /&gt;
: Via the &amp;quot;zcc&amp;quot;, the [https://github.com/z88dk/z88dk Z88dk] toolchain&#039;s front end, two compilers could be invoked &amp;lt;ref&amp;gt; [https://github.com/z88dk/z88dk/wiki z88dk wiki] &amp;lt;/ref&amp;gt;:&lt;br /&gt;
: &amp;quot;z88dk-scc80&amp;quot;, a small C derived C compiler that is nearly C90 compliant with a few notable exceptions.  Emphasis is on small code.&lt;br /&gt;
: &amp;quot;z88dk-zsdcc&amp;quot;, a fork of [[#SDCC]].&lt;br /&gt;
: A Next target is present and under development.  Output file types include tap, sna, and esxdos dot commands.&lt;br /&gt;
: [[Calling convention notes]]&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;SDCC&#039;&#039; === &lt;br /&gt;
&lt;br /&gt;
: [https://sdcc.sourceforge.net/ Small Device C Compiler, SDCC] is an open-source retargettable, optimizing Standard C (ANSI C89, ISO C99, ISO C11, ISO C23) compiler suite that targets a lot of mostly 8-bit microprocessors &amp;lt;ref&amp;gt;[https://sdcc.sourceforge.net/ SDCC targets as of February 2026]: the Intel MCS51 based microprocessors (8031, 8032, 8051, 8052, etc.), Maxim (formerly Dallas) DS80C390 variants, Freescale (formerly Motorola) HC08 based (hc08, s08), Zilog Z80 based MCUs (Z80, Z80N, Z180, SM83, Rabbit 2000, 2000A, 3000A, SM83, TLCS-90, eZ80, R800), Padauk (pdk14, pdk15), STMicroelectronics STM8, MOS 6502 and WDC 65C02. Work is in progress on supporting the Rabbit 4000, 5000, 6000, Padauk pdk13 and the f8 and f8l targets; Microchip PIC16 and PIC18 targets are unmaintained.  SDCC can be retargeted for other microprocessors.&amp;lt;/ref&amp;gt; including a Z80N target.&lt;br /&gt;
&lt;br /&gt;
: The compiler, assembler and linker are GNU GPL &amp;lt;ref&amp;gt;[https://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU GPL 2] , [https://www.gnu.org/licenses/gpl-3.0.html GNU GPL 3]&amp;lt;/ref&amp;gt; licensed and the compiler&#039;s libraries are GNU GPL licensed with a special exception.&lt;br /&gt;
&lt;br /&gt;
: Developed as separate projects there are: a development kit for SDCC for creating small NextZXOS DOT programs and a [https://github.com/retro-vault/libcpm3-z80 library for CP/M 3]&lt;br /&gt;
&lt;br /&gt;
: Firmware and loader sources in the tbblue repository were made to be compiled with SDCC.&lt;br /&gt;
&lt;br /&gt;
== C-like ==&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;[https://taylorza.itch.io/znc-compiler ZNC Native compiler]&#039;&#039; ===&lt;br /&gt;
: ZNC is a language and compiler for the ZX Spectrum Next. The language is closely modeled after the C programming language.&lt;br /&gt;
: The language suite includes the compiler, an optimizer, assembler and text editor to support native development on the Next. It also include a frontend that makes managing source files and building your projects easier.&lt;br /&gt;
&lt;br /&gt;
== Forth ==&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;VForth Next&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
: [https://github.com/mattsteeldue/vforth-next VForth Next]] is a Z80N Forth system suitable to run on the ZX Spectrum Next&lt;br /&gt;
&lt;br /&gt;
== Pascal ==&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;Pasta80&#039;&#039; ===&lt;br /&gt;
: [https://github.com/pleumann/pasta80 Pasta80] is a Turbo Pascal 3.0-compatible compiler that generates machine code for classic and modern Z80 machines (currently ZX Spectrum 48K/128K/Next and CP/M). &lt;br /&gt;
: GNU GPL 3 license with a linking exception.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;OmniPas&#039;&#039; ===&lt;br /&gt;
: [https://syntaxerrorsoftware.itch.io/omnipas OmniPas] is a Windows‑based Pascal cross‑compiler that targets multiple platforms, including the ZX Spectrum and ZX Spectrum Next.&lt;br /&gt;
&lt;br /&gt;
== Utilities ==&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;[https://github.com/speccyorg/bas2tap bas2tap CLI]&#039;&#039; ===&lt;br /&gt;
: The utility to convert `BASIC in an ASCII file&#039; to a TAP tape image file (can be loaded by emulator or Next as regular BASIC program).&lt;br /&gt;
: Comes complete with portable C source. With full BASIC syntax checking!&lt;br /&gt;
: (does not support NextBASIC extensions)&lt;br /&gt;
: (for NextBASIC you can use the NextZXOS dot commands .txt2bas and .bas2txt directly on the Next)&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;[https://github.com/remy/txt2bas txt2bas &amp;amp; bas2txt CLI]&#039;&#039; ===&lt;br /&gt;
: Cross platform command line tool to convert NextBASIC to +3dos .bas file and convert .bas files to plain text.&lt;br /&gt;
: The tool also includes verbose validation, tap and 3dos, BANK compatible and headerless export and import support&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Taylorza</name></author>
	</entry>
	<entry>
		<id>http://wiki.specnext.dev/index.php?title=Compilers&amp;diff=41582</id>
		<title>Compilers</title>
		<link rel="alternate" type="text/html" href="http://wiki.specnext.dev/index.php?title=Compilers&amp;diff=41582"/>
		<updated>2025-12-29T16:18:11Z</updated>

		<summary type="html">&lt;p&gt;Taylorza: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== &#039;&#039;sccz80&#039;&#039; and &#039;&#039;zsdcc&#039;&#039; === &lt;br /&gt;
Part of [https://github.com/z88dk/z88dk Z88dk]&lt;br /&gt;
: &amp;quot;sccz80&amp;quot; is a small C derived C compiler that is nearly C90 compliant with a few notable exceptions.  Emphasis is on small code.&lt;br /&gt;
: &amp;quot;zsdcc&amp;quot; is a fork of sdcc-z80 that is an open source optimizing C compiler with C90 and elements of C99 and C11 compliance.&lt;br /&gt;
: A Next target is present and under development.  Output file types include tap, sna, and esxdos dot commands.&lt;br /&gt;
: [[Calling convention notes]]&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;[https://zxbasic.readthedocs.io/ ZX Basic]&#039;&#039; ===&lt;br /&gt;
: A Basic to Z80 compiler with extensions added to Sinclair Basic.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;[https://github.com/em00k/NextBuild NextBuild v7]&#039;&#039; ===&lt;br /&gt;
: NextBuild is a suite of tools for Windows which uses Boriel&#039;s ZX Basic Compiler. It comes with a Next library of routines &lt;br /&gt;
: to take advantage of the Nexts hardware. Examples included.&lt;br /&gt;
: &lt;br /&gt;
: A NextBuild [[NextBuild:Main Page|dedicated Wiki section]] is &amp;quot;planned&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;[https://github.com/speccyorg/bas2tap bas2tap utility]&#039;&#039; ===&lt;br /&gt;
: The utility to convert `BASIC in an ASCII file&#039; to a TAP tape image file (can be loaded by emulator or Next as regular BASIC program).&lt;br /&gt;
: Comes complete with portable C source. With full BASIC syntax checking!&lt;br /&gt;
: (does not support NextBASIC extensions)&lt;br /&gt;
: (for NextBASIC you can use the NextZXOS dot commands .txt2bas and .bas2txt directly on the Next)&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;[https://github.com/remy/txt2bas txt2bas &amp;amp; bas2txt CLI utility]&#039;&#039; ===&lt;br /&gt;
: Cross platform command line tool to convert NextBASIC to +3dos .bas file and convert .bas files to plain text.&lt;br /&gt;
: The tool also includes verbose validation, tap and 3dos, BANK compatible and headerless export and import support&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;[https://taylorza.itch.io/znc-compiler ZNC Native compiler]&#039;&#039; ===&lt;br /&gt;
: ZNC is a language and compiler for the ZX Spectrum Next. The language is closely modeled after the C programming language.&lt;br /&gt;
: The language suite includes the compiler, an optimizer, assembler and text editor to support native development on the Next. It also include a frontend that makes managing source files and building your projects easier.&lt;/div&gt;</summary>
		<author><name>Taylorza</name></author>
	</entry>
	<entry>
		<id>http://wiki.specnext.dev/index.php?title=MAME:Plugins_and_Scripts&amp;diff=41432</id>
		<title>MAME:Plugins and Scripts</title>
		<link rel="alternate" type="text/html" href="http://wiki.specnext.dev/index.php?title=MAME:Plugins_and_Scripts&amp;diff=41432"/>
		<updated>2025-11-29T02:23:04Z</updated>

		<summary type="html">&lt;p&gt;Taylorza: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These MAME plugins and scripts may be of interest to Next developers and end-users:&lt;br /&gt;
&lt;br /&gt;
=Plugins=&lt;br /&gt;
&lt;br /&gt;
== [https://github.com/Threetwosevensixseven/MAMENextPlugins nextfaststart] ==&lt;br /&gt;
Minimizes MAME Next Machine boot time, by allowing code running inside the emulator to control MAME execution speed. Useful for developers.&lt;br /&gt;
Release: [https://github.com/Threetwosevensixseven/MAMENextPlugins/releases/latest Yes]&lt;br /&gt;
Source: [https://github.com/Threetwosevensixseven/MAMENextPlugins/blob/main/src/plugins/nextfaststart/init.lua Yes]&lt;br /&gt;
&lt;br /&gt;
== [https://github.com/Jakobud/skipstartupframes skipstartupframes ] ==&lt;br /&gt;
Another plugin to speedup MAME boot time, by specifying a number of frames to run at full speed for each machine being emulated. More general, and useful for end-users or developers.&lt;br /&gt;
Release: [https://github.com/Jakobud/skipstartupframes/releases/tag/v3.0.0 Yes]&lt;br /&gt;
Source: [https://github.com/Jakobud/skipstartupframes/tree/main/src Yes]&lt;br /&gt;
&lt;br /&gt;
== [https://github.com/Threetwosevensixseven/MAMENextPlugins debugstart] ==&lt;br /&gt;
Allows to use the MAME debugger later, without compromising startup speed or needing keys to be pressed to continue at startup.&lt;br /&gt;
Release: [https://github.com/Threetwosevensixseven/MAMENextPlugins/releases/latest Yes]&lt;br /&gt;
Source: [https://github.com/Threetwosevensixseven/MAMENextPlugins/blob/main/src/plugins/debugstart/init.lua Yes]&lt;br /&gt;
&lt;br /&gt;
=Scripts=&lt;br /&gt;
&lt;br /&gt;
== [https://github.com/taylorza/MAMEScripts/tree/main/scripts profiler.lua] ==&lt;br /&gt;
A simple on-screen profiler (overlay) designed for the ZX Spectrum Next that tracks up to 8 timers using writes to NEXTREG 127 (0x7F) to control the timers.&lt;br /&gt;
[https://github.com/taylorza/MAMEScripts/blob/main/README.md#profilerlua Documentation]&lt;/div&gt;</summary>
		<author><name>Taylorza</name></author>
	</entry>
	<entry>
		<id>http://wiki.specnext.dev/index.php?title=MAME:Plugins_and_Scripts&amp;diff=41431</id>
		<title>MAME:Plugins and Scripts</title>
		<link rel="alternate" type="text/html" href="http://wiki.specnext.dev/index.php?title=MAME:Plugins_and_Scripts&amp;diff=41431"/>
		<updated>2025-11-29T02:21:10Z</updated>

		<summary type="html">&lt;p&gt;Taylorza: /* profiler.lua */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These MAME plugins and scripts may be of interest to Next developers and end-users:&lt;br /&gt;
&lt;br /&gt;
=Plugins=&lt;br /&gt;
&lt;br /&gt;
== [https://github.com/Threetwosevensixseven/MAMENextPlugins nextfaststart] ==&lt;br /&gt;
Minimizes MAME Next Machine boot time, by allowing code running inside the emulator to control MAME execution speed. Useful for developers.&lt;br /&gt;
Release: [https://github.com/Threetwosevensixseven/MAMENextPlugins/releases/latest Yes]&lt;br /&gt;
Source: [https://github.com/Threetwosevensixseven/MAMENextPlugins/blob/main/src/plugins/nextfaststart/init.lua Yes]&lt;br /&gt;
&lt;br /&gt;
== [https://github.com/Jakobud/skipstartupframes skipstartupframes ] ==&lt;br /&gt;
Another plugin to speedup MAME boot time, by specifying a number of frames to run at full speed for each machine being emulated. More general, and useful for end-users or developers.&lt;br /&gt;
Release: [https://github.com/Jakobud/skipstartupframes/releases/tag/v3.0.0 Yes]&lt;br /&gt;
Source: [https://github.com/Jakobud/skipstartupframes/tree/main/src Yes]&lt;br /&gt;
&lt;br /&gt;
== [https://github.com/Threetwosevensixseven/MAMENextPlugins debugstart] ==&lt;br /&gt;
Allows to use the MAME debugger later, without compromising startup speed or needing keys to be pressed to continue at startup.&lt;br /&gt;
Release: [https://github.com/Threetwosevensixseven/MAMENextPlugins/releases/latest Yes]&lt;br /&gt;
Source: [https://github.com/Threetwosevensixseven/MAMENextPlugins/blob/main/src/plugins/debugstart/init.lua Yes]&lt;br /&gt;
&lt;br /&gt;
=Scripts=&lt;br /&gt;
&lt;br /&gt;
== [https://github.com/taylorza/MAMEScripts/tree/main/scripts profiler.lua] ==&lt;br /&gt;
A simple on-screen profiler (overlay) designed for the ZX Spectrum Next that tracks up to 8 timers using writes to NEXTREG 127 (0x7F) to control the timers.&lt;/div&gt;</summary>
		<author><name>Taylorza</name></author>
	</entry>
	<entry>
		<id>http://wiki.specnext.dev/index.php?title=MAME:Plugins_and_Scripts&amp;diff=41430</id>
		<title>MAME:Plugins and Scripts</title>
		<link rel="alternate" type="text/html" href="http://wiki.specnext.dev/index.php?title=MAME:Plugins_and_Scripts&amp;diff=41430"/>
		<updated>2025-11-29T02:20:25Z</updated>

		<summary type="html">&lt;p&gt;Taylorza: Added a link to the profiler script&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These MAME plugins and scripts may be of interest to Next developers and end-users:&lt;br /&gt;
&lt;br /&gt;
=Plugins=&lt;br /&gt;
&lt;br /&gt;
== [https://github.com/Threetwosevensixseven/MAMENextPlugins nextfaststart] ==&lt;br /&gt;
Minimizes MAME Next Machine boot time, by allowing code running inside the emulator to control MAME execution speed. Useful for developers.&lt;br /&gt;
Release: [https://github.com/Threetwosevensixseven/MAMENextPlugins/releases/latest Yes]&lt;br /&gt;
Source: [https://github.com/Threetwosevensixseven/MAMENextPlugins/blob/main/src/plugins/nextfaststart/init.lua Yes]&lt;br /&gt;
&lt;br /&gt;
== [https://github.com/Jakobud/skipstartupframes skipstartupframes ] ==&lt;br /&gt;
Another plugin to speedup MAME boot time, by specifying a number of frames to run at full speed for each machine being emulated. More general, and useful for end-users or developers.&lt;br /&gt;
Release: [https://github.com/Jakobud/skipstartupframes/releases/tag/v3.0.0 Yes]&lt;br /&gt;
Source: [https://github.com/Jakobud/skipstartupframes/tree/main/src Yes]&lt;br /&gt;
&lt;br /&gt;
== [https://github.com/Threetwosevensixseven/MAMENextPlugins debugstart] ==&lt;br /&gt;
Allows to use the MAME debugger later, without compromising startup speed or needing keys to be pressed to continue at startup.&lt;br /&gt;
Release: [https://github.com/Threetwosevensixseven/MAMENextPlugins/releases/latest Yes]&lt;br /&gt;
Source: [https://github.com/Threetwosevensixseven/MAMENextPlugins/blob/main/src/plugins/debugstart/init.lua Yes]&lt;br /&gt;
&lt;br /&gt;
=Scripts=&lt;br /&gt;
&lt;br /&gt;
== [https://github.com/taylorza/MAMEScripts/scripts profiler.lua] ==&lt;br /&gt;
A simple on-screen profiler (overlay) designed for the ZX Spectrum Next that tracks up to 8 timers using writes to NEXTREG 127 (0x7F) to control the timers.&lt;/div&gt;</summary>
		<author><name>Taylorza</name></author>
	</entry>
	<entry>
		<id>http://wiki.specnext.dev/index.php?title=NextBASIC&amp;diff=18968</id>
		<title>NextBASIC</title>
		<link rel="alternate" type="text/html" href="http://wiki.specnext.dev/index.php?title=NextBASIC&amp;diff=18968"/>
		<updated>2025-08-03T20:00:51Z</updated>

		<summary type="html">&lt;p&gt;Taylorza: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;NextBASIC is an extended version of the classic Spectrum BASIC which adds extra commands supporting the new features of the NEXT.&lt;br /&gt;
&lt;br /&gt;
? after parameters indicate they are optional. Square brackets [] indicate scope of optional or repeated areas (parentheses are not used for this because they are part of the BASIC language). Bracketed sections in the effects only apply if the optional parameters are specified.&lt;br /&gt;
&lt;br /&gt;
== Basic Interaction Commands ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Command !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| BANK b LINE x,y || Copies lines x,y into bank b. Once this is done, these lines cannot be edited except by overwriting them with another BANK..LINE command. Cannot be used in a program.&lt;br /&gt;
|-&lt;br /&gt;
| BANK b LIST x? || Lists source code in bank b (from line x)&lt;br /&gt;
|-&lt;br /&gt;
| BANK b MERGE || Adds all basic lines in bank b to main program&lt;br /&gt;
|-&lt;br /&gt;
| CONTINUE || Repeats last command or restarts from error location&lt;br /&gt;
|-&lt;br /&gt;
| CLEAR x? || Resets variables, clears screen, resets plot cursor (and sets ramtop to X)&lt;br /&gt;
|-&lt;br /&gt;
| ERASE f, l || Deletes all program lines between f and l. Cannot be used in a program.&lt;br /&gt;
|-&lt;br /&gt;
| LIST x? || Lists source code (from line x)&lt;br /&gt;
|-&lt;br /&gt;
| LLIST x? || Lists source code to printer (from line x)&lt;br /&gt;
|-&lt;br /&gt;
| NEW || Clear stored program&lt;br /&gt;
|-&lt;br /&gt;
| RUN x? || CLEAR then run program (from line x)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Control Flow ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Command !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| BANK b GO TO x || Jump execution to line x stored in bank b. b=-1 for main program&lt;br /&gt;
|-&lt;br /&gt;
| BANK b GO SUB x || Jump execution to line x stored in bank b, storing current location on gosub stack. b=-1 for main program&lt;br /&gt;
|-&lt;br /&gt;
| DEF FN func(param[,param..])=expr || Creates a user defined function based on a parametrised expression. Will not work if moved into any bank other than the main program&lt;br /&gt;
|-&lt;br /&gt;
| DIM a(x[,y]..) || Defines a as an array of length x (and second dimension length y, etc..)&lt;br /&gt;
|-&lt;br /&gt;
| FOR var = start TO end [STEP step]? || Starts FOR loop between given numeric values (with given step)&lt;br /&gt;
|-&lt;br /&gt;
| GO TO x || Jump execution to line X in the same bank&lt;br /&gt;
|-&lt;br /&gt;
| GO SUB x || Jump execution to line X in the same bank, storing current location (and bank) on gosub stack&lt;br /&gt;
|-&lt;br /&gt;
| IF c THEN statements [ELSE statements] || Run statements only if expression c is true &lt;br /&gt;
|-&lt;br /&gt;
| LET var = expr || Sets variable var to expr&lt;br /&gt;
|-&lt;br /&gt;
| LOCAL var || Declares local variable &lt;br /&gt;
|-&lt;br /&gt;
| NEXT var || Marks end of FOR loop regarding VAR&lt;br /&gt;
|-&lt;br /&gt;
| REM comment || Code comment, ignored&lt;br /&gt;
|-&lt;br /&gt;
| REPEAT || Begin of loop&lt;br /&gt;
|-&lt;br /&gt;
| REPEAT UNTIL condition || Marks the end of REPEAT loop&lt;br /&gt;
|-&lt;br /&gt;
| RETURN || Restore execution location (line and bank) from gosub stack&lt;br /&gt;
|-&lt;br /&gt;
| WHILE condition || Condition for staying in loop&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Console I/O ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Command !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| COPY || Prints screen&lt;br /&gt;
|-&lt;br /&gt;
| INKEY$ || Returns currently pressed key&lt;br /&gt;
|-&lt;br /&gt;
| INPUT specifier [connector specifier].. || Output expression(s) and read a variable&lt;br /&gt;
|-&lt;br /&gt;
| INVERSE x || Enable or disable switching ink/paper color when printing (x=0 or 1)&lt;br /&gt;
|-&lt;br /&gt;
| LPRINT specifier [connector specifier].. || Output expression(s) to printer&lt;br /&gt;
|-&lt;br /&gt;
| OVER x || Enable or disable overprinting (x=0 or 1)&lt;br /&gt;
|-&lt;br /&gt;
| PAUSE x || Waits x frames or until a key is pressed&lt;br /&gt;
|-&lt;br /&gt;
| PRINT specifier [connector specifier].. || Output expression(s)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Possible specifiers for PRINT and INPUT statements are:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Specifier !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| var || In PRINT, shows contents of var; in INPUT, inputs into this var&lt;br /&gt;
|-&lt;br /&gt;
| (var) || Shows contents of var (in both PRINT and INPUT)&lt;br /&gt;
|-&lt;br /&gt;
| AT x,y || Moves text cursor to the given text cell &lt;br /&gt;
|-&lt;br /&gt;
| TAB x || Inserts spaces until text cursor is in column x&lt;br /&gt;
|-&lt;br /&gt;
| INK x, PAPER x || Changes the appropriate color for the duration of the print/input statement&lt;br /&gt;
|-&lt;br /&gt;
| LINE x$ || INPUT only, reads a string without the prompting quotes&lt;br /&gt;
|-&lt;br /&gt;
| #x || Selects input/output channel number&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
And the connectors between these are:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Specifier !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| , || Separate with a tab&lt;br /&gt;
|-&lt;br /&gt;
| &#039; || Separate with a newline&lt;br /&gt;
|-&lt;br /&gt;
| ; || Use no separator&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== File I/O ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Command !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| CAT || Displays disk/tape catalogue&lt;br /&gt;
|-&lt;br /&gt;
| FORMAT || Prepares inserted disk for usage, erasing it&lt;br /&gt;
|-&lt;br /&gt;
| LOAD fn || Load BASIC program from file named fn&lt;br /&gt;
|-&lt;br /&gt;
| LOAD fn DATA x() || Load data from fn into array x()&lt;br /&gt;
|-&lt;br /&gt;
| LOAD fn CODE addr || Load data from fn into memory at address addr&lt;br /&gt;
|-&lt;br /&gt;
| LOAD fn SCREEN$ || Load data from fn onto standard ULA screen&lt;br /&gt;
|-&lt;br /&gt;
| LOAD fn BANK b,addr || Load data from fn into memory bank b at addr&lt;br /&gt;
|-&lt;br /&gt;
| LOAD fn LAYER || Load data from fn onto current layer&lt;br /&gt;
|-&lt;br /&gt;
| MERGE fn || Loads BASIC lines from file named fn and integrates them with current program&lt;br /&gt;
|-&lt;br /&gt;
| SAVE fn (LINE l)? || Save BASIC program to file named fn (and set up autorun at line l)&lt;br /&gt;
|-&lt;br /&gt;
| SAVE fn (DATA/CODE/SCREEN$/BANK/LAYER..) || Save data as specified; CODE and BANK have an extra &amp;quot;length&amp;quot; parameter&lt;br /&gt;
|-&lt;br /&gt;
| VERIFY fn || Checks loaded basic program matches fn &lt;br /&gt;
|-&lt;br /&gt;
| VERIFY fn (DATA/CODE/BANK) || Checks data in memory/array matches contents of fn; does not work with SCREEN$/LAYER because the screen is inevitably changed during the verify operation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Inline data ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Command !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| BANK b RESTORE x || Sets DATA read point to start of line x in bank b&lt;br /&gt;
|-&lt;br /&gt;
| DATA x[,y].. || Stores data in program for later READing&lt;br /&gt;
|-&lt;br /&gt;
| READ var || Read next value from DATA statement into variable&lt;br /&gt;
|-&lt;br /&gt;
| RESTORE x || Sets DATA read point to start of line x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Graphics ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Command !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| BORDER n || Set ULA border to color N&lt;br /&gt;
|-&lt;br /&gt;
| BRIGHT n || Enable or disable bright colors. n must be 0 or 1. Not legal on non-ULA layers or if Enhanced ULA is enabled.&lt;br /&gt;
|-&lt;br /&gt;
| CIRCLE x,y,r || Draw circle centered at x, y with radius r&lt;br /&gt;
|-&lt;br /&gt;
| CLS || Clears screen&lt;br /&gt;
|-&lt;br /&gt;
| DRAW [modifier or x,y].. || Draw line from plot cursor to given coordinate&lt;br /&gt;
|-&lt;br /&gt;
| FLASH n || Enable or disable ink/paper cycling. n must be 0 or 1. Not legal on non-ULA layers or if Enhanced ULA is enabled.&lt;br /&gt;
|-&lt;br /&gt;
| INK c || Set ink (foreground) color for print and graphics commands. If Enhanced ULA is enabled, this can use any legal palette value. On Layer 2, it can use any value 0-255.&lt;br /&gt;
|-&lt;br /&gt;
| LAYER x || Selects active layer for graphics operations. LAYER 0 is an unenhanced ULA screen. LAYER 1 is the ULA screen but with enhancements and with the origin at the top left (not the bottom left). LAYER 2 is, well, [[Layer 2]].&lt;br /&gt;
|-&lt;br /&gt;
| LAYER 1,x || Sets mode for Layer 1 based on x. 1 = Standard Spectrum, 2 = Timex hires, 3 = Timex hicolour, 0 = Lores layer.&lt;br /&gt;
|-&lt;br /&gt;
| LAYER 2,x || Selects [[Layer 2]] and determines if it is displayed or not (x must be 0 or 1)&lt;br /&gt;
|-&lt;br /&gt;
| LAYER AT x, y || Sets the scroll display offset for the current layer.&lt;br /&gt;
|-&lt;br /&gt;
| LAYER BANK f, b || Only when [[Layer 2]] is selected, selects the first bank for layer 2 (f) and shadow layer 2 (b). Note that a layer 2 screen occupies 3 banks.&lt;br /&gt;
|-&lt;br /&gt;
| LAYER CLEAR || Resets all layer settings&lt;br /&gt;
|-&lt;br /&gt;
| LAYER DIM left, top, right, bottom || Sets visible area for current layer&lt;br /&gt;
|-&lt;br /&gt;
| LAYER ERASE x, y, w, h [,f]? || Fills a region at x,y, of size w,h, with palette index f (or the transparent value)&lt;br /&gt;
|-&lt;br /&gt;
| LAYER OVER || Sets layer ordering&lt;br /&gt;
|-&lt;br /&gt;
| LAYER PALETTE x || Choose which of the two palettes is used for the active layer (x must be 0 or 1)&lt;br /&gt;
|-&lt;br /&gt;
| LAYER PALETTE n, i, v || Sets palette index i in palette in to color value v. V is always 9 bit, even if PALETTE DIM 8 is set.&lt;br /&gt;
|-&lt;br /&gt;
| LAYER PALETTE n BANK b, offset || Loads current layer&#039;s palette n (0 or 1) from bytes starting at offset in bank b. If PALETTE DIM 8 is set, each byte is one color. If PALETTE DIM 9 is set, each color needs two bytes, but only one bit of the second is used.&lt;br /&gt;
|-&lt;br /&gt;
| PALETTE CLEAR || Resets all palettes and palette settings&lt;br /&gt;
|-&lt;br /&gt;
| PALETTE DIM x || Sets number of color bits in the active palette; x must be 8 or 9&lt;br /&gt;
|-&lt;br /&gt;
| PALETTE FORMAT x || Enables Enhanced ULA colors with x inks. X must be a bitmask which masks off bits on the right of a value (1, 3, 7, 15, 31, 63, 127 or 255)&lt;br /&gt;
|-&lt;br /&gt;
| PALETTE OVER x || Sets the global transparency color to x&lt;br /&gt;
|-&lt;br /&gt;
| PAPER c || Set paper (background) color for print and graphics commands. Follows the same rules as INK.&lt;br /&gt;
|-&lt;br /&gt;
| PLOT [modifier or x,y].. || Plot listed points as single pixels on current layer&lt;br /&gt;
|-&lt;br /&gt;
| POINT x, y, var || Stores the color at point x, y &#039;&#039;&#039;on the ULA screen&#039;&#039;&#039; in variable var&lt;br /&gt;
|-&lt;br /&gt;
| POINT x, y || Returns the color at point x, y &#039;&#039;&#039;on the ULA screen&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Modifiers for graphics commands can be inline INK, PAPER, INVERSE, and OVER. INVERSE 1 causes drawing to be in the paper color. OVER 1 causes pixels in the line to be flipped.&lt;br /&gt;
&lt;br /&gt;
=== Sprites ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Command !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| SPRITE BANK x || Populates all 64 sprite patterns from bank b, taking 256 bytes per sprite and thus using all data in bank b.&lt;br /&gt;
|-&lt;br /&gt;
| SPRITE BANK b, o, p, n || Define n sprite patterns, starting with p, with data from bank b starting at offset o.&lt;br /&gt;
|-&lt;br /&gt;
| SPRITE PALETTE x || Choose the first or second palette for sprites. X must be 0 or 1.&lt;br /&gt;
|-&lt;br /&gt;
| SPRITE PALETTE x BANK b, o || Load sprite palette x (0 or 1) from bank b at offset o. Data is read as with LAYER PALETTE.&lt;br /&gt;
|-&lt;br /&gt;
| SPRITE PALETTE n, i, v || Set sprite palette n, index i, to color v. V is always 9-bit, even if PALETTE DIM 8 is in effect.&lt;br /&gt;
|-&lt;br /&gt;
| SPRITE PRINT x || Enable or disable sprites. X must be 0 (disable) or 1 (enable).&lt;br /&gt;
|-&lt;br /&gt;
| SPRITE BORDER x || Enable or disable sprites crossing the border. X must be 0 (disable) or 1 (enable).&lt;br /&gt;
|-&lt;br /&gt;
| SPRITE s, x, y, p, f, rf, mx, my || Set sprite s to position (x, y), pattern p, flags f (bit 0: Visible, bit 1: rotate,  bit 2: Y-mirror, bit 3: X-mirror, bit 4..7: palette offset see {{PortNo|$xx57}}), relative flag (bit 0: 0-composite, 1-unified, bit 1: pattern relative to anchor, bit 2: palette offset is relative to anchor), mx/my scaling (0=1x, 1=2x, 2=4x, 3=8x).&lt;br /&gt;
|-&lt;br /&gt;
| SPRITE CLEAR || Reset all sprite attributes and global settings.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Tilemap support ===&lt;br /&gt;
&lt;br /&gt;
=== Sprites ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Command !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| TILE [AT x,y]? || Draw the entire screen from the tilemap (from tile offset (x,y))&lt;br /&gt;
|-&lt;br /&gt;
| TILE w,h [AT x,y]? [TO x2,y2]? || Draw a section of the tilemap w,h wide (from tile offset x,y in the tilemap) (to tile offset x2,y2 on the screen)&lt;br /&gt;
|-&lt;br /&gt;
| TILE BANK n || Set bank n as the root of tile graphics (which may occupy up to 4 banks in the case of 16x16 tiles).&lt;br /&gt;
|-&lt;br /&gt;
| TILE DIM n, o, v, t || Set bank n offset o as the root of tilemap data, with tilemap width v and tile size t (t must be 8 or 16 for 8x8 or 16x16 tiles)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Memory and Port Access ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Command !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| BANK 1346 FORMAT || Re-enable RAMdisk having been disabled by previous BANK 1346 USR&lt;br /&gt;
|-&lt;br /&gt;
| BANK 1346 USR || Disable RAMdisk, allowing banks 1, 3, 4, and 6 to be used&lt;br /&gt;
|-&lt;br /&gt;
| BANK b COPY TO c || Copy entire bank b to bank c&lt;br /&gt;
|-&lt;br /&gt;
| BANK b COPY start, len TO c, start || Copy len bytes from start in bank b, to start in bank c&lt;br /&gt;
|-&lt;br /&gt;
| BANK b ERASE x? || Erase all data in bank by overwriting with zeros (or x)&lt;br /&gt;
|-&lt;br /&gt;
| BANK b ERASE off, len, value || Overwrite len bytes of data at off in bank b with value&lt;br /&gt;
|-&lt;br /&gt;
| BANK b PEEK addr || Returns value at given address in bank b (address is from start of bank)&lt;br /&gt;
|- &lt;br /&gt;
| BANK b POKE addr, value || Sets address in bank b to value (address is from start of bank)&lt;br /&gt;
|-&lt;br /&gt;
| IN port || Returns current value at port&lt;br /&gt;
|-&lt;br /&gt;
| PEEK addr || Returns value at given address&lt;br /&gt;
|-&lt;br /&gt;
| POKE addr, value || Sets address to value&lt;br /&gt;
|-&lt;br /&gt;
| OUT port, value || Sends value to port&lt;br /&gt;
|-&lt;br /&gt;
| REG r [, v]? || Return the value in NextReg register r (or set it to value v if provided)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Functions/Expressions ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Command !! Effect&lt;br /&gt;
|-&lt;br /&gt;
| + - * / ^ || Standard arithmetic operators&lt;br /&gt;
|-&lt;br /&gt;
| = &amp;lt; &amp;gt; &amp;lt;= &amp;gt;= &amp;lt;&amp;gt; || Standard comparison operators (arithmetic for numbers, alphabetic for strings)&lt;br /&gt;
|-&lt;br /&gt;
| a(x) || Returns x&#039;th element of array/string a&lt;br /&gt;
|-&lt;br /&gt;
| s(x? TO y?) || Return substring of s; if x or y are omitted, start or end is assumed&lt;br /&gt;
|-&lt;br /&gt;
| AND OR NOT || Standard boolean conjunctives&lt;br /&gt;
|-&lt;br /&gt;
| ABS x || Gets unsigned magnitude of x&lt;br /&gt;
|-&lt;br /&gt;
| ASN x, ACS x, ATN x || Returns inverse trigonometric ratio (arcsin, arccos, arctan)&lt;br /&gt;
|-&lt;br /&gt;
| ATTR x,y || Returns attribute cell value at cell x,y &lt;br /&gt;
|-&lt;br /&gt;
| BIN x || Converts binary number x to decimal&lt;br /&gt;
|-&lt;br /&gt;
| CHR$ x || Gets character for an ASCII code&lt;br /&gt;
|-&lt;br /&gt;
| CODE x || Gets ASCII code for a character&lt;br /&gt;
|-&lt;br /&gt;
| INT x || Rounds x down to integer&lt;br /&gt;
|-&lt;br /&gt;
| LEN x || Gets length of string&lt;br /&gt;
|-&lt;br /&gt;
| PI || Returns approximation of pi&lt;br /&gt;
|-&lt;br /&gt;
| RND || Returns a random number between 0 and 1&lt;br /&gt;
|-&lt;br /&gt;
| SCREEN$ x,y || Returns text character in text cell x,y&lt;br /&gt;
|-&lt;br /&gt;
| SIGN x || Divides x by its magnitude&lt;br /&gt;
|-&lt;br /&gt;
| SIN x, COS x, TAN x || Returns standard trigonometric ratio&lt;br /&gt;
|-&lt;br /&gt;
| SQR x || Returns square of x&lt;br /&gt;
|-&lt;br /&gt;
| STR$ x || Converts number into a string&lt;br /&gt;
|-&lt;br /&gt;
| USR x || If x is a string, gets the address of the first byte of the user defined graphic for the character. If x is a number, runs a machine code routine at address x and returns the value of BC after it exits.&lt;br /&gt;
|-&lt;br /&gt;
| VAL x || Converts string number or expression into a number&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Basic Tokens ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Value (hex) !! Token&lt;br /&gt;
|-&lt;br /&gt;
| 0x87 || PEEK$&lt;br /&gt;
|-&lt;br /&gt;
| 0x88 || REG&lt;br /&gt;
|-&lt;br /&gt;
| 0x89 || DPOKE&lt;br /&gt;
|-&lt;br /&gt;
| 0x8a || DPEEK&lt;br /&gt;
|-&lt;br /&gt;
| 0x8b || MOD&lt;br /&gt;
|-&lt;br /&gt;
| 0x8c || &amp;lt;&amp;lt;&lt;br /&gt;
|-&lt;br /&gt;
| 0x8d || &amp;gt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0x8e || UNTIL&lt;br /&gt;
|-&lt;br /&gt;
| 0x8f || ERROR&lt;br /&gt;
|-&lt;br /&gt;
| 0x90 || ON&lt;br /&gt;
|-&lt;br /&gt;
| 0x91 || DEFPROC&lt;br /&gt;
|-&lt;br /&gt;
| 0x92 || ENDPROC&lt;br /&gt;
|-&lt;br /&gt;
| 0x93 || PROC&lt;br /&gt;
|-&lt;br /&gt;
| 0x94 || LOCAL&lt;br /&gt;
|-&lt;br /&gt;
| 0x95 || DRIVER&lt;br /&gt;
|-&lt;br /&gt;
| 0x96 || WHILE&lt;br /&gt;
|-&lt;br /&gt;
| 0x97 || REPEAT&lt;br /&gt;
|-&lt;br /&gt;
| 0x98 || ELSE&lt;br /&gt;
|-&lt;br /&gt;
| 0x99 || REMOUNT&lt;br /&gt;
|-&lt;br /&gt;
| 0x9a || BANK&lt;br /&gt;
|-&lt;br /&gt;
| 0x9b || TILE&lt;br /&gt;
|-&lt;br /&gt;
| 0x9c || LAYER&lt;br /&gt;
|-&lt;br /&gt;
| 0x9d || PALETTE&lt;br /&gt;
|-&lt;br /&gt;
| 0x9e || SPRITE&lt;br /&gt;
|-&lt;br /&gt;
| 0x9f || PWD&lt;br /&gt;
|-&lt;br /&gt;
| 0xa0 || CD&lt;br /&gt;
|-&lt;br /&gt;
| 0xa1 || MKDIR&lt;br /&gt;
|-&lt;br /&gt;
| 0xa2 || RMDIR&lt;br /&gt;
|-&lt;br /&gt;
| 0xA3 || SPECTRUM&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4 || PLAY&lt;br /&gt;
|-&lt;br /&gt;
| 0xA5 || RND&lt;br /&gt;
|-&lt;br /&gt;
| 0xA6 || INKEY$&lt;br /&gt;
|-&lt;br /&gt;
| 0xA7 || PI&lt;br /&gt;
|-&lt;br /&gt;
| 0xA8 || FN&lt;br /&gt;
|-&lt;br /&gt;
| 0xA9 || POINT&lt;br /&gt;
|-&lt;br /&gt;
| 0xAA || SCREEN$&lt;br /&gt;
|-&lt;br /&gt;
| 0xAB || ATTR&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC || AT&lt;br /&gt;
|-&lt;br /&gt;
| 0xAD || TAB&lt;br /&gt;
|-&lt;br /&gt;
| 0xAE || VAL$&lt;br /&gt;
|-&lt;br /&gt;
| 0xAF || CODE&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0 || VAL&lt;br /&gt;
|-&lt;br /&gt;
| 0xB1 || LEN&lt;br /&gt;
|-&lt;br /&gt;
| 0xB2 || SIN&lt;br /&gt;
|-&lt;br /&gt;
| 0xB3 || COS&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4 || TAN&lt;br /&gt;
|-&lt;br /&gt;
| 0xB5 || ASN&lt;br /&gt;
|-&lt;br /&gt;
| 0xB6 || ACS&lt;br /&gt;
|-&lt;br /&gt;
| 0xB7 || ATN&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8 || LN&lt;br /&gt;
|-&lt;br /&gt;
| 0xB9 || EXP&lt;br /&gt;
|-&lt;br /&gt;
| 0xBA || INT&lt;br /&gt;
|-&lt;br /&gt;
| 0xBB || SQR&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC || SGN&lt;br /&gt;
|-&lt;br /&gt;
| 0xBD || ABS&lt;br /&gt;
|-&lt;br /&gt;
| 0xBE || PEEK&lt;br /&gt;
|-&lt;br /&gt;
| 0xBF || IN&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0 || USR&lt;br /&gt;
|-&lt;br /&gt;
| 0xC1 || STR$&lt;br /&gt;
|-&lt;br /&gt;
| 0xC2 || CHR$&lt;br /&gt;
|-&lt;br /&gt;
| 0xC3 || NOT&lt;br /&gt;
|-&lt;br /&gt;
| 0xC4 || BIN&lt;br /&gt;
|-&lt;br /&gt;
| 0xC5 || OR&lt;br /&gt;
|-&lt;br /&gt;
| 0xC6 || AND&lt;br /&gt;
|-&lt;br /&gt;
| 0xC7 || &amp;lt;=&lt;br /&gt;
|-&lt;br /&gt;
| 0xC8 || &amp;gt;=&lt;br /&gt;
|-&lt;br /&gt;
| 0xC9 || &amp;lt;&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0xCA || LINE&lt;br /&gt;
|-&lt;br /&gt;
| 0xCB || THEN&lt;br /&gt;
|-&lt;br /&gt;
| 0xCC || TO&lt;br /&gt;
|-&lt;br /&gt;
| 0xCD || STEP&lt;br /&gt;
|-&lt;br /&gt;
| 0xCE || DEF FN&lt;br /&gt;
|-&lt;br /&gt;
| 0xCF || CAT&lt;br /&gt;
|-&lt;br /&gt;
| 0xD0 || FORMAT&lt;br /&gt;
|-&lt;br /&gt;
| 0xD1 || MOVE&lt;br /&gt;
|-&lt;br /&gt;
| 0xD2 || ERASE&lt;br /&gt;
|-&lt;br /&gt;
| 0xD3 || OPEN #&lt;br /&gt;
|-&lt;br /&gt;
| 0xD4 || CLOSE #&lt;br /&gt;
|-&lt;br /&gt;
| 0xD5 || MERGE&lt;br /&gt;
|-&lt;br /&gt;
| 0xD6 || VERIFY&lt;br /&gt;
|-&lt;br /&gt;
| 0xD7 || BEEP&lt;br /&gt;
|-&lt;br /&gt;
| 0xD8 || CIRCLE&lt;br /&gt;
|-&lt;br /&gt;
| 0xD9 || INK&lt;br /&gt;
|-&lt;br /&gt;
| 0xDA || PAPER&lt;br /&gt;
|-&lt;br /&gt;
| 0xDB || FLASH&lt;br /&gt;
|-&lt;br /&gt;
| 0xDC || BRIGHT&lt;br /&gt;
|-&lt;br /&gt;
| 0xDD || INVERSE&lt;br /&gt;
|-&lt;br /&gt;
| 0xDE || OVER&lt;br /&gt;
|-&lt;br /&gt;
| 0xDF || OUT&lt;br /&gt;
|-&lt;br /&gt;
| 0xE0 || LPRINT&lt;br /&gt;
|-&lt;br /&gt;
| 0xE1 || LLIST&lt;br /&gt;
|-&lt;br /&gt;
| 0xE2 || STOP&lt;br /&gt;
|-&lt;br /&gt;
| 0xE3 || READ&lt;br /&gt;
|-&lt;br /&gt;
| 0xE4 || DATA&lt;br /&gt;
|-&lt;br /&gt;
| 0xE5 || RESTORE&lt;br /&gt;
|-&lt;br /&gt;
| 0xE6 || NEW&lt;br /&gt;
|-&lt;br /&gt;
| 0xE7 || BORDER&lt;br /&gt;
|-&lt;br /&gt;
| 0xE8 || CONTINUE&lt;br /&gt;
|-&lt;br /&gt;
| 0xE9 || DIM&lt;br /&gt;
|-&lt;br /&gt;
| 0xEA || REM&lt;br /&gt;
|-&lt;br /&gt;
| 0xEB || FOR&lt;br /&gt;
|-&lt;br /&gt;
| 0xEC || GO TO&lt;br /&gt;
|-&lt;br /&gt;
| 0xED || GO SUB&lt;br /&gt;
|-&lt;br /&gt;
| 0xEE || INPUT&lt;br /&gt;
|-&lt;br /&gt;
| 0xEF || LOAD&lt;br /&gt;
|-&lt;br /&gt;
| 0xF0 || LIST&lt;br /&gt;
|-&lt;br /&gt;
| 0xF1 || LET&lt;br /&gt;
|-&lt;br /&gt;
| 0xF2 || PAUSE&lt;br /&gt;
|-&lt;br /&gt;
| 0xF3 || NEXT&lt;br /&gt;
|-&lt;br /&gt;
| 0xF4 || POKE&lt;br /&gt;
|-&lt;br /&gt;
| 0xF5 || PRINT&lt;br /&gt;
|-&lt;br /&gt;
| 0xF6 || PLOT&lt;br /&gt;
|-&lt;br /&gt;
| 0xF7 || RUN&lt;br /&gt;
|-&lt;br /&gt;
| 0xF8 || SAVE&lt;br /&gt;
|-&lt;br /&gt;
| 0xF9 || RANDOMIZE&lt;br /&gt;
|-&lt;br /&gt;
| 0xFA || IF&lt;br /&gt;
|-&lt;br /&gt;
| 0xFB || CLS&lt;br /&gt;
|-&lt;br /&gt;
| 0xFC || DRAW&lt;br /&gt;
|-&lt;br /&gt;
| 0xFD || CLEAR&lt;br /&gt;
|-&lt;br /&gt;
| 0xFE || RETURN&lt;br /&gt;
|-&lt;br /&gt;
| 0xFF || COPY &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Taylorza</name></author>
	</entry>
	<entry>
		<id>http://wiki.specnext.dev/index.php?title=Assemblers&amp;diff=12051</id>
		<title>Assemblers</title>
		<link rel="alternate" type="text/html" href="http://wiki.specnext.dev/index.php?title=Assemblers&amp;diff=12051"/>
		<updated>2024-03-24T15:34:33Z</updated>

		<summary type="html">&lt;p&gt;Taylorza: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Any Z80 assembler can produce code suitable for the Next. However the raw blocks of Z80 code may be not as convenient to use with Next or emulators, so a Next specific tools may be useful for creating one of the supported [[File Formats]].&lt;br /&gt;
&lt;br /&gt;
== Cross-platform tools (running on PC) ==&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;[http://www.desdes.com/products/oldfiles/zeus.htm Zeus-ish]&#039;&#039; ===&lt;br /&gt;
: Provides a complete Z80 IDE and Macro assembler, scripted disassember plus an integrated Z80 emulator for a range of machines including partial Next support&lt;br /&gt;
: Supports the Next opcodes directly&lt;br /&gt;
: Supports remote debugging on the Next using ParaSys across a serial link&lt;br /&gt;
: Supports MMU paging in the integrated emulator&lt;br /&gt;
: Supports sprites (core versions prior to 2.00.26) in the integrated emulator&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;[http://pasmo.speccy.org/ Pasmo]&#039;&#039; ===&lt;br /&gt;
: A long established Z80 assembler, but has been out of development for a long time&lt;br /&gt;
: Supports all currently known Next extension opcodes through this [https://www.facebook.com/groups/specnext/512169722473686/ modified Pasmo from Russ McNulty and Tony Thompson] and also now supports outputting .sna files to use with CSpect, thanks to Russ McNulty&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;SNasm&#039;&#039; ===&lt;br /&gt;
Included with the [http://dailly.blogspot.com/2019/04/cspect-v270.html #CSpect] emulator&lt;br /&gt;
: Full macro assembler&lt;br /&gt;
: Full bank control via Segment management&lt;br /&gt;
: Supports the Next extension opcodes directly&lt;br /&gt;
: Generates full 24bit map files for use in CSpect&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;z80asm&#039;&#039; ===&lt;br /&gt;
Part of [https://github.com/z88dk/z88dk Z88dk]&#039;&#039;&lt;br /&gt;
: Supports the Next extension opcodes directly, linking assembler with large z80 library, targets any memory configuration&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;[https://github.com/z00m128/sjasmplus z00m&#039;s fork of sjasmplus]&#039;&#039; ===&lt;br /&gt;
: Supports all (core2.00.28) Next extension opcodes, ZXN memory model (8 memory slots with 8ki pages and 1.75MiB virtual device memory), SAVENEX to build NEX files directly from ASM source (NEX version V1.2 (and experimental extension &amp;quot;V1.3&amp;quot;)), MAP files for [http://cspect.org/ #CSpect] emulator, SLD tracing files for [https://github.com/maziac/DeZog DeZog] and [https://github.com/Ckirby101/NDS-NextDevSystem NDS-NextDevSystem] and it is under active development (feedback is welcome).&lt;br /&gt;
: Open source project (&amp;quot;BSD-3-Clause&amp;quot; license), &#039;&#039;&#039;windows executables available at [https://github.com/z00m128/sjasmplus/releases/latest releases]&#039;&#039;&#039;, mac and linux users are expected to simply build from source (both make and CMake are supported).&lt;br /&gt;
: [http://z00m128.github.io/sjasmplus/documentation.html Documentation], latest stable release v1.20.3 2023-06-23&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;[https://github.com/CatpainBlack/FantASM FantASM]&#039;&#039; ===&lt;br /&gt;
FantASM is a two pass non optimising assembler for the Z80 processor by [https://github.com/CatpainBlack Guy &#039;CatpainBlack&#039; Black].&lt;br /&gt;
&lt;br /&gt;
It supports all undocumented op-codes and the extended instruction set of the ZX Next and additional pseudo opcodes used by the CSpect emulator to control debugging.&lt;br /&gt;
&lt;br /&gt;
== Native tools (running on Next) ==&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;[https://gitlab.com/next-tools/odin Odin]&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Work-in-progress Next-specific assembler written by Matt Davies, used also in video tutorials presented by Jim Bagley, the best way to acquire the binary is to join the official ZX Next discord server and check channel &amp;lt;code&amp;gt;#odin&amp;lt;/code&amp;gt; - pinned messages, where you can also discuss any issues and get how-to hints.&lt;br /&gt;
&lt;br /&gt;
: supports most of the undocumented opcodes, all official Z80 and Next-extended instructions&lt;br /&gt;
: supports nested includes and binary includes&lt;br /&gt;
: source is stored in tokenised form (smaller file), up to 48kiB of source in single file&lt;br /&gt;
: assembling can produce 32kiB of machine code (enough to produce simpler dot command)&lt;br /&gt;
: includes also editor and console modules (debugger is planned)&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;[https://www.solarisite.com/spectrumnext.html Sol]&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Sol is an assembler and editor written by Solaris, that runs natively on the Next. Manual, assembler binary and assembler source can be downloaded [https://www.solarisite.com/spectrumnext.html here].&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;[https://gitlab.com/thesmog358/tbblue/-/tree/master/tools/dev/Zeus ZEUS]&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Classic ZEUS native assembler by Simon Brattel, extended and included directly in the ZX Next distro.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;[https://gitlab.com/thesmog358/tbblue/-/tree/master/tools/dev/SPED SPED]&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Classic SPED assembler by César Hernández Bañó, included directly in the ZX Next distro, see [https://gitlab.com/thesmog358/tbblue/-/raw/master/docs/apps/dev/SPED53readme.txt README].&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;[https://taylorza.itch.io/nextbasic-inline-assembler NextBASIC Inline Assembler]&#039;&#039;===&lt;br /&gt;
Enables you to write inline assembly code in your NextBASIC application. The assembler can be downloaded from [https://taylorza.itch.io/nextbasic-inline-assembler HERE] with documentation available [https://github.com/taylorza/zxn-inlineasm-doc/blob/main/README.md HERE]&lt;/div&gt;</summary>
		<author><name>Taylorza</name></author>
	</entry>
	<entry>
		<id>http://wiki.specnext.dev/index.php?title=Assemblers&amp;diff=12028</id>
		<title>Assemblers</title>
		<link rel="alternate" type="text/html" href="http://wiki.specnext.dev/index.php?title=Assemblers&amp;diff=12028"/>
		<updated>2024-03-04T01:16:10Z</updated>

		<summary type="html">&lt;p&gt;Taylorza: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Any Z80 assembler can produce code suitable for the Next. However the raw blocks of Z80 code may be not as convenient to use with Next or emulators, so a Next specific tools may be useful for creating one of the supported [[File Formats]].&lt;br /&gt;
&lt;br /&gt;
== Cross-platform tools (running on PC) ==&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;[http://www.desdes.com/products/oldfiles/zeus.htm Zeus-ish]&#039;&#039; ===&lt;br /&gt;
: Provides a complete Z80 IDE and Macro assembler, scripted disassember plus an integrated Z80 emulator for a range of machines including partial Next support&lt;br /&gt;
: Supports the Next opcodes directly&lt;br /&gt;
: Supports remote debugging on the Next using ParaSys across a serial link&lt;br /&gt;
: Supports MMU paging in the integrated emulator&lt;br /&gt;
: Supports sprites (core versions prior to 2.00.26) in the integrated emulator&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;[http://pasmo.speccy.org/ Pasmo]&#039;&#039; ===&lt;br /&gt;
: A long established Z80 assembler, but has been out of development for a long time&lt;br /&gt;
: Supports all currently known Next extension opcodes through this [https://www.facebook.com/groups/specnext/512169722473686/ modified Pasmo from Russ McNulty and Tony Thompson] and also now supports outputting .sna files to use with CSpect, thanks to Russ McNulty&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;SNasm&#039;&#039; ===&lt;br /&gt;
Included with the [http://dailly.blogspot.com/2019/04/cspect-v270.html #CSpect] emulator&lt;br /&gt;
: Full macro assembler&lt;br /&gt;
: Full bank control via Segment management&lt;br /&gt;
: Supports the Next extension opcodes directly&lt;br /&gt;
: Generates full 24bit map files for use in CSpect&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;z80asm&#039;&#039; ===&lt;br /&gt;
Part of [https://github.com/z88dk/z88dk Z88dk]&#039;&#039;&lt;br /&gt;
: Supports the Next extension opcodes directly, linking assembler with large z80 library, targets any memory configuration&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;[https://github.com/z00m128/sjasmplus z00m&#039;s fork of sjasmplus]&#039;&#039; ===&lt;br /&gt;
: Supports all (core2.00.28) Next extension opcodes, ZXN memory model (8 memory slots with 8ki pages and 1.75MiB virtual device memory), SAVENEX to build NEX files directly from ASM source (NEX version V1.2 (and experimental extension &amp;quot;V1.3&amp;quot;)), MAP files for [http://cspect.org/ #CSpect] emulator, SLD tracing files for [https://github.com/maziac/DeZog DeZog] and [https://github.com/Ckirby101/NDS-NextDevSystem NDS-NextDevSystem] and it is under active development (feedback is welcome).&lt;br /&gt;
: Open source project (&amp;quot;BSD-3-Clause&amp;quot; license), &#039;&#039;&#039;windows executables available at [https://github.com/z00m128/sjasmplus/releases/latest releases]&#039;&#039;&#039;, mac and linux users are expected to simply build from source (both make and CMake are supported).&lt;br /&gt;
: [http://z00m128.github.io/sjasmplus/documentation.html Documentation], latest stable release v1.20.3 2023-06-23&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;[https://github.com/CatpainBlack/FantASM FantASM]&#039;&#039; ===&lt;br /&gt;
FantASM is a two pass non optimising assembler for the Z80 processor by [https://github.com/CatpainBlack Guy &#039;CatpainBlack&#039; Black].&lt;br /&gt;
&lt;br /&gt;
It supports all undocumented op-codes and the extended instruction set of the ZX Next and additional pseudo opcodes used by the CSpect emulator to control debugging.&lt;br /&gt;
&lt;br /&gt;
== Native tools (running on Next) ==&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;[https://gitlab.com/next-tools/odin Odin]&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Work-in-progress Next-specific assembler written by Matt Davies, used also in video tutorials presented by Jim Bagley, the best way to acquire the binary is to join the official ZX Next discord server and check channel &amp;lt;code&amp;gt;#odin&amp;lt;/code&amp;gt; - pinned messages, where you can also discuss any issues and get how-to hints.&lt;br /&gt;
&lt;br /&gt;
: supports most of the undocumented opcodes, all official Z80 and Next-extended instructions&lt;br /&gt;
: supports nested includes and binary includes&lt;br /&gt;
: source is stored in tokenised form (smaller file), up to 48kiB of source in single file&lt;br /&gt;
: assembling can produce 32kiB of machine code (enough to produce simpler dot command)&lt;br /&gt;
: includes also editor and console modules (debugger is planned)&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;[https://www.solarisite.com/spectrumnext.html Sol]&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Sol is an assembler and editor written by Solaris, that runs natively on the Next. Manual, assembler binary and assembler source can be downloaded [https://www.solarisite.com/spectrumnext.html here].&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;[https://gitlab.com/thesmog358/tbblue/-/tree/master/tools/dev/Zeus ZEUS]&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Classic ZEUS native assembler by Simon Brattel, extended and included directly in the ZX Next distro.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;[https://gitlab.com/thesmog358/tbblue/-/tree/master/tools/dev/SPED SPED]&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
Classic SPED assembler by César Hernández Bañó, included directly in the ZX Next distro, see [https://gitlab.com/thesmog358/tbblue/-/raw/master/docs/apps/dev/SPED53readme.txt README].&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;[https://taylorza.itch.io/nextbasic-inline-assembler NextBASIC Inline Assembler]&#039;&#039;===&lt;br /&gt;
Enables you to write inline assembly code in your NextBASIC application.&lt;/div&gt;</summary>
		<author><name>Taylorza</name></author>
	</entry>
	<entry>
		<id>http://wiki.specnext.dev/index.php?title=CSpect:known_bugs&amp;diff=11821</id>
		<title>CSpect:known bugs</title>
		<link rel="alternate" type="text/html" href="http://wiki.specnext.dev/index.php?title=CSpect:known_bugs&amp;diff=11821"/>
		<updated>2022-12-22T16:45:27Z</updated>

		<summary type="html">&lt;p&gt;Taylorza: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CSpect V2.16.6.0&lt;br /&gt;
* intentional for performance reasons:&lt;br /&gt;
** sprites: the collision bit is not implemented&lt;br /&gt;
** sprites rendering is not one-scanline-buffer delayed and all changes in sprites affect current scanline&lt;br /&gt;
** (moved a bit in 2.16.0) modifications to NextRegs done in copper propagate to rendering usually only once per scanline, the state for rendering is sampled after right border area (ahead of copper wait h=39), affecting previous line instead of next (palette changes, X/Y offsets, etc)&lt;br /&gt;
** modifications to NextRegs done by CPU propagate to rendering usually only once per scanline, usually retroactively for whole current scanline&lt;br /&gt;
* major differences / missing features&lt;br /&gt;
** blending modes: wrong, but the test is not comprehensive (HW core 3.1.5 now blends Layer2+ULA in different way ([https://github.com/MrKWatkins/ZXSpectrumNextTests/issues/8 details]))&lt;br /&gt;
** vertical ULA clipping is not working in Timex modes&lt;br /&gt;
** ULA scroll and half-width scroll is not implemented in Timex modes&lt;br /&gt;
** NextZXOS streaming API doesn&#039;t work (the initialization of stream fails - rst 8 service 0x86 ; DISK_STRMSTART)&lt;br /&gt;
** DMA: Zilog mode is not implemented (port 0x0B)&lt;br /&gt;
* subtle differences&lt;br /&gt;
** there&#039;s still something not completely right about Enhanced ULA colours, maybe just default values are wrong, or even something is emulated wrongly? (test TFalBUla.sna)&lt;br /&gt;
** DMA: reading-registers are a bit off (for example status bit5+0 not reset correctly after LOAD, probably few more (but core 3.1.5 also reads bit0 wrongly, so always test own code with all target platforms))&lt;br /&gt;
** NextReg $02 implementation of soft-reset does something, but not the same thing like HW&lt;br /&gt;
** NextBASIC SPECTRUM command may load SNA file with wrong ROM paged in (may be related to soft-reset implementation?)&lt;br /&gt;
** sprites: the wrap-around the 512x512 coordinate space is only partially implemented in extreme cases (relative sprite so far from anchor that x8 scale wraps it back onto screen)&lt;br /&gt;
** default value: $6E and $6F are supposed to be fixed since V2.12.30, but the SNA test still reads zeroes&lt;br /&gt;
** some NextRegs read as zero until they are written into first (quick-boot mode with SNA file without full NextZXOS image) (for example regs &amp;lt;del&amp;gt;$03,&amp;lt;/del&amp;gt; $12, $13, $14, $42, $4A, $4B, $4C)&lt;br /&gt;
** NextRegs $09, $34, $41, $8E read incorrectly (reads after certain writes produce wrong value) (but also the test is checking 3.1.5 behaviour, needs update to 3.1.10)&lt;br /&gt;
** debugger: the step-over F8 does run interrupt handler every 16-20ms (as part of debug-live-screen-view drawing), so it&#039;s almost after every F8 press, and may force interrupts-enabling, use only F7 step-into when debugging parts of code which expect interrupts disabled&lt;br /&gt;
** divMMC automap-enabled traps certain addresses even when RAM is mapped to MMU0/MMU1&lt;br /&gt;
** Z80: &amp;lt;code&amp;gt;di : halt&amp;lt;/code&amp;gt; doesn&#039;t put CPU in infinite loop waiting for NMI, but proceeds further&lt;br /&gt;
** Z80: block of prefixes/instructions 0xDD/0xFD/EI does not inhibit masked interrupts&lt;br /&gt;
** Z80: when masked interrupt handler is entered, the interrupts remain enabled (IFF1=1, IFF2=1)&lt;br /&gt;
** F3 reset does not autodetect NextZXOS 2.06 vs 2.07 when running with card-image, so 2.06 image ends with purple stripes.&lt;br /&gt;
* recently fixed:&lt;br /&gt;
** &amp;lt;del&amp;gt;tilemode 80x32: horizontal scrolling has wrong scale (probably expecting only 320x256 offsets, confused by 640x256)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;NextReg $02 hard-reset&amp;lt;/del&amp;gt;&lt;br /&gt;
** verified fixed in V2.17.0.0 &amp;lt;del&amp;gt;CTC timing is affected by the Z80N clock speed. It should be using a constant 28Mhz reference clock.&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
not verified in V2.16.6.0 (but known bugs of older versions, may be still present):&lt;br /&gt;
* CTC time constant of 0 causes incorrect code execution.&lt;br /&gt;
* stencil mode is not implemented&lt;br /&gt;
* the initial file-import sequence of CP/M BIOS fails. (get cpm-a.p3d file from somebody with a working clean CP/M installation and copy that into c:/NextZXOS, or use other emulator to create the file)&lt;br /&gt;
* default ULA palette after power on (quick boot without NextZXOS) is slightly different&lt;br /&gt;
* (should be improved now, to be tested) without the full NextZXOS card image the esxdos services are provided by open source [https://github.com/mikedailly/CSpectPlugins CSpect plugins], the implementation is limited and crude - some of the returned values are incorrect/etc, but loading files works.&lt;br /&gt;
* direct loading of NEX files does not support all combinations of loading-screen type and palette on/off (but V2.12.9 does load more files than V2.12.5, all common ones should work)&lt;br /&gt;
* sprites: something something about default clipping... just set clip windows explicitly in your SW.&lt;br /&gt;
* sprites: clipping in non-over-border configuration is maybe wrong&lt;br /&gt;
* fixed (but needs thorough test) &amp;lt;del&amp;gt;Layer2 640x256x4bpp clipping is broken (and rendering partially too? should be fixed in next release)&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Platform Specific (may be already fixed):&lt;br /&gt;
* Mac: Mouse does not work / behaves erratically&lt;br /&gt;
* Mac: after launch keyboard being irresponsive - try &amp;quot;alt+tab&amp;quot; to other app and back&lt;br /&gt;
* works in 2.16.5.0 &amp;lt;del&amp;gt;Linux: the copper disassembly window added in 2.15.01 (ctrl+alt+c) does not draw its content and remains as empty frame (after debugging the plugin: the winform doesn&#039;t receive paint messages from the emulator, same winform code running as stand-alone app without emulator does draw in linux)&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Not a bug:&lt;br /&gt;
* CSpect works with &amp;quot;-sound&amp;quot; (does switch sounds OFF), but shows only black screen without it:&lt;br /&gt;
** you forgot to install OpenAL, check the ReadMe.txt of the emulator.&lt;/div&gt;</summary>
		<author><name>Taylorza</name></author>
	</entry>
	<entry>
		<id>http://wiki.specnext.dev/index.php?title=CSpect:known_bugs&amp;diff=11820</id>
		<title>CSpect:known bugs</title>
		<link rel="alternate" type="text/html" href="http://wiki.specnext.dev/index.php?title=CSpect:known_bugs&amp;diff=11820"/>
		<updated>2022-12-22T16:44:15Z</updated>

		<summary type="html">&lt;p&gt;Taylorza: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CSpect V2.16.6.0&lt;br /&gt;
* intentional for performance reasons:&lt;br /&gt;
** sprites: the collision bit is not implemented&lt;br /&gt;
** sprites rendering is not one-scanline-buffer delayed and all changes in sprites affect current scanline&lt;br /&gt;
** (moved a bit in 2.16.0) modifications to NextRegs done in copper propagate to rendering usually only once per scanline, the state for rendering is sampled after right border area (ahead of copper wait h=39), affecting previous line instead of next (palette changes, X/Y offsets, etc)&lt;br /&gt;
** modifications to NextRegs done by CPU propagate to rendering usually only once per scanline, usually retroactively for whole current scanline&lt;br /&gt;
* major differences / missing features&lt;br /&gt;
** blending modes: wrong, but the test is not comprehensive (HW core 3.1.5 now blends Layer2+ULA in different way ([https://github.com/MrKWatkins/ZXSpectrumNextTests/issues/8 details]))&lt;br /&gt;
** vertical ULA clipping is not working in Timex modes&lt;br /&gt;
** ULA scroll and half-width scroll is not implemented in Timex modes&lt;br /&gt;
** NextZXOS streaming API doesn&#039;t work (the initialization of stream fails - rst 8 service 0x86 ; DISK_STRMSTART)&lt;br /&gt;
** DMA: Zilog mode is not implemented (port 0x0B)&lt;br /&gt;
* subtle differences&lt;br /&gt;
** there&#039;s still something not completely right about Enhanced ULA colours, maybe just default values are wrong, or even something is emulated wrongly? (test TFalBUla.sna)&lt;br /&gt;
** DMA: reading-registers are a bit off (for example status bit5+0 not reset correctly after LOAD, probably few more (but core 3.1.5 also reads bit0 wrongly, so always test own code with all target platforms))&lt;br /&gt;
** NextReg $02 implementation of soft-reset does something, but not the same thing like HW&lt;br /&gt;
** NextBASIC SPECTRUM command may load SNA file with wrong ROM paged in (may be related to soft-reset implementation?)&lt;br /&gt;
** sprites: the wrap-around the 512x512 coordinate space is only partially implemented in extreme cases (relative sprite so far from anchor that x8 scale wraps it back onto screen)&lt;br /&gt;
** default value: $6E and $6F are supposed to be fixed since V2.12.30, but the SNA test still reads zeroes&lt;br /&gt;
** some NextRegs read as zero until they are written into first (quick-boot mode with SNA file without full NextZXOS image) (for example regs &amp;lt;del&amp;gt;$03,&amp;lt;/del&amp;gt; $12, $13, $14, $42, $4A, $4B, $4C)&lt;br /&gt;
** NextRegs $09, $34, $41, $8E read incorrectly (reads after certain writes produce wrong value) (but also the test is checking 3.1.5 behaviour, needs update to 3.1.10)&lt;br /&gt;
** debugger: the step-over F8 does run interrupt handler every 16-20ms (as part of debug-live-screen-view drawing), so it&#039;s almost after every F8 press, and may force interrupts-enabling, use only F7 step-into when debugging parts of code which expect interrupts disabled&lt;br /&gt;
** divMMC automap-enabled traps certain addresses even when RAM is mapped to MMU0/MMU1&lt;br /&gt;
** Z80: &amp;lt;code&amp;gt;di : halt&amp;lt;/code&amp;gt; doesn&#039;t put CPU in infinite loop waiting for NMI, but proceeds further&lt;br /&gt;
** Z80: block of prefixes/instructions 0xDD/0xFD/EI does not inhibit masked interrupts&lt;br /&gt;
** Z80: when masked interrupt handler is entered, the interrupts remain enabled (IFF1=1, IFF2=1)&lt;br /&gt;
** F3 reset does not autodetect NextZXOS 2.06 vs 2.07 when running with card-image, so 2.06 image ends with purple stripes.&lt;br /&gt;
* recently fixed:&lt;br /&gt;
** &amp;lt;del&amp;gt;tilemode 80x32: horizontal scrolling has wrong scale (probably expecting only 320x256 offsets, confused by 640x256)&amp;lt;/del&amp;gt;&lt;br /&gt;
** &amp;lt;del&amp;gt;NextReg $02 hard-reset&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
not verified in V2.16.6.0 (but known bugs of older versions, may be still present):&lt;br /&gt;
* verified fixed in V2.17.0.0 &amp;lt;del&amp;gt;CTC timing is affected by the Z80N clock speed. It should be using a constant 28Mhz reference clock.&amp;lt;/del&amp;gt;&lt;br /&gt;
* CTC time constant of 0 causes incorrect code execution.&lt;br /&gt;
* stencil mode is not implemented&lt;br /&gt;
* the initial file-import sequence of CP/M BIOS fails. (get cpm-a.p3d file from somebody with a working clean CP/M installation and copy that into c:/NextZXOS, or use other emulator to create the file)&lt;br /&gt;
* default ULA palette after power on (quick boot without NextZXOS) is slightly different&lt;br /&gt;
* (should be improved now, to be tested) without the full NextZXOS card image the esxdos services are provided by open source [https://github.com/mikedailly/CSpectPlugins CSpect plugins], the implementation is limited and crude - some of the returned values are incorrect/etc, but loading files works.&lt;br /&gt;
* direct loading of NEX files does not support all combinations of loading-screen type and palette on/off (but V2.12.9 does load more files than V2.12.5, all common ones should work)&lt;br /&gt;
* sprites: something something about default clipping... just set clip windows explicitly in your SW.&lt;br /&gt;
* sprites: clipping in non-over-border configuration is maybe wrong&lt;br /&gt;
* fixed (but needs thorough test) &amp;lt;del&amp;gt;Layer2 640x256x4bpp clipping is broken (and rendering partially too? should be fixed in next release)&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Platform Specific (may be already fixed):&lt;br /&gt;
* Mac: Mouse does not work / behaves erratically&lt;br /&gt;
* Mac: after launch keyboard being irresponsive - try &amp;quot;alt+tab&amp;quot; to other app and back&lt;br /&gt;
* works in 2.16.5.0 &amp;lt;del&amp;gt;Linux: the copper disassembly window added in 2.15.01 (ctrl+alt+c) does not draw its content and remains as empty frame (after debugging the plugin: the winform doesn&#039;t receive paint messages from the emulator, same winform code running as stand-alone app without emulator does draw in linux)&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Not a bug:&lt;br /&gt;
* CSpect works with &amp;quot;-sound&amp;quot; (does switch sounds OFF), but shows only black screen without it:&lt;br /&gt;
** you forgot to install OpenAL, check the ReadMe.txt of the emulator.&lt;/div&gt;</summary>
		<author><name>Taylorza</name></author>
	</entry>
	<entry>
		<id>http://wiki.specnext.dev/index.php?title=CSpect:known_bugs&amp;diff=11799</id>
		<title>CSpect:known bugs</title>
		<link rel="alternate" type="text/html" href="http://wiki.specnext.dev/index.php?title=CSpect:known_bugs&amp;diff=11799"/>
		<updated>2022-09-10T22:14:24Z</updated>

		<summary type="html">&lt;p&gt;Taylorza: CTC emulation issues&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CSpect V2.16.5.0&lt;br /&gt;
* sprites: the collision bit is not implemented (intentional for performance reasons)&lt;br /&gt;
* sprites rendering is not one-scanline-buffer delayed and all changes in sprites affect current scanline (intentional for performance reasons)&lt;br /&gt;
* (moved a bit in 2.16.0) modifications to NextRegs done in copper propagate to rendering usually only once per scanline, the state for rendering is sampled after right border area (ahead of copper wait h=39), affecting previous line instead of next (palette changes, X/Y offsets, etc) (intentional for performance reasons)&lt;br /&gt;
* modifications to NextRegs done by CPU propagate to rendering usually only once per scanline, usually retroactively for whole current scanline (mostly intentional for performance reasons)&lt;br /&gt;
* blending modes: wrong, but the test is not comprehensive (HW core 3.1.5 now blends Layer2+ULA in different way ([https://github.com/MrKWatkins/ZXSpectrumNextTests/issues/8 details]))&lt;br /&gt;
* stencil mode is not implemented&lt;br /&gt;
* Layer2 640x256x4bpp clipping is broken (and rendering partially too? should be fixed in next release)&lt;br /&gt;
* DMA: reading-registers are a bit off (for example status bit5+0 not reset correctly after LOAD, probably few more (but core 3.1.5 also reads bit0 wrongly, so always test own code with all target platforms))&lt;br /&gt;
* DMA: Zilog mode is not implemented (port 0x0B)&lt;br /&gt;
* NextZXOS streaming API doesn&#039;t work (the initialization of stream fails - rst 8 service 0x86 ; DISK_STRMSTART)&lt;br /&gt;
* tilemode 80x32: horizontal scrolling has wrong scale (probably expecting only 320x256 offsets, confused by 640x256)&lt;br /&gt;
* there&#039;s still something not completely right about Enhanced ULA colours, maybe just default values are wrong, or even something is emulated wrongly? (test TFalBUla.sna)&lt;br /&gt;
* di : halt doesn&#039;t put CPU in infinite loop waiting for NMI, but proceeds further&lt;br /&gt;
* NextReg $02 implementation of soft/hard-reset does something, but not the same thing like HW yet (stuck in ROM03 infinite loop)&lt;br /&gt;
* sprites: the wrap-around the 512x512 coordinate space is only partially implemented in extreme cases (relative sprite so far from anchor that x8 scale wraps it back onto screen)&lt;br /&gt;
* ULA half-width scroll is not implemented&lt;br /&gt;
* default value: $6E and $6F are supposed to be fixed since V2.12.30, but the SNA test still reads zeroes&lt;br /&gt;
* some NextRegs read as zero until they are written into first (quick-boot mode with SNA file without full NextZXOS image) (for example regs $03, $12, $13, $14, $42, $4A, $4B, $4C)&lt;br /&gt;
* NextRegs $09, $34, $41, $8E read incorrectly (reads after certain writes produce wrong value) (but also the test is checking 3.1.5 behaviour, needs update to 3.1.10)&lt;br /&gt;
* Z80: block of prefixes/instructions 0xDD/0xFD/EI does not inhibit masked interrupts&lt;br /&gt;
* Z80: when masked interrupt handler is entered, the interrupts remain enabled (IFF1=1, IFF2=1)&lt;br /&gt;
* debugger: the step-over F8 does run interrupt handler after (almost?) every press, and may force interrupts-enabling, use only F7 step-into when debugging parts of code which expect interrupts disabled&lt;br /&gt;
* F3 reset does not autodetect NextZXOS 2.06 vs 2.07 when running with card-image, so 2.06 image ends with purple stripes.&lt;br /&gt;
* fixed &amp;lt;del&amp;gt;sprites: 4bit relative patterns are incorrect in complex cases&amp;lt;/del&amp;gt;&lt;br /&gt;
* CTC timing is affected by the Z80N clock speed. It should be using a constant 28Mhz reference clock.&lt;br /&gt;
* CTC time constant of 0 causes incorrect code execution.&lt;br /&gt;
&lt;br /&gt;
not verified in V2.16.5.0 (but known bugs of older versions, may be still present):&lt;br /&gt;
* the initial file-import sequence of CP/M BIOS fails. (get cpm-a.p3d file from somebody with a working clean CP/M installation and copy that into c:/NextZXOS, or use other emulator to create the file)&lt;br /&gt;
* default ULA palette after power on (quick boot without NextZXOS) is slightly different&lt;br /&gt;
* (should be improved now, to be tested) without the full NextZXOS card image the esxdos services are provided by open source [https://github.com/mikedailly/CSpectPlugins CSpect plugins], the implementation is limited and crude - some of the returned values are incorrect/etc, but loading files works.&lt;br /&gt;
* direct loading of NEX files does not support all combinations of loading-screen type and palette on/off (but V2.12.9 does load more files than V2.12.5, all common ones should work)&lt;br /&gt;
* sprites: something something about default clipping... just set clip windows explicitly in your SW.&lt;br /&gt;
&lt;br /&gt;
Platform Specific (may be already fixed):&lt;br /&gt;
* Mac: Mouse does not work / behaves erratically&lt;br /&gt;
* Mac: after launch keyboard being irresponsive - try &amp;quot;alt+tab&amp;quot; to other app and back&lt;br /&gt;
* works in 2.16.5.0 &amp;lt;del&amp;gt;Linux: the copper disassembly window added in 2.15.01 (ctrl+alt+c) does not draw its content and remains as empty frame (after debugging the plugin: the winform doesn&#039;t receive paint messages from the emulator, same winform code running as stand-alone app without emulator does draw in linux)&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Not a bug:&lt;br /&gt;
* CSpect works with &amp;quot;-sound&amp;quot; (does switch sounds OFF), but shows only black screen without it:&lt;br /&gt;
** you forgot to install OpenAL, check the ReadMe.txt of the emulator.&lt;/div&gt;</summary>
		<author><name>Taylorza</name></author>
	</entry>
</feed>