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

Subversion Repositories cpu8080

[/] [cpu8080/] [trunk/] [project/] [test.lst] - Diff between revs 11 and 18

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 11 Rev 18
Line 1... Line 1...
           0: datao = 8'h3E;

           1: datao = 8'h00;
 
           2: datao = 8'hD3;
                                                                 test                                                           Page 1
           3: datao = 8'h03;
 
           4: datao = 8'h3E;
 
           5: datao = 8'hFD;
      Program  Variable Code              C Line Source
           6: datao = 8'hD3;
      -----------------------------------------------------------------------------------------------------------------------------------
           7: datao = 8'h02;
      00000000 00000000                        1 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
           8: datao = 8'h3E;
      00000000 00000000                        2 !
           9: datao = 8'h04;
      00000000 00000000                        3 ! Code for the test bench. This gets dumped and placed into testbench.v as byte
          10: datao = 8'hD3;
      00000000 00000000                        4 ! definitions.
          11: datao = 8'h05;
      00000000 00000000                        5 !
          12: datao = 8'h3E;
      00000000 00000000                        6
          13: datao = 8'hFD;
      00000000 00000000                        7 !
          14: datao = 8'hD3;
      00000000 00000000                        8 ! Select controller defines
          15: datao = 8'h04;
      00000000 00000000                        9 !
          16: datao = 8'h3E;
      00000000 00000000                       10 selmain: equ    $00             ! offset of main control register
          17: datao = 8'h00;
      00000000 00000000                       11 sel1msk: equ    $02             ! offset of select 1 mask
          18: datao = 8'hD3;
      00000000 00000000                       12 sel1cmp: equ    $03             ! offset of select 1 compare
          19: datao = 8'h00;
      00000000 00000000                       13 sel2msk: equ    $04             ! offset of select 1 mask
          20: datao = 8'h31;
      00000000 00000000                       14 sel2cmp: equ    $05             ! offset of select 1 compare
          21: datao = 8'h00;
      00000000 00000000                       15 sel3msk: equ    $06             ! offset of select 1 mask
          22: datao = 8'h08;
      00000000 00000000                       16 sel3cmp: equ    $07             ! offset of select 1 compare
          23: datao = 8'h3E;
      00000000 00000000                       17 sel4msk: equ    $08             ! offset of select 1 mask
          24: datao = 8'h20;
      00000000 00000000                       18 sel4cmp: equ    $09             ! offset of select 1 compare
          25: datao = 8'hD3;
      00000000 00000000                       19 !
          26: datao = 8'h09;
      00000000 00000000                       20 ! bits
          27: datao = 8'h3E;
      00000000 00000000                       21 !
          28: datao = 8'hFF;
      00000000 00000000                       22 selenb:  equ    $01             ! enable select
          29: datao = 8'hD3;
      00000000 00000000                       23 selio:   equ    $02             ! I/O address or memory
          30: datao = 8'h08;
      00000000 00000000                       24
          31: datao = 8'h21;
      00000000 00000000                       25 !
          32: datao = 8'h3B;
      00000000 00000000                       26 ! Note: select 1 is ROM, 2, is RAM, 3 is interrupt controller, 4 is serial I/O.
          33: datao = 8'h00;
      00000000 00000000                       27 !
          34: datao = 8'h7E;
      00000000 00000000                       28
          35: datao = 8'h23;
      00000000 00000000                       29 !
          36: datao = 8'hB7;
      00000000 00000000                       30 ! Where to place ROM and RAM for this test
          37: datao = 8'hCA;
      00000000 00000000                       31 !
          38: datao = 8'h2E;
      00000000 00000000                       32 rombas: equ     $0000
          39: datao = 8'h00;
      00000000 00000000                       33 rambas: equ     rombas+1024
          40: datao = 8'hCD;
      00000000 00000000                       34 !
          41: datao = 8'h2F;
      00000000 00000000                       35 ! Interrupt controller defines
          42: datao = 8'h00;
      00000000 00000000                       36 !
          43: datao = 8'hC3;
      00000000 00000000                       37 intbas: equ     $10
          44: datao = 8'h22;
      00000000 00000000                       38 intmsk: equ     intbas+$00      ! mask
          45: datao = 8'h00;
      00000000 00000000                       39 intsts: equ     intbas+$01      ! status
          46: datao = 8'h76;
      00000000 00000000                       40 intact: equ     intbas+$02      ! active interrupt
          47: datao = 8'hF5;
      00000000 00000000                       41 intpol: equ     intbas+$03      ! polarity select
          48: datao = 8'hDB;
      00000000 00000000                       42 intedg: equ     intbas+$04      ! edge/level select
          49: datao = 8'h20;
      00000000 00000000                       43 intvec: equ     intbas+$05      ! vector base page
          50: datao = 8'hE6;
      00000000 00000000                       44 !
          51: datao = 8'h80;
      00000000 00000000                       45 ! Mits Serial I/O card
          52: datao = 8'hC2;
      00000000 00000000                       46 !
          53: datao = 8'h30;
      00000000 00000000                       47 siobas: equ     $20
          54: datao = 8'h00;
      00000000 00000000                       48 sioctl: equ     siobas+$00      ! control register
          55: datao = 8'hF1;
      00000000 00000000                       49 siodat: equ     siobas+$01      ! data
          56: datao = 8'hD3;
      00000000 00000000                       50
          57: datao = 8'h21;
      00000000 00000000                       51 !
          58: datao = 8'hC9;
      00000000 00000000                       52 ! Set up selectors
          59: datao = 8'h48;
      00000000 00000000                       53 !
          60: datao = 8'h45;
      00000000 00000000                       54
          61: datao = 8'h4C;
      00000000 00000000                       55 !
          62: datao = 8'h4C;
      00000000 00000000                       56 ! ROM
          63: datao = 8'h4F;
      00000000 00000000                       57 !
          64: datao = 8'h2C;
      00000000 00000000 3E 00                 58         mvi     a,rombas shr 8  ! enable select 1 to 1kb at base
          65: datao = 8'h20;
      00000002 00000000 D3 03                 59         out     sel1cmp
          66: datao = 8'h46;
      00000004 00000000 3E FD                 60         mvi     a,($fc00 shr 8) or selenb
          67: datao = 8'h50;
      00000006 00000000 D3 02                 61         out     sel1msk
          68: datao = 8'h47;
      00000008 00000000                       62 !
          69: datao = 8'h41;
      00000008 00000000                       63 ! RAM
          70: datao = 8'h20;
      00000008 00000000                       64 !
          71: datao = 8'h57;
      00000008 00000000 3E 04                 65         mvi     a,rambas shr 8  ! enable select 2 to 1kb at base
          72: datao = 8'h4F;
      0000000A 00000000 D3 05                 66         out     sel2cmp
          73: datao = 8'h52;
      0000000C 00000000 3E FD                 67         mvi     a,($fc00 shr 8) or selenb
          74: datao = 8'h4C;
      0000000E 00000000 D3 04                 68         out     sel2msk
          75: datao = 8'h44;
      00000010 00000000                       69 !
          76: datao = 8'h0D;
      00000010 00000000                       70 ! ROM and RAM set up, exit bootstrap mode
          77: datao = 8'h0A;
      00000010 00000000                       71 !
          78: datao = 8'h00;
      00000010 00000000 3E 00                 72         mvi     a,$00           ! exit bootstrap mode
 
      00000012 00000000 D3 00                 73         out     selmain
 
      00000014 00000000                       74 !
 
      00000014 00000000 31 00 08              75         lxi     sp,rambas+1024  ! set stack to top of ram
 
      00000017 00000000                       76 !
 
      00000017 00000000                       77 ! Serial I/O
 
      00000017 00000000                       78 !
 
      00000017 00000000 3E 20                 79         mvi     a,siobas        ! enable interrupt controller for 4 addresses
 
      00000019 00000000 D3 09                 80         out     sel4cmp
 
      0000001B 00000000 3E FF                 81         mvi     a,$fc or selio or selenb
 
      0000001D 00000000 D3 08                 82         out     sel4msk
 
      0000001F 00000000                       83 !
 
      0000001F 00000000                       84 ! Print "hello, world" and stop
 
      0000001F 00000000                       85 !
 
      0000001F 00000000 21 00 00              86         lxi     h,helstr        ! index string
 

 
 
 
                                                                 test                                                           Page 2
 
 
 
 
 
      Program  Variable Code              C Line Source
 
      -----------------------------------------------------------------------------------------------------------------------------------
 
      00000022 00000000                       87 loop:
 
      00000022 00000000 7E                    88         mov     a,m             ! get character
 
      00000023 00000000 23                    89         inx     h               ! next character
 
      00000024 00000000 B7                    90         ora     a               ! check end of string
 
      00000025 00000000 CA 00 00              91         jz      endstr          ! yes, skip
 
      00000028 00000000 CD 00 00              92         call    wrtout          ! output character
 
      0000002B 00000000 C3 22 00              93         jmp     loop            ! loop next character
 
      0000002E 00000000                       94 endstr:
 
      0000002E 00000000                       95 !
 
      0000002E 00000000                       96 ! Copy characters from input to output
 
      0000002E 00000000                       97 !
 
      0000002E 00000000                       98 echo:
 
      0000002E 00000000 DB 20                 99         in      sioctl          ! check character waiting
 
      00000030 00000000 E6 20                100         ani     $20
 
      00000032 00000000 CA 2E 00             101         jz      echo            ! no, wait
 
      00000035 00000000 DB 21                102         in      siodat          ! yes, get character
 
      00000037 00000000 CD 00 00             103         call    wrtout          ! output
 
      0000003A 00000000 C3 2E 00             104         jmp     echo            ! loop forever
 
      0000003D 00000000                      105
 
      0000003D 00000000                      106 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
      0000003D 00000000                      107 !
 
      0000003D 00000000                      108 ! Serial output routine
 
      0000003D 00000000                      109 !
 
      0000003D 00000000                      110 ! Outputs the character in a.
 
      0000003D 00000000                      111 !
 
      0000003D 00000000                      112 wrtout:
 
      0000003D 00000000 F5                   113         push    psw             ! save character to output
 
      0000003E 00000000                      114 wrtout01:
 
      0000003E 00000000 DB 20                115         in      sioctl          ! get output ready status /n
 
      00000040 00000000 E6 80                116         ani     $80             ! mask
 
      00000042 00000000 C2 3E 00             117         jnz     wrtout01        ! no, loop
 
      00000045 00000000 F1                   118         pop     psw             ! restore character
 
      00000046 00000000 D3 21                119         out     siodat          ! output
 
      00000048 00000000 C9                   120         ret                     ! return to caller
 
      00000049 00000000                      121 !
 
      00000049 00000000                      122 ! String to print
 
      00000049 00000000                      123 !
 
      00000049 00000000                      124 helstr:
 
      00000049 00000000 48 45 4C 4C 4F 2C +  125         defb    'HELLO, FPGA WORLD\cr\lf', 0
 
      0000005D 00000000                   +  126
 
      0000005D 00000000                   +  127

powered by: WebSVN 2.1.0

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