-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathblack.asm
More file actions
116 lines (89 loc) · 1.77 KB
/
black.asm
File metadata and controls
116 lines (89 loc) · 1.77 KB
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
; black.asm
; Fills slowly the spectrum screen.
; This program test some capabilities of Pasmo.
; Try for example:
; pasmo --tapbas black.asm black.tap
; pasmo --tapbas --equ NODELAY black.asm black.tap
; pasmo --tapbas --equ DELAYVALUE=0F000h black.asm black.tap
; To run it in fuse, for example:
; fuse black.tap
; Testing ? short-circuit operator
org defined LOADPOS ? LOADPOS : 30000
if defined FILLVALUE
value equ FILLVALUE
else
value equ 0FFh
endif
start
; Point to the screen bitmap.
screen equ defined CPC ? 0C000h : 04000h
; High word of end of screen
endscreen equ defined CPC ? 00h : 58h
if defined USEHL
ld hl, screen
else
ld ix,screen
endif
other
; Fills an octet of the screen with the value specified.
if defined USEHL
ld (hl), value
inc hl
else
ld (ix), value
inc ix
endif
; Delay
;if not defined NODELAY
;if ~ defined NODELAY
;if ! defined NODELAY
; Testing short-circuit evaluation.
if ! defined NODELAY && (! defined DELAYVALUE || DELAYVALUE != 0)
;if ! defined NODELAY || ! defined DELAYVALUE || DELAYVALUE != 0
; if defined DELAYVALUE
;loops equ DELAYVALUE
; else
;loops equ 100h
; endif
; Testing ? short-circuit operator
loops equ defined DELAYVALUE ? DELAYVALUE : 100h
; ld bc, loops
; Testing high and low operators
ld b, high loops
ld c, low loops
delay dec bc
ld a,b
or c
if defined USEJP
jp nz, delay
else
jr nz, delay
endif
endif
; Test if reached end of screen.
ld a, 0
if defined USEHL
cp l
else
cp ixl
endif
if defined USEJP
jp nz, other
else
jr nz, other
endif
ld a, endscreen
if defined USEHL
cp h
else
cp ixh
endif
if defined USEJP
jp nz, other
else
jr nz, other
endif
; And return to Basic.
ret
; Set the entry point, needed with the --tapbas option to autorun.
end start