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

Subversion Repositories light8080

[/] [light8080/] [trunk/] [c/] [HELLO.LST] - Rev 65

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

AS80 Assembler for i8080-Z180 [1.11].                                Page    1
--------------------------------- HELLO.ASM ----------------------------------

-------------------------------- Symbol Table --------------------------------

              Symbol   Value        Decimal

               ccand : $0029             41
               ccasl : $0099            153
               ccasr : $008b            139
             ccbcneg : $011c            284
               cccmp : $0056             86
           cccmpbcde : $012c            300
              cccmp1 : $0063             99
               cccom : $00ac            172
             ccdeneg : $0114            276
               ccdiv : $00d3            211
              ccdiv1 : $00e9            233
              ccdiv2 : $0100            256
              ccdiv3 : $0109            265
                cceq : $0030             48
             ccgchar : $0007              7
                ccge : $004a             74
              ccgint : $000d             13
                ccgt : $003c             60
                ccle : $0043             67
                cclt : $0050             80
              ccmult : $00b3            179
             ccmult1 : $00b8            184
                ccne : $0036             54
               ccneg : $00a7            167
                ccor : $001b             27
             ccpchar : $0012             18
              ccpint : $0015             21
              ccrdel : $0124            292
               ccsub : $00a0            160
               ccsxt : $0008              8
              ccucmp : $0080            128
               ccuge : $0066            102
               ccugt : $0072            114
               ccule : $0079            121
               ccult : $006c            108
               ccxor : $0022             34
                 cc1 : $035c            860
                cc10 : $027a            634
                cc11 : $02cf            719
                cc12 : $02e1            737
                cc13 : $033f            831
                cc14 : $035b            859
                cc15 : $0358            856
                 cc2 : $0131            305
                 cc3 : $0144            324
                 cc4 : $016d            365
                 cc5 : $0171            369
                 cc6 : $0183            387
                 cc7 : $01b3            435
                 cc8 : $01e3            483
                 cc9 : $0221            545
           __getbyte : $014f            335
              __main : $02e3            739
                __nl : $0172            370
            __outint : $01f0            496
          __printdec : $01b4            436
          __printhex : $0249            585
          __printstr : $0183            387
AS80 Assembler for i8080-Z180 [1.11].                                Page    2
--------------------------------- HELLO.ASM ----------------------------------

            __rxbyte : $039e            926
          __sendbyte : $0131            305
            __tstary : $039f            927
            __8080__ : $0001              1

62 labels used

770 lines read, no errors in pass 1.
AS80 Assembler for i8080-Z180 [1.11].                                Page    3
--------------------------------- HELLO.ASM ----------------------------------

                        ; <><><>   Small-C  V1.2  DOS--CP/M Cross Compiler   <
                        ; <><><><><>   CP/M Large String Space Version   <><><
                        ; <><><><><><><><><><>   By Ron Cain   <><><><><><><><
                        ;
                                code
0000 =                          org #0000
0000 : 21000c                   ld hl,3072
0003 : f9                       ld sp,hl
0004 : cde302                   call __main
                        ;//---------------------------------------------------
                        ;//     Project:                        light8080 SOC           WiCores Solutions 
                        ;//
                        ;//     File name:                      hello.c                                 (February 04, 2012)
                        ;//
                        ;//     Writer:                         Moti Litochevski 
                        ;//
                        ;//     Description:
                        ;//             This file contains a simple program written in Sm
                        ;//             the UART and then switches to echo received bytes
                        ;//
                        ;//     Revision History:
                        ;//
                        ;//     Rev <revnumber>                 <Date>                  <owner> 
                        ;//             <comment>
                        ;//---------------------------------------------------
                        ;#include ..\tools\c80\c80.lib
                        ;#asm
                        ;
                        ;-----------------------------------------------------
                        ;       Small-C  Run-time Librray
                        ;
                        ;       V4d     As of July 16, 1980 (gtf)
                        ;                  Added EXIT() function
                        ;-----------------------------------------------------
                        ;
                        ;Fetch a single byte from the address in HL and sign e
0007 :                  ccgchar: 
0007 : 7e                       ld a,(hl)
0008 :                  ccsxt:  
0008 : 6f                       ld l,a
0009 : 07                       rlca
000a : 9f                       sbc     a
000b : 67                       ld      h,a
000c : c9                       ret
                        ;Fetch a full 16-bit integer from the address in HL
000d :                  ccgint: 
000d : 7e                       ld a,(hl)
000e : 23                       inc     hl
000f : 66                       ld      h,(hl)
0010 : 6f                       ld l,a
0011 : c9                       ret
                        ;Store a single byte from HL at the address in DE
0012 :                  ccpchar: 
0012 : 7d                       ld      a,l
0013 : 12                       ld      (de),a
0014 : c9                       ret
                        ;Store a 16-bit integer in HL at the address in DE
0015 :                  ccpint: 
0015 : 7d                       ld      a,l
0016 : 12                       ld      (de),a
0017 : 13                       inc     de
0018 : 7c                       ld      a,h
AS80 Assembler for i8080-Z180 [1.11].                                Page    4
--------------------------------- HELLO.ASM ----------------------------------

0019 : 12                       ld      (de),a
001a : c9                       ret
                        ;Inclusive "or" HL and DE into HL
001b :                  ccor:   
001b : 7d                       ld      a,l
001c : b3                       or      e
001d : 6f                       ld l,a
001e : 7c                       ld      a,h
001f : b2                       or      d
0020 : 67                       ld      h,a
0021 : c9                       ret
                        ;Exclusive "or" HL and DE into HL
0022 :                  ccxor:  
0022 : 7d                       ld      a,l
0023 : ab                       xor     e
0024 : 6f                       ld l,a
0025 : 7c                       ld      a,h
0026 : aa                       xor     d
0027 : 67                       ld      h,a
0028 : c9                       ret
                        ;"And" HL and DE into HL
0029 :                  ccand:  
0029 : 7d                       ld      a,l
002a : a3                       and     e
002b : 6f                       ld l,a
002c : 7c                       ld      a,h
002d : a2                       and     d
002e : 67                       ld      h,a
002f : c9                       ret
                        ;Test if HL = DE and set HL = 1 if true else 0
0030 :                  cceq:   
0030 : cd5600                   call cccmp
0033 : c8                       ret z
0034 : 2b                       dec     hl
0035 : c9                       ret
                        ;Test if DE ~= HL
0036 :                  ccne:   
0036 : cd5600                   call cccmp
0039 : c0                       ret nz
003a : 2b                       dec     hl
003b : c9                       ret
                        ;Test if DE > HL (signed)
003c :                  ccgt:   
003c : eb                       ex de,hl
003d : cd5600                   call cccmp
0040 : d8                       ret c
0041 : 2b                       dec     hl
0042 : c9                       ret
                        ;Test if DE <= HL (signed)
0043 :                  ccle:   
0043 : cd5600                   call cccmp
0046 : c8                       ret z
0047 : d8                       ret c
0048 : 2b                       dec hl
0049 : c9                       ret
                        ;Test if DE >= HL (signed)
004a :                  ccge:   
004a : cd5600                   call cccmp
004d : d0                       ret nc
004e : 2b                       dec hl
004f : c9                       ret
                        ;Test if DE < HL (signed)
AS80 Assembler for i8080-Z180 [1.11].                                Page    5
--------------------------------- HELLO.ASM ----------------------------------

0050 :                  cclt:   
0050 : cd5600                   call cccmp
0053 : d8                       ret c
0054 : 2b                       dec hl
0055 : c9                       ret
                        ; Signed compare of DE and HL
                        ; Performs DE - HL and sets the conditions:
                        ;       Carry reflects sign of difference (set means DE < HL
                        ;       Zero/non-zero set according to equality.
0056 :                  cccmp:
0056 : 7b                       ld      a,e
0057 : 95                       sub     l
0058 : 5f                       ld      e,a
0059 : 7a                       ld      a,d
005a : 9c                       sbc     h
005b : 210100                   ld      hl,1
005e : fa6300                   jp      m,cccmp1
0061 : b3                       or      e       ;"OR" resets carry
0062 : c9                       ret
0063 :                  cccmp1: 
0063 : b3                       or      e
0064 : 37                       scf             ;set carry to signal minus
0065 : c9                       ret
                        ;Test if DE >= HL (unsigned)
0066 :                  ccuge:  
0066 : cd8000                   call ccucmp
0069 : d0                       ret nc
006a : 2b                       dec hl
006b : c9                       ret     
                        ;Test if DE < HL (unsigned)
006c :                  ccult:  
006c : cd8000                   call ccucmp
006f : d8                       ret c
0070 : 2b                       dec hl
0071 : c9                       ret
                        ;Test if DE > HL (unsigned)
0072 :                  ccugt:  
0072 : eb                       ex de,hl
0073 : cd8000                   call ccucmp
0076 : d8                       ret c
0077 : 2b                       dec hl
0078 : c9                       ret
                        ;Test if DE <= HL (unsigned)
0079 :                  ccule:  
0079 : cd8000                   call ccucmp
007c : c8                       ret z
007d : d8                       ret c
007e : 2b                       dec hl
007f : c9                       ret
                        ;Routine to perform unsigned compare
                        ;carry set if DE < HL
                        ;zero/nonzero set accordingly
0080 :                  ccucmp: 
0080 : 7a                       ld      a,d
0081 : bc                       cp      h
0082 : c28700                   jp      nz,$+5
0085 : 7b                       ld      a,e
0086 : bd                       cp      l
0087 : 210100                   ld      hl,1
008a : c9                       ret
                        ;Shift DE arithmetically right by HL and return in HL
008b :                  ccasr:  
AS80 Assembler for i8080-Z180 [1.11].                                Page    6
--------------------------------- HELLO.ASM ----------------------------------

008b : eb                       ex      de,hl
008c : 7c                       ld      a,h
008d : 17                       rla
008e : 7c                       ld      a,h
008f : 1f                       rra
0090 : 67                       ld      h,a
0091 : 7d                       ld      a,l
0092 : 1f                       rra
0093 : 6f                       ld      l,a
0094 : 1d                       dec     e
0095 : c28c00                   jp      nz,ccasr+1
0098 : c9                       ret
                        ;Shift DE arithmetically left by HL and return in HL
0099 :                  ccasl:  
0099 : eb                       ex      de,hl
009a : 29                       add     hl,hl
009b : 1d                       dec     e
009c : c29a00                   jp      nz,ccasl+1
009f : c9                       ret
                        ;Subtract HL from DE and return in HL
00a0 :                  ccsub:  
00a0 : 7b                       ld      a,e
00a1 : 95                       sub     l
00a2 : 6f                       ld l,a
00a3 : 7a                       ld      a,d
00a4 : 9c                       sbc     h
00a5 : 67                       ld      h,a
00a6 : c9                       ret
                        ;Form the two's complement of HL
00a7 :                  ccneg:  
00a7 : cdac00                   call cccom
00aa : 23                       inc     hl
00ab : c9                       ret
                        ;Form the one's complement of HL
00ac :                  cccom:  
00ac : 7c                       ld      a,h
00ad : 2f                       cpl
00ae : 67                       ld      h,a
00af : 7d                       ld      a,l
00b0 : 2f                       cpl
00b1 : 6f                       ld l,a
00b2 : c9                       ret
                        ;Multiply DE by HL and return in HL
00b3 :                  ccmult: 
00b3 : 44                       ld      b,h
00b4 : 4d                       ld      c,l
00b5 : 210000                   ld      hl,0
00b8 :                  ccmult1: 
00b8 : 79                       ld      a,c
00b9 : 0f                       rrca
00ba : d2be00                   jp      nc,$+4
00bd : 19                       add     hl,de
00be : af                       xor     a
00bf : 78                       ld      a,b
00c0 : 1f                       rra
00c1 : 47                       ld      b,a
00c2 : 79                       ld      a,c
00c3 : 1f                       rra
00c4 : 4f                       ld      c,a
00c5 : b0                       or      b
00c6 : c8                       ret z
00c7 : af                       xor     a
AS80 Assembler for i8080-Z180 [1.11].                                Page    7
--------------------------------- HELLO.ASM ----------------------------------

00c8 : 7b                       ld      a,e
00c9 : 17                       rla
00ca : 5f                       ld      e,a
00cb : 7a                       ld      a,d
00cc : 17                       rla
00cd : 57                       ld      d,a
00ce : b3                       or      e
00cf : c8                       ret z
00d0 : c3b800                   jp      ccmult1
                        ;Divide DE by HL and return quotient in HL, remainder 
00d3 :                  ccdiv:  
00d3 : 44                       ld      b,h
00d4 : 4d                       ld      c,l
00d5 : 7a                       ld      a,d
00d6 : a8                       xor     b
00d7 : f5                       push af
00d8 : 7a                       ld      a,d
00d9 : b7                       or      a
00da : fc1401                   call m,ccdeneg
00dd : 78                       ld      a,b
00de : b7                       or      a
00df : fc1c01                   call m,ccbcneg
00e2 : 3e10                     ld      a,16
00e4 : f5                       push af 
00e5 : eb                       ex      de,hl
00e6 : 110000                   ld      de,0
00e9 :                  ccdiv1: 
00e9 : 29                       add hl,hl 
00ea : cd2401                   call ccrdel
00ed : ca0001                   jp      z,ccdiv2
00f0 : cd2c01                   call cccmpbcde
00f3 : fa0001                   jp      m,ccdiv2
00f6 : 7d                       ld      a,l
00f7 : f601                     or      1
00f9 : 6f                       ld l,a
00fa : 7b                       ld      a,e
00fb : 91                       sub     c
00fc : 5f                       ld      e,a
00fd : 7a                       ld      a,d
00fe : 98                       sbc     b
00ff : 57                       ld      d,a
0100 :                  ccdiv2: 
0100 : f1                       pop af
0101 : 3d                       dec     a
0102 : ca0901                   jp      z,ccdiv3
0105 : f5                       push af
0106 : c3e900                   jp      ccdiv1
0109 :                  ccdiv3: 
0109 : f1                       pop af
010a : f0                       ret     p
010b : cd1401                   call ccdeneg
010e : eb                       ex de,hl
010f : cd1401                   call ccdeneg
0112 : eb                       ex de,hl
0113 : c9                       ret
0114 :                  ccdeneg: 
0114 : 7a                       ld      a,d
0115 : 2f                       cpl
0116 : 57                       ld      d,a
0117 : 7b                       ld      a,e
0118 : 2f                       cpl
0119 : 5f                       ld      e,a
AS80 Assembler for i8080-Z180 [1.11].                                Page    8
--------------------------------- HELLO.ASM ----------------------------------

011a : 13                       inc     de
011b : c9                       ret
011c :                  ccbcneg: 
011c : 78                       ld      a,b
011d : 2f                       cpl
011e : 47                       ld      b,a
011f : 79                       ld      a,c
0120 : 2f                       cpl
0121 : 4f                       ld      c,a
0122 : 03                       inc     bc
0123 : c9                       ret
0124 :                  ccrdel: 
0124 : 7b                       ld      a,e
0125 : 17                       rla
0126 : 5f                       ld      e,a
0127 : 7a                       ld      a,d
0128 : 17                       rla
0129 : 57                       ld      d,a
012a : b3                       or      e
012b : c9                       ret
012c :                  cccmpbcde: 
012c : 7b                       ld      a,e
012d : 91                       sub     c
012e : 7a                       ld      a,d
012f : 98                       sbc     b
0130 : c9                       ret
                        ;// UART IO registers 
                        ;port (128) UDATA;              // uart data register used for bot
                        ;port (129) UBAUDL;             // low byte of baud rate register
                        ;port (130) UBAUDH;             // low byte of baud rate register
                        ;port (131) USTAT;              // uart status register 
                        ;// digital IO ports registers 
                        ;port (132) P1REG;      // output port1 - used as firs
                        ;port (133) P2REG;              // output port2 - used as low digi
                        ;port (134) P3REG;              // output port3 - used as high dig
                        ;port (135) P4REG;              // output port4 
                        ;// simulation end register 
                        ;// writing any value to this port will end the verilo
                        ;// test bench. 
                        ;port (255) SIMEND;
                        ;// registers bit fields definition 
                        ;// uart status register decoding 
                        ;#define UTXBUSY                1
                        ;#define URXFULL                16
                        ;// globals 
                        ;char rxbyte;           // byte received from the uart 
                        ;int tstary[2] = {1234, 5678};
                        ;//---------------------------------------------------
                        ;// send a single byte to the UART 
                        ;sendbyte(by) 
0131 :                  __sendbyte:
                        ;char by;
                        ;{
                        ;       while (USTAT & UTXBUSY);
0131 :                  cc2:
0131 : db83                     in a,(131)
0133 : cf                       call ccsxt
0134 : e5                       push hl
0135 : 210100                   ld hl,1
0138 : d1                       pop de
0139 : cd2900                   call ccand
013c : 7c                       ld a,h
AS80 Assembler for i8080-Z180 [1.11].                                Page    9
--------------------------------- HELLO.ASM ----------------------------------

013d : b5                       or l
013e : ca4401                   jp z,cc3
0141 : c33101                   jp cc2
0144 :                  cc3:
                        ;       UDATA = by;
0144 : 210200                   ld hl,2
0147 : 39                       add hl,sp
0148 : cd0700                   call ccgchar
014b : 7d                       ld a,l
014c : d380                     out (128),a
                        
                        ;}
014e : c9                       ret
                        ;// check if a byte was received by the uart 
                        ;getbyte()
014f :                  __getbyte:
                        ;{
                        ;       if (USTAT & URXFULL) {
014f : db83                     in a,(131)
0151 : cf                       call ccsxt
0152 : e5                       push hl
0153 : 211000                   ld hl,16
0156 : d1                       pop de
0157 : cd2900                   call ccand
015a : 7c                       ld a,h
015b : b5                       or l
015c : ca6d01                   jp z,cc4
                        ;               rxbyte = UDATA;
015f : db80                     in a,(128)
0161 : cf                       call ccsxt
0162 : 7d                       ld a,l
0163 : 329e03                   ld (__rxbyte),a
                        ;               return 1;
0166 : 210100                   ld hl,1
0169 : c9                       ret
                        ;       } 
                        ;       else 
016a : c37101                   jp cc5
016d :                  cc4:
                        ;               return 0;
016d : 210000                   ld hl,0
0170 : c9                       ret
0171 :                  cc5:
                        ;}
0171 : c9                       ret
                        ;// send new line to the UART 
                        ;nl()
0172 :                  __nl:
                        ;{
                        ;       sendbyte(13);
0172 : 210d00                   ld hl,13
0175 : e5                       push hl
0176 : cd3101                   call __sendbyte
0179 : c1                       pop bc
                        ;       sendbyte(10);
017a : 210a00                   ld hl,10
017d : e5                       push hl
017e : cd3101                   call __sendbyte
0181 : c1                       pop bc
                        ;}
0182 : c9                       ret
                        ;// sends a string to the UART 
AS80 Assembler for i8080-Z180 [1.11].                                Page   10
--------------------------------- HELLO.ASM ----------------------------------

                        ;printstr(sptr)
0183 :                  __printstr:
                        ;char *sptr;
                        ;{
                        ;       while (*sptr != 0) 
0183 :                  cc6:
0183 : 210200                   ld hl,2
0186 : 39                       add hl,sp
0187 : cd0d00                   call ccgint
018a : cd0700                   call ccgchar
018d : e5                       push hl
018e : 210000                   ld hl,0
0191 : d1                       pop de
0192 : cd3600                   call ccne
0195 : 7c                       ld a,h
0196 : b5                       or l
0197 : cab301                   jp z,cc7
                        ;               sendbyte(*sptr++);
019a : 210200                   ld hl,2
019d : 39                       add hl,sp
019e : e5                       push hl
019f : cd0d00                   call ccgint
01a2 : 23                       inc hl
01a3 : d1                       pop de
01a4 : cd1500                   call ccpint
01a7 : 2b                       dec hl
01a8 : cd0700                   call ccgchar
01ab : e5                       push hl
01ac : cd3101                   call __sendbyte
01af : c1                       pop bc
01b0 : c38301                   jp cc6
01b3 :                  cc7:
                        ;}
01b3 : c9                       ret
                        ;// sends a decimal value to the UART 
                        ;printdec(dval) 
01b4 :                  __printdec:
                        ;int dval;
                        ;{
                        ;       if (dval<0) {
01b4 : 210200                   ld hl,2
01b7 : 39                       add hl,sp
01b8 : cd0d00                   call ccgint
01bb : e5                       push hl
01bc : 210000                   ld hl,0
01bf : d1                       pop de
01c0 : cd5000                   call cclt
01c3 : 7c                       ld a,h
01c4 : b5                       or l
01c5 : cae301                   jp z,cc8
                        ;               sendbyte('-');
01c8 : 212d00                   ld hl,45
01cb : e5                       push hl
01cc : cd3101                   call __sendbyte
01cf : c1                       pop bc
                        ;               dval = -dval;
01d0 : 210200                   ld hl,2
01d3 : 39                       add hl,sp
01d4 : e5                       push hl
01d5 : 210400                   ld hl,4
01d8 : 39                       add hl,sp
01d9 : cd0d00                   call ccgint
AS80 Assembler for i8080-Z180 [1.11].                                Page   11
--------------------------------- HELLO.ASM ----------------------------------

01dc : cda700                   call ccneg
01df : d1                       pop de
01e0 : cd1500                   call ccpint
                        ;       }
                        ;       outint(dval);
01e3 :                  cc8:
01e3 : 210200                   ld hl,2
01e6 : 39                       add hl,sp
01e7 : cd0d00                   call ccgint
01ea : e5                       push hl
01eb : cdf001                   call __outint
01ee : c1                       pop bc
                        ;}
01ef : c9                       ret
                        ;// function copied from c80dos.c 
                        ;outint(n)      
01f0 :                  __outint:
                        ;int n;
                        ;{      
                        ;int q;
01f0 : c5                       push bc
                        ;       q = n/10;
01f1 : 210000                   ld hl,0
01f4 : 39                       add hl,sp
01f5 : e5                       push hl
01f6 : 210600                   ld hl,6
01f9 : 39                       add hl,sp
01fa : cd0d00                   call ccgint
01fd : e5                       push hl
01fe : 210a00                   ld hl,10
0201 : d1                       pop de
0202 : cdd300                   call ccdiv
0205 : d1                       pop de
0206 : cd1500                   call ccpint
                        ;       if (q) outint(q);
0209 : 210000                   ld hl,0
020c : 39                       add hl,sp
020d : cd0d00                   call ccgint
0210 : 7c                       ld a,h
0211 : b5                       or l
0212 : ca2102                   jp z,cc9
0215 : 210000                   ld hl,0
0218 : 39                       add hl,sp
0219 : cd0d00                   call ccgint
021c : e5                       push hl
021d : cdf001                   call __outint
0220 : c1                       pop bc
                        ;       sendbyte('0'+(n-q*10));
0221 :                  cc9:
0221 : 213000                   ld hl,48
0224 : e5                       push hl
0225 : 210600                   ld hl,6
0228 : 39                       add hl,sp
0229 : cd0d00                   call ccgint
022c : e5                       push hl
022d : 210400                   ld hl,4
0230 : 39                       add hl,sp
0231 : cd0d00                   call ccgint
0234 : e5                       push hl
0235 : 210a00                   ld hl,10
0238 : d1                       pop de
0239 : cdb300                   call ccmult
AS80 Assembler for i8080-Z180 [1.11].                                Page   12
--------------------------------- HELLO.ASM ----------------------------------

023c : d1                       pop de
023d : cda000                   call ccsub
0240 : d1                       pop de
0241 : 19                       add hl,de
0242 : e5                       push hl
0243 : cd3101                   call __sendbyte
0246 : c1                       pop bc
                        ;}
0247 : c1                       pop bc
0248 : c9                       ret
                        ;// sends a hexadecimal value to the UART 
                        ;printhex(hval) 
0249 :                  __printhex:
                        ;int hval;
                        ;{      
                        ;int q;
0249 : c5                       push bc
                        ;       q = hval/16;
024a : 210000                   ld hl,0
024d : 39                       add hl,sp
024e : e5                       push hl
024f : 210600                   ld hl,6
0252 : 39                       add hl,sp
0253 : cd0d00                   call ccgint
0256 : e5                       push hl
0257 : 211000                   ld hl,16
025a : d1                       pop de
025b : cdd300                   call ccdiv
025e : d1                       pop de
025f : cd1500                   call ccpint
                        ;       if (q) printhex(q);
0262 : 210000                   ld hl,0
0265 : 39                       add hl,sp
0266 : cd0d00                   call ccgint
0269 : 7c                       ld a,h
026a : b5                       or l
026b : ca7a02                   jp z,cc10
026e : 210000                   ld hl,0
0271 : 39                       add hl,sp
0272 : cd0d00                   call ccgint
0275 : e5                       push hl
0276 : cd4902                   call __printhex
0279 : c1                       pop bc
                        ;       q = hval-q*16;
027a :                  cc10:
027a : 210000                   ld hl,0
027d : 39                       add hl,sp
027e : e5                       push hl
027f : 210600                   ld hl,6
0282 : 39                       add hl,sp
0283 : cd0d00                   call ccgint
0286 : e5                       push hl
0287 : 210400                   ld hl,4
028a : 39                       add hl,sp
028b : cd0d00                   call ccgint
028e : e5                       push hl
028f : 211000                   ld hl,16
0292 : d1                       pop de
0293 : cdb300                   call ccmult
0296 : d1                       pop de
0297 : cda000                   call ccsub
029a : d1                       pop de
AS80 Assembler for i8080-Z180 [1.11].                                Page   13
--------------------------------- HELLO.ASM ----------------------------------

029b : cd1500                   call ccpint
                        ;       if (q > 9)
029e : 210000                   ld hl,0
02a1 : 39                       add hl,sp
02a2 : cd0d00                   call ccgint
02a5 : e5                       push hl
02a6 : 210900                   ld hl,9
02a9 : d1                       pop de
02aa : cd3c00                   call ccgt
02ad : 7c                       ld a,h
02ae : b5                       or l
02af : cacf02                   jp z,cc11
                        ;               sendbyte('A'+q-10);
02b2 : 214100                   ld hl,65
02b5 : e5                       push hl
02b6 : 210200                   ld hl,2
02b9 : 39                       add hl,sp
02ba : cd0d00                   call ccgint
02bd : d1                       pop de
02be : 19                       add hl,de
02bf : e5                       push hl
02c0 : 210a00                   ld hl,10
02c3 : d1                       pop de
02c4 : cda000                   call ccsub
02c7 : e5                       push hl
02c8 : cd3101                   call __sendbyte
02cb : c1                       pop bc
                        ;       else 
02cc : c3e102                   jp cc12
02cf :                  cc11:
                        ;               sendbyte('0'+q);
02cf : 213000                   ld hl,48
02d2 : e5                       push hl
02d3 : 210200                   ld hl,2
02d6 : 39                       add hl,sp
02d7 : cd0d00                   call ccgint
02da : d1                       pop de
02db : 19                       add hl,de
02dc : e5                       push hl
02dd : cd3101                   call __sendbyte
02e0 : c1                       pop bc
02e1 :                  cc12:
                        ;}
02e1 : c1                       pop bc
02e2 : c9                       ret
                        ;// program main routine 
                        ;main()
02e3 :                  __main:
                        ;{
                        ;       // configure UART baud rate - set to 9600 for 30MHz 
                        ;       // BAUD = round(<clock>/<baud rate>/16) = round(30e6
                        ;       UBAUDL = 195;
02e3 : 21c300                   ld hl,195
02e6 : 7d                       ld a,l
02e7 : d381                     out (129),a
                        
                        ;       UBAUDH = 0;
02e9 : 210000                   ld hl,0
02ec : 7d                       ld a,l
02ed : d382                     out (130),a
                        
                        ;       // print message 
AS80 Assembler for i8080-Z180 [1.11].                                Page   14
--------------------------------- HELLO.ASM ----------------------------------

                        ;       printstr("Hello World!!!"); nl();
02ef : 215c03                   ld hl,cc1+0
02f2 : e5                       push hl
02f3 : cd8301                   call __printstr
02f6 : c1                       pop bc
02f7 : cd7201                   call __nl
                        ;       printstr("Dec value: "); printdec(tstary[1]); nl();
02fa : 216b03                   ld hl,cc1+15
02fd : e5                       push hl
02fe : cd8301                   call __printstr
0301 : c1                       pop bc
0302 : 219f03                   ld hl,__tstary
0305 : e5                       push hl
0306 : 210100                   ld hl,1
0309 : 29                       add hl,hl
030a : d1                       pop de
030b : 19                       add hl,de
030c : cd0d00                   call ccgint
030f : e5                       push hl
0310 : cdb401                   call __printdec
0313 : c1                       pop bc
0314 : cd7201                   call __nl
                        ;       printstr("Hex value: 0x"); printhex(tstary[0]); nl()
0317 : 217703                   ld hl,cc1+27
031a : e5                       push hl
031b : cd8301                   call __printstr
031e : c1                       pop bc
031f : 219f03                   ld hl,__tstary
0322 : e5                       push hl
0323 : 210000                   ld hl,0
0326 : 29                       add hl,hl
0327 : d1                       pop de
0328 : 19                       add hl,de
0329 : cd0d00                   call ccgint
032c : e5                       push hl
032d : cd4902                   call __printhex
0330 : c1                       pop bc
0331 : cd7201                   call __nl
                        ;       printstr("Echoing received bytes: "); nl();
0334 : 218503                   ld hl,cc1+41
0337 : e5                       push hl
0338 : cd8301                   call __printstr
033b : c1                       pop bc
033c : cd7201                   call __nl
                        ;       
                        ;       // loop forever 
                        ;       while (1) {
033f :                  cc13:
033f : 210100                   ld hl,1
0342 : 7c                       ld a,h
0343 : b5                       or l
0344 : ca5b03                   jp z,cc14
                        ;               // check if a new byte was received 
                        ;               if (getbyte()) 
0347 : cd4f01                   call __getbyte
034a : 7c                       ld a,h
034b : b5                       or l
034c : ca5803                   jp z,cc15
                        ;                       // echo the received byte to the UART 
                        ;                       sendbyte(rxbyte); 
034f : 3a9e03                   ld a,(__rxbyte)
0352 : cf                       call ccsxt
AS80 Assembler for i8080-Z180 [1.11].                                Page   15
--------------------------------- HELLO.ASM ----------------------------------

0353 : e5                       push hl
0354 : cd3101                   call __sendbyte
0357 : c1                       pop bc
                        ;       }
0358 :                  cc15:
0358 : c33f03                   jp cc13
035b :                  cc14:
                        ;}
035b : c9                       ret
                        ;//---------------------------------------------------
                        ;//                                             Th.. Th.. Th.. Thats all folks !!!
                        ;//---------------------------------------------------
035c :                  cc1:
035c : 48656c6c6f2057..         db 72,101,108,108,111,32,87,111,114,108
0366 : 64212121004465..         db 100,33,33,33,0,68,101,99,32,118
0370 : 616c75653a2000..         db 97,108,117,101,58,32,0,72,101,120
037a : 2076616c75653a..         db 32,118,97,108,117,101,58,32,48,120
0384 : 004563686f696e..         db 0,69,99,104,111,105,110,103,32,114
038e : 65636569766564..         db 101,99,101,105,118,101,100,32,98,121
0398 : 7465733a2000             db 116,101,115,58,32,0
039e :                  __rxbyte:
039e : 00                       ds 1
039f :                  __tstary:
039f : d2042e16                 db -46,4,46,22
                        
                        ; --- End of Compilation ---
No errors in pass 2.

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

powered by: WebSVN 2.1.0

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