1Z80-Assembler	Release 1.9	Wed May 16 20:15:34 2018	Page 1
2Source file: z1mon-1.4.asm
3Title:
4
5LOC   OBJECT CODE   LINE   STMT SOURCE CODE
6                       1      1 ;
7                       2      2 ;	OCR'ed by Larry Kraemer
8                       3      3 ;	Corrected typos and modified for z80asm by Udo Munk
9                       4      4 ;	January 2016
10                       5      5 ;
11                       6      6 ;	Use z80asm 1.8, won't assemble correct with versions before
12                       7      7 ;
130000                   8      8 STAT	EQU	0			;STATUS PORT, DEVICE A
140001                   9      9 DATA	EQU	1			;DATA PORT, DEVICE A
150002                  10     10 ACMNDP	EQU	2			;COMMAND PORT, DEV. A
160000                  11     11 ABAUDP	EQU	0			;BAUD PORT, DEVICE A
170004                  12     12 APARLP	EQU	4			;PARALLEL PORT, DEV. A
180052                  13     13 BCMNDP	EQU	52H			;COMMAND PORT, DEV. B
190054                  14     14 BPARLP	EQU	54H			;PARALLEL PORT, DEV. B
200040                  15     15 DAV	EQU	40H			;DATA-AVLAILABLE MASK
210080                  16     16 TBE	EQU	80H			;XMITTER-BUF-EMPTY MASK
22                      17     17 ;
230005                  18     18 NBRKPT	EQU	5			;ALLOW ROOM FOR
240016                  19     19 BPSTOR	EQU	NBRKPT*4+2		;BREAKPOINT STORAGE
250016                  20     20 TEMPS	EQU	BPSTOR
26000b                  21     21 BPMRK	EQU	0BH			;USED TO MARK THE SET-
27                      22     22 ;					;TING OF A BP IN BPSTOR.
280030                  23     23 RSTLC	EQU	30H			;RST LOCATION
290000                  24     24 CASE	EQU	0			;(REQUIRES UPPER-CASE)
300005                  25     25 B2F	EQU	5			;2-BYTE FLAG
310006                  26     26 PF	EQU	6			;PRIME-ABLE REG FLAG
320007                  27     27 CRF	EQU	7			;CRLF FLAG
33                      28     28 ;
34000d                  29     29 CR	EQU	0DH
35000a                  30     30 LF	EQU	0AH
36001b                  31     31 ESC	EQU	1BH
37007d                  32     32 ALT	EQU	7DH
38                      33     33 ;
39                      34     34 ;  DISPLACEMENTS FROM IX OF HI BYTE OF REG PAIRS
40                      35     35 ;
41                      36     36 ;
42ffff                  37     37 DUPC	EQU	-1			;(FFFF)
43fffd                  38     38 DUAF	EQU	-3			;(FFFD)
44fffb                  39     39 DUBC	EQU	-5			;(FFFB)
45fff9                  40     40 DUDE	EQU	-7			;(FFF9)
46fff7                  41     41 DUHL	EQU	-9			;(FFF7)
47fff5                  42     42 DUSP	EQU	-11			;(FFF5)
48fff3                  43     43 DUIX	EQU	-13			;(FFF3)
49fff1                  44     44 DUIY	EQU	-15			;(FFF1)
50ffef                  45     45 DUIN	EQU	-17			;(FFEF)        I & THE INTERRUPT FF
51ffed                  46     46 DUAF2	EQU	-19			;(FFED)
52ffeb                  47     47 DUBC2	EQU	-21			;(FFEB)
53ffe9                  48     48 DUDE2	EQU	-23			;(FFE9)
54ffe7                  49     49 DUHL2	EQU	-25			;(FFE7)
55                      50     50 ;
56001a                  51     51 LENRGS	EQU	DUPC-DUHL2+2
57                      52     52 ;
58                      53     53 ;
59                      54     54 ;
60                      55     55 ;
61                      56     56
62                      57     57 	ORG	0E000H
63                      58     58 ;
64                      59     59 ; ENTER THE MONITOR FROM RESET.
65                      60     60 ; COLD START ENTRY. INITIALIZES THE UART
66Z80-Assembler	Release 1.9	Wed May 16 20:15:34 2018	Page 2
67Source file: z1mon-1.4.asm
68Title:
69
70LOC   OBJECT CODE   LINE   STMT SOURCE CODE
71                      61     61 ; AND ZEROES THE BREAKPOINT STACK POINTER.
72                      62     62 ; ALTERS THE A-REGISTER. SAVES ALL OTHER
73                      63     63 ; REGISTERS EXCEPT THE PROGRAM COUNTER,
74                      64     64 ; BUT DOES NOT DISPLAY THEM.
75                      65     65
76e000  3e 01           66     66 CSTART: LD  	A,1
77e002  d3 40           67     67 	OUT 	(40H),A			;SELECT BANK B
78e004  f5              68     68 	PUSH	AF			;SIMULATE UPC
79e005  f5              69     69 	PUSH	AF			;USER-F-REGISTER
80e006  18 42           70     70 	JR	COMMON
81                      71     71 ; WARM START ENTRY.  INITIALIZES THE BREAKPOINT
82                      72     72 ; STORAGE POINTER.  SAVES ALL REGISTERS EXCEPT
83                      73     73 ; THE PROGRAM COUNTER, BUT DOES NOT DISPLAY THEM.
84                      74     74
85e008  f5              75     75 WSTART:	PUSH	AF			;SIMULATE UPC
86e009  f5              76     76 	PUSH	AF			;UAF
87e00a  3e 80           77     77 	LD	A,80H			;FLAG:
88e00c  18 3c           78     78 	JR	COMMON			;WARM-START ENTRY
89                      79     79 ;
90                      80     80 ; CHECK INPUT & RETURN WITH DATA IF READY.
91                      81     81 ;
92e00e  db 00           82     82 CHKIN:	IN	A,(STAT)
93e010  e6 40           83     83 	AND	DAV
94e012  c8              84     84 	RET	Z
95e013  db 01           85     85 	IN	A,(DATA)
96e015  c9              86     86 	RET
97                      87     87 ;
98                      88     88 ;
99                      89     89 ; GET CHARACTER FROM INPUT.
100                      90     90 ;
101e016  cd 0e e0        91     91 GBYTE:	CALL	CHKIN
102e019  28 fb           92     92 	JR	Z,GBYTE
103e01b  e6 7f           93     93 	AND	7FH
104e01d  c9              94     94 	RET
105                      95     95 ;
106                      96     96 ;
107                      97     97 ; PRINT CHARACTER.
108                      98     98 ;
109e01e  f5              99     99 PBYTE:	PUSH	AF
110e01f  db 00          100    100 PBY1:	IN	A,(STAT)
111e021  e6 80          101    101 	AND	TBE
112e023  28 fa          102    102 	JR	Z,PBY1
113e025  f1             103    103 	POP	AF
114e026  d3 01          104    104 	OUT	(DATA),A
115e028  c9             105    105 	RET
116                     106    106 ;
117                     107    107 ;
118                     108    108 ; SELECT DEVICE A & INITIALIZE ITS BAUD RATE.
119                     109    109 ; ENTER WITH A=1.
120                     110    110 ;
121e029  d3 54          111    111 INIT:	OUT	(BPARLP),A		;SELECT DEVICE A
122e02b  d3 52          112    112 	OUT	(BCMNDP),A		;RESET DEVICE B
123                     113    113 ;					;[CONTINUE BELOW]
124                     114    114 ;
125                     115    115 ;
126                     116    116 ; INITIALIZE BAUD RATE OF THE CURRENT DEVICE.
127                     117    117 ;
128                     118    118 ; PUSH CARRIAGE-RETURN TO SELECT THE PROPER BAUD
129                     119    119 ; RATE FOR THE CURRENT TERMINAL. (THE MAXIMUM
130                     120    120 ; NUMBER OF CARRIAGE-RETURNS REQUIRED IS FOUR.)
131Z80-Assembler	Release 1.9	Wed May 16 20:15:34 2018	Page 3
132Source file: z1mon-1.4.asm
133Title:
134
135LOC   OBJECT CODE   LINE   STMT SOURCE CODE
136                     121    121 ;
137                     122    122 ; WITH THE CROMEMCO TUART ANY OF THE FOLLOWING
138                     123    123 ; BAUD RATES CAN BE SELECTED:
139                     124    124 ; 19200, 9600, 4800, 2400, 1200, 300, 150, 110.
140                     125    125 ;
141                     126    126 ; WITH THE 3P+S:	2400, 300, 110.
142                     127    127 ;
143                     128    128 ; TWO CARRIAGE-RETURNS ARE REQUIRED FOR
144                     129    129 ; ANY UART WITH A FIXED BAUD RATE.
145                     130    130 ;
146e02d  21 a3 e3       131    131 INITBAUD: LD	HL,BAUDRS
147e030  0e 00          132    132 	LD	C,ABAUDP
148e032  3e 11          133    133 	LD	A,11H			;OCTUPLE THE CLOCK
149e034  d3 02          134    134 IT1:	OUT	(ACMNDP),A		;& RESET CURRENT DEVICE
150e036  ed a3          135    135 	OUTI
151e038  cd 16 e0       136    136 	CALL	GBYTE
152e03b  cd 16 e0       137    137 	CALL	GBYTE
153e03e  fe 0d          138    138 	CP	CR
154e040  3e 01          139    139 	LD	A,1			;SLOW THE CLOCK
155e042  20 f0          140    140 	JR	NZ,IT1
156e044  c9             141    141 	RET
157                     142    142 ;
158                     143    143 ;
159                     144    144 ; BREAKPOINT ENTRY. INITIALIZES	NOTHING.
160                     145    145 ; SAVES	ALL REGISTERS AND DISPLAYS THEM.
161                     146    146 ;
162e045  e3             147    147 SVMS:	EX	(SP),HL			;ADJUST BRKPT
163e046  2b             148    148 	DEC	HL			;RET ADDR
164e047  e3             149    149 	EX	(SP),HL
165e048  f5             150    150 	PUSH	AF			;UAF
166e049  97             151    151 	SUB	A			;FLAG:
167                     152    152 					;BREAKPOINT ENTRY;
168                     153    153 ;
169                     154    154 ;
170e04a  c5             155    155 COMMON:	PUSH	BC			;UBC
171e04b  47             156    156 	LD	B,A			;ENTRY FLAG
172e04c  d5             157    157 	PUSH	DE			;UDE
173e04d  e5             158    158 	PUSH	HL			;UHL
174                     159    159 ;
175                     160    160 ; PLACE SYS STACK AT HIGHEST PAGE OF
176                     161    161 ; AVAILABLE RAM.
177                     162    162 ; ALLOW	ROOM FOR TEMP STORAGE.
178                     163    163 ;
179e04e  21 e9 00       164    164 	LD	HL,00FFH-TEMPS
180e051  25             165    165 COM1:	DEC	H
181e052  7e             166    166 	LD	A,(HL)
182e053  34             167    167 	INC	(HL)
183e054  be             168    168 	CP	(HL)			;DID IT CHANGE?
184e055  28 fa          169    169 	JR	Z,COM1
185e057  35             170    170 	DEC	(HL)			;YES. RESTORE IT.
186                     171    171 ;
187e058  78             172    172 	LD	A,B			;ENTRY FLAG
188e059  eb             173    173 	EX	DE,HL
189e05a  21 09 00       174    174 	LD	HL,9
190e05d  39             175    175 	ADD	HL,SP			; -> UPC, HI BYTE
191e05e  01 0a 00       176    176 	LD	BC,10
192e061  ed b8          177    177 	LDDR
193                     178    178 ;
194e063  13             179    179 	INC	DE			;-> UHL,LO ON SYS STK
195e064  eb             180    180 	EX	DE,HL
196Z80-Assembler	Release 1.9	Wed May 16 20:15:34 2018	Page 4
197Source file: z1mon-1.4.asm
198Title:
199
200LOC   OBJECT CODE   LINE   STMT SOURCE CODE
201e065  f9             181    181 	LD	SP,HL			;CURRENT SYS SP
202e066  eb             182    182 	EX	DE,HL
203e067  01 0b 00       183    183 	LD	BC,DUPC-DUHL+3
204e06a  09             184    184 	ADD	HL,BC			;HL = USER SP
205e06b  e5             185    185 	PUSH	HL			;USP
206e06c  dd e5          186    186 	PUSH	IX			;UIX
207e06e  fd e5          187    187 	PUSH	IY			;UIY
208e070  eb             188    188 	EX	DE,HL
209e071  09             189    189 	ADD	HL,BC
210e072  4d             190    190 	LD	C,L			;SAVE
211e073  2b             191    191 	DEC	HL
212e074  e5             192    192 	PUSH	HL
213e075  dd e1          193    193 	POP	IX
214e077  fe 01          194    194 	CP	1			;ENTRY?
215e079  38 07          195    195 	JR	C,COM3			;SKIP IF VIA BP.
216e07b  71             196    196 	LD	(HL),C			;BP PNTR, LO BYTE
217e07c  23             197    197 	INC	HL
218e07d  36 00          198    198 	LD	(HL),0			;BP-STACK ENDMARK
219                     199    199 ; INITIALIZE THE TUART IF ENTRY WAS VIA RESET.
220                     200    200 ; (A CONTAINS 1.)
221                     201    201 ;
222e07f  cc 29 e0       202    202 	CALL	Z,INIT
223                     203    203 ;
224e082  ed 57          204    204 COM3:	LD	A,I
225e084  67             205    205 	LD	H,A
226e085  2e 00          206    206 	LD	L,0
227e087  e2 8b e0       207    207 	JP	PO,COM4
228e08a  2c             208    208 	INC	L
229e08b  e5             209    209 COM4:	PUSH	HL			;UIN
230e08c  08             210    210 	EX	AF,AF'
231e08d  f5             211    211 	PUSH	AF			;UAF'
232e08e  08             212    212 	EX	AF,AF'
233e08f  d9             213    213 	EXX
234e090  c5             214    214 	PUSH	BC			;UBC'
235e091  d5             215    215 	PUSH	DE			;UDE'
236e092  e5             216    216 	PUSH	HL			;UHL'
237e093  d9             217    217 	EXX
238                     218    218 ;
239                     219    219 ;IF CY IS SET, ENTRY WAS VIA A BREAKPOINT
240e094  21 f0 e3       220    220 	LD	HL,HEAD
241e097  d4 0f e2       221    221 	CALL	NC,PMSG
242e09a  01 86 50       222    222 	LD	BC,(('P'+CASE) < 8)+86H ;IF BP ENTRY,
243e09d  dc 23 e3       223    223 	CALL	C,SUBR3			;DISPLAY THE PC.
244                     224    224 ;
245                     225    225 ;
246                     226    226 ;CLEAR ALL BREAKPOINTS
247                     227    227 ;
248e0a0  dd e5          228    228 CLBP:	PUSH	IX
249e0a2  e1             229    229 	POP	HL			;POINTS TO BPSP,LO
250e0a3  6e             230    230 	LD	L,(HL)			;BPSP NOW IN HL
251                     231    231 ;
252e0a4  7e             232    232 CL1:	LD	A,(HL)			;BP STK EMPTY?
253e0a5  fe 0b          233    233 	CP	BPMRK			;IF BPMRK, BP IS SET
254e0a7  20 0a          234    234 	JR	NZ,CL2
255                     235    235 ;
256e0a9  34             236    236 	INC	(HL)			;BP-ERASED MARK
257e0aa  2b             237    237 	DEC	HL
258e0ab  56             238    238 	LD	D,(HL)
259e0ac  2b             239    239 	DEC	HL
260e0ad  5e             240    240 	LD	E,(HL)
261Z80-Assembler	Release 1.9	Wed May 16 20:15:34 2018	Page 5
262Source file: z1mon-1.4.asm
263Title:
264
265LOC   OBJECT CODE   LINE   STMT SOURCE CODE
266e0ae  2b             241    241 	DEC	HL
267e0af  ed a8          242    242 	LDD				;RESTORE MEM CONTENTS
268e0b1  18 f1          243    243 	JR	CL1
269                     244    244 ;
270e0b3  7d             245    245 CL2:	LD	A,L
271e0b4  2b             246    246 	DEC	HL
272e0b5  77             247    247 	LD	(HL),A			;ADJUST BPSP
273                     248    248 ;
274e0b6  11 e6 ff       249    249 	LD	DE,-LENRGS		;FOR THE BENEFIT
275e0b9  19             250    250 	ADD	HL,DE			;OF ERROR & ESCPE
276e0ba  f9             251    251 	LD	SP,HL			;RE-INITIALIZE SP
277                     252    252 ;
278                     253    253 ;
279                     254    254 ;GET 1-BYTE COMMAND.
280                     255    255 ;RETURNS VALUE IN HL & JUMPS TO THAT ADDR.
281                     256    256 ;
282e0bb  cd 4d e1       257    257 	CALL	CRLF
283e0be  11 be e0       258    258 CMND:	LD	DE,CMND			;SET-UP RETURN
284e0c1  d5             259    259 	PUSH	DE
285e0c2  21 ae e3       260    260 CMND1:	LD	HL,PRMPT		;RE-ENTRY POINT
286e0c5  cd 0f e2       261    261 	CALL	PMSG			;FOR RECURSION
287                     262    262 ;HL NOW PNTS TO THE COMMAND TABLE.
288                     263    263 ;
289                     264    264 ;GET THE COMMAND.
290                     265    265 ;DE GETS THE FIRST ALPHA CHAR LESS 'D'.
291                     266    266
292e0c8  cd dd e1       267    267 	CALL	SKSG0			;GET NON-SPACE
293e0cb  c8             268    268 	RET	Z			;IF CR, IGNORE.
294e0cc  d6 44          269    269 	SUB	'D'+CASE		; < 'D'?
295e0ce  38 15          270    270 	JR	C,ERROR
296e0d0  fe 14          271    271 	CP	'W'-'D'+1		; > 'W'?
297e0d2  30 11          272    272 	JR	NC,ERROR
298e0d4  5f             273    273 	LD	E,A
299e0d5  16 00          274    274 	LD	D,0
300                     275    275 ;
301e0d7  4a             276    276 	LD	C,D			;INITIALIZE FOR SUBR
302e0d8  eb             277    277 	EX	DE,HL
303e0d9  29             278    278 	ADD	HL,HL			;TIMES 2
304e0da  19             279    279 	ADD	HL,DE			; + TBL ADDR
305e0db  5e             280    280 	LD	E,(HL)
306e0dc  23             281    281 	INC	HL
307e0dd  56             282    282 	LD	D,(HL)
308e0de  eb             283    283 	EX	DE,HL
309e0df  cd dd e1       284    284 	CALL	SKSG0			;NEXT CMND GHAR
310e0e2  fe 4d          285    285 	CP	'M'+CASE		; (USED IN SUBST & DISPL)
311e0e4  e9             286    286 	JP	(HL)
312                     287    287 ;
313                     288    288 ;
314                     289    289 ; ERROR & ESCAPE. RETURNS TO CMND WITH SP
315                     290    290 ; POINTING TO SAVED-REG AREA (UHL').
316                     291    291
317e0e5  3e 3f          292    292 ERROR:	LD	A,'?'
318e0e7  cd 12 e1       293    293 	CALL	PCHR
319e0ea  18 b4          294    294 ESCPE:	JR	CLBP			;CLEAR ANY BRKPTS
320                     295    295 ;
321                     296    296 ;
322                     297    297 ; PROGRAM PROMS. ABORTS IF DESTINATION
323                     298    298 ; IS NOT ON A 1K (400H) BOUNDARY, OR IF SWATH
324                     299    299 ; WIDTH IS NOT A MULTIPLE OF 1K.
325                     300    300 ;
326Z80-Assembler	Release 1.9	Wed May 16 20:15:34 2018	Page 6
327Source file: z1mon-1.4.asm
328Title:
329
330LOC   OBJECT CODE   LINE   STMT SOURCE CODE
331                     301    301 ;
332e0ec  cd a5 e1       302    302 PROG:	CALL	L3NCR
333e0ef  78             303    303 	LD	A,B			;ARE INCREMENT &
334e0f0  b2             304    304 	OR	D			;DESTINATION BOTH
335e0f1  e6 03          305    305 	AND	3			;MULTIPLES OF
336e0f3  b1             306    306 	OR	C			;1024?
337e0f4  b3             307    307 	OR	E
338e0f5  20 ee          308    308 ERRV1:	JR	NZ,ERROR		;ERROR VECTOR
339                     309    309 ;
340e0f7  e5             310    310 	PUSH	HL			;SOURCE
341e0f8  21 40 01       311    311 	LD	HL,320			;# OF ITERATIONS
342e0fb  e3             312    312 PR1:	EX	(SP),HL
343e0fc  cd 1a e2       313    313 	CALL	MVE			;MOVE IT
344e0ff  e3             314    314 	EX	(SP),HL
345e100  2b             315    315 	DEC	HL			;ITERATION CT
346e101  7c             316    316 	LD	A,H
347e102  b5             317    317 	OR	L
348e103  20 f6          318    318 	JR	NZ,PR1
349e105  e1             319    319 	POP	HL
350e106  18 61          320    320 	JR	VRFY			;VERIFY IT
351                     321    321 ;
352                     322    322 ;
353                     323    323 ;PRINT THE 2 BYTES IN (HL) & (HL-1)
354                     324    324 ;DECREMENTS HL BY 2. ALTERS A.
355                     325    325 ;PRESERVES OTHER REGS.
356                     326    326 ;
357e108  cd ec e1       327    327 P2NMS:	CALL    PNM
358e10b  2b             328    328 	DEC     HL
359e10c  cd ec e1       329    329 	CALL    PNM
360e10f  2b             330    330 	DEC     HL	  		; (CONTINUE BELOW)
361                     331    331 ;
362                     332    332 ;
363                     333    333 ;PRINT	SPACE. ALTERS A.
364                     334    334 ;
365e110  3e 20          335    335 SPACE:	LD A,20H	  		; (CONTINUE BELOW)
366                     336    336 ;
367                     337    337 ;
368                     338    338 ;PRINT THE CHARACTER IN THE A-REGISTER.
369                     339    339 ;(CHKS INPUT FOR ESC.)	PRESERVES ALL REGS.
370                     340    340 ;
371e112  f5             341    341 PCHR:	PUSH	AF	         	;SAVE THE CHAR
372e113  e6 7f          342    342 PC1:	AND	7FH
373e115  fe 1b          343    343 	CP	ESC
374e117  28 d1          344    344 	JR	Z,ESCPE
375e119  fe 7d          345    345 	CP	ALT			;ALT MODE?
376e11b  28 cd          346    346 	JR	Z,ESCPE
377e11d  cd 0e e0       347    347 	CALL	CHKIN
378e120  20 f1          348    348 	JR	NZ,PC1
379                     349    349 ;
380e122  f1             350    350 PC2:	POP	AF
381e123  e5             351    351 	PUSH	HL
382e124  f5             352    352 	PUSH	AF
383e125  e6 7f          353    353 	AND	7FH
384e127  cd 1e e0       354    354 	CALL	PBYTE
385e12a  21 ab e3       355    355 	LD	HL,LFNN
386e12d  fe 0d          356    356 	CP	CR
387e12f  cc 0f e2       357    357 	CALL	Z,PMSG
388e132  fe 3c          358    358 	CP	'<'			;RECURSIVE CALL
389e134  20 0b          359    359 	JR	NZ,PC3			;ON CMND?
390e136  f1             360    360 	POP	AF
391Z80-Assembler	Release 1.9	Wed May 16 20:15:34 2018	Page 7
392Source file: z1mon-1.4.asm
393Title:
394
395LOC   OBJECT CODE   LINE   STMT SOURCE CODE
396e137  3e 0d          361    361 	LD	A,CR			;YES. CONVERT
397e139  f5             362    362 	PUSH	AF			;'<' TO A CR.
398e13a  d5             363    363 	PUSH	DE
399e13b  c5             364    364 	PUSH	BC
400e13c  cd c2 e0       365    365 	CALL	CMND1
401e13f  c1             366    366 	POP	BC
402e140  d1             367    367 	POP	DE
403e141  f1             368    368 PC3:	POP	AF
404e142  e1             369    369 	POP	HL
405e143  c9             370    370 	RET
406                     371    371 ;
407                     372    372 ;
408                     373    373 ; GET CHARACTER. RETURNS IT IN A.
409                     374    374 ; ALTERS F.
410                     375    375 ;
411e144  cd 16 e0       376    376 GCHR:	CALL	GBYTE
412e147  cd 12 e1       377    377 	CALL	PCHR
413e14a  28 f8          378    378 	JR	Z,GCHR			;IF NULL DON'T RETURN
414e14c  c9             379    379 	RET
415                     380    380 ;
416                     381    381 ;
417                     382    382 ; CRLF.	ALTERS A ONLY.
418                     383    383 ;
419e14d  3e 0d          384    384 CRLF:	LD	A,CR
420e14f  18 c1          385    385 	JR	PCHR
421                     386    386 ;
422                     387    387 ;
423                     388    388 ; LOADS	HL WITH	SOURCE ADDR, BC	& DE
424                     389    389 ; WITH THE INCREMENT. ENDS WITH A CRLF.
425                     390    390 ;
426e151  97             391    391 L2NCR0:	SUB	A
427                     392    392
428e152  cd 8b e1       393    393 L2NCR:	CALL	LD2N
429                     394    394 ;
430                     395    395 ; SKIP INITIAL SPACES.
431                     396    396 ; IF DELIMITER NOT A CR, ERROR
432                     397    397 ;
433e155  cd de e1       398    398 SKSGCR:	CALL	SKSG			;WAIT FOR NON-SPACE
434e158  20 9b          399    399 	JR	NZ,ERRV1		;IF NOT CR, ERROR
435e15a  eb             400    400 	EX	DE,HL
436e15b  c9             401    401 	RET
437                     402    402 ;
438                     403    403 ;
439                     404    404 ; PRINT THE NUMBER IN HL, FOLLOWED BY A COLON.
440                     405    405 ; PRESERVES ALL REGISTERS EXCEPT A.
441                     406    406 ;
442e15c  cd 4d e1       407    407 PCADDR:	CALL	CRLF
443                     408    408 ;
444e15f  cd f2 e1       409    409 PADDR:	CALL	PNHL
445e162  3e 3a          410    410 	LD	A,':'
446e164  18 ac          411    411 	JR	PCHR
447                     412    412 ;
448                     413    413 ;
449                     414    414 ; COMMAND
450                     415    415 ;
451e166  cd a5 e1       416    416 VERIF:	CALL	L3NCR			;GET 3	OPERANDS
452                     417    417 ;
453                     418    418 ; COMPARES TWO AREAS OF MEMORY. ENTER WITH
454                     419    419 ; SOURCE IN HL, DESTINATION IN DE & COUNT
455                     420    420 ; IN BC. ALTERS ALL REGISTERS.
456Z80-Assembler	Release 1.9	Wed May 16 20:15:34 2018	Page 8
457Source file: z1mon-1.4.asm
458Title:
459
460LOC   OBJECT CODE   LINE   STMT SOURCE CODE
461                     421    421 ;
462e169  1a             422    422 VRFY:	LD	A,(DE)
463e16a  ed a1          423    423 	CPI				;COMPARE TO SOURCE
464e16c  2b             424    424 	DEC	HL
465e16d  c4 f2 e1       425    425 	CALL	NZ,PNHL			;PRINT SOURCE ADDR
466e170  c4 e9 e1       426    426 	CALL	NZ,PSNM	  		; & CONTENTS
467e173  eb             427    427 	EX	DE,HL
468e174  c4 e9 e1       428    428 	CALL	NZ,PSNM	  		; & DEBT CONTENTS
469e177  c4 ef e1       429    429 	CALL	NZ,PSNHL	  	; & DEBT ADDR
470e17a  c4 4d e1       430    430 	CALL 	NZ,CRLF
471e17d  eb             431    431 	EX 	DE,HL
472e17e  23             432    432 	INC 	HL
473e17f  13             433    433 	INC 	DE
474e180  e0             434    434 	RET 	PO 			;IF BC=0, DONE.
475e181  18 e6          435    435 	JR VRFY
476                     436    436 ;
477                     437    437 ;
478                     438    438 ; COMMAND
479                     439    439 ;
480e183  cd a5 e1       440    440 MOVE:	CALL	L3NCR			;OPERANDS
481e186  cd 1a e2       441    441 	CALL	MVE			;MOVE IT
482e189  18 de          442    442 	JR	VRFY
483                     443    443 ;
484                     444    444 ;
485                     445    445 ; LOAD TWO NUMBERS. LOADS DE WITH THE BEGINNING
486                     446    446 ; ADDR, N1. LOADS BC & HL WITH THE INCREMENT
487                     447    447 ; N2-Ni+1 (OR WITH N2 IF THE OPR IS 'S').
488                     448    448 ; RETURNS WITH LAST DELIMITER IN A.
489                     449    449 ;
490e18b  cd ae e1       450    450 LD2N: 	CALL	GNHL			;N1 TO HL, DELIM TO A
491e18e  eb             451    451 	EX  	DE,HL			;SAVE N1 IN DE
492e18f  cd de e1       452    452 	CALL	SKSG			;GET NEXT NON-SPACE
493e192  fe 53          453    453 	CP  	'S'+CASE		;SWATH?
494e194  20 05          454    454 	JR  	NZ,L2N1
495                     455    455 ;
496e196  cd ad e1       456    456 	CALL	GNHL0			;YES. INCREMENT TO HL.
497e199  18 07          457    457 	JR	L2N2
498                     458    458
499e19b  cd ae e1       459    459 L2N1:	CALL	GNHL	        	;INCREMENT
500e19e  b7             460    460 	OR  	A  	         	;CLEAR CY
501e19f  ed 52          461    461 	SBC 	HL,DE 	        	;N2-N1
502e1a1  23             462    462 	INC 	HL 	         	;INCLUDE END POINT
503e1a2  44             463    463 L2N2:	LD	B,H
504e1a3  4d             464    464 	LD  	C,L  	         	;BC GETS THE INCRM
505e1a4  c9             465    465 	RET
506                     466    466 ;
507                     467    467 ;
508                     468    468 ; LOAD 3 OPERANDS. HL GETS THE SOURCE, BC
509                     469    469 ; THE INCREMENT, AND DE	THE 3RD OPERAND.
510                     470    470 ;
511e1a5  cd 8b e1       471    471 L3NCR: CALL	LD2N
512                     472    472 ; (CONTINUE BELOW)
513                     473    473 ;
514                     474    474 ;
515                     475    475 ; ENTER WITH SPACE OR THE FIRST DIGIT
516                     476    476 ; OF A NUMBER IN A. LOADS HL WITH
517                     477    477 ; WITH A NEW NUMBER & THEN EXCHANGES
518                     478    478 ; DE & HL. FINISHES WITH A CRLF.
519                     479    479 ;
520e1a8  cd ae e1       480    480 L1NCR: CALL	GNHL	        	 ;SKIP SPACES, LOAD HL
521Z80-Assembler	Release 1.9	Wed May 16 20:15:34 2018	Page 9
522Source file: z1mon-1.4.asm
523Title:
524
525LOC   OBJECT CODE   LINE   STMT SOURCE CODE
526e1ab  18 a8          481    481 	JR  	SKSGCR  	         ;WAIT FOR A CR
527                     482    482 ;
528                     483    483 ;
529                     484    484 ; CLEARS HL. IF	ENTERED	WITH HEX CHAR IN A,
530                     485    485 ; SHIFTS IT INTO HL. O/W, IGNORES LEADING
531                     486    486 ; SPACES. FIRST	CHAR MUST BE HEX. CONTINUES
532                     487    487 ; SHIFT UNTIL A	NON-HEX	CHAR RECEIVED & THEN
533                     488    488 ; RETURNS WITH THE LATTER IN A.
534                     489    489 ; PRESERVES B,C,D,E.
535                     490    490 ;
536                     491    491 ;
537e1ad  97             492    492 GNHL0: SUB	A
538                     493    493 ;
539e1ae  c5             494    494 GNHL: PUSH	BC	         	;SAVE
540e1af  21 00 00       495    495 	LD  	HL,0  	         	;CLR BUFFER
541                     496    496 ; STRIP LEADING	SPACES & GET CHAR
542e1b2  cd de e1       497    497 	CALL	SKSG
543                     498    498 ; FIRST CHAR MUST BE HEX
544e1b5  cd c6 e1       499    499 	CALL	HEXSH	         	;IF HEX, SHIFT INTO HL
545e1b8  da e5 e0       500    500 	JP  	C,ERROR  	        ;O/W, ERROR
546e1bb  cd 44 e1       501    501 GN1: CALL	GCHR
547e1be  cd c6 e1       502    502 	CALL	HEXSH			;IF HEX SHIFT INTO HL
548e1c1  78             503    503 	LD  	A,B  			;RESTORE CHAR
549e1c2  30 f7          504    504 	JR  	NC,GN1			;IF HEX, CONTINUE
550e1c4  c1             505    505 	POP 	BC			;IF NON-HEX, DONE
551e1c5  c9             506    506 	RET
552                     507    507 ;
553                     508    508 ;
554                     509    509 ; IF A CONTAINS	HEX CHAR, SHIFTS BINARY EQUIVALENT
555                     510    510 ; INTO HL. IF NOT HEX, RET WITH CY SET. SAVES
556                     511    511 ; ORIGINAL CHAR	IN B
557                     512    512 ;
558e1c6  47             513    513 HEXSH:	LD	B,A
559e1c7  d6 30          514    514 	SUB	'0'			; < '0'?
560e1c9  d8             515    515 	RET	C
561e1ca  c6 e9          516    516 	ADD	A,'0'-('G'+CASE)
562e1cc  d8             517    517 	RET	C
563e1cd  d6 fa          518    518 	SUB	'A'-'G'
564e1cf  30 03          519    519 	JR	NC,HX1 			;OK IF >= 'A'
565e1d1  c6 07          520    520 	ADD	A,('A'+CASE)-('9'+1)
566e1d3  d8             521    521 	RET	C
567e1d4  c6 0a          522    522 HX1:	ADD	A,'9'+1-'0'
568                     523    523 ; THE A-REG NOW CONTAINS THE HEX DIGIT IN BINARY.
569                     524    524 ; (THE HIGH-ORDER NIBBLE OF A IS 0.)
570e1d6  29             525    525 HXSH4:	ADD	HL,HL 			;SHIFT 4 BITS INTO HL
571e1d7  29             526    526 	ADD	HL,HL
572e1d8  29             527    527 	ADD	HL,HL
573e1d9  29             528    528 	ADD	HL,HL
574e1da  b5             529    529 	OR	L
575e1db  6f             530    530 	LD	L,A
576e1dc  c9             531    531 	RET
577                     532    532 ;
578                     533    533 ;
579                     534    534 ; RETURNS WITH A NON-SPACE IN THE A-REG.
580                     535    535 ; IF ENTERED WITH A-REG CONTAINING A NULL
581                     536    536 ; OR A SPACE, GETS NEW CHARS UNTIL FIRST
582                     537    537 ; NON-SPACE OCCURS. ALTERS AF.
583                     538    538 ;
584e1dd  97             539    539 SKSG0:	SUB	A
585                     540    540 ;
586Z80-Assembler	Release 1.9	Wed May 16 20:15:34 2018	Page 10
587Source file: z1mon-1.4.asm
588Title:
589
590LOC   OBJECT CODE   LINE   STMT SOURCE CODE
591e1de  b7             541    541 SKSG:	OR	A			;DOES A CONTAIN NULL?
592e1df  cc 44 e1       542    542 SK1:	CALL	Z,GCHR
593e1e2  fe 20          543    543 	CP	20H			;SPACE?
594e1e4  28 f9          544    544 	JR	Z,SK1
595e1e6  fe 0d          545    545 	CP	CR
596e1e8  c9             546    546 	RET
597                     547    547 ;
598                     548    548 ;
599                     549    549 ; PRINT SPACE FOLLOWED BY THE NUMBER POINTED
600                     550    550 ; TO BY HL. ALTERS A ONLY.
601                     551    551 ;
602e1e9  cd 10 e1       552    552 PSNM:	CALL	SPACE
603                     553    553 ;	(CONTINUE BELOW)
604                     554    554
605                     555    555 ; PRINTS THE NUMBER POINTED TO BY HL.
606                     556    556 ; PRESERVES ALL REGISTERS BUT A.
607                     557    557
608e1ec  7e             558    558 PNM:	LD	A,(HL)
609e1ed  18 08          559    559 	JR	P2HEX
610                     560    560 ;
611                     561    561 ;
612                     562    562 ; PRINT THE NUMBER IN HL.
613                     563    563 ; PRESERVES ALL BUT A.
614                     564    564 ;
615e1ef  cd 10 e1       565    565 PSNHL:	CALL	SPACE
616                     566    566 ;
617e1f2  7c             567    567 PNHL:	LD	A,H
618e1f3  cd f7 e1       568    568 	CALL	P2HEX
619e1f6  7d             569    569 	LD	A,L
620                     570    570 ;					; (CONTINUE BELOW)
621                     571    571 ;
622                     572    572 ;PRINT THE NUMBER IN THE A-REGISTER.
623                     573    573 ;PRESERVES ALL REGISTERS.
624                     574    574 ;
625e1f7  cd fb e1       575    575 P2HEX:	CALL	P1HEX
626e1fa  1f             576    576 	RRA
627e1fb  1f             577    577 P1HEX:	RRA
628e1fc  1f             578    578 	RRA
629e1fd  1f             579    579 	RRA
630e1fe  1f             580    580 	RRA
631e1ff  f5             581    581 	PUSH	AF
632e200  e6 0f          582    582 	AND	0FH			;MASK
633e202  fe 0a          583    583 	CP	10			; < 9?
634e204  38 02          584    584 	JR	C,PH1
635e206  c6 07          585    585 	ADD	A,7			;A THRU F
636e208  c6 30          586    586 PH1:	ADD	A,30H			;ASCII BIAS
637e20a  cd 12 e1       587    587 	CALL	PCHR			;PRINT IT
638e20d  f1             588    588 	POP	AF
639e20e  c9             589    589 	RET
640                     590    590 ;
641                     591    591 ;
642                     592    592 ;PRINT	MESSAGE. ENTER WITH ADDR OF MSG
643                     593    593 ;IN HL. THE MESSAGE IS TERMINATED
644                     594    594 ;AFTER PRINTING A CHARACTER WHOSE
645                     595    595 ;PARITY BIT WAS SET.
646                     596    596 ;PRESERVES FLAGS, INCREMENTS HL.
647                     597    597 ;
648e20f  f5             598    598 PMSG:	PUSH	AF			;SAVE
649e210  7e             599    599 PS1:	LD	A,(HL)
650e211  23             600    600 	INC	HL
651Z80-Assembler	Release 1.9	Wed May 16 20:15:34 2018	Page 11
652Source file: z1mon-1.4.asm
653Title:
654
655LOC   OBJECT CODE   LINE   STMT SOURCE CODE
656e212  cd 12 e1       601    601 	CALL	PCHR
657e215  17             602    602 	RLA				;LAST CHARACTER?
658e216  30 f8          603    603 	JR	NC,PS1			;IF NOT, LOOP
659e218  f1             604    604 	POP	AF
660e219  c9             605    605 	RET
661                     606    606 ;
662                     607    607 ;
663                     608    608 ;MOVE FROM ONE LOCATION TO ANOTHER. ENTER
664                     609    609 ;WITH SOURCE ADDR IN HL, DEST IN DE, BYTE
665                     610    610 ;COUNT IN BC.  PRESERVES ALL REGISTERS.
666                     611    611 ;
667e21a  e5             612    612 MVE:	PUSH	HL			;SOURCE
668e21b  d5             613    613 	PUSH	DE			;DEST
669e21c  c5             614    614 	PUSH	BC			;BYTE COUNT
670e21d  ed b0          615    615 	LDIR
671e21f  c1             616    616 	POP	BC
672e220  d1             617    617 	POP	DE
673e221  e1             618    618 	POP	HL
674e222  c9             619    619 	RET
675                     620    620 ;
676                     621    621 ;
677                     622    622 ; COMMAND
678                     623    623 ;
679                     624    624 ; GO <CR> EXECUTION BEGINS AT USER PC.
680                     625    625 ;
681                     626    626 ; COMMAND
682                     627    627 ;
683                     628    628 ; GO (ADDR1>/(ADDR2> ... <ADDRN>
684                     629    629 ; EXECUTION BEGINS AT ADDR1 WITH BREAKPOINTS SET
685                     630    630 ; AT ADDR2,... ,ADDRN.
686                     631    631
687                     632    632 GO:
688                     633    633 ; B GETS NBRKPT+1 (MAX. NUMBER OF BP + 1)
689                     634    634 ; C, THE BREAKPOINT FLAG, GETS 0 (NO HP SET)
690e223  01 00 06       635    635 	LD   	BC,((NBRKPT+1) < 8)+0
691e226  cd de e1       636    636 GO1:	CALL 	SKSG 	 		;WAIT FOR NON-SPACE
692e229  28 3a          637    637 	JR   	Z,RETN   	 	;RETN IF CR
693e22b  fe 2f          638    638 	CP	'/'	 		;BP?
694e22d  20 0d          639    639 	JR   	NZ,GO3
695e22f  4f             640    640 	LD   	C,A   	 		;SET BRKPT FLAG (2FH)
696e230  21 30 00       641    641 	LD   	HL,RSTLC   	 	;TRANSFER
697e233  36 c3          642    642 	LD   	(HL),0C3H   	 	;'JP SVMS' TO
698e235  21 45 e0       643    643 	LD   	HL,SVMS
699e238  22 31 00       644    644 	LD   	(RSTLC+1),HL   	 	;RST LOC
700e23b  97             645    645 	SUB  	A
701e23c  cd ae e1       646    646 GO3:	CALL 	GNHL 	 		;GET ADDR
702e23f  cb 69          647    647 	BIT  	5,C  	 		; FLAG SET?
703e241  eb             648    648 	EX   	DE,HL
704e242  dd e5          649    649 	PUSH 	IX
705e244  e1             650    650 	POP  	HL
706e245  28 18          651    651 	JR   	Z,GO5   	 	;JUMP IF NO BP
707                     652    652 ;
708e247  05             653    653 	DEC  	B  	 		;IF TOO MANY BP,
709e248  ca e5 e0       654    654 	JP   	Z,ERROR   	 	;ERROR.
710e24b  6e             655    655 	LD   	L,(HL)   	 	;HL = BPSP
711                     656    656 ;
712e24c  23             657    657 	INC  	HL  	 		;BUMP BPSP
713e24d  eb             658    658 	EX   	DE,HL   	 	;DE = BPSP, HL= BP ADDR
714e24e  ed a0          659    659 	LDI
715e250  2b             660    660 	DEC  	HL
716Z80-Assembler	Release 1.9	Wed May 16 20:15:34 2018	Page 12
717Source file: z1mon-1.4.asm
718Title:
719
720LOC   OBJECT CODE   LINE   STMT SOURCE CODE
721e251  36 f7          661    661 	LD   	(HL),0C7H+RSTLC 	;RST INSTRUCTION
722e253  eb             662    662 	EX   	DE,HL   	 	;HL = BPSP
723e254  73             663    663 	LD   	(HL),E   	 	;BP ADDR TO STACK
724e255  23             664    664 	INC  	HL
725e256  72             665    665 	LD   	(HL),D
726e257  23             666    666 	INC  	HL
727e258  36 0b          667    667 	LD   	(HL),BPMRK   	 	;PUNCTUATION (BP SET)
728e25a  dd 75 00       668    668 	LD   	(IX+0),L
729e25d  18 c7          669    669 	JR   	GO1
730                     670    670 ; CHANGE USER PC
731e25f  2b             671    671 GO5:	DEC  	HL
732e260  72             672    672 	LD   	(HL),D
733e261  2b             673    673 	DEC  	HL
734e262  73             674    674 	LD   	(HL),E
735e263  18 c1          675    675 	JR   	GO1   		 	;BACK FOR MORE
736                     676    676 ;
737e265  e1             677    677 RETN:	POP  	HL  	 		;STRIP ADDR FROM STK
738e266  e1             678    678 	POP  	HL  	 		;UHL'
739e267  d1             679    679 	POP  	DE  	 		;UDE'
740e268  c1             680    680 	POP	BC			;UBC'
741e269  f1             681    681 	POP	AF			;UAF'
742e26a  d9             682    682 	EXX
743e26b  08             683    683 	EX 	AF,AF'
744                     684    684 ;
745e26c  f1             685    685 	POP	AF			;UIN
746e26d  ed 47          686    686 	LD 	I,A 			; UI
747e26f  f3             687    687 	DI
748e270  30 01          688    688 	JR 	NC,RT1
749e272  fb             689    689 	EI
750                     690    690 ;IFF NOW RESTORED
751e273  fd e1          691    691 RT1:	POP	IY			;UIY
752e275  dd e1          692    692 	POP	IX			;UIX
753e277  d1             693    693 	POP	DE			;USP
754                     694    694 ;
755                     695    695 ;COPY THE REMAINDER OF THE SYS STACK
756                     696    696 ;TO THE USER STACK. IF THIS TRANSFER
757                     697    697 ;IS MADE WITHOUT ERROR, SWITCH TO THE
758                     698    698 ;USER STACK. OTHERWISE, RETAIN THE
759                     699    699 ;SYSTEM STACK.
760                     700    700 ;
761e278  21 0a 00       701    701 	LD	HL,10
762e27b  45             702    702 	LD 	B,L
763e27c  39             703    703 	ADD	HL,SP
764e27d  eb             704    704 	EX 	DE,HL
765e27e  1b             705    705 RT2:	DEC	DE
766e27f  2b             706    706 	DEC	HL
767e280  1a             707    707 	LD 	A,(DE)
768e281  77             708    708 	LD 	(HL),A
769e282  be             709    709 	CP 	(HL)
770e283  20 03          710    710 	JR 	NZ,RT3
771e285  10 f7          711    711 	DJNZ	RT2
772e287  f9             712    712 	LD 	SP,HL
773                     713    713 ;
774e288  e1             714    714 RT3:	POP	HL
775e289  d1             715    715 	POP	DE
776e28a  c1             716    716 	POP	BC
777e28b  f1             717    717 	POP	AF
778e28c  c9             718    718 	RET
779                     719    719
780                     720    720
781Z80-Assembler	Release 1.9	Wed May 16 20:15:34 2018	Page 13
782Source file: z1mon-1.4.asm
783Title:
784
785LOC   OBJECT CODE   LINE   STMT SOURCE CODE
786                     721    721 ;	COMMAND.  DISPLAY REGISTERS.
787                     722    722 ;
788                     723    723 ;	DR
789                     724    724 ;
790                     725    725 ; COMMAND.  DISPLAY MEMORY.
791                     726    726 ;
792                     727    727 ; DM <STARTING ADDR> <ENDING ADDR OR SWATH>
793                     728    728 ;
794e28d  01 80 41       729    729 DISPL:	LD	BC,(('A'+CASE) < 8)+80H ;[FOR DR]
795e290  20 3f          730    730 	JR	NZ,SUBR2	 	;IF NOT 'M', DR
796                     731    731 ;
797                     732    732 ;
798e292  cd 51 e1       733    733 DSPM:	CALL	L2NCR0	 		;GET OPERANDS
799e295  16 10          734    734 DSPM1:	LD	D,16	 		;BYTE COUNT
800e297  cd 5c e1       735    735 	CALL	PCADDR	 		;ADDRESS
801e29a  cd e9 e1       736    736 DM2:	CALL	PSNM			;MEM CONTENTS
802e29d  ed a1          737    737 	CPI				;INC HL & DEC BC
803e29f  e2 4d e1       738    738 	JP	PO,CRLF
804e2a2  15             739    739 	DEC	D
805e2a3  28 f0          740    740 	JR	Z,DSPM1
806e2a5  7a             741    741 	LD	A,D
807e2a6  e6 03          742    742 	AND	3
808e2a8  cc 10 e1       743    743 	CALL	Z,SPACE
809e2ab  cc 10 e1       744    744 	CALL	Z,SPACE
810e2ae  18 ea          745    745 	JR	DM2
811                     746    746 ;
812                     747    747 ;
813                     748    748 ; COMMAND. SUBSTITUTE MEMORY LOCATION.
814                     749    749 ;
815                     750    750 ; SM <ADDR>
816                     751    751 ;
817                     752    752 ; COMMAND. SUBSTITUTE USER-REGISTER.
818                     753    753 ;
819                     754    754 ; S<REGISTER NAME>
820                     755    755 ;
821                     756    756 ; REGISTER NAMES: P [PC] , S [SP]
822                     757    757 ; A, F, B, C, D, E, H [HL]
823                     758    758 ; I, N [1FF], X [IX], Y [IY]
824                     759    759 ; A',F',B',C',D',E',H' [HL'].
825                     760    760 ;
826e2b0  20 16          761    761 SUBST:	JR	NZ,SUBR			;IN NOT 'M', SR
827                     762    762
828e2b2  97             763    763 SUBM:	SUB	A
829e2b3  47             764    764 	LD	B,A			;1-BYTE MASK
830e2b4  cd a8 e1       765    765 	CALL	L1NCR
831e2b7  eb             766    766 	EX	DE,HL			;HL GETS ADDR
832e2b8  cc 5c e1       767    767 SM1:	CALL	Z,PCADDR
833e2bb  cc 10 e1       768    768 	CALL	Z,SPACE
834                     769    769 ; PRINT CURRENT VALUE, REQUEST NEW VALUE &
835                     770    770 ; PRINT IT IF GIVEN
836e2be  cd 32 e3       771    771 	CALL	GSUBV
837e2c1  c8             772    772 	RET	Z			;IF CR, DONE.
838e2c2  23             773    773 	INC	HL
839e2c3  3e 07          774    774 	LD	A,7			;PRINT ADDRESS IF IT
840e2c5  a5             775    775 	AND	L			;IS A MULTIPLE OF 8
841e2c6  18 f0          776    776 	JR	SM1
842                     777    777 ;
843                     778    778 ;
844e2c8  47             779    779 SUBR:	LD	B,A
845e2c9  cd 44 e1       780    780 	CALL	GCHR
846Z80-Assembler	Release 1.9	Wed May 16 20:15:34 2018	Page 14
847Source file: z1mon-1.4.asm
848Title:
849
850LOC   OBJECT CODE   LINE   STMT SOURCE CODE
851e2cc  fe 00          781    781 	CP	''''
852e2ce  20 02          782    782 	JR	NZ,SR2
853e2d0  0c             783    783 	INC	C			;TURN ON THE PRIME-FLAG
854e2d1  97             784    784 SUBR2:	SUB	A
855e2d2  cd 55 e1       785    785 SR2:	CALL	SKSGCR			;WAIT FOR CR
856e2d5  78             786    786 SR3:	LD	A,B
857e2d6  d6 41          787    787 	SUB	'A'+CASE		;CHECK THE RANGE
858e2d8  da e5 e0       788    788 	JP	C,ERROR
859e2db  fe 19          789    789 	CP	'Y'-'A'+1
860e2dd  d2 e5 e0       790    790 	JP	NC,ERROR
861e2e0  5f             791    791 	LD	E,A
862e2e1  16 00          792    792 	LD	D,0
863e2e3  21 d7 e3       793    793 	LD	HL,RGTBL
864e2e6  19             794    794 	ADD	HL,DE
865e2e7  7e             795    795 	LD	A,(HL)
866e2e8  b7             796    796 	OR	A
867e2e9  28 33          797    797 	JR	Z,SR6	    		;IF ENTRY = 0, SKIP
868e2eb  1e 00          798    798 	LD	E,0
869e2ed  cb 41          799    799 	BIT	0,C	    		;PRIME?
870e2ef  28 06          800    800 	JR	Z,SR4
871e2f1  cb 76          801    801 	BIT	PF,(HL)			;YES. PRIMEABLE REG?
872e2f3  28 29          802    802 	JR	Z,SR6	    		;IF NOT, SKIP.
873e2f5  1e 10          803    803 	LD	E,DUAF-DUAF2
874e2f7  e6 1f          804    804 SR4:	AND	1FH	    		;STRIP FLAGS FROM ENTRY
875e2f9  83             805    805 	ADD	A,E
876e2fa  5f             806    806 	LD	E,A
877e2fb  c5             807    807 	PUSH	BC	    		;SAVE
878e2fc  78             808    808 	LD	A,B	    		;PRINT REG NAME
879e2fd  cd 12 e1       809    809 	CALL	PCHR
880e300  fe 48          810    810 	CP	'H'+CASE
881e302  3e 4c          811    811 	LD	A,'L'+CASE
882e304  cc 12 e1       812    812 	CALL	Z,PCHR
883e307  ee 71          813    813 	XOR	'L'+CASE ^ '='		;CLEAR CY, A = '='.
884e309  cb 41          814    814 	BIT	0,C	    		; PRIME?
885e30b  28 02          815    815 	JR	Z,SR5
886e30d  3e 00          816    816 	LD	A,''''
887e30f  cd 12 e1       817    817 SR5:	CALL	PCHR
888e312  46             818    818 	LD	B,(HL)	    		;SAVE ORIGINAL ENTRY
889e313  dd e5          819    819 	PUSH	IX
890e315  e1             820    820 	POP	HL	   	 	;STACK FRAME
891e316  ed 52          821    821 	SBC	HL,DE	    		;HL -> USER REG
892e318  cd 32 e3       822    822 	CALL	GSUBV	    		;PRINT VALUE, REQUEST NEW
893e31b  78             823    823 	LD	A,B	    		;SAVE
894e31c  c1             824    824 	POP	BC
895e31d  c8             825    825 	RET	Z	    		;DONE IF CR
896                     826    826 ;
897e31e  04             827    827 SR6:	INC	B	    		;NEXT REG
898e31f  07             828    828 	RLCA		    		;Y OR H?
899e320  30 b3          829    829 	JR	NC,SR3	    		;IF NEITHER, LOOP
900e322  07             830    830 	RLCA		    		;YES, IS IT Y?
901e323  cd 4d e1       831    831 SUBR3:	CALL	CRLF	    		; [ENTRY FOR DISPLAYING PC
902e326  38 05          832    832 	JR	C,SR8
903e328  06 41          833    833 	LD	B,'A'+CASE		;YES, IT IS Y.
904e32a  0c             834    834 	INC	C	    		;TURN ON PRIME-FLAG
905e32b  18 a8          835    835 	JR	SR3
906e32d  cb 41          836    836 SR8:	BIT	0,C	    		;NO. H OR H'?
907e32f  28 a4          837    837 	JR	Z,SR3	   		;IF H, LOOP.
908e331  c9             838    838 	RET		    		;IT IS H'. DONE.
909                     839    839
910                     840    840
911Z80-Assembler	Release 1.9	Wed May 16 20:15:34 2018	Page 15
912Source file: z1mon-1.4.asm
913Title:
914
915LOC   OBJECT CODE   LINE   STMT SOURCE CODE
916                     841    841 ; ENTER WITH HL POINTING TO MEMORY &
917                     842    842 ; B CONTAINING THE 1-BYTE OR 2-BYTE FLAG.
918                     843    843 ; PRINTS SPACE, CONTENTS OF (HL), & ALSO (HL-1) FOR
919                     844    844 ; 2-BYTE REGS, GETS SUBSTITUTION VALUE & LOADS IT.
920                     845    845 ; RETURNS WITH Z-FLAG SET 1FF THE DELIMITER IS
921                     846    846 ; A CARRIAGE-RETURN.
922                     847    847 ; PRESERVES BC & HL.
923                     848    848 ;
924e332  cd ec e1       849    849 GSUBV:	CALL	PNM	 		;PRINT (HL)
925e335  cb 68          850    850 	BIT	B2F,B	 		;2-BYTE REG?
926e337  28 04          851    851 	JR	Z,GS1
927e339  2b             852    852 	DEC	HL
928e33a  cd ec e1       853    853 	CALL	PNM	 		;LO BYTE
929e33d  79             854    854 GS1:	LD	A,C	 		;SUBST-OR-DISPLAY FLAG
930e33e  07             855    855 	RLCA
931e33f  38 0a          856    856 	JR	C,GS2			;IF DISPLAY, EXIT.
932e341  3e 2e          857    857 	LD	A,'.'
933e343  cd 12 e1       858    858 	CALL	PCHR
934e346  cd 44 e1       859    859 	CALL	GCHR
935e349  fe 2f          860    860 	CP	'.'+1			;SUBSTITUTION?
936e34b  dc 12 e1       861    861 GS2:	CALL	C,PCHR			;IF NOT, PRINT ANOTHER.
937e34e  38 0c          862    862 	JR	C,GS3
938e350  eb             863    863 	EX	DE,HL
939e351  cd ae e1       864    864 	CALL	GNHL			;NEW VALUE
940e354  eb             865    865 	EX	DE,HL
941e355  73             866    866 	LD	(HL),E
942e356  cb 68          867    867 	BIT	B2F,B
943e358  28 02          868    868 	JR	Z,GS3
944e35a  23             869    869 	INC	HL
945e35b  72             870    870 	LD	(HL),D
946e35c  fe 0d          871    871 GS3:	CP	CR
947e35e  c4 10 e1       872    872 	CALL	NZ,SPACE
948e361  c9             873    873 	RET
949                     874    874 ;
950                     875    875 ;
951                     876    876 ;...SUBDM 00 7E 5 585 BY 5 100 DBE++
952                     877    877 ;
953                     878    878 ;
954                     879    879 ; COMMAND
955                     880    880 ; SELECT UART-A OR UART-B.
956                     881    881 ;
957                     882    882 ; UA
958                     883    883 ; UB
959                     884    884 ;
960e362  cd a8 e1       885    885 UART:	CALL	L1NCR			;A OR B?
961e365  7b             886    886 	LD	A,E
962e366  fe 0b          887    887 	CP	0BH
963e368  20 05          888    888 	JR	NZ,UARTA
964e36a  3e 80          889    889 	LD	A,80H
965e36c  d3 04          890    890 	OUT	(APARLP),A
966e36e  c9             891    891 	RET
967                     892    892 ;
968e36f  97             893    893 UARTA:	SUB	A
969e370  d3 54          894    894 	OUT	(BPARLP),A
970e372  c9             895    895 	RET
971                     896    896 ;
972                     897    897 ;
973                     898    898 ; COMMAND
974                     899    899 ; READ BINARY INPUT FROM DATA PORT
975                     900    900 ;
976Z80-Assembler	Release 1.9	Wed May 16 20:15:34 2018	Page 16
977Source file: z1mon-1.4.asm
978Title:
979
980LOC   OBJECT CODE   LINE   STMT SOURCE CODE
981e373  cd 52 e1       901    901 READB:	CALL	L2NCR			;GET MEM ADDRS
982e376  cd 0e e0       902    902 RB1:	CALL	CHKIN			;GET INPUT
983e379  28 fb          903    903 	JR	Z,RB1
984e37b  77             904    904 	LD	(HL),A			;TO MEM
985e37c  ed a1          905    905 	CPI
986e37e  e0             906    906 	RET	PO
987e37f  18 f5          907    907 	JR	RB1
988                     908    908 ;
989                     909    909 ;
990                     910    910 ; COMMAND
991                     911    911 ; WRITE BINARY OUTPUT TO DATA PORT
992                     912    912
993e381  cd 52 e1       913    913 WRITB:	CALL	L2NCR			;GET MEM ADDRS
994e384  7e             914    914 WB1:	LD	A,(HL)
995e385  cd 1e e0       915    915 	CALL	PBYTE
996e388  ed a1          916    916 	CPI
997e38a  e0             917    917 	RET	PO
998e38b  18 f7          918    918 	JR	WB1
999                     919    919 ;
1000                     920    920 ;
1001                     921    921 ; COMMAND
1002                     922    922 ; PRINT NULLS ON THE CURRENT DEVICE.
1003                     923    923 ;
1004                     924    924 ; N <NUMBER-OF-NULLS>
1005                     925    925 ;
1006e38d  cd a8 e1       926    926 NULLS:	CALL	L1NCR
1007e390  43             927    927 	LD	B,E
1008e391  97             928    928 	SUB	A
1009e392  cd 12 e1       929    929 N2:	CALL	PCHR
1010e395  10 fb          930    930 	DJNZ	N2
1011e397  c9             931    931 	RET
1012                     932    932 ;
1013                     933    933 ;
1014                     934    934 ; COMMAND
1015                     935    935 ; OUT <DATA-BYTE> <PORT NUMBER>
1016                     936    936 ;
1017e398  cd ae e1       937    937 OUTP:	CALL	GNHL
1018e39b  eb             938    938 	EX	DE,HL			;E GETS DATA
1019e39c  cd a8 e1       939    939 	CALL	L1NCR			;GET PORT NUMBER
1020                     940    940 ;
1021e39f  4b             941    941 	LD	C,E			; TO C
1022e3a0  ed 69          942    942 	OUT	(C),L
1023e3a2  c9             943    943 	RET
1024                     944    944 ;
1025                     945    945
1026                     946    946 ; BAUD RATES.
1027                     947    947 ; WITH THE CROMEMCO TUART:  19200, 9600, 4800,
1028                     948    948 ; 			2400, 1200, 300, 150, 110.
1029                     949    949 ;
1030                     950    950 ; WITH THE 3P+S: 2400, 300, 110.
1031                     951    951 ;
1032                     952    952 ;
1033e3a3  94 ce a2 92    953    953 BAUDRS:	DEFB	94H,0CEH,0A2H,92H,88H,84H,82H,1
1034e3a7  88 84 82 01    953    954
1035                     954    955 ;
1036                     955    956 ;
1037e3ab  0a 00 80       956    957 LFNN:	DEFB	LF,0,0 | 80H
1038                     957    958 ;
1039                     958    959 ;
1040e3ae  ba             959    960 PRMPT:	DEFB	(':' | 80H)
1041Z80-Assembler	Release 1.9	Wed May 16 20:15:34 2018	Page 17
1042Source file: z1mon-1.4.asm
1043Title:
1044
1045LOC   OBJECT CODE   LINE   STMT SOURCE CODE
1046                     960    961 ; THE COMMAND TBL MUST IMMEDIATELY FOLLOW
1047                     961    962 ;
1048                     962    963 ;  THE	PROMPT MESSAGE
1049e3af  8d e2          963    964 	DEFW	DISPL			;DISPLAY: DM, DR
1050e3b1  e5 e0          964    965 	DEFW	ERROR			;E
1051e3b3  e5 e0          965    966 	DEFW	ERROR
1052e3b5  23 e2          966    967 	DEFW	GO			;GO; GO/WITH BREAKPOINTS
1053e3b7  e5 e0          967    968 	DEFW	ERROR
1054e3b9  2d e0          968    969 	DEFW	INITBAUD		;INITIALIZE BAUD RATE
1055e3bb  e5 e0          969    970 	DEFW	ERROR			;J
1056e3bd  e5 e0          970    971 	DEFW	ERROR			;K
1057e3bf  e5 e0          971    972 	DEFW	ERROR			;L
1058e3c1  83 e1          972    973 	DEFW	MOVE			;MOVE A BLOCK OF MEMORY
1059e3c3  8d e3          973    974 	DEFW	NULLS			;NULLS
1060e3c5  98 e3          974    975 	DEFW	OUTP			;OUTPUT
1061e3c7  ec e0          975    976 	DEFW	PROG			;PROGRAM
1062e3c9  e5 e0          976    977 	DEFW	ERROR			;Q
1063e3cb  73 e3          977    978 	DEFW	READB			;READ BINARY OR ASCII
1064e3cd  b0 e2          978    979 	DEFW	SUBST			;SUBSTITUTE: SM, SA, SB.
1065e3cf  e5 e0          979    980 	DEFW	ERROR			;T
1066e3d1  62 e3          980    981 	DEFW	UART			;UART: UA, UB
1067e3d3  66 e1          981    982 	DEFW	VERIF			;VERIFY BLOCKS OF MEMORY
1068e3d5  81 e3          982    983 	DEFW	WRITB			;WRITE BINARY OR ASCII
1069                     983    984 ;
10700040                 984    985 PM	EQU	1 < PF			;PRIMEABLE-REG MASK
10710000                 985    986 B1M	EQU	0			;1-BYTE REG MASK
10720020                 986    987 B2M	EQU	1 < B2F			;2-BYTE REG MASK
10730080                 987    988 CRM	EQU	1 < CRF			;CARRIAGE-RETURN MASK
1074                     988    989
1075e3d7  43             989    990 RGTBL:	DEFB	-DUAF | PM		;A
1076e3d8  45             990    991 	DEFB	-DUBC | PM		;B
1077e3d9  46             991    992 	DEFB	-DUBC+1 | PM		;C
1078e3da  47             992    993 	DEFB	-DUDE | PM		;D
1079e3db  48             993    994 	DEFB	-DUDE+1 | PM		;E
1080e3dc  44             994    995 	DEFB	-DUAF+1 | PM		;F
1081e3dd  00             995    996 	DEFB	0
1082e3de  e9             996    997 	DEFB	-DUHL | PM | B2M | CRM	;H [HL]
1083e3df  11             997    998 	DEFB	-DUIN | B1M		;I
1084e3e0  00             998    999 	DEFB	0
1085e3e1  00             999   1000 	DEFB	0
1086e3e2  00            1000   1001 	DEFB	0
1087e3e3  00            1001   1002 	DEFB	0
1088e3e4  12            1002   1003 	DEFB	-DUIN+1 | B1M		;N [INTERRUPT FF]
1089e3e5  00            1003   1004 	DEFB	0
1090e3e6  21            1004   1005 	DEFB	-DUPC | B2M		;PC
1091e3e7  00            1005   1006 	DEFB	0
1092e3e8  00            1006   1007 	DEFB	0
1093e3e9  2b            1007   1008 	DEFB	-DUSP | B2M		;SP
1094e3ea  00            1008   1009 	DEFB	0
1095e3eb  00            1009   1010 	DEFB	0
1096e3ec  00            1010   1011 	DEFB	0
1097e3ed  00            1011   1012 	DEFB	0
1098e3ee  2d            1012   1013 	DEFB	-DUIX | B2M		;X [IX]
1099e3ef  af            1013   1014 	DEFB	-DUIY | B2M | CRM 	;Y [IY]
1100                    1014   1015 ;
1101                    1015   1016 ;
1102e3f0  0d 0d 43 52   1016   1017 HEAD:	DEFB	CR,CR, 'CROMEMCO ZM1.',('4' | 80H)
1103e3f4  4f 4d 45 4d   1016   1018
1104e3f8  43 4f 20 5a   1016   1019
1105e3fc  4d 31 2e b4   1016   1020
1106Z80-Assembler	Release 1.9	Wed May 16 20:15:34 2018	Page 18
1107Source file: z1mon-1.4.asm
1108Title:
1109
1110LOC   OBJECT CODE   LINE   STMT SOURCE CODE
1111e400                1017   1021 	END	CSTART
1112Z80-Assembler	Release 1.9	Wed May 16 20:15:34 2018	Page 19
1113Source file: z1mon-1.4.asm
1114Title:       Symboltable
1115
1116ABAUDP   0000 	ACMNDP   0002 	ALT      007d 	APARLP   0004
1117B1M      0000 	B2F      0005 	B2M      0020 	BAUDRS   e3a3
1118BCMNDP   0052 	BPARLP   0054 	BPMRK    000b 	BPSTOR   0016
1119CASE     0000 	CHKIN    e00e 	CL1      e0a4 	CL2      e0b3
1120CLBP     e0a0 	CMND     e0be 	CMND1    e0c2 	COM1     e051
1121COM3     e082 	COM4     e08b 	COMMON   e04a 	CR       000d
1122CRF      0007 	CRLF     e14d 	CRM      0080 	CSTART   e000*
1123DATA     0001 	DAV      0040 	DISPL    e28d 	DM2      e29a
1124DSPM     e292*	DSPM1    e295 	DUAF     fffd 	DUAF2    ffed
1125DUBC     fffb 	DUBC2    ffeb*	DUDE     fff9 	DUDE2    ffe9*
1126DUHL     fff7 	DUHL2    ffe7 	DUIN     ffef 	DUIX     fff3
1127DUIY     fff1 	DUPC     ffff 	DUSP     fff5 	ERROR    e0e5
1128ERRV1    e0f5 	ESC      001b 	ESCPE    e0ea 	GBYTE    e016
1129GCHR     e144 	GN1      e1bb 	GNHL     e1ae 	GNHL0    e1ad
1130GO       e223 	GO1      e226 	GO3      e23c 	GO5      e25f
1131GS1      e33d 	GS2      e34b 	GS3      e35c 	GSUBV    e332
1132HEAD     e3f0 	HEXSH    e1c6 	HX1      e1d4 	HXSH4    e1d6*
1133INIT     e029 	INITBAUD e02d 	IT1      e034 	L1NCR    e1a8
1134L2N1     e19b 	L2N2     e1a2 	L2NCR    e152 	L2NCR0   e151
1135L3NCR    e1a5 	LD2N     e18b 	LENRGS   001a 	LF       000a
1136LFNN     e3ab 	MOVE     e183 	MVE      e21a 	N2       e392
1137NBRKPT   0005 	NULLS    e38d 	OUTP     e398 	P1HEX    e1fb
1138P2HEX    e1f7 	P2NMS    e108*	PADDR    e15f*	PBY1     e01f
1139PBYTE    e01e 	PC1      e113 	PC2      e122*	PC3      e141
1140PCADDR   e15c 	PCHR     e112 	PF       0006 	PH1      e208
1141PM       0040 	PMSG     e20f 	PNHL     e1f2 	PNM      e1ec
1142PR1      e0fb 	PRMPT    e3ae 	PROG     e0ec 	PS1      e210
1143PSNHL    e1ef 	PSNM     e1e9 	RB1      e376 	READB    e373
1144RETN     e265 	RGTBL    e3d7 	RSTLC    0030 	RT1      e273
1145RT2      e27e 	RT3      e288 	SK1      e1df 	SKSG     e1de
1146SKSG0    e1dd 	SKSGCR   e155 	SM1      e2b8 	SPACE    e110
1147SR2      e2d2 	SR3      e2d5 	SR4      e2f7 	SR5      e30f
1148SR6      e31e 	SR8      e32d 	STAT     0000 	SUBM     e2b2*
1149SUBR     e2c8 	SUBR2    e2d1 	SUBR3    e323 	SUBST    e2b0
1150SVMS     e045 	TBE      0080 	TEMPS    0016 	UART     e362
1151UARTA    e36f 	VERIF    e166 	VRFY     e169 	WB1      e384
1152WRITB    e381 	WSTART   e008*