-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathtmacro.asm
102 lines (67 loc) · 830 Bytes
/
tmacro.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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
; tmacro.asm
; Some tests of macro usage.
org 100h ; To run in cp/m
start:
macro bdos, function
ld c, function
call 5
endm
lineend macro
ld e, 0Dh
bdos 2
ld e, 0Ah
bdos 2
endm
macro pushall
push af
push bc
push de
push hl
endm
popall macro
pop hl
pop de
pop bc
pop af
endm
; Another way.
pall macro operation
irp reg, af, bc, de, hl
local i1
operation reg
endm
endm
pushall2 macro
pall push
endm
popall2 macro
irp reg, af, bc, de, hl
pop reg
endm
endm
; Yet another way
pushmany macro reg
rept -1
if nul reg
exitm
endif
push reg
.shift
endm
endm
pushall3 macro
pushmany af, bc, de, hl
endm
; Main program
; pushall
; pushall2
pushall3
ld de, hello
i1 bdos 9
i2: lineend
;popall
popall2
bdos 0
hello db 'Hello, world.$'
end start
; End of tmacro.asm