-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathincMOBCommand.asm
84 lines (71 loc) · 2.21 KB
/
incMOBCommand.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
;*******************************************************************************
;* MOB Command *
;* This BASIC function to set up a sprite on the system *
;* *****************************************************************************
;* Syntax : MOB or m Shifted O *
;* Inputs : Sprite No *
;* : Sprite Pointer # *
;* : Enable / Disable *
;* : Expanded X Enable / Disable *
;* : Expanded Y Enable / Disable *
;* : Background Priority Enable / Disable *
;* : MultiColour Enable / Disable *
;*******************************************************************************
; mob : sprite no, enable, xX, yY, background, multiCol
COM_MOB
jsr bas_GETBYTC$; Get Sprite Number
cpx #8
bcc @ValidSpriteNo
; Illegal Qty Error
jmp bas_IQERR$
@ValidSpriteNo
stx COMM_AXLO
jsr bas_CHKCOM$ ; Checks For a Comma
jsr bas_GETBYTC$; Get Sprite Poointer#
txa
ldx COMM_AXLO ; Sprite #
sta SPRITE_POINTERS,x ; Normal Text Mode
sta SPRITE_POINTERS + $8000,x ; Hi-Res Mode
lda VICII_SPENA
jsr MOBPARAMGET
sta VICII_SPENA
lda VICII_XXPAND
jsr MOBPARAMGET
sta VICII_XXPAND
lda VICII_YXPAND
jsr MOBPARAMGET
sta VICII_YXPAND
lda VICII_SPBGPR
jsr MOBPARAMGET
sta VICII_SPBGPR
lda VICII_SPMC
jsr MOBPARAMGET
sta VICII_SPMC
rts
MOBPARAMGET
sta COMM_AY
jsr bas_CHRGOT$
jsr bas_CHKCOM$ ; Get Comma
jsr bas_GETBYTC$ ; Get # 0->255
cpx #2
bcc @ValueOK
jmp bas_IQERR$
@ValueOK
cpx #0
beq @Disable
jsr WorkOutSpriteBit
lda COMM_AY
ora BYTEMASK,x
rts
@Disable
jsr WorkOutSpriteBit
lda BYTEMASK,x
eor #%11111111
and COMM_AY
rts
WorkOutSpriteBit
lda #7
sec
sbc COMM_AXLO
tax
rts