|
1 | 1 | const |
2 | | - DLICount = $1c; // DLI counter used for current color table offset |
3 | | - // on each interrupt incrase about 4 |
4 | | - // max. value 44 |
5 | | - // reset to 0 before initialize interrupt |
| 2 | + DLICount = $1c; // DLI counter used for current color table offset |
| 3 | + // on each interrupt incrase about 4 |
| 4 | + // max. value 44 |
| 5 | + // reset to 0 before initialize interrupt |
6 | 6 |
|
7 | 7 | var |
8 | | - DLIThemeCnt:byte absolute DLICount; |
9 | | - DLIColTab:array[0..6*5-1] of byte absolute DLI_COLOR_TABLE_ADDR; |
10 | | - NMIEN:byte absolute $d40e; |
11 | | - oldDLI:pointer; |
| 8 | + DLIThemeCnt:byte absolute DLICount; |
| 9 | + DLIColTab:array[0..6*5-1] of byte absolute DLI_COLOR_TABLE_ADDR; |
| 10 | + NMIEN:byte absolute $d40e; |
| 11 | + oldDLI:pointer; |
12 | 12 |
|
13 | 13 | procedure DLI_theme;assembler;interrupt; |
14 | 14 | asm |
15 | 15 | ; Register backup for DLI interrupt |
16 | | -_regA = $1d; |
17 | | -_regX = $1e; |
18 | | -_regY = $1f; |
| 16 | +_regA = $1d; |
| 17 | +_regX = $1e; |
| 18 | +_regY = $1f; |
19 | 19 |
|
20 | | - sta _regA ; store registers A & Y |
21 | | - sty _regY |
| 20 | + sta _regA ; store registers A & Y |
| 21 | + sty _regY |
22 | 22 |
|
23 | | - ldy DLICount ; read line counter register |
| 23 | + ldy DLICount ; read line counter register |
24 | 24 |
|
25 | | - lda DLI_COLOR_TABLE_ADDR,y ; read first color entry |
26 | | - sta $D012 ; store player 0 color |
27 | | - iny ; increment y reg |
28 | | - lda DLI_COLOR_TABLE_ADDR,y ; 2nd color |
29 | | - sta $D013 |
30 | | - iny |
31 | | - lda DLI_COLOR_TABLE_ADDR,y ; 3rd color |
32 | | - sta $d014 |
33 | | - iny |
34 | | - lda DLI_COLOR_TABLE_ADDR,y ; 4th color |
35 | | - sta $d015 |
36 | | - iny |
37 | | - lda DLI_COLOR_TABLE_ADDR,y ; 5th color (for background) |
38 | | - sta $d018 |
39 | | - iny |
| 25 | + lda DLI_COLOR_TABLE_ADDR,y ; read first color entry |
| 26 | + sta $D012 ; store player 0 color |
| 27 | + iny ; increment y reg |
| 28 | + lda DLI_COLOR_TABLE_ADDR,y ; 2nd color |
| 29 | + sta $D013 |
| 30 | + iny |
| 31 | + lda DLI_COLOR_TABLE_ADDR,y ; 3rd color |
| 32 | + sta $d014 |
| 33 | + iny |
| 34 | + lda DLI_COLOR_TABLE_ADDR,y ; 4th color |
| 35 | + sta $d015 |
| 36 | + iny |
| 37 | + lda DLI_COLOR_TABLE_ADDR,y ; 5th color (for background) |
| 38 | + sta $d018 |
| 39 | + iny |
40 | 40 |
|
41 | | - cpy #30 ; check, if its last line? |
| 41 | + cpy #30 ; check, if its last line? |
42 | 42 | bne storeRegY |
43 | | - ldy #0 ; yes, reset register |
| 43 | + ldy #0 ; yes, reset register |
44 | 44 |
|
45 | 45 | storeRegY: |
46 | | - sty DLICount ; store register value |
| 46 | + sty DLICount ; store register value |
47 | 47 |
|
48 | | - ldy _regY ; restore old A & Y register |
| 48 | + ldy _regY ; restore old A & Y register |
49 | 49 | lda _regA |
50 | 50 | end; |
51 | 51 |
|
52 | 52 | procedure DLIInit(); |
53 | 53 | begin |
54 | | - SFX_End(); |
55 | | - NMIEN:=%00000000; // turn off DLI |
56 | | - DLIThemeCnt:=0; // reset DLI counter |
57 | | - getIntVec(iDLI, oldDLI); |
58 | | - SetIntVec(iDLI, @DLI_theme); |
59 | | - NMIEN:=%11000000; // turn on DLI |
| 54 | + SFX_End(); |
| 55 | + NMIEN:=%00000000; // turn off DLI |
| 56 | + DLIThemeCnt:=0; // reset DLI counter |
| 57 | + getIntVec(iDLI, oldDLI); |
| 58 | + SetIntVec(iDLI, @DLI_theme); |
| 59 | + NMIEN:=%11000000; // turn on DLI |
60 | 60 | end; |
61 | 61 |
|
62 | 62 | procedure DLIDone(); |
63 | 63 | begin |
64 | | - NMIEN:=%01000000; // turn off DLI |
65 | | - setIntVec(iDLI, oldDLI); |
66 | | - SFX_Start(); |
| 64 | + NMIEN:=%01000000; // turn off DLI |
| 65 | + setIntVec(iDLI, oldDLI); |
| 66 | + SFX_Start(); |
67 | 67 | end; |
0 commit comments