Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
RGBASM-OLD(5)		      File Formats Manual		 RGBASM-OLD(5)

NAME
       rgbasm-old -- obsolete language documentation

DESCRIPTION
       This  is	the list of features that have been removed from the rgbasm(5)
       assembly	language over its decades of evolution,	along with their  mod-
       ern  alternatives.   Its	goal is	to be a	reference for backwards	incom-
       patibility, when	upgrading an old assembly codebase to  work  with  the
       latest  RGBDS  release.	 It  does not attempt to list every syntax bug
       that was	ever fixed (with some notable exceptions),  nor	 new  reserved
       keywords	that may conflict with old identifiers.

REMOVED
       These  are features which have been completely removed, without any di-
       rect alternatives.  Usually these features were limiting	 the  addition
       of other	features, or had awkward limits	on their own intended effects.

   Automatic LD	to LDH conversion (rgbasm -l)
       Deprecated in 0.7.0, removed in 0.8.0.

       rgbasm(1)  used to automatically	treat `LD' as `LDH' if the address was
       known to	be in the $FF00-$FFFF range, with the  -L  flag	 to  opt  out.
       rgbasm(1) 0.6.0 added a -l flag to opt in instead.

       Instead,	use `LDH', and remove the -L and -l flags from rgbasm(1).

   Automatic NOP after HALT (rgbasm -H)
       Deprecated in 0.7.0, removed in 0.8.0.

       rgbasm(1)  used	to automatically insert	a `NOP'	after `HALT', with the
       -h flag to opt out.  rgbasm(1) 0.6.0 added a -H flag to opt in instead.

       Instead,	use an explicit	`NOP' after `HALT', and	remove the -h  and  -H
       flags from rgbasm(1).

   Nested macro	definitions
       Removed in 0.4.2.

       Instead,	put the	nested macro definition	inside a quoted	string (making
       sure  that  none	 of  its lines start with ENDM), then interpolate that
       string.	For example:

	     MACRO outer
		 DEF definition	EQUS """
		     MACRO inner
			 println (\1) -	(\\1)
		     \nENDM"""
		 {definition}
		 PURGE definition
	     ENDM
		 outer 10
		 inner 3 ; prints 7

   Negative DS
       Removed in 0.3.2.

       This was	used to	"rewind" the value of @	in RAM sections, allowing  la-
       beled space allocations to overlap.

       Instead,	use UNION.

   __FILE__ and	__LINE__
       Deprecated in 0.6.0, removed in 0.7.0.

       Instead,	 use  WARN  or FAIL to print a complete	trace of filenames and
       line numbers.

   _PI
       Deprecated in 0.5.0, removed in 0.6.0.

       Instead,	use `3.141592653'.

   Treating multi-character strings as numbers
       Deprecated in 0.9.0.

       Instead,	use a multi-value CHARMAP, or explicitly combine the values of
       individual characters.

   rgbgfx -f/--fix and -F/--fix-and-save
       Removed in 0.6.0.

       Instead,	 use  `rgbgfx  -c/--colors'  to	 explicitly  specify  a	 color
       palette.	  If using `-c embedded', arrange the PNG's indexed palette in
       a separate graphics editor.

   rgbgfx -D/--debug
       Removed in 0.6.0.

REPLACED
       These are features whose	syntax	has  been  changed  without  affecting
       functionality.  They can	generally be updated with a single search-and-
       replace.

   Defining constants and variables without DEF
       Deprecated in 0.7.0, removed in 0.8.0.

       EQU,  EQUS,  =,	RB, RW,	and RL definitions used	to just	start with the
       symbol name, but	had to be typed	in column 1.

       Instead,	use DEF	before constant	and variable definitions.   Note  that
       EQUS  expansion	does not occur for the symbol name, so you have	to use
       explicit	`{interpolation}'.

   Defining macros like	labels
       Deprecated in 0.6.0, removed in 0.7.0.

       Macros used to be defined as `name: MACRO'.

       Instead,	use `MACRO name'.  Note	that EQUS expansion does not occur for
       the macro name, so you have to use explicit `{interpolation}'.

   Defining variables with SET
       Deprecated in 0.5.2, removed in 0.6.0.

       Variables used to be defined as `name SET value'.

       Instead,	use `DEF name =	value'.

   Global labels without colons
       Deprecated in 0.4.0, removed in 0.5.0.

       Labels used to be definable with	just a name, but had to	 be  typed  in
       column 1.

       Instead,	 use  explicit	colons;	 for  example,	`Label:'  or  exported
       `Label::'.

   '\,'	in strings within macro	arguments
       Deprecated in 0.5.0, removed in 0.7.0.

       Macro arguments now handle quoted strings and parenthesized expressions
       as single arguments, so commas inside them are not argument  separators
       and do not need escaping.

       Instead,	just use commas	without	backslashes.

   '*' comments
       Deprecated in 0.4.1, removed in 0.5.0.

       These comments had to have the `*' typed	in column 1.

       Instead,	use `;'	comments.

   PRINTT, PRINTI, PRINTV, and PRINTF
       Deprecated in 0.5.0, removed in 0.6.0.

       These directives	were each specific to one type of value.

       Instead,	 use  PRINT  and PRINTLN, with STRFMT or `{interpolation}' for
       type-specific formatting.

   IMPORT and XREF
       Removed in 0.4.0.

       Symbols are now automatically resolved if they were exported from else-
       where.

       Instead,	just remove these directives.

   GLOBAL and XDEF
       Deprecated in 0.4.2, removed in 0.5.0.

       Instead,	use EXPORT.

   HOME, CODE, DATA, and BSS
       Deprecated in 0.3.0, removed in 0.4.0.

       Instead of HOME,	use ROM0; instead of CODE and DATA, use	ROMX;  instead
       of BSS, use WRAM0.

   JP [HL]
       Deprecated in 0.3.0, removed in 0.4.0.

       Instead,	use `JP	HL'.

   LDI A, HL and LDD A,	HL
       Deprecated in 0.3.0, removed in 0.4.0.

       Instead,	 use `LDI A, [HL]' and `LDD A, [HL]' (or `LD A,	[HLI]' and `LD
       A, [HLD]'; or `LD A, [HL+]' and `LD A, [HL-]').

   LDIO
       Deprecated in 0.9.0.

       Instead,	use `LDH'.

   LD [C], A and LD A, [C]
       Deprecated in 0.9.0.

       Instead,	use `LDH [C], A' and `LDH A, [C]'.

       Note that `LD [$FF00+C],	A' and `LD A, [$FF00+C]' were also  deprecated
       in 0.9.0, but were undeprecated in 0.9.1.

   LDH [n8], A and LDH A, [n8]
       Deprecated in 0.9.0.

       `LDH' used to treat "addresses" from $00	to $FF as if they were the low
       byte of an address from $FF00 to	$FFFF.

       Instead,	use `LDH [n16],	A' and `LDH A, [n16]'.

   LD HL, [SP +	e8]
       Deprecated in 0.3.0, removed in 0.4.0.

       Instead,	use `LD	HL, SP + e8'.

   LDHL	SP, e8
       Supported in ASMotor, removed in	RGBDS.

       Instead,	use `LD	HL, SP + e8'.

   rgbasm -i
       Deprecated in 0.6.0, removed in 0.8.0.

       Instead,	use -I or --include.

   rgbgfx -h
       Removed in 0.6.0.

       Instead,	use -Z or --columns.

   rgbgfx --output-*
       Deprecated in 0.7.0, removed in 0.8.0.

       Instead,	use --auto-*.

CHANGED
       These  are breaking changes that	did not	alter syntax, and so could not
       practically be deprecated.

   Trigonometry	function units
       Changed in 0.6.0.

       Instead of dividing a circle into 65536.0 "binary degrees", it  is  now
       divided into 1.0	"turns".

       For example, previously we had: delim $$

	     	 `SIN(0.25) == 0.00002', because 0.25 binary degrees = $0.25 /
		 65536.0$ turns	= $0.000004 tau$ radians = $0.000008 pi$ radi-
		 ans, and $sin ( 0.000008 pi ) = 0.00002$

	     	 `SIN(16384.0)	==  1.0',  because  16384.0  binary  degrees =
		 $16384.0 / 65536.0$ turns = $0.25 tau$	radians	= $pi /	2$ ra-
		 dians,	and $sin ( pi /	2 ) = 1$

	     	 `ASIN(1.0) == 16384.0'

       Instead,	now we have:

	     	 `SIN(0.25) == 1.0', because $0.25$ turns = $0.25 tau$ radians
		 = $pi / 2$ radians, and $sin (	pi / 2 ) = 1$

	     	 `SIN(16384.0) == 0.0',	because	$16384$	turns  =  $16384  tau$
		 radians = $32768 pi$ radians, and $sin	( 32768	pi ) = 0$

	     	 `ASIN(1.0) == 0.25'
       delim off

   ** operator associativity
       Changed in 0.9.0.

       Instead of being	left-associative, `**' is now right-associative.

       Previously we had `p ** q ** r == (p ** q) ** r'.

       Instead,	now we have `p ** q ** r == p ** (q ** r)'.

BUGS
       These  are misfeatures that may have been possible by mistake.  They do
       not get deprecated, just	fixed.

   Space between exported labels' colons
       Fixed in	0.7.0.

       Labels with two colons used to ignore a space between them;  for	 exam-
       ple, `Label: :'.

       Instead,	use `Label::'.

   Space between label and colon
       Fixed in	0.9.0.

       Space between a label and its colon(s) used to be ignored; for example,
       `Label :'  and  `Label ::'.  Now	they are treated as invocations	of the
       `Label' macro with `:' and `::' as arguments.

       Instead,	use `Label:' and `Label::'.

   ADD r16 with	implicit first HL operand
       Fixed in	0.5.0.

       For example, `ADD BC' used to be	treated	as `ADD	HL, BC', and  likewise
       for `DE', `HL', and `SP'.

       Instead,	use an explicit	first `HL' operand.

   = instead of	SET
       Fixed in	0.4.0.

       The  = operator used to be an alias for the SET keyword,	which included
       using = for the SET instruction.

       Instead,	just use SET for the instruction.

SEE ALSO
       rgbasm(1), gbz80(7), rgbds(5), rgbds(7)

HISTORY
       rgbasm(1) was originally	written	by Carsten Sorensen as part of the AS-
       Motor package, and was later repackaged in RGBDS	by Justin  Lloyd.   It
       is    now    maintained	  by	a    number    of    contributors   at
       https://github.com/gbdev/rgbds.

FreeBSD	Ports 14.quarterly     February	2, 2025			 RGBASM-OLD(5)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=rgbasm-old&sektion=5&manpath=FreeBSD+Ports+14.3.quarterly>

home | help