Skip to content

Commit f573b2b

Browse files
committed
Add MISC labels
Also add Beep-related routines and BORDER
1 parent 46faf4b commit f573b2b

4 files changed

Lines changed: 32 additions & 10 deletions

File tree

src/arch/zx48k/backend/runtime/io.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ class IOLabels:
2727
OVER_TMP = f"{NAMESPACE}OVER_TMP"
2828
PAPER_TMP = f"{NAMESPACE}PAPER_TMP"
2929

30+
BORDER = f"{NAMESPACE}BORDER"
31+
3032
# Drawing primitives
3133
CIRCLE = f"{NAMESPACE}CIRCLE"
3234
DRAW = f"{NAMESPACE}DRAW"
@@ -56,6 +58,10 @@ class IOLabels:
5658
LOAD_CODE = f"{NAMESPACE}LOAD_CODE"
5759
SAVE_CODE = f"{NAMESPACE}SAVE_CODE"
5860

61+
# Sound
62+
BEEP = f"{NAMESPACE}BEEP"
63+
BEEPER = f"{NAMESPACE}__BEEPER"
64+
5965

6066
REQUIRED_MODULES = {
6167
IOLabels.CLS: 'cls.asm',
@@ -79,6 +85,8 @@ class IOLabels:
7985
IOLabels.OVER_TMP: 'over.asm',
8086
IOLabels.PAPER_TMP: 'paper.asm',
8187

88+
IOLabels.BORDER: 'border.asm',
89+
8290
IOLabels.CIRCLE: 'circle.asm',
8391
IOLabels.DRAW: 'draw.asm',
8492
IOLabels.DRAW3: 'draw3.asm',
@@ -103,4 +111,7 @@ class IOLabels:
103111
IOLabels.PRINT_EOL: 'print.asm',
104112
IOLabels.PRINT_EOL_ATTR: 'print_eol_attr.asm',
105113
IOLabels.PRINT_TAB: 'print.asm',
114+
115+
IOLabels.BEEP: 'beep.asm',
116+
IOLabels.BEEPER: 'beeper.asm'
106117
}

src/arch/zx48k/backend/runtime/labels.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,16 @@
99
from . import io
1010
from . import math
1111
from . import random
12+
from . import misc
1213

1314

1415
class Labels(
1516
core.CoreLabels,
1617
datarestore.DataRestoreLabels,
1718
io.IOLabels,
1819
math.MathLabels,
19-
random.RandomLabels
20+
misc.MiscLabels,
21+
random.RandomLabels,
2022
):
2123
""" All labels
2224
"""
@@ -44,5 +46,6 @@ def dict_join(*args: Dict[str, str]) -> Dict[str, str]:
4446
datarestore.REQUIRED_MODULES,
4547
math.REQUIRED_MODULES,
4648
io.REQUIRED_MODULES,
47-
random.REQUIRED_MODULES
49+
random.REQUIRED_MODULES,
50+
misc.REQUIRED_MODULES
4851
)
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Miscelaneous functions
2+
3+
from .namespace import NAMESPACE
4+
5+
6+
class MiscLabels:
7+
PAUSE = f"{NAMESPACE}__PAUSE"
8+
9+
10+
REQUIRED_MODULES = {
11+
MiscLabels.PAUSE: 'pause.asm'
12+
}

src/arch/zx48k/translator.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -831,29 +831,25 @@ def visit_VERIFY(self, node):
831831
def visit_BORDER(self, node):
832832
yield node.children[0]
833833
self.ic_fparam(TYPE.ubyte, node.children[0].t)
834-
self.ic_call('BORDER', 0)
835-
backend.REQUIRES.add('border.asm')
834+
self.runtime_call(RuntimeLabel.BORDER, 0)
836835

837836
def visit_BEEP(self, node):
838837
if node.children[0].token == node.children[1].token == 'NUMBER': # BEEP <const>, <const>
839838
DE, HL = src.arch.zx48k.beep.getDEHL(float(node.children[0].t), float(node.children[1].t))
840839
self.ic_param(TYPE.uinteger, HL)
841840
self.ic_fparam(TYPE.uinteger, DE)
842-
self.ic_call('__BEEPER', 0) # Procedure call. Discard return
843-
backend.REQUIRES.add('beeper.asm')
841+
self.runtime_call(RuntimeLabel.BEEPER, 0) # Procedure call. Discard return
844842
else:
845843
yield node.children[1]
846844
self.ic_param(TYPE.float_, node.children[1].t)
847845
yield node.children[0]
848846
self.ic_fparam(TYPE.float_, node.children[0].t)
849-
self.ic_call('BEEP', 0)
850-
backend.REQUIRES.add('beep.asm')
847+
self.runtime_call(RuntimeLabel.BEEP, 0)
851848

852849
def visit_PAUSE(self, node):
853850
yield node.children[0]
854851
self.ic_fparam(node.children[0].type_, node.children[0].t)
855-
self.ic_call('__PAUSE', 0)
856-
backend.REQUIRES.add('pause.asm')
852+
self.runtime_call(RuntimeLabel.PAUSE, 0)
857853

858854
# endregion
859855

0 commit comments

Comments
 (0)