-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathMEMMAP.ASM
198 lines (187 loc) · 3 KB
/
MEMMAP.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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
10 ORG 100H
20 JP MAIN
30PUTSTR EQU 0BFF1H
40ADCRLF EQU 0BCEEH
50INKEY EQU 0BE53H
60WAITK EQU 0BFCDH
70GETCHR EQU 0BCFDH
80RPTCHR EQU 0BFEEH
90PUTCHR EQU 0BE62H
100MAIN: CALL CLS
110 LD HL,(07FFEH)
120 DEC HL
130 PUSH HL
140 LD A,H
150 LD HL,MCA0
160 CALL BYTE
170 POP HL
180 LD A,L
190 LD HL,MCA1
170 CALL BYTE
180 LD HL,MCA
190 CALL STRLN
200 LD DE,0
210 LD HL,MCA
220 CALL PUTSTR
280 LD HL,DATAF0
290 LD A,(07FFFH)
300 CALL BYTE
280 LD HL,DATAF1
290 LD A,(07FFEH)
300 CALL BYTE
230 LD HL,DATAF
240 CALL STRLN
250 LD DE,0100H
260 LD HL,DATAF
270 CALL PUTSTR
280 LD HL,TXT0
290 LD A,(07974H)
300 CALL BYTE
310 INC HL
320 LD HL,TXT1
330 LD A,(07973H)
340 CALL BYTE
350 LD HL,TXT2
360 LD A,(07976H)
370 CALL BYTE
380 INC HL
390 LD HL,TXT3
400 LD A,(07975H)
410 CALL BYTE
420 LD HL,TXTA
430 CALL STRLN
440 LD DE,0200H
450 LD HL,TXTA
460 CALL PUTSTR
470 LD HL,BASIC0
480 LD A,(079E2H)
490 CALL BYTE
500 INC HL
510 LD HL,BASIC1
520 LD A,(079E1H)
530 CALL BYTE
540 LD HL,BASIC2
550 LD A,(079E4H)
560 CALL BYTE
570 INC HL
580 LD HL,BASIC3
590 LD A,(079E3H)
600 CALL BYTE
610 LD HL,BASIC
620 CALL STRLN
630 LD DE,0300H
640 LD HL,BASIC
650 CALL PUTSTR
660 LD DE,(7973H) ; TEXT AREA START
670 LD HL,(7975H) ; TEXT AREA END
680 DEC DE ; 0xFF first and last
690 SBC HL,DE
700 ; Z is set if result is 0; otherwise,it is reset.
710 JP Z,NOTEXT
720 ; Count in HL
730 LD A,H
740 PUSH HL
750 LD HL,EDIT0
760 CALL BYTE
770 POP HL
780 LD A,L
790 LD HL,EDIT1
800 CALL BYTE
810 LD DE,0400H
820 LD HL,EDITOR
825 CALL STRLN
830 CALL PUTSTR
840 LD HL,(7973H) ; TEXT AREA START
850 LD BC,0
860CNT00: INC HL
870 LD A,(HL); 0xFF or line num MSB
880 CP 0FFH
890 JP Z,CNT02
900 INC HL
910 INC HL
920 LD A,(HL); Length
930CNT01: INC HL
940 DEC A
950 JP NZ,CNT01
960 INC BC
970 JP CNT00
980CNT02: LD A,B
990 PUSH BC
1000 LD HL,EDIT3
1010 CALL BYTE
1020 POP BC
1030 LD A,C
1040 LD HL,EDIT4
1050 CALL BYTE
1060 LD DE,0507H
1070 LD HL,EDIT2
1080 CALL STRLN
1090 CALL PUTSTR
1100NOTEXT:
1110 CALL WAITK
1199 RET
2000CLS: LD B,144
2010 LD DE,0
2020CLS0: LD A,32
2030 CALL RPTCHR
2040 RET
2050CLLN: LD B,24
2060 LD E,0
2070 JP CLS0
2080BYTE: PUSH AF
2090 AND 0F0H
2100 RRCA
2110 RRCA
2120 RRCA
2130 RRCA
2140 CALL NIBBLE
2150 INC HL
2160 POP AF
2170 AND 15
2180 CALL NIBBLE
2190 INC HL
2200 RET
2210NIBBLE: SUB 10
2220 JP M,ZERO9
2230 ADD A,7
2240ZERO9: ADD A,58
2250 LD (HL),A
2260 RET
2270STRLN: LD B,0
2280 PUSH HL ; preserve HL
2290STRLN0: LD A,(HL)
2300 CP 0
2310 JP Z,STRLN1
2320 INC HL
2330 INC B
2340 JP STRLN0
2350STRLN1: POP HL ; restore HL
2360 RET
3000MCA: DB 'Code: 0x0100 - 0x'
3010MCA0: DB 0,0
3020MCA1: DB 0,0,0
3030DATAF: DB 'Data: 0x'
3040DATAF0: DB 0,0
3050DATAF1: DB 0,0,' -->',0
3060TXTA: DB 'Text: 0x'
3070TXT0: DB 0,0
3080TXT1: DB 0,0
3090 DB ' - 0x'
3100TXT2: DB 0,0
3110TXT3: DB 0,0,0
3120BASIC: DB 'BASIC: 0x'
3130BASIC0: DB 0,0
3140BASIC1: DB 0,0
3150 DB ' - 0x'
3160BASIC2: DB 0,0
3170BASIC3: DB 0,0,0
3180 DB 0
3190EDITOR: DB 'Editor 0x'
3200EDIT0: DB 0,0
3210EDIT1: DB 0,0
3220 DB ' bytes',0
3230EDIT2: DB '0x'
3240EDIT3: DB 0,0
3250EDIT4: DB 0,0
3260 DB ' lines',0