Rev 539 | Blame | Compare with Previous | Last modification | View Log | Download
# file opened: get_label_page_operator.asm1 0000 DEVICE ZXSPECTRUM1282 0000 MMU 0 3, 43 0000 ORG 0x4000-24 3FFE orgL1:5 3FFE .local:6 3FFE ASSERT 4 == $$.local7 3FFE DISP 0xC000-18 BFFF dispL1:9 BFFF ASSERT 4 == $$orgL1 && 4 == $$ ; label and page in 0000-3FFF is 410 BFFF ASSERT 6 == $$dispL1 ; dispL1 page is taken from current mapping11 BFFF ; also the CSpect export of displaced labels is sort of "bogus", affected by this12 BFFF DD CB 41 EE set 5,(ix+0x41) ; 4B opcode across both ORG and DISP boundaries13 C003 ENT14 4002 orgL1end:15 4002 ASSERT 5 == $$orgL1end && 5 == $$ ; label and page in 4000-7FFF is 516 400217 4002 ; exercise the label parsing/evaluation, line parsin18 4002 ASSERT 4 == $$orgL1.local && 4 == $$@orgL1.local && 1get_label_page_operator.asm(19): error: Label not found: MissingLabel19 4002 ASSERT -1 == $$MissingLabel && 1get_label_page_operator.asm(20): error: Unexpected: ..invalidLabelName20 4002 ASSERT $$ == $$..invalidLabelName ; parsing breaks completely, evaluating only first part21 400222 4002 ;; exercise macro nesting and reaching out for labels23 4002 TM MACRO expPageOuter?, expPage1?, expPage2?, recursion?24 4002 ~ ASSERT expPageOuter? == $$.outer25 4002 ~ ASSERT expPageOuter? == $$MacroNestingAndReaching.outer26 4002 ~ ASSERT expPageOuter? == $$@MacroNestingAndReaching.outer27 4002 ~ IF recursion?28 4002 ~ ASSERT expPage1? == $$.inner29 4002 ~ TM expPageOuter?, expPage1?, expPage2?, 030 4002 ~ ELSE31 4002 ~ ASSERT expPage2? == $$.inner32 4002 ~ ENDIF33 4002 ~ .inner:34 4002 ~ nop35 4002 ENDM36 400237 4002 ORG $7FFF38 7FFF MacroNestingAndReaching:39 7FFF ; MacroNestingAndReaching.outer = $8001, 0>inner = $8000, 1.0>inner = $7FFF40 7FFF TM 6, 6, 5, 140 7FFF > ASSERT 6 == $$.outer40 7FFF > ASSERT 6 == $$MacroNestingAndReaching.outer40 7FFF > ASSERT 6 == $$@MacroNestingAndReaching.outer40 7FFF > IF 140 7FFF > ASSERT 6 == $$.inner40 7FFF > TM 6, 6, 5, 040 7FFF > ASSERT 6 == $$.outer40 7FFF > ASSERT 6 == $$MacroNestingAndReaching.outer40 7FFF > ASSERT 6 == $$@MacroNestingAndReaching.outer40 7FFF > IF 040 7FFF ~ > ASSERT expPage1? == $$.inner40 7FFF ~ > TM expPageOuter?, expPage1?, expPage2?, 040 7FFF > ELSE40 7FFF > ASSERT 5 == $$.inner40 7FFF > ENDIF40 7FFF >.inner:40 7FFF 00 > nop40 8000 > ELSE40 8000 ~ > ASSERT expPage2? == $$.inner40 8000 > ENDIF40 8000 >.inner:40 8000 00 > nop41 8001 .outer:42 800143 8001 CSPECTMAP "get_label_page_operator.sym"44 8001# file closed: get_label_page_operator.asmValue Label------ - -----------------------------------------------------------0x8000 0>inner0x7FFF 1.0>inner0xBFFF dispL10x7FFF X MacroNestingAndReaching0x8001 MacroNestingAndReaching.outer0x3FFE orgL10x3FFE orgL1.local0x4002 orgL1end