dos33fsprogs/graphics/hgr/vgi/vgi_common.s
2021-07-09 23:32:47 -04:00

73 lines
1.2 KiB
ArmAsm

; VGI library
VGI_MAXLEN = 7
;==================================
; play_vgi
;==================================
play_vgi:
vgi_loop:
ldy #0
data_smc:
lda (VGIL),Y
sta VGI_BUFFER,Y
iny
cpy #VGI_MAXLEN
bne data_smc
lda VGI_TYPE
and #$f
clc
adc VGIL
sta VGIL
bcc no_oflo
inc VGIH
no_oflo:
lda VGI_TYPE
lsr
lsr
lsr
lsr
; look up action in jump table
asl
tax
lda vgi_rts_table+1,X
pha
lda vgi_rts_table,X
pha
rts ; "jump" to subroutine
vgi_rts_table:
.word vgi_clearscreen-1 ; 0 = clearscreen
.word vgi_simple_rectangle-1 ; 1 = simple rectangle
.word vgi_circle-1 ; 2 = plain circle
.word vgi_filled_circle-1 ; 3 = filled circle
.word vgi_point-1 ; 4 = dot
.word vgi_lineto-1 ; 5 = line to
.word vgi_dithered_rectangle-1 ; 6 = dithered rectangle
.word vgi_vertical_triangle-1 ; 7 = vertical triangle
.word vgi_horizontal_triangle-1 ; 8 = horizontal triangle
.word vgi_vstripe_rectangle-1 ; 9 = vstripe rectangle
.word vgi_line-1 ;10 = line
.word vgi_line_far-1 ;11 = line far
.word all_done-1
.word all_done-1
.word all_done-1
.word all_done-1 ; 15 = done
all_done:
rts
.include "vgi_clearscreen.s"
.include "vgi_circles.s"
.include "vgi_rectangle.s"
.include "vgi_lines.s"
.include "vgi_triangles.s"