@@ -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
581606PARSE_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
642668PARSE_LINE_ASSIGN:
643669 VAR_WORD_SAVE EQUAL EXPR emit TOK_VAR_STORE E_POP_VAR
0 commit comments