mirror of
https://github.com/hsoft/collapseos.git
synced 2024-11-23 20:18:04 +11:00
zasm: Constants now override labels at all times
Will be important for a mega-commit I'm preparing.
This commit is contained in:
parent
7cf3ed38da
commit
6e714875dc
@ -76,6 +76,12 @@ forward-reference labels.
|
||||
|
||||
However, they *cannot* forward-reference other constants.
|
||||
|
||||
When defining a constant, if the symbol specified has already been defined, no
|
||||
error occur and the first value defined stays intact. This allows for "user
|
||||
override" of programs.
|
||||
|
||||
It's also important to note that constants always override labels, regardless
|
||||
of declaration order.
|
||||
|
||||
## Expressions
|
||||
|
||||
@ -119,11 +125,7 @@ allowed. An included file cannot have an `.inc` directive.
|
||||
|
||||
**.equ**: Binds a symbol named after the first parameter to the value of the
|
||||
expression written as the second parameter. Example:
|
||||
`.equ foo 0x42+'A'`
|
||||
|
||||
If the symbol specified has already been defined, no error occur and
|
||||
the first value defined stays intact. This allows for "user override"
|
||||
of programs.
|
||||
`.equ foo 0x42+'A'`. See "Constants" above.
|
||||
|
||||
**.fill**: Outputs the number of null bytes specified by its argument, an
|
||||
expression. Often used with `$` to fill our binary up to a certain
|
||||
|
@ -219,13 +219,13 @@ symFindVal:
|
||||
push ix
|
||||
call symIsLabelLocal
|
||||
jr z, .local
|
||||
; global. Let's try labels first, then consts
|
||||
; global. Let's try consts first, then symbols
|
||||
push hl ; --> lvl 1. we'll need it again if not found.
|
||||
ld ix, SYM_GLOBAL_REGISTRY
|
||||
ld ix, SYM_CONST_REGISTRY
|
||||
call _symFind
|
||||
pop hl ; <-- lvl 1
|
||||
jr z, .found
|
||||
ld ix, SYM_CONST_REGISTRY
|
||||
ld ix, SYM_GLOBAL_REGISTRY
|
||||
call _symFind
|
||||
jr nz, .end
|
||||
.found:
|
||||
|
@ -2,8 +2,11 @@ jp test
|
||||
|
||||
.inc "core.asm"
|
||||
|
||||
dummyLabel:
|
||||
testNum: .db 1
|
||||
|
||||
.equ dummyLabel 0x42
|
||||
|
||||
test:
|
||||
ld hl, 0xffff
|
||||
ld sp, hl
|
||||
@ -30,6 +33,13 @@ test:
|
||||
jp p, fail ; negative
|
||||
call nexttest
|
||||
|
||||
; Test that .equ can override label
|
||||
ld a, 0x42
|
||||
ld hl, dummyLabel
|
||||
cp l
|
||||
jp nz, fail
|
||||
call nexttest
|
||||
|
||||
; *** cpHLDE ***
|
||||
ld hl, 0x42
|
||||
ld de, 0x42
|
||||
|
Loading…
Reference in New Issue
Block a user