Skip to content

Commit db2e100

Browse files
committed
Initial DLI support.
1 parent 8ea6ad8 commit db2e100

1 file changed

Lines changed: 26 additions & 0 deletions

File tree

src/basic.syn

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -577,6 +577,31 @@ DATA_VAR: new data array name
577577
DATA_TYPE
578578
emit { TOK_JUMP, LT_PROC_DATA } E_PUSH_LT E_LABEL_DEF "()" DATA_TYPE
579579

580+
# DLI support - builds a machine code routine and store the address to
581+
# display list interrupt handler:
582+
DLI_COMMAND:
583+
"Def" emit { TOK_JUMP, LT_PROC_DATA } E_PUSH_LT \
584+
E_LABEL_DEF emit { VT_ARRAY_BYTE } E_LABEL_SET_TYPE \
585+
emit { 72, 138, 72, 166, COLRSH } EQUAL \
586+
DLI_LDA emit { 141, &WSYNC } DLI_STA DLI_CODES \
587+
emit { 230, COLRSH, 104, 170, 104, 64 } \
588+
E_POP_PROC_DATA
589+
"Set" emit { TOK_NUM, &VDSLST, TOK_SADDR, TOK_NUM, VT_ARRAY_BYTE } E_LABEL \
590+
emit { TOK_DPOKE, TOK_BYTE, 192, TOK_NUM_POKE, &NMIEN }
591+
emit { TOK_BYTE, 64, TOK_NUM_POKE, &NMIEN }
592+
593+
DLI_CODES:
594+
"," DLI_LDA DLI_STA DLI_CODES
595+
pass
596+
597+
DLI_LDA: DLI source data
598+
"@" emit { 189, VT_ARRAY_BYTE } E_LABEL
599+
"@" emit 189 E_NUMBER_WORD
600+
emit 169 E_NUMBER_BYTE
601+
602+
DLI_STA: DLI destination
603+
"TO" emit 141 E_NUMBER_WORD
604+
580605
# Parse a line
581606
PARSE_LINE_COMMAND:
582607
"." E_REM
@@ -638,6 +663,7 @@ PARSE_LINE_COMMAND:
638663
"PMGraphics" EXPR emit TOK_PMGRAPHICS
639664
"PMHpos" EXPR emit { TOK_PUSH_NUM, &HPOSP0, TOK_ADD, TOK_SADDR } "," EXPR emit TOK_POKE
640665
"Timer" emit { TOK_0, TOK_BYTE_POKE, 20, TOK_0, TOK_BYTE_POKE, 19 }
666+
"DLi" DLI_COMMAND
641667

642668
PARSE_LINE_ASSIGN:
643669
VAR_WORD_SAVE EQUAL EXPR emit TOK_VAR_STORE E_POP_VAR

0 commit comments

Comments
 (0)