OpenCores
URL https://opencores.org/ocsvn/rtf65002/rtf65002/trunk

Subversion Repositories rtf65002

[/] [rtf65002/] [trunk/] [software/] [asm/] [RandomLines.asm] - Blame information for rev 40

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 40 robfinch
;--------------------------------------------------------------------------
2
; Draw random lines on the bitmap screen.
3
;--------------------------------------------------------------------------
4
;
5
message "RandomLines"
6
        align   8
7
public RandomLines:
8
        pha
9
        phx
10
        phy
11
        push    r4
12
        push    r5
13
        jsr             RequestIOFocus
14
        jsr             ClearScreen
15
        jsr             HomeCursor
16
        lda             #msgRandomLines
17
        jsr             DisplayStringB
18
        lda             #1
19
        sta             gr_cmd
20
rl5:
21
        tsr             LFSR,r1
22
        tsr             LFSR,r2
23
        tsr             LFSR,r3
24
        mod             r1,r1,#680
25
        mod             r2,r2,#384
26
        jsr             DrawPixel
27
        tsr             LFSR,r1
28
        sta             LineColor               ; select a random color
29
rl1:                                            ; random X0
30
        tsr             LFSR,r1
31
        mod             r1,r1,#680
32
rl2:                                            ; random X1
33
        tsr             LFSR,r3
34
        mod             r3,r3,#680
35
rl3:                                            ; random Y0
36
        tsr             LFSR,r2
37
        mod             r2,r2,#384
38
rl4:                                            ; random Y1
39
        tsr             LFSR,r4
40
        mod             r4,r4,#384
41
rl8:
42
        ld              r5,GA_STATE             ; make sure state is IDLE
43
        bne             rl8
44
        ld              r5,gr_cmd
45
        cmp             r5,#2
46
        bne             rl11
47
        jsr             DrawLine
48
        bra             rl12
49
rl11:
50
        cmp             r5,#1
51
        bne             rl13
52
        jsr             DrawPixel
53
        bra             rl12
54
rl13:
55
        cmp             r5,#4
56
        bne             rl12
57
        jsr             DrawRectangle
58
rl12:
59
        jsr             KeybdGetChar
60
        cmp             #CTRLC
61
        beq             rl7
62
        cmp             #'p'
63
        bne             rl9
64
        jsr             ClearBmpScreen
65
        lda             #1
66
        sta             gr_cmd
67
        bra             rl5
68
rl9:
69
        cmp             #'r'
70
        bne             rl10
71
        jsr             ClearBmpScreen
72
        lda             #4
73
        sta             gr_cmd
74
        bra             rl5
75
rl10
76
        cmp             #'l'
77
        bne             rl5
78
        jsr             ClearBmpScreen
79
        lda             #2
80
        sta             gr_cmd
81
        bra             rl5
82
rl7:
83
;       jsr             ReleaseIOFocus
84
        pop             r5
85
        pop             r4
86
        ply
87
        plx
88
        pla
89
        rts
90
 
91
 
92
msgRandomLines:
93
        db              CR,LF,"Random lines running - press CTRL-C to exit.",CR,LF,0
94
 
95
;--------------------------------------------------------------------------
96
; Draw a pixel on the bitmap screen.
97
; r1 = x coordinate
98
; r2 = y coordinate
99
; r3 = color
100
;--------------------------------------------------------------------------
101
message "DrawPixel"
102
DrawPixel:
103
        pha
104
        sta             GA_X0
105
        stx             GA_Y0
106
        sty             GA_PEN
107
        lda             #1
108
        sta             GA_CMD
109
        pla
110
        rts
111
comment ~
112
        pha
113
        phx
114
        mul             r2,r2,#680      ; y * 680
115
        add             r1,r1,r2        ; + x
116
        sb              r3,BITMAPSCR<<2,r1
117
        plx
118
        pla
119
        rts
120
~
121
;--------------------------------------------------------------------------
122
; Draw a line on the bitmap screen.
123
;--------------------------------------------------------------------------
124
;50 REM DRAWLINE
125
;100 dx = ABS(xb-xa)
126
;110 dy = ABS(yb-ya)
127
;120 sx = SGN(xb-xa)
128
;130 sy = SGN(yb-ya)
129
;140 er = dx-dy
130
;150 PLOT xa,ya
131
;160 if xa<>xb goto 200
132
;170 if ya=yb goto 300
133
;200 ee = er * 2
134
;210 if ee <= -dy goto 240
135
;220 er = er - dy
136
;230 xa = xa + sx
137
;240 if ee >= dx goto 270
138
;250 er = er + dx
139
;260 ya = ya + sy
140
;270 GOTO 150
141
;300 RETURN
142
 
143
message "DrawLine"
144
DrawLine:
145
        pha
146
        sta             GA_X0
147
        stx             GA_Y0
148
        sty             GA_X1
149
        st              r4,GA_Y1
150
        lda             LineColor
151
        sta             GA_PEN
152
        lda             #2
153
        sta             GA_CMD
154
        pla
155
        rts
156
 
157
DrawRectangle:
158
        pha
159
        sta             GA_X0
160
        stx             GA_Y0
161
        sty             GA_X1
162
        st              r4,GA_Y1
163
        lda             LineColor
164
        sta             GA_PEN
165
        lda             #4
166
        sta             GA_CMD
167
        pla
168
        rts
169
 
170
comment ~
171
        pha
172
        phx
173
        phy
174
        push    r4
175
        push    r5
176
        push    r6
177
        push    r7
178
        push    r8
179
        push    r9
180
        push    r10
181
        push    r11
182
 
183
        sub             r5,r3,r1        ; dx = abs(x2-x1)
184
        bpl             dln1
185
        sub             r5,r0,r5
186
dln1:
187
        sub             r6,r4,r2        ; dy = abs(y2-y1)
188
        bpl             dln2
189
        sub             r6,r0,r6
190
dln2:
191
 
192
        sub             r7,r3,r1        ; sx = sgn(x2-x1)
193
        beq             dln5
194
        bpl             dln4
195
        ld              r7,#-1
196
        bra             dln5
197
dln4:
198
        ld              r7,#1
199
dln5:
200
 
201
        sub             r8,r4,r2        ; sy = sgn(y2-y1)
202
        beq             dln8
203
        bpl             dln7
204
        ld              r8,#-1
205
        bra             dln8
206
dln7:
207
        ld              r8,#1
208
 
209
dln8:
210
        sub             r9,r5,r6        ; er = dx-dy
211
dln150:
212
        phy
213
        ldy             LineColor
214
        jsr             DrawPixel
215
        ply
216
        cmp             r1,r3           ; if (xa <> xb)
217
        bne             dln200          ;    goto 200
218
        cmp             r2,r4           ; if (ya==yb)
219
        beq             dln300          ;    goto 300
220
dln200:
221
        asl             r10,r9          ; ee = er * 2
222
        sub             r11,r0,r6       ; r11 = -dy
223
        cmp             r10,r11         ; if (ee <= -dy)
224
        bmi             dln240          ;     goto 240
225
        beq             dln240
226
        sub             r9,r9,r6        ; er = er - dy
227
        add             r1,r1,r7        ; xa = xa + sx
228
dln240:
229
        cmp             r10,r5          ; if (ee >= dx)
230
        bpl             dln150          ;    goto 150
231
        add             r9,r9,r5        ; er = er + dx
232
        add             r2,r2,r8        ; ya = ya + sy
233
        bra             dln150          ; goto 150
234
 
235
dln300:
236
        pop             r11
237
        pop             r10
238
        pop             r9
239
        pop             r8
240
        pop             r7
241
        pop             r6
242
        pop             r5
243
        pop             r4
244
        ply
245
        plx
246
        pla
247
        rts
248
~
249
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.