Line | |
---|
1 | ColorText: .dd $ffffff
|
---|
2 | ColorBackground: .dd 0
|
---|
3 |
|
---|
4 | Rectangle: ; R0 - Color, R1 - X, R2 - Y, R3 - Width, R4 - Height
|
---|
5 | PUSH R5 ; loop X
|
---|
6 | PUSH R6 ; loop Y
|
---|
7 | PUSH R7 ; color
|
---|
8 | PUSH R8 ; X
|
---|
9 | PUSH R9 ; Y
|
---|
10 | COPY R7, R0
|
---|
11 | COPY R8, R1
|
---|
12 | COPY R9, R2
|
---|
13 | COPY R6, R4
|
---|
14 | PUSH R0
|
---|
15 | PUSH R1
|
---|
16 | RectangleStart:
|
---|
17 | COPY R0, R8
|
---|
18 | COPY R1, R9
|
---|
19 | CALL SetPixelAddr
|
---|
20 | COPY R5, R3
|
---|
21 | RectangleLine:
|
---|
22 | OUT (ScreenWriteData), R7
|
---|
23 | DEC R5
|
---|
24 | JPNZ R5, RectangleLine
|
---|
25 | DEC R6
|
---|
26 | INC R9
|
---|
27 | JPNZ R6, RectangleStart
|
---|
28 | POP R1
|
---|
29 | POP R0
|
---|
30 | POP R9
|
---|
31 | POP R8
|
---|
32 | POP R7
|
---|
33 | POP R6
|
---|
34 | POP R3
|
---|
35 | RET
|
---|
36 |
|
---|
37 | SetPixelAddr: ; R0 - X, R1 - Y
|
---|
38 | PUSH R2
|
---|
39 | IN R2, (ScreenGetWidth)
|
---|
40 | SHL R2, 2 ; multiply by 4
|
---|
41 | SHL R0, 2 ; multiply by 4
|
---|
42 | MUL R1, R2
|
---|
43 | ADD R0, R1
|
---|
44 | OUT (ScreenSetAddr), R0
|
---|
45 | POP R2
|
---|
46 | RET
|
---|
47 |
|
---|
48 | .const CharWidth 8
|
---|
49 | .const CharHeight 8
|
---|
50 |
|
---|
51 | WriteChar: ; R0 - Character, R1 - X, R2 - Y
|
---|
52 | PUSH R3 ; Address of character
|
---|
53 | PUSH R4 ; Loop register Y
|
---|
54 | PUSH R5 ; X
|
---|
55 | PUSH R6 ; Y
|
---|
56 | PUSH R7 ; value
|
---|
57 | PUSH R8 ; screen width
|
---|
58 | PUSH R9 ; Loop register X
|
---|
59 | PUSH R10 ; Foreground color
|
---|
60 | PUSH R11 ; Background color
|
---|
61 | PUSH R12 ; temp value
|
---|
62 | COPY R5, R1
|
---|
63 | COPY R6, R2
|
---|
64 | SET R3, Font8x8
|
---|
65 | SHL R0, 3
|
---|
66 | ADD R3, R0
|
---|
67 | IN R8, (ScreenGetWidth)
|
---|
68 | SET R4, CharHeight
|
---|
69 | LDI R10, (ColorText)
|
---|
70 | LDI R11, (ColorBackground)
|
---|
71 | WriteCharLoopY:
|
---|
72 | COPY R0, R5
|
---|
73 | COPY R1, R6
|
---|
74 | CALL SetPixelAddr
|
---|
75 | LD R7, (R3)
|
---|
76 | SET R9, CharWidth
|
---|
77 | WriteCharLoopX:
|
---|
78 | COPY R12, R7
|
---|
79 | ANDI R12, 1
|
---|
80 | JPZ R12, WriteCharNext
|
---|
81 | OUT (ScreenWriteData), R10
|
---|
82 | JP WriteCharNext2
|
---|
83 | WriteCharNext:
|
---|
84 | OUT (ScreenWriteData), R11
|
---|
85 | WriteCharNext2:
|
---|
86 | DEC R9
|
---|
87 | SHR R7, 1
|
---|
88 | JPNZ R9, WriteCharLoopX
|
---|
89 | DEC R4
|
---|
90 | INC R6
|
---|
91 | INC R3
|
---|
92 | JPNZ R4, WriteCharLoopY
|
---|
93 | POP R12
|
---|
94 | POP R11
|
---|
95 | POP R10
|
---|
96 | POP R9
|
---|
97 | POP R8
|
---|
98 | POP R7
|
---|
99 | POP R6
|
---|
100 | POP R5
|
---|
101 | POP R4
|
---|
102 | POP R3
|
---|
103 | RET
|
---|
104 |
|
---|
105 | TextOut: ; R0 - Text address, R1 - X, R2 - Y
|
---|
106 | PUSH R3 ; loop variable
|
---|
107 | PUSH R4 ; character width
|
---|
108 | PUSH R6 ; X
|
---|
109 | PUSH R7 ; Y
|
---|
110 | PUSH R1
|
---|
111 | PUSH R2
|
---|
112 | PUSH R0
|
---|
113 | COPY R6, R1
|
---|
114 | COPY R7, R2
|
---|
115 | COPY R3, R0
|
---|
116 | SET R4, CharWidth
|
---|
117 | TextOutLoop:
|
---|
118 | LD R0, (R3)
|
---|
119 | ANDI R0, $ff
|
---|
120 | JPZ R0, TextOutLoop2
|
---|
121 | COPY R1, R6
|
---|
122 | COPY R2, R7
|
---|
123 | CALL WriteChar
|
---|
124 | ADD R6, R4
|
---|
125 | INC R3
|
---|
126 | JP TextOutLoop
|
---|
127 | TextOutLoop2:
|
---|
128 | POP R0
|
---|
129 | POP R2
|
---|
130 | POP R1
|
---|
131 | POP R7
|
---|
132 | POP R6
|
---|
133 | POP R4
|
---|
134 | POP R3
|
---|
135 | RET
|
---|
136 |
|
---|
137 | .include Font.asm
|
---|
Note:
See
TracBrowser
for help on using the repository browser.