Files
no_internet/macro.lst
T
2018-06-19 23:44:59 +02:00

149 lines
4.4 KiB
Plaintext

mads 2.0.6 build 58 (28 Jan 17)
Source: C:\jac\wudsn\Workspace\no_internet\macro.asm
1 ;-------------------------------------
2 .MACRO ROLW
3 ROL :1
4 ROL :1+1
5 .ENDM
6 ;-------------------------------------
7 .MACRO ASLW
8 ASL :1
9 ROL :1+1
10 .ENDM
11 ;-------------------------------------
12 .MACRO RORW
13 ROR :1+1
14 ROR :1
15 .ENDM
16 ;-------------------------------------
17 .MACRO LSRW
18 LSR :1+1
19 ROR :1
20 .ENDM
21
22 ;-------------------------------------
23 .MACRO VMAIN
24 ; VMAIN #WORD,interrupt.vector
25 ; interrupt.vector:
26 ; 0 - VIMIRQ
27 ; 1 - TIMCNT1
28 ; 2 - TIMCNT2
29 ; 3 - TIMCNT3
30 ; 4 - TIMCNT4
31 ; 5 - TIMCNT5
32 ; 6 - VVBLKI
33 ; 7 - VVBLKD
34 ; 8 - TIMVEC1
35 ; 9 - TIMVEC2
36 ; Initialises Vertical Blank Interrupts
37 ; (works only with system interrupts ON)
38 LDY # <:1
39 LDX # >:1
40 LDA #:2
41 JSR SETVBV
42 .ENDM
43 ;-------------------------------------
44 .MACRO VDLI
45 ; VDLI #WORD
46 ; Initialises Display List Interrupts
47 LDY # <:1
48 LDX # >:1
49 LDA #$C0
50 STY $0200
51 STX $0201
52 STA NMIEN
53 .ENDM
54 ;-------------------------------------
55 .MACRO halt
56 ?stop
57 .if :1
58 lda RANDOM
59 and #:1
60 sta COLBAK
61 .endif
62 jmp ?stop
63 .ENDM
64 ;-------------------------------------
65 .MACRO KEY
66 ; KEY
67 ; waits for releasing and pressing "any key"
68 PHA
69 ?CK1 LDA SKSTAT
70 AND #$04
71 BEQ ?CK1
72 ?CK LDA SKSTAT
73 AND #$04
74 BNE ?CK
75 PLA
76 .ENDM
77 ;-------------------------------------
78 .MACRO WAIT ;waits one frame (1/50 s(PAL) or 1/60s(NTSC))
79 ;uses: A
80 LDA VCOUNT
81 STA WSYNC
82 STA WSYNC
83 STA WSYNC
84 @ CMP VCOUNT
85 BNE @-
86 .ENDM
87 ;-------------------------------------
88 .macro negw
89 ; negate the given word (0-a)
90 ;-------------------------------------
91 sec
92 lda #$00
93 sbc :1
94 sta :1
95 lda #$00
96 sbc :1+1
97 sta :1+1
98 .endm
99 ;-------------------------------------
100 .macro randomize ;returns (in A) a random .byte between "floor" (incl) and "ceiling" (excl)
101 ;usage: randomize floor ceiling AND
102 ;uses: A
103
104 ?rand
105 lda random
106 .if :3
107 and #:3
108 .endif
109 cmp #:1 ;floor
110 bcc ?rand
111 cmp #:2+1 ;ceiling
112 bcs ?rand
113 .endm
114 ;-------------------------------------
115 .macro phx
116 txa
117 pha
118 .endm
119 ;-------------------------------------
120 .macro phy
121 tya
122 pha
123 .endm
124 ;-------------------------------------
125 .macro plx
126 pla
127 tax
128 .endm
129 ;-------------------------------------
130 .macro ply
131 pla
132 tay
133 .endm
134 ;-------------------------------------
135 .macro pause ;waits :1 number (byte) of frames
136 ;uses: AX
137 .if :1 > 0
138 ldx #:1
139 loop wait
140 dex
141 bne loop
142 .else
143 wait
144 .endif
145 .ENDM
146