OpenCores
URL https://opencores.org/ocsvn/light8080/light8080/trunk

Subversion Repositories light8080

[/] [light8080/] [trunk/] [c/] [HELLO.LST] - Blame information for rev 65

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 65 motilito
AS80 Assembler for i8080-Z180 [1.11].                                Page    1
2
--------------------------------- HELLO.ASM ----------------------------------
3
 
4
-------------------------------- Symbol Table --------------------------------
5
 
6
              Symbol   Value        Decimal
7
 
8
               ccand : $0029             41
9
               ccasl : $0099            153
10
               ccasr : $008b            139
11
             ccbcneg : $011c            284
12
               cccmp : $0056             86
13
           cccmpbcde : $012c            300
14
              cccmp1 : $0063             99
15
               cccom : $00ac            172
16
             ccdeneg : $0114            276
17
               ccdiv : $00d3            211
18
              ccdiv1 : $00e9            233
19
              ccdiv2 : $0100            256
20
              ccdiv3 : $0109            265
21
                cceq : $0030             48
22
             ccgchar : $0007              7
23
                ccge : $004a             74
24
              ccgint : $000d             13
25
                ccgt : $003c             60
26
                ccle : $0043             67
27
                cclt : $0050             80
28
              ccmult : $00b3            179
29
             ccmult1 : $00b8            184
30
                ccne : $0036             54
31
               ccneg : $00a7            167
32
                ccor : $001b             27
33
             ccpchar : $0012             18
34
              ccpint : $0015             21
35
              ccrdel : $0124            292
36
               ccsub : $00a0            160
37
               ccsxt : $0008              8
38
              ccucmp : $0080            128
39
               ccuge : $0066            102
40
               ccugt : $0072            114
41
               ccule : $0079            121
42
               ccult : $006c            108
43
               ccxor : $0022             34
44
                 cc1 : $035c            860
45
                cc10 : $027a            634
46
                cc11 : $02cf            719
47
                cc12 : $02e1            737
48
                cc13 : $033f            831
49
                cc14 : $035b            859
50
                cc15 : $0358            856
51
                 cc2 : $0131            305
52
                 cc3 : $0144            324
53
                 cc4 : $016d            365
54
                 cc5 : $0171            369
55
                 cc6 : $0183            387
56
                 cc7 : $01b3            435
57
                 cc8 : $01e3            483
58
                 cc9 : $0221            545
59
           __getbyte : $014f            335
60
              __main : $02e3            739
61
                __nl : $0172            370
62
            __outint : $01f0            496
63
          __printdec : $01b4            436
64
          __printhex : $0249            585
65
          __printstr : $0183            387
66
AS80 Assembler for i8080-Z180 [1.11].                                Page    2
67
--------------------------------- HELLO.ASM ----------------------------------
68
 
69
            __rxbyte : $039e            926
70
          __sendbyte : $0131            305
71
            __tstary : $039f            927
72
            __8080__ : $0001              1
73
 
74
62 labels used
75
 
76
770 lines read, no errors in pass 1.
77
AS80 Assembler for i8080-Z180 [1.11].                                Page    3
78
--------------------------------- HELLO.ASM ----------------------------------
79
 
80
                        ; <><><>   Small-C  V1.2  DOS--CP/M Cross Compiler   <
81
                        ; <><><><><>   CP/M Large String Space Version   <><><
82
                        ; <><><><><><><><><><>   By Ron Cain   <><><><><><><><
83
                        ;
84
                                code
85
0000 =                          org #0000
86
0000 : 21000c                   ld hl,3072
87
0003 : f9                       ld sp,hl
88
0004 : cde302                   call __main
89
                        ;//---------------------------------------------------
90
                        ;//     Project:                        light8080 SOC           WiCores Solutions
91
                        ;//
92
                        ;//     File name:                      hello.c                                 (February 04, 2012)
93
                        ;//
94
                        ;//     Writer:                         Moti Litochevski
95
                        ;//
96
                        ;//     Description:
97
                        ;//             This file contains a simple program written in Sm
98
                        ;//             the UART and then switches to echo received bytes
99
                        ;//
100
                        ;//     Revision History:
101
                        ;//
102
                        ;//     Rev                                             
103
                        ;//             
104
                        ;//---------------------------------------------------
105
                        ;#include ..\tools\c80\c80.lib
106
                        ;#asm
107
                        ;
108
                        ;-----------------------------------------------------
109
                        ;       Small-C  Run-time Librray
110
                        ;
111
                        ;       V4d     As of July 16, 1980 (gtf)
112
                        ;                  Added EXIT() function
113
                        ;-----------------------------------------------------
114
                        ;
115
                        ;Fetch a single byte from the address in HL and sign e
116
0007 :                  ccgchar:
117
0007 : 7e                       ld a,(hl)
118
0008 :                  ccsxt:
119
0008 : 6f                       ld l,a
120
0009 : 07                       rlca
121
000a : 9f                       sbc     a
122
000b : 67                       ld      h,a
123
000c : c9                       ret
124
                        ;Fetch a full 16-bit integer from the address in HL
125
000d :                  ccgint:
126
000d : 7e                       ld a,(hl)
127
000e : 23                       inc     hl
128
000f : 66                       ld      h,(hl)
129
0010 : 6f                       ld l,a
130
0011 : c9                       ret
131
                        ;Store a single byte from HL at the address in DE
132
0012 :                  ccpchar:
133
0012 : 7d                       ld      a,l
134
0013 : 12                       ld      (de),a
135
0014 : c9                       ret
136
                        ;Store a 16-bit integer in HL at the address in DE
137
0015 :                  ccpint:
138
0015 : 7d                       ld      a,l
139
0016 : 12                       ld      (de),a
140
0017 : 13                       inc     de
141
0018 : 7c                       ld      a,h
142
AS80 Assembler for i8080-Z180 [1.11].                                Page    4
143
--------------------------------- HELLO.ASM ----------------------------------
144
 
145
0019 : 12                       ld      (de),a
146
001a : c9                       ret
147
                        ;Inclusive "or" HL and DE into HL
148
001b :                  ccor:
149
001b : 7d                       ld      a,l
150
001c : b3                       or      e
151
001d : 6f                       ld l,a
152
001e : 7c                       ld      a,h
153
001f : b2                       or      d
154
0020 : 67                       ld      h,a
155
0021 : c9                       ret
156
                        ;Exclusive "or" HL and DE into HL
157
0022 :                  ccxor:
158
0022 : 7d                       ld      a,l
159
0023 : ab                       xor     e
160
0024 : 6f                       ld l,a
161
0025 : 7c                       ld      a,h
162
0026 : aa                       xor     d
163
0027 : 67                       ld      h,a
164
0028 : c9                       ret
165
                        ;"And" HL and DE into HL
166
0029 :                  ccand:
167
0029 : 7d                       ld      a,l
168
002a : a3                       and     e
169
002b : 6f                       ld l,a
170
002c : 7c                       ld      a,h
171
002d : a2                       and     d
172
002e : 67                       ld      h,a
173
002f : c9                       ret
174
                        ;Test if HL = DE and set HL = 1 if true else 0
175
0030 :                  cceq:
176
0030 : cd5600                   call cccmp
177
0033 : c8                       ret z
178
0034 : 2b                       dec     hl
179
0035 : c9                       ret
180
                        ;Test if DE ~= HL
181
0036 :                  ccne:
182
0036 : cd5600                   call cccmp
183
0039 : c0                       ret nz
184
003a : 2b                       dec     hl
185
003b : c9                       ret
186
                        ;Test if DE > HL (signed)
187
003c :                  ccgt:
188
003c : eb                       ex de,hl
189
003d : cd5600                   call cccmp
190
0040 : d8                       ret c
191
0041 : 2b                       dec     hl
192
0042 : c9                       ret
193
                        ;Test if DE <= HL (signed)
194
0043 :                  ccle:
195
0043 : cd5600                   call cccmp
196
0046 : c8                       ret z
197
0047 : d8                       ret c
198
0048 : 2b                       dec hl
199
0049 : c9                       ret
200
                        ;Test if DE >= HL (signed)
201
004a :                  ccge:
202
004a : cd5600                   call cccmp
203
004d : d0                       ret nc
204
004e : 2b                       dec hl
205
004f : c9                       ret
206
                        ;Test if DE < HL (signed)
207
AS80 Assembler for i8080-Z180 [1.11].                                Page    5
208
--------------------------------- HELLO.ASM ----------------------------------
209
 
210
0050 :                  cclt:
211
0050 : cd5600                   call cccmp
212
0053 : d8                       ret c
213
0054 : 2b                       dec hl
214
0055 : c9                       ret
215
                        ; Signed compare of DE and HL
216
                        ; Performs DE - HL and sets the conditions:
217
                        ;       Carry reflects sign of difference (set means DE < HL
218
                        ;       Zero/non-zero set according to equality.
219
0056 :                  cccmp:
220
0056 : 7b                       ld      a,e
221
0057 : 95                       sub     l
222
0058 : 5f                       ld      e,a
223
0059 : 7a                       ld      a,d
224
005a : 9c                       sbc     h
225
005b : 210100                   ld      hl,1
226
005e : fa6300                   jp      m,cccmp1
227
0061 : b3                       or      e       ;"OR" resets carry
228
0062 : c9                       ret
229
0063 :                  cccmp1:
230
0063 : b3                       or      e
231
0064 : 37                       scf             ;set carry to signal minus
232
0065 : c9                       ret
233
                        ;Test if DE >= HL (unsigned)
234
0066 :                  ccuge:
235
0066 : cd8000                   call ccucmp
236
0069 : d0                       ret nc
237
006a : 2b                       dec hl
238
006b : c9                       ret
239
                        ;Test if DE < HL (unsigned)
240
006c :                  ccult:
241
006c : cd8000                   call ccucmp
242
006f : d8                       ret c
243
0070 : 2b                       dec hl
244
0071 : c9                       ret
245
                        ;Test if DE > HL (unsigned)
246
0072 :                  ccugt:
247
0072 : eb                       ex de,hl
248
0073 : cd8000                   call ccucmp
249
0076 : d8                       ret c
250
0077 : 2b                       dec hl
251
0078 : c9                       ret
252
                        ;Test if DE <= HL (unsigned)
253
0079 :                  ccule:
254
0079 : cd8000                   call ccucmp
255
007c : c8                       ret z
256
007d : d8                       ret c
257
007e : 2b                       dec hl
258
007f : c9                       ret
259
                        ;Routine to perform unsigned compare
260
                        ;carry set if DE < HL
261
                        ;zero/nonzero set accordingly
262
0080 :                  ccucmp:
263
0080 : 7a                       ld      a,d
264
0081 : bc                       cp      h
265
0082 : c28700                   jp      nz,$+5
266
0085 : 7b                       ld      a,e
267
0086 : bd                       cp      l
268
0087 : 210100                   ld      hl,1
269
008a : c9                       ret
270
                        ;Shift DE arithmetically right by HL and return in HL
271
008b :                  ccasr:
272
AS80 Assembler for i8080-Z180 [1.11].                                Page    6
273
--------------------------------- HELLO.ASM ----------------------------------
274
 
275
008b : eb                       ex      de,hl
276
008c : 7c                       ld      a,h
277
008d : 17                       rla
278
008e : 7c                       ld      a,h
279
008f : 1f                       rra
280
0090 : 67                       ld      h,a
281
0091 : 7d                       ld      a,l
282
0092 : 1f                       rra
283
0093 : 6f                       ld      l,a
284
0094 : 1d                       dec     e
285
0095 : c28c00                   jp      nz,ccasr+1
286
0098 : c9                       ret
287
                        ;Shift DE arithmetically left by HL and return in HL
288
0099 :                  ccasl:
289
0099 : eb                       ex      de,hl
290
009a : 29                       add     hl,hl
291
009b : 1d                       dec     e
292
009c : c29a00                   jp      nz,ccasl+1
293
009f : c9                       ret
294
                        ;Subtract HL from DE and return in HL
295
00a0 :                  ccsub:
296
00a0 : 7b                       ld      a,e
297
00a1 : 95                       sub     l
298
00a2 : 6f                       ld l,a
299
00a3 : 7a                       ld      a,d
300
00a4 : 9c                       sbc     h
301
00a5 : 67                       ld      h,a
302
00a6 : c9                       ret
303
                        ;Form the two's complement of HL
304
00a7 :                  ccneg:
305
00a7 : cdac00                   call cccom
306
00aa : 23                       inc     hl
307
00ab : c9                       ret
308
                        ;Form the one's complement of HL
309
00ac :                  cccom:
310
00ac : 7c                       ld      a,h
311
00ad : 2f                       cpl
312
00ae : 67                       ld      h,a
313
00af : 7d                       ld      a,l
314
00b0 : 2f                       cpl
315
00b1 : 6f                       ld l,a
316
00b2 : c9                       ret
317
                        ;Multiply DE by HL and return in HL
318
00b3 :                  ccmult:
319
00b3 : 44                       ld      b,h
320
00b4 : 4d                       ld      c,l
321
00b5 : 210000                   ld      hl,0
322
00b8 :                  ccmult1:
323
00b8 : 79                       ld      a,c
324
00b9 : 0f                       rrca
325
00ba : d2be00                   jp      nc,$+4
326
00bd : 19                       add     hl,de
327
00be : af                       xor     a
328
00bf : 78                       ld      a,b
329
00c0 : 1f                       rra
330
00c1 : 47                       ld      b,a
331
00c2 : 79                       ld      a,c
332
00c3 : 1f                       rra
333
00c4 : 4f                       ld      c,a
334
00c5 : b0                       or      b
335
00c6 : c8                       ret z
336
00c7 : af                       xor     a
337
AS80 Assembler for i8080-Z180 [1.11].                                Page    7
338
--------------------------------- HELLO.ASM ----------------------------------
339
 
340
00c8 : 7b                       ld      a,e
341
00c9 : 17                       rla
342
00ca : 5f                       ld      e,a
343
00cb : 7a                       ld      a,d
344
00cc : 17                       rla
345
00cd : 57                       ld      d,a
346
00ce : b3                       or      e
347
00cf : c8                       ret z
348
00d0 : c3b800                   jp      ccmult1
349
                        ;Divide DE by HL and return quotient in HL, remainder
350
00d3 :                  ccdiv:
351
00d3 : 44                       ld      b,h
352
00d4 : 4d                       ld      c,l
353
00d5 : 7a                       ld      a,d
354
00d6 : a8                       xor     b
355
00d7 : f5                       push af
356
00d8 : 7a                       ld      a,d
357
00d9 : b7                       or      a
358
00da : fc1401                   call m,ccdeneg
359
00dd : 78                       ld      a,b
360
00de : b7                       or      a
361
00df : fc1c01                   call m,ccbcneg
362
00e2 : 3e10                     ld      a,16
363
00e4 : f5                       push af
364
00e5 : eb                       ex      de,hl
365
00e6 : 110000                   ld      de,0
366
00e9 :                  ccdiv1:
367
00e9 : 29                       add hl,hl
368
00ea : cd2401                   call ccrdel
369
00ed : ca0001                   jp      z,ccdiv2
370
00f0 : cd2c01                   call cccmpbcde
371
00f3 : fa0001                   jp      m,ccdiv2
372
00f6 : 7d                       ld      a,l
373
00f7 : f601                     or      1
374
00f9 : 6f                       ld l,a
375
00fa : 7b                       ld      a,e
376
00fb : 91                       sub     c
377
00fc : 5f                       ld      e,a
378
00fd : 7a                       ld      a,d
379
00fe : 98                       sbc     b
380
00ff : 57                       ld      d,a
381
0100 :                  ccdiv2:
382
0100 : f1                       pop af
383
0101 : 3d                       dec     a
384
0102 : ca0901                   jp      z,ccdiv3
385
0105 : f5                       push af
386
0106 : c3e900                   jp      ccdiv1
387
0109 :                  ccdiv3:
388
0109 : f1                       pop af
389
010a : f0                       ret     p
390
010b : cd1401                   call ccdeneg
391
010e : eb                       ex de,hl
392
010f : cd1401                   call ccdeneg
393
0112 : eb                       ex de,hl
394
0113 : c9                       ret
395
0114 :                  ccdeneg:
396
0114 : 7a                       ld      a,d
397
0115 : 2f                       cpl
398
0116 : 57                       ld      d,a
399
0117 : 7b                       ld      a,e
400
0118 : 2f                       cpl
401
0119 : 5f                       ld      e,a
402
AS80 Assembler for i8080-Z180 [1.11].                                Page    8
403
--------------------------------- HELLO.ASM ----------------------------------
404
 
405
011a : 13                       inc     de
406
011b : c9                       ret
407
011c :                  ccbcneg:
408
011c : 78                       ld      a,b
409
011d : 2f                       cpl
410
011e : 47                       ld      b,a
411
011f : 79                       ld      a,c
412
0120 : 2f                       cpl
413
0121 : 4f                       ld      c,a
414
0122 : 03                       inc     bc
415
0123 : c9                       ret
416
0124 :                  ccrdel:
417
0124 : 7b                       ld      a,e
418
0125 : 17                       rla
419
0126 : 5f                       ld      e,a
420
0127 : 7a                       ld      a,d
421
0128 : 17                       rla
422
0129 : 57                       ld      d,a
423
012a : b3                       or      e
424
012b : c9                       ret
425
012c :                  cccmpbcde:
426
012c : 7b                       ld      a,e
427
012d : 91                       sub     c
428
012e : 7a                       ld      a,d
429
012f : 98                       sbc     b
430
0130 : c9                       ret
431
                        ;// UART IO registers
432
                        ;port (128) UDATA;              // uart data register used for bot
433
                        ;port (129) UBAUDL;             // low byte of baud rate register
434
                        ;port (130) UBAUDH;             // low byte of baud rate register
435
                        ;port (131) USTAT;              // uart status register
436
                        ;// digital IO ports registers
437
                        ;port (132) P1REG;      // output port1 - used as firs
438
                        ;port (133) P2REG;              // output port2 - used as low digi
439
                        ;port (134) P3REG;              // output port3 - used as high dig
440
                        ;port (135) P4REG;              // output port4
441
                        ;// simulation end register
442
                        ;// writing any value to this port will end the verilo
443
                        ;// test bench.
444
                        ;port (255) SIMEND;
445
                        ;// registers bit fields definition
446
                        ;// uart status register decoding
447
                        ;#define UTXBUSY                1
448
                        ;#define URXFULL                16
449
                        ;// globals
450
                        ;char rxbyte;           // byte received from the uart
451
                        ;int tstary[2] = {1234, 5678};
452
                        ;//---------------------------------------------------
453
                        ;// send a single byte to the UART
454
                        ;sendbyte(by)
455
0131 :                  __sendbyte:
456
                        ;char by;
457
                        ;{
458
                        ;       while (USTAT & UTXBUSY);
459
0131 :                  cc2:
460
0131 : db83                     in a,(131)
461
0133 : cf                       call ccsxt
462
0134 : e5                       push hl
463
0135 : 210100                   ld hl,1
464
0138 : d1                       pop de
465
0139 : cd2900                   call ccand
466
013c : 7c                       ld a,h
467
AS80 Assembler for i8080-Z180 [1.11].                                Page    9
468
--------------------------------- HELLO.ASM ----------------------------------
469
 
470
013d : b5                       or l
471
013e : ca4401                   jp z,cc3
472
0141 : c33101                   jp cc2
473
0144 :                  cc3:
474
                        ;       UDATA = by;
475
0144 : 210200                   ld hl,2
476
0147 : 39                       add hl,sp
477
0148 : cd0700                   call ccgchar
478
014b : 7d                       ld a,l
479
014c : d380                     out (128),a
480
 
481
                        ;}
482
014e : c9                       ret
483
                        ;// check if a byte was received by the uart
484
                        ;getbyte()
485
014f :                  __getbyte:
486
                        ;{
487
                        ;       if (USTAT & URXFULL) {
488
014f : db83                     in a,(131)
489
0151 : cf                       call ccsxt
490
0152 : e5                       push hl
491
0153 : 211000                   ld hl,16
492
0156 : d1                       pop de
493
0157 : cd2900                   call ccand
494
015a : 7c                       ld a,h
495
015b : b5                       or l
496
015c : ca6d01                   jp z,cc4
497
                        ;               rxbyte = UDATA;
498
015f : db80                     in a,(128)
499
0161 : cf                       call ccsxt
500
0162 : 7d                       ld a,l
501
0163 : 329e03                   ld (__rxbyte),a
502
                        ;               return 1;
503
0166 : 210100                   ld hl,1
504
0169 : c9                       ret
505
                        ;       }
506
                        ;       else
507
016a : c37101                   jp cc5
508
016d :                  cc4:
509
                        ;               return 0;
510
016d : 210000                   ld hl,0
511
0170 : c9                       ret
512
0171 :                  cc5:
513
                        ;}
514
0171 : c9                       ret
515
                        ;// send new line to the UART
516
                        ;nl()
517
0172 :                  __nl:
518
                        ;{
519
                        ;       sendbyte(13);
520
0172 : 210d00                   ld hl,13
521
0175 : e5                       push hl
522
0176 : cd3101                   call __sendbyte
523
0179 : c1                       pop bc
524
                        ;       sendbyte(10);
525
017a : 210a00                   ld hl,10
526
017d : e5                       push hl
527
017e : cd3101                   call __sendbyte
528
0181 : c1                       pop bc
529
                        ;}
530
0182 : c9                       ret
531
                        ;// sends a string to the UART
532
AS80 Assembler for i8080-Z180 [1.11].                                Page   10
533
--------------------------------- HELLO.ASM ----------------------------------
534
 
535
                        ;printstr(sptr)
536
0183 :                  __printstr:
537
                        ;char *sptr;
538
                        ;{
539
                        ;       while (*sptr != 0)
540
0183 :                  cc6:
541
0183 : 210200                   ld hl,2
542
0186 : 39                       add hl,sp
543
0187 : cd0d00                   call ccgint
544
018a : cd0700                   call ccgchar
545
018d : e5                       push hl
546
018e : 210000                   ld hl,0
547
0191 : d1                       pop de
548
0192 : cd3600                   call ccne
549
0195 : 7c                       ld a,h
550
0196 : b5                       or l
551
0197 : cab301                   jp z,cc7
552
                        ;               sendbyte(*sptr++);
553
019a : 210200                   ld hl,2
554
019d : 39                       add hl,sp
555
019e : e5                       push hl
556
019f : cd0d00                   call ccgint
557
01a2 : 23                       inc hl
558
01a3 : d1                       pop de
559
01a4 : cd1500                   call ccpint
560
01a7 : 2b                       dec hl
561
01a8 : cd0700                   call ccgchar
562
01ab : e5                       push hl
563
01ac : cd3101                   call __sendbyte
564
01af : c1                       pop bc
565
01b0 : c38301                   jp cc6
566
01b3 :                  cc7:
567
                        ;}
568
01b3 : c9                       ret
569
                        ;// sends a decimal value to the UART
570
                        ;printdec(dval)
571
01b4 :                  __printdec:
572
                        ;int dval;
573
                        ;{
574
                        ;       if (dval<0) {
575
01b4 : 210200                   ld hl,2
576
01b7 : 39                       add hl,sp
577
01b8 : cd0d00                   call ccgint
578
01bb : e5                       push hl
579
01bc : 210000                   ld hl,0
580
01bf : d1                       pop de
581
01c0 : cd5000                   call cclt
582
01c3 : 7c                       ld a,h
583
01c4 : b5                       or l
584
01c5 : cae301                   jp z,cc8
585
                        ;               sendbyte('-');
586
01c8 : 212d00                   ld hl,45
587
01cb : e5                       push hl
588
01cc : cd3101                   call __sendbyte
589
01cf : c1                       pop bc
590
                        ;               dval = -dval;
591
01d0 : 210200                   ld hl,2
592
01d3 : 39                       add hl,sp
593
01d4 : e5                       push hl
594
01d5 : 210400                   ld hl,4
595
01d8 : 39                       add hl,sp
596
01d9 : cd0d00                   call ccgint
597
AS80 Assembler for i8080-Z180 [1.11].                                Page   11
598
--------------------------------- HELLO.ASM ----------------------------------
599
 
600
01dc : cda700                   call ccneg
601
01df : d1                       pop de
602
01e0 : cd1500                   call ccpint
603
                        ;       }
604
                        ;       outint(dval);
605
01e3 :                  cc8:
606
01e3 : 210200                   ld hl,2
607
01e6 : 39                       add hl,sp
608
01e7 : cd0d00                   call ccgint
609
01ea : e5                       push hl
610
01eb : cdf001                   call __outint
611
01ee : c1                       pop bc
612
                        ;}
613
01ef : c9                       ret
614
                        ;// function copied from c80dos.c
615
                        ;outint(n)
616
01f0 :                  __outint:
617
                        ;int n;
618
                        ;{
619
                        ;int q;
620
01f0 : c5                       push bc
621
                        ;       q = n/10;
622
01f1 : 210000                   ld hl,0
623
01f4 : 39                       add hl,sp
624
01f5 : e5                       push hl
625
01f6 : 210600                   ld hl,6
626
01f9 : 39                       add hl,sp
627
01fa : cd0d00                   call ccgint
628
01fd : e5                       push hl
629
01fe : 210a00                   ld hl,10
630
0201 : d1                       pop de
631
0202 : cdd300                   call ccdiv
632
0205 : d1                       pop de
633
0206 : cd1500                   call ccpint
634
                        ;       if (q) outint(q);
635
0209 : 210000                   ld hl,0
636
020c : 39                       add hl,sp
637
020d : cd0d00                   call ccgint
638
0210 : 7c                       ld a,h
639
0211 : b5                       or l
640
0212 : ca2102                   jp z,cc9
641
0215 : 210000                   ld hl,0
642
0218 : 39                       add hl,sp
643
0219 : cd0d00                   call ccgint
644
021c : e5                       push hl
645
021d : cdf001                   call __outint
646
0220 : c1                       pop bc
647
                        ;       sendbyte('0'+(n-q*10));
648
0221 :                  cc9:
649
0221 : 213000                   ld hl,48
650
0224 : e5                       push hl
651
0225 : 210600                   ld hl,6
652
0228 : 39                       add hl,sp
653
0229 : cd0d00                   call ccgint
654
022c : e5                       push hl
655
022d : 210400                   ld hl,4
656
0230 : 39                       add hl,sp
657
0231 : cd0d00                   call ccgint
658
0234 : e5                       push hl
659
0235 : 210a00                   ld hl,10
660
0238 : d1                       pop de
661
0239 : cdb300                   call ccmult
662
AS80 Assembler for i8080-Z180 [1.11].                                Page   12
663
--------------------------------- HELLO.ASM ----------------------------------
664
 
665
023c : d1                       pop de
666
023d : cda000                   call ccsub
667
0240 : d1                       pop de
668
0241 : 19                       add hl,de
669
0242 : e5                       push hl
670
0243 : cd3101                   call __sendbyte
671
0246 : c1                       pop bc
672
                        ;}
673
0247 : c1                       pop bc
674
0248 : c9                       ret
675
                        ;// sends a hexadecimal value to the UART
676
                        ;printhex(hval)
677
0249 :                  __printhex:
678
                        ;int hval;
679
                        ;{
680
                        ;int q;
681
0249 : c5                       push bc
682
                        ;       q = hval/16;
683
024a : 210000                   ld hl,0
684
024d : 39                       add hl,sp
685
024e : e5                       push hl
686
024f : 210600                   ld hl,6
687
0252 : 39                       add hl,sp
688
0253 : cd0d00                   call ccgint
689
0256 : e5                       push hl
690
0257 : 211000                   ld hl,16
691
025a : d1                       pop de
692
025b : cdd300                   call ccdiv
693
025e : d1                       pop de
694
025f : cd1500                   call ccpint
695
                        ;       if (q) printhex(q);
696
0262 : 210000                   ld hl,0
697
0265 : 39                       add hl,sp
698
0266 : cd0d00                   call ccgint
699
0269 : 7c                       ld a,h
700
026a : b5                       or l
701
026b : ca7a02                   jp z,cc10
702
026e : 210000                   ld hl,0
703
0271 : 39                       add hl,sp
704
0272 : cd0d00                   call ccgint
705
0275 : e5                       push hl
706
0276 : cd4902                   call __printhex
707
0279 : c1                       pop bc
708
                        ;       q = hval-q*16;
709
027a :                  cc10:
710
027a : 210000                   ld hl,0
711
027d : 39                       add hl,sp
712
027e : e5                       push hl
713
027f : 210600                   ld hl,6
714
0282 : 39                       add hl,sp
715
0283 : cd0d00                   call ccgint
716
0286 : e5                       push hl
717
0287 : 210400                   ld hl,4
718
028a : 39                       add hl,sp
719
028b : cd0d00                   call ccgint
720
028e : e5                       push hl
721
028f : 211000                   ld hl,16
722
0292 : d1                       pop de
723
0293 : cdb300                   call ccmult
724
0296 : d1                       pop de
725
0297 : cda000                   call ccsub
726
029a : d1                       pop de
727
AS80 Assembler for i8080-Z180 [1.11].                                Page   13
728
--------------------------------- HELLO.ASM ----------------------------------
729
 
730
029b : cd1500                   call ccpint
731
                        ;       if (q > 9)
732
029e : 210000                   ld hl,0
733
02a1 : 39                       add hl,sp
734
02a2 : cd0d00                   call ccgint
735
02a5 : e5                       push hl
736
02a6 : 210900                   ld hl,9
737
02a9 : d1                       pop de
738
02aa : cd3c00                   call ccgt
739
02ad : 7c                       ld a,h
740
02ae : b5                       or l
741
02af : cacf02                   jp z,cc11
742
                        ;               sendbyte('A'+q-10);
743
02b2 : 214100                   ld hl,65
744
02b5 : e5                       push hl
745
02b6 : 210200                   ld hl,2
746
02b9 : 39                       add hl,sp
747
02ba : cd0d00                   call ccgint
748
02bd : d1                       pop de
749
02be : 19                       add hl,de
750
02bf : e5                       push hl
751
02c0 : 210a00                   ld hl,10
752
02c3 : d1                       pop de
753
02c4 : cda000                   call ccsub
754
02c7 : e5                       push hl
755
02c8 : cd3101                   call __sendbyte
756
02cb : c1                       pop bc
757
                        ;       else
758
02cc : c3e102                   jp cc12
759
02cf :                  cc11:
760
                        ;               sendbyte('0'+q);
761
02cf : 213000                   ld hl,48
762
02d2 : e5                       push hl
763
02d3 : 210200                   ld hl,2
764
02d6 : 39                       add hl,sp
765
02d7 : cd0d00                   call ccgint
766
02da : d1                       pop de
767
02db : 19                       add hl,de
768
02dc : e5                       push hl
769
02dd : cd3101                   call __sendbyte
770
02e0 : c1                       pop bc
771
02e1 :                  cc12:
772
                        ;}
773
02e1 : c1                       pop bc
774
02e2 : c9                       ret
775
                        ;// program main routine
776
                        ;main()
777
02e3 :                  __main:
778
                        ;{
779
                        ;       // configure UART baud rate - set to 9600 for 30MHz
780
                        ;       // BAUD = round(//16) = round(30e6
781
                        ;       UBAUDL = 195;
782
02e3 : 21c300                   ld hl,195
783
02e6 : 7d                       ld a,l
784
02e7 : d381                     out (129),a
785
 
786
                        ;       UBAUDH = 0;
787
02e9 : 210000                   ld hl,0
788
02ec : 7d                       ld a,l
789
02ed : d382                     out (130),a
790
 
791
                        ;       // print message
792
AS80 Assembler for i8080-Z180 [1.11].                                Page   14
793
--------------------------------- HELLO.ASM ----------------------------------
794
 
795
                        ;       printstr("Hello World!!!"); nl();
796
02ef : 215c03                   ld hl,cc1+0
797
02f2 : e5                       push hl
798
02f3 : cd8301                   call __printstr
799
02f6 : c1                       pop bc
800
02f7 : cd7201                   call __nl
801
                        ;       printstr("Dec value: "); printdec(tstary[1]); nl();
802
02fa : 216b03                   ld hl,cc1+15
803
02fd : e5                       push hl
804
02fe : cd8301                   call __printstr
805
0301 : c1                       pop bc
806
0302 : 219f03                   ld hl,__tstary
807
0305 : e5                       push hl
808
0306 : 210100                   ld hl,1
809
0309 : 29                       add hl,hl
810
030a : d1                       pop de
811
030b : 19                       add hl,de
812
030c : cd0d00                   call ccgint
813
030f : e5                       push hl
814
0310 : cdb401                   call __printdec
815
0313 : c1                       pop bc
816
0314 : cd7201                   call __nl
817
                        ;       printstr("Hex value: 0x"); printhex(tstary[0]); nl()
818
0317 : 217703                   ld hl,cc1+27
819
031a : e5                       push hl
820
031b : cd8301                   call __printstr
821
031e : c1                       pop bc
822
031f : 219f03                   ld hl,__tstary
823
0322 : e5                       push hl
824
0323 : 210000                   ld hl,0
825
0326 : 29                       add hl,hl
826
0327 : d1                       pop de
827
0328 : 19                       add hl,de
828
0329 : cd0d00                   call ccgint
829
032c : e5                       push hl
830
032d : cd4902                   call __printhex
831
0330 : c1                       pop bc
832
0331 : cd7201                   call __nl
833
                        ;       printstr("Echoing received bytes: "); nl();
834
0334 : 218503                   ld hl,cc1+41
835
0337 : e5                       push hl
836
0338 : cd8301                   call __printstr
837
033b : c1                       pop bc
838
033c : cd7201                   call __nl
839
                        ;
840
                        ;       // loop forever
841
                        ;       while (1) {
842
033f :                  cc13:
843
033f : 210100                   ld hl,1
844
0342 : 7c                       ld a,h
845
0343 : b5                       or l
846
0344 : ca5b03                   jp z,cc14
847
                        ;               // check if a new byte was received
848
                        ;               if (getbyte())
849
0347 : cd4f01                   call __getbyte
850
034a : 7c                       ld a,h
851
034b : b5                       or l
852
034c : ca5803                   jp z,cc15
853
                        ;                       // echo the received byte to the UART
854
                        ;                       sendbyte(rxbyte);
855
034f : 3a9e03                   ld a,(__rxbyte)
856
0352 : cf                       call ccsxt
857
AS80 Assembler for i8080-Z180 [1.11].                                Page   15
858
--------------------------------- HELLO.ASM ----------------------------------
859
 
860
0353 : e5                       push hl
861
0354 : cd3101                   call __sendbyte
862
0357 : c1                       pop bc
863
                        ;       }
864
0358 :                  cc15:
865
0358 : c33f03                   jp cc13
866
035b :                  cc14:
867
                        ;}
868
035b : c9                       ret
869
                        ;//---------------------------------------------------
870
                        ;//                                             Th.. Th.. Th.. Thats all folks !!!
871
                        ;//---------------------------------------------------
872
035c :                  cc1:
873
035c : 48656c6c6f2057..         db 72,101,108,108,111,32,87,111,114,108
874
0366 : 64212121004465..         db 100,33,33,33,0,68,101,99,32,118
875
0370 : 616c75653a2000..         db 97,108,117,101,58,32,0,72,101,120
876
037a : 2076616c75653a..         db 32,118,97,108,117,101,58,32,48,120
877
0384 : 004563686f696e..         db 0,69,99,104,111,105,110,103,32,114
878
038e : 65636569766564..         db 101,99,101,105,118,101,100,32,98,121
879
0398 : 7465733a2000             db 116,101,115,58,32,0
880
039e :                  __rxbyte:
881
039e : 00                       ds 1
882
039f :                  __tstary:
883
039f : d2042e16                 db -46,4,46,22
884
 
885
                        ; --- End of Compilation ---
886
No errors in pass 2.

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.