Skip to content

Commit 9e8ed06

Browse files
authored
Merge pull request #242 from boriel/bugfix/missing_labels
Bugfix/missing labels
2 parents ad20682 + 7ebdfbd commit 9e8ed06

548 files changed

Lines changed: 2224 additions & 34977 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

arch/zx48k/backend/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2229,7 +2229,7 @@ def emit_end():
22292229
output.append(OPTIONS.heap_start_label.value + ':')
22302230
output.append('; Defines DATA END\n' + 'ZXBASIC_USER_DATA_END EQU ZXBASIC_MEM_HEAP + ZXBASIC_HEAP_SIZE')
22312231
else:
2232-
output.append('; Defines DATA END --> HEAP size is 0\n' + 'ZXBASIC_USER_DATA_END EQU ZXBASIC_MEM_HEAP')
2232+
output.append('; Defines DATA END --> HEAP size is 0\n' + 'ZXBASIC_USER_DATA_END:')
22332233

22342234
output.append('; Defines USER DATA Length in bytes\n' +
22352235
'ZXBASIC_USER_DATA_LEN EQU ZXBASIC_USER_DATA_END - ZXBASIC_USER_DATA')

asmparse.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -471,12 +471,16 @@ def add_instruction(self, instr):
471471
self.__set_byte(byte, instr.lineno)
472472

473473
def dump(self):
474-
""" Returns a tuple containing code ORG, and a list of OUTPUT
474+
""" Returns a tuple containing code ORG (origin address), and a list of bytes (OUTPUT)
475475
"""
476476
org = min(self.memory_bytes.keys()) # Org is the lowest one
477477
OUTPUT = []
478478
align = []
479479

480+
for label in self.global_labels.values():
481+
if not label.defined:
482+
error(label.lineno, "Undefined GLOBAL label '%s'" % label.name)
483+
480484
for i in range(org, max(self.memory_bytes.keys()) + 1):
481485
if gl.has_errors:
482486
return org, OUTPUT
@@ -1495,7 +1499,7 @@ def generate_binary(outputfname, format_, progname='', binary_files=None, headle
14951499
import basic # Minimalist basic tokenizer
14961500

14971501
program = basic.Basic()
1498-
if org > 16383: # Only for zx48k: CLEAR if below 16383
1502+
if org > 16383: # Only for zx48k: CLEAR if above 16383
14991503
program.add_line([['CLEAR', org - 1]])
15001504
program.add_line([['LOAD', '""', program.token('CODE')]])
15011505

tests/functional/00.asm

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,11 @@ __END_PROGRAM:
2626
ret
2727
__CALL_BACK__:
2828
DEFW 0
29-
3029
ZXBASIC_USER_DATA:
3130
_a:
3231
DEFB 00, 00, 00, 00, 00
33-
; Defines DATA END --> HEAP size is 0
34-
ZXBASIC_USER_DATA_END EQU ZXBASIC_MEM_HEAP
32+
; Defines DATA END --> HEAP size is 0
33+
ZXBASIC_USER_DATA_END:
3534
; Defines USER DATA Length in bytes
3635
ZXBASIC_USER_DATA_LEN EQU ZXBASIC_USER_DATA_END - ZXBASIC_USER_DATA
3736
END

tests/functional/02.asm

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,11 @@ __END_PROGRAM:
2626
ret
2727
__CALL_BACK__:
2828
DEFW 0
29-
3029
ZXBASIC_USER_DATA:
3130
_a:
3231
DEFB 00, 00
33-
; Defines DATA END --> HEAP size is 0
34-
ZXBASIC_USER_DATA_END EQU ZXBASIC_MEM_HEAP
32+
; Defines DATA END --> HEAP size is 0
33+
ZXBASIC_USER_DATA_END:
3534
; Defines USER DATA Length in bytes
3635
ZXBASIC_USER_DATA_LEN EQU ZXBASIC_USER_DATA_END - ZXBASIC_USER_DATA
3736
END

tests/functional/03.asm

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,11 @@ __END_PROGRAM:
2626
ret
2727
__CALL_BACK__:
2828
DEFW 0
29-
3029
ZXBASIC_USER_DATA:
3130
_a:
3231
DEFB 00
33-
; Defines DATA END --> HEAP size is 0
34-
ZXBASIC_USER_DATA_END EQU ZXBASIC_MEM_HEAP
32+
; Defines DATA END --> HEAP size is 0
33+
ZXBASIC_USER_DATA_END:
3534
; Defines USER DATA Length in bytes
3635
ZXBASIC_USER_DATA_LEN EQU ZXBASIC_USER_DATA_END - ZXBASIC_USER_DATA
3736
END

tests/functional/04.asm

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,11 @@ __END_PROGRAM:
2626
ret
2727
__CALL_BACK__:
2828
DEFW 0
29-
3029
ZXBASIC_USER_DATA:
3130
_a:
3231
DEFB 00, 00
33-
; Defines DATA END --> HEAP size is 0
34-
ZXBASIC_USER_DATA_END EQU ZXBASIC_MEM_HEAP
32+
; Defines DATA END --> HEAP size is 0
33+
ZXBASIC_USER_DATA_END:
3534
; Defines USER DATA Length in bytes
3635
ZXBASIC_USER_DATA_LEN EQU ZXBASIC_USER_DATA_END - ZXBASIC_USER_DATA
3736
END

tests/functional/05.asm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ _a.__DATA__:
4646
__LABEL0:
4747
DEFW 0000h
4848
DEFB 01h
49-
; Defines DATA END --> HEAP size is 0
50-
ZXBASIC_USER_DATA_END EQU ZXBASIC_MEM_HEAP
49+
; Defines DATA END --> HEAP size is 0
50+
ZXBASIC_USER_DATA_END:
5151
; Defines USER DATA Length in bytes
5252
ZXBASIC_USER_DATA_LEN EQU ZXBASIC_USER_DATA_END - ZXBASIC_USER_DATA
5353
END

tests/functional/053opt.asm

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -65,20 +65,16 @@ __LABEL__enddispara:
6565
ld c, l
6666
jp __END_PROGRAM
6767
#line 1 "abs8.asm"
68-
6968
; Returns absolute value for 8 bit signed integer
7069
;
7170
__ABS8:
7271
or a
7372
ret p
7473
neg
7574
ret
76-
7775
#line 56 "053opt.bas"
7876
#line 1 "lti8.asm"
79-
8077
#line 1 "lei8.asm"
81-
8278
__LEI8: ; Signed <= comparison for 8bit int
8379
; A <= H (registers)
8480
PROC
@@ -87,10 +83,8 @@ __LEI8: ; Signed <= comparison for 8bit int
8783
jr nz, __LTI
8884
inc a
8985
ret
90-
9186
__LTI8: ; Test 8 bit values A < H
9287
sub h
93-
9488
__LTI: ; Generic signed comparison
9589
jp po, checkParity
9690
xor 0x80
@@ -102,14 +96,13 @@ checkParity:
10296
ENDP
10397
#line 2 "lti8.asm"
10498
#line 57 "053opt.bas"
105-
10699
ZXBASIC_USER_DATA:
107100
_subeEgg:
108101
DEFB 00
109102
_sail:
110103
DEFB 00
111-
; Defines DATA END --> HEAP size is 0
112-
ZXBASIC_USER_DATA_END EQU ZXBASIC_MEM_HEAP
104+
; Defines DATA END --> HEAP size is 0
105+
ZXBASIC_USER_DATA_END:
113106
; Defines USER DATA Length in bytes
114107
ZXBASIC_USER_DATA_LEN EQU ZXBASIC_USER_DATA_END - ZXBASIC_USER_DATA
115108
END

tests/functional/06.asm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ _a.__DATA__:
4141
__LABEL0:
4242
DEFW 0000h
4343
DEFB 02h
44-
; Defines DATA END --> HEAP size is 0
45-
ZXBASIC_USER_DATA_END EQU ZXBASIC_MEM_HEAP
44+
; Defines DATA END --> HEAP size is 0
45+
ZXBASIC_USER_DATA_END:
4646
; Defines USER DATA Length in bytes
4747
ZXBASIC_USER_DATA_LEN EQU ZXBASIC_USER_DATA_END - ZXBASIC_USER_DATA
4848
END

tests/functional/07.asm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ __LABEL0:
6060
DEFW 0001h
6161
DEFW 0004h
6262
DEFB 02h
63-
; Defines DATA END --> HEAP size is 0
64-
ZXBASIC_USER_DATA_END EQU ZXBASIC_MEM_HEAP
63+
; Defines DATA END --> HEAP size is 0
64+
ZXBASIC_USER_DATA_END:
6565
; Defines USER DATA Length in bytes
6666
ZXBASIC_USER_DATA_LEN EQU ZXBASIC_USER_DATA_END - ZXBASIC_USER_DATA
6767
END

0 commit comments

Comments
 (0)