                              1 ;--------------------------------------------------------
                              2 ; File Created by SDCC : free open source ANSI-C Compiler
                              3 ; Version 3.4.1 #9090 (Oct 18 2014) (Linux)
                              4 ; This file was generated Wed Oct 22 03:18:53 2014
                              5 ;--------------------------------------------------------
                              6 	.module main
                              7 	.optsdcc -mz80
                              8 	
                              9 ;--------------------------------------------------------
                             10 ; Public variables in this module
                             11 ;--------------------------------------------------------
                             12 	.globl _main
                             13 	.globl _InitHardware
                             14 	.globl _int_sti_receive_error
                             15 	.globl _int_sti_transmit_error
                             16 	.globl _int_sti_gpi_7
                             17 	.globl _int_sti_gpi_6
                             18 	.globl _int_sti_gpi_5
                             19 	.globl _int_sti_gpi_4
                             20 	.globl _int_sti_gpi_3
                             21 	.globl _int_sti_gpi_2
                             22 	.globl _int_sti_gpi_1
                             23 	.globl _int_sti_gpi_0
                             24 	.globl _int_sti_timer_d
                             25 	.globl _int_sti_timer_c
                             26 	.globl _int_sti_timer_b
                             27 	.globl _int_sti_timer_a
                             28 	.globl _int_sti_receive_buffer_full
                             29 	.globl _int_sti_transmit_buffer_empty
                             30 	.globl _delay
                             31 	.globl _Set_GPIO
                             32 	.globl _printstrng
                             33 	.globl _menue
                             34 	.globl _digits
                             35 	.globl _stop_cpu
                             36 	.globl _putchar
                             37 	.globl _SetDigit
                             38 	.globl _SetLed
                             39 	.globl _SetLedByte
                             40 	.globl _LED_Rotate
                             41 	.globl _nmi_vint
                             42 ;--------------------------------------------------------
                             43 ; special function registers
                             44 ;--------------------------------------------------------
                     0000    45 _STI_IDR	=	0x0000
                     0001    46 _STI_GPIP	=	0x0001
                     0002    47 _STI_IPRB	=	0x0002
                     0003    48 _STI_IPRA	=	0x0003
                     0004    49 _STI_ISRB	=	0x0004
                     0005    50 _STI_ISRA	=	0x0005
                     0006    51 _STI_IMRB	=	0x0006
                     0007    52 _STI_IMRA	=	0x0007
                     0008    53 _STI_PVR	=	0x0008
                     0009    54 _STI_TABCR	=	0x0009
                     000A    55 _STI_TBDR	=	0x000a
                     000B    56 _STI_TADR	=	0x000b
                     000C    57 _STI_UCR	=	0x000c
                     000D    58 _STI_RSR	=	0x000d
                     000E    59 _STI_TSR	=	0x000e
                     000F    60 _STI_UDR	=	0x000f
                     0020    61 _PIO8255_PORT_A	=	0x0020
                     0021    62 _PIO8255_PORT_B	=	0x0021
                     0022    63 _PIO8255_PORT_C	=	0x0022
                     0023    64 _PIO8255_CNTRL	=	0x0023
                     0040    65 _ADC0804_READ	=	0x0040
                     0060    66 _SEG7	=	0x0060
                             67 ;--------------------------------------------------------
                             68 ; ram data
                             69 ;--------------------------------------------------------
                             70 	.area _DATA
   0000                      71 _int_sti_timer_a_n_1_121:
   0000                      72 	.ds 1
   0001                      73 _int_sti_timer_a_k_1_121:
   0001                      74 	.ds 1
                             75 ;--------------------------------------------------------
                             76 ; ram data
                             77 ;--------------------------------------------------------
                             78 	.area _INITIALIZED
   0000                      79 _menue::
   0000                      80 	.ds 12
                             81 ;--------------------------------------------------------
                             82 ; absolute external ram data
                             83 ;--------------------------------------------------------
                             84 	.area _DABS (ABS)
                             85 ;--------------------------------------------------------
                             86 ; global & static initialisations
                             87 ;--------------------------------------------------------
                             88 	.area _HOME
                             89 	.area _GSINIT
                             90 	.area _GSFINAL
                             91 	.area _GSINIT
                             92 ;interrupts.c:36: static uint8_t n = 0;
   0000 FD 21r00r00   [14]   93 	ld	iy,#_int_sti_timer_a_n_1_121
   0004 FD 36 00 00   [19]   94 	ld	0 (iy),#0x00
                             95 ;interrupts.c:37: static uint8_t k = 0;
   0008 FD 21r01r00   [14]   96 	ld	iy,#_int_sti_timer_a_k_1_121
   000C FD 36 00 00   [19]   97 	ld	0 (iy),#0x00
                             98 ;--------------------------------------------------------
                             99 ; Home
                            100 ;--------------------------------------------------------
                            101 	.area _HOME
                            102 	.area _HOME
                            103 ;--------------------------------------------------------
                            104 ; code
                            105 ;--------------------------------------------------------
                            106 	.area _CODE
                            107 ;driver.c:6: void stop_cpu() __naked
                            108 ;	---------------------------------
                            109 ; Function stop_cpu
                            110 ; ---------------------------------
   0000                     111 _stop_cpu_start::
   0000                     112 _stop_cpu:
                            113 ;driver.c:10: __endasm ; 
   0000 76            [ 4]  114 	halt
                            115 ;driver.c:12: while (1);
   0001                     116 00102$:
   0001 18 FE         [12]  117 	jr	00102$
   0003                     118 _stop_cpu_end::
                            119 ;driver.c:17: void putchar(char c)
                            120 ;	---------------------------------
                            121 ; Function putchar
                            122 ; ---------------------------------
   0003                     123 _putchar_start::
   0003                     124 _putchar:
                            125 ;driver.c:19: while ((STI_TSR & 0x80) == 0); 	// Warte bis Buffer frei...
   0003                     126 00101$:
   0003 DB 0E         [11]  127 	in	a,(_STI_TSR)
   0005 07            [ 4]  128 	rlca
   0006 30 FB         [12]  129 	jr	NC,00101$
                            130 ;driver.c:20: STI_UDR = c;					// Byte einschreiben
   0008 21 02 00      [10]  131 	ld	hl, #2+0
   000B 39            [11]  132 	add	hl, sp
   000C 7E            [ 7]  133 	ld	a, (hl)
   000D D3 0F         [11]  134 	out	(_STI_UDR),a
   000F C9            [10]  135 	ret
   0010                     136 _putchar_end::
   0010                     137 _digits:
   0010 C0                  138 	.db #0xC0	; -64
   0011 F5                  139 	.db #0xF5	; -11
   0012 A8                  140 	.db #0xA8	; -88
   0013 B0                  141 	.db #0xB0	; -80
   0014 95                  142 	.db #0x95	; -107
   0015 92                  143 	.db #0x92	; -110
   0016 82                  144 	.db #0x82	; -126
   0017 F4                  145 	.db #0xF4	; -12
   0018 80                  146 	.db #0x80	; -128
   0019 90                  147 	.db #0x90	; -112
   001A 84                  148 	.db #0x84	; -124
   001B 83                  149 	.db #0x83	; -125
   001C AB                  150 	.db #0xAB	; -85
   001D A1                  151 	.db #0xA1	; -95
   001E 8A                  152 	.db #0x8A	; -118
   001F 8E                  153 	.db #0x8E	; -114
                            154 ;driver.c:26: void printstrng(char *k)
                            155 ;	---------------------------------
                            156 ; Function printstrng
                            157 ; ---------------------------------
   0020                     158 _printstrng_start::
   0020                     159 _printstrng:
                            160 ;driver.c:28: while ((*k) != '\0')
   0020 C1            [10]  161 	pop	bc
   0021 E1            [10]  162 	pop	hl
   0022 E5            [11]  163 	push	hl
   0023 C5            [11]  164 	push	bc
   0024                     165 00101$:
   0024 7E            [ 7]  166 	ld	a,(hl)
   0025 B7            [ 4]  167 	or	a, a
   0026 C8            [11]  168 	ret	Z
                            169 ;driver.c:29: putchar(*(k++));
   0027 23            [ 6]  170 	inc	hl
   0028 E5            [11]  171 	push	hl
   0029 F5            [11]  172 	push	af
   002A 33            [ 6]  173 	inc	sp
   002B CDr03r00      [17]  174 	call	_putchar
   002E 33            [ 6]  175 	inc	sp
   002F E1            [10]  176 	pop	hl
   0030 18 F2         [12]  177 	jr	00101$
   0032 C9            [10]  178 	ret
   0033                     179 _printstrng_end::
                            180 ;driver.c:38: void SetDigit(uint8_t i)
                            181 ;	---------------------------------
                            182 ; Function SetDigit
                            183 ; ---------------------------------
   0033                     184 _SetDigit_start::
   0033                     185 _SetDigit:
                            186 ;driver.c:40: if (i<=0x0f)
   0033 3E 0F         [ 7]  187 	ld	a,#0x0F
   0035 FD 21 02 00   [14]  188 	ld	iy,#2
   0039 FD 39         [15]  189 	add	iy,sp
   003B FD 96 00      [19]  190 	sub	a, 0 (iy)
   003E 38 11         [12]  191 	jr	C,00102$
                            192 ;driver.c:41: SEG7 = digits[i];
   0040 3Er10         [ 7]  193 	ld	a,#<(_digits)
   0042 21 02 00      [10]  194 	ld	hl,#2
   0045 39            [11]  195 	add	hl,sp
   0046 86            [ 7]  196 	add	a, (hl)
   0047 5F            [ 4]  197 	ld	e,a
   0048 3Es00         [ 7]  198 	ld	a,#>(_digits)
   004A CE 00         [ 7]  199 	adc	a, #0x00
   004C 57            [ 4]  200 	ld	d,a
   004D 1A            [ 7]  201 	ld	a,(de)
   004E D3 60         [11]  202 	out	(_SEG7),a
   0050 C9            [10]  203 	ret
   0051                     204 00102$:
                            205 ;driver.c:43: SEG7 = 0xff;		// Display aus
   0051 3E FF         [ 7]  206 	ld	a,#0xFF
   0053 D3 60         [11]  207 	out	(_SEG7),a
   0055 C9            [10]  208 	ret
   0056                     209 _SetDigit_end::
                            210 ;driver.c:49: void Set_GPIO(uint8_t bitnr, bool stat)
                            211 ;	---------------------------------
                            212 ; Function Set_GPIO
                            213 ; ---------------------------------
   0056                     214 _Set_GPIO_start::
   0056                     215 _Set_GPIO:
                            216 ;driver.c:53: foo = STI_GPIP;			// Register kann nur geladen werden
   0056 DB 01         [11]  217 	in	a,(_STI_GPIP)
   0058 57            [ 4]  218 	ld	d,a
                            219 ;driver.c:55: foo |= (1<<bitnr);
   0059 21 02 00      [10]  220 	ld	hl, #2+0
   005C 39            [11]  221 	add	hl, sp
   005D 46            [ 7]  222 	ld	b, (hl)
   005E F5            [11]  223 	push	af
   005F 1E 01         [ 7]  224 	ld	e,#0x01
   0061 F1            [10]  225 	pop	af
   0062 04            [ 4]  226 	inc	b
   0063 18 02         [12]  227 	jr	00111$
   0065                     228 00110$:
   0065 CB 23         [ 8]  229 	sla	e
   0067                     230 00111$:
   0067 10 FC         [13]  231 	djnz	00110$
                            232 ;driver.c:54: if (stat)  		// Bit ein
   0069 21 04 00      [10]  233 	ld	hl, #3+1
   006C 39            [11]  234 	add	hl, sp
   006D 7E            [ 7]  235 	ld	a, (hl)
   006E 2B            [ 6]  236 	dec	hl
   006F B6            [ 7]  237 	or	a,(hl)
   0070 28 04         [12]  238 	jr	Z,00102$
                            239 ;driver.c:55: foo |= (1<<bitnr);
   0072 7A            [ 4]  240 	ld	a,d
   0073 B3            [ 4]  241 	or	a, e
   0074 18 05         [12]  242 	jr	00103$
   0076                     243 00102$:
                            244 ;driver.c:57: foo &= ~(1<<bitnr);
   0076 7B            [ 4]  245 	ld	a,e
   0077 2F            [ 4]  246 	cpl
   0078 5F            [ 4]  247 	ld	e,a
   0079 7A            [ 4]  248 	ld	a,d
   007A A3            [ 4]  249 	and	a, e
   007B                     250 00103$:
                            251 ;driver.c:59: STI_GPIP = foo;
   007B D3 01         [11]  252 	out	(_STI_GPIP),a
   007D C9            [10]  253 	ret
   007E                     254 _Set_GPIO_end::
                            255 ;driver.c:65: void SetLed(uint8_t lednr, bool stat)
                            256 ;	---------------------------------
                            257 ; Function SetLed
                            258 ; ---------------------------------
   007E                     259 _SetLed_start::
   007E                     260 _SetLed:
                            261 ;driver.c:70: foo = PIO8255_PORT_A;
   007E DB 20         [11]  262 	in	a,(_PIO8255_PORT_A)
   0080 57            [ 4]  263 	ld	d,a
                            264 ;driver.c:73: foo &= ~(1<<lednr);
   0081 21 02 00      [10]  265 	ld	hl, #2+0
   0084 39            [11]  266 	add	hl, sp
   0085 46            [ 7]  267 	ld	b, (hl)
   0086 F5            [11]  268 	push	af
   0087 1E 01         [ 7]  269 	ld	e,#0x01
   0089 F1            [10]  270 	pop	af
   008A 04            [ 4]  271 	inc	b
   008B 18 02         [12]  272 	jr	00111$
   008D                     273 00110$:
   008D CB 23         [ 8]  274 	sla	e
   008F                     275 00111$:
   008F 10 FC         [13]  276 	djnz	00110$
                            277 ;driver.c:72: if (stat==TRUE)  // LED ein = Bit LOW
   0091 FD 21 03 00   [14]  278 	ld	iy,#3
   0095 FD 39         [15]  279 	add	iy,sp
   0097 FD 7E 00      [19]  280 	ld	a,0 (iy)
   009A 3D            [ 4]  281 	dec	a
   009B 20 0D         [12]  282 	jr	NZ,00102$
   009D FD 7E 01      [19]  283 	ld	a,1 (iy)
   00A0 B7            [ 4]  284 	or	a, a
   00A1 20 07         [12]  285 	jr	NZ,00102$
                            286 ;driver.c:73: foo &= ~(1<<lednr);
   00A3 7B            [ 4]  287 	ld	a,e
   00A4 2F            [ 4]  288 	cpl
   00A5 5F            [ 4]  289 	ld	e,a
   00A6 7A            [ 4]  290 	ld	a,d
   00A7 A3            [ 4]  291 	and	a, e
   00A8 18 02         [12]  292 	jr	00103$
   00AA                     293 00102$:
                            294 ;driver.c:75: foo |= (1<<lednr);
   00AA 7A            [ 4]  295 	ld	a,d
   00AB B3            [ 4]  296 	or	a, e
   00AC                     297 00103$:
                            298 ;driver.c:77: PIO8255_PORT_A = foo;
   00AC D3 20         [11]  299 	out	(_PIO8255_PORT_A),a
   00AE C9            [10]  300 	ret
   00AF                     301 _SetLed_end::
                            302 ;driver.c:82: void SetLedByte(uint8_t t)
                            303 ;	---------------------------------
                            304 ; Function SetLedByte
                            305 ; ---------------------------------
   00AF                     306 _SetLedByte_start::
   00AF                     307 _SetLedByte:
                            308 ;driver.c:84: PIO8255_PORT_A 	= ~t;
   00AF 21 02 00      [10]  309 	ld	hl, #2+0
   00B2 39            [11]  310 	add	hl, sp
   00B3 7E            [ 7]  311 	ld	a, (hl)
   00B4 2F            [ 4]  312 	cpl
   00B5 D3 20         [11]  313 	out	(_PIO8255_PORT_A),a
   00B7 C9            [10]  314 	ret
   00B8                     315 _SetLedByte_end::
                            316 ;driver.c:89: void delay(uint16_t cnt) {
                            317 ;	---------------------------------
                            318 ; Function delay
                            319 ; ---------------------------------
   00B8                     320 _delay_start::
   00B8                     321 _delay:
   00B8 F5            [11]  322 	push	af
                            323 ;driver.c:91: for (k=0;k<cnt;k++);
   00B9 21 00 00      [10]  324 	ld	hl,#0x0000
   00BC E3            [19]  325 	ex	(sp), hl
   00BD                     326 00103$:
   00BD 21 04 00      [10]  327 	ld	hl,#4
   00C0 39            [11]  328 	add	hl,sp
   00C1 FD 21 00 00   [14]  329 	ld	iy,#0
   00C5 FD 39         [15]  330 	add	iy,sp
   00C7 FD 7E 00      [19]  331 	ld	a,0 (iy)
   00CA 96            [ 7]  332 	sub	a, (hl)
   00CB FD 7E 01      [19]  333 	ld	a,1 (iy)
   00CE 23            [ 6]  334 	inc	hl
   00CF 9E            [ 7]  335 	sbc	a, (hl)
   00D0 30 0A         [12]  336 	jr	NC,00105$
   00D2 FD 34 00      [23]  337 	inc	0 (iy)
   00D5 20 E6         [12]  338 	jr	NZ,00103$
   00D7 FD 34 01      [23]  339 	inc	1 (iy)
   00DA 18 E1         [12]  340 	jr	00103$
   00DC                     341 00105$:
   00DC F1            [10]  342 	pop	af
   00DD C9            [10]  343 	ret
   00DE                     344 _delay_end::
                            345 ;driver.c:109: void LED_Rotate(uint8_t i, uint8_t k)
                            346 ;	---------------------------------
                            347 ; Function LED_Rotate
                            348 ; ---------------------------------
   00DE                     349 _LED_Rotate_start::
   00DE                     350 _LED_Rotate:
                            351 ;driver.c:114: if (i==1)
   00DE 21 02 00      [10]  352 	ld	hl, #2+0
   00E1 39            [11]  353 	add	hl, sp
   00E2 7E            [ 7]  354 	ld	a, (hl)
   00E3 3D            [ 4]  355 	dec	a
   00E4 20 12         [12]  356 	jr	NZ,00115$
                            357 ;driver.c:116: if  (k==LINKS)
   00E6 21 03 00      [10]  358 	ld	hl, #3+0
   00E9 39            [11]  359 	add	hl, sp
   00EA 7E            [ 7]  360 	ld	a, (hl)
   00EB B7            [ 4]  361 	or	a, a
   00EC 20 05         [12]  362 	jr	NZ,00102$
                            363 ;driver.c:117: PIO8255_PORT_A 	= ~0x01;
   00EE 3E FE         [ 7]  364 	ld	a,#0xFE
   00F0 D3 20         [11]  365 	out	(_PIO8255_PORT_A),a
   00F2 C9            [10]  366 	ret
   00F3                     367 00102$:
                            368 ;driver.c:119: PIO8255_PORT_A 	= ~0x80;
   00F3 3E 7F         [ 7]  369 	ld	a,#0x7F
   00F5 D3 20         [11]  370 	out	(_PIO8255_PORT_A),a
   00F7 C9            [10]  371 	ret
   00F8                     372 00115$:
                            373 ;driver.c:123: merk = ~PIO8255_PORT_A;
   00F8 DB 20         [11]  374 	in	a,(_PIO8255_PORT_A)
   00FA 2F            [ 4]  375 	cpl
   00FB 57            [ 4]  376 	ld	d,a
                            377 ;driver.c:125: if (k==LINKS)
   00FC 21 03 00      [10]  378 	ld	hl, #3+0
   00FF 39            [11]  379 	add	hl, sp
   0100 7E            [ 7]  380 	ld	a, (hl)
   0101 B7            [ 4]  381 	or	a, a
   0102 20 0B         [12]  382 	jr	NZ,00108$
                            383 ;driver.c:127: if (merk!=0x80)
   0104 7A            [ 4]  384 	ld	a,d
   0105 D6 80         [ 7]  385 	sub	a, #0x80
   0107 28 04         [12]  386 	jr	Z,00105$
                            387 ;driver.c:128: merk = merk << 1;
   0109 CB 22         [ 8]  388 	sla	d
   010B 18 02         [12]  389 	jr	00108$
   010D                     390 00105$:
                            391 ;driver.c:130: merk = 0x01;
   010D 16 01         [ 7]  392 	ld	d,#0x01
   010F                     393 00108$:
                            394 ;driver.c:133: if (k==RECHTS)
   010F 21 03 00      [10]  395 	ld	hl, #3+0
   0112 39            [11]  396 	add	hl, sp
   0113 7E            [ 7]  397 	ld	a, (hl)
   0114 3D            [ 4]  398 	dec	a
   0115 20 0A         [12]  399 	jr	NZ,00113$
                            400 ;driver.c:135: if (merk!=0x01)
   0117 7A            [ 4]  401 	ld	a,d
   0118 3D            [ 4]  402 	dec	a
   0119 28 04         [12]  403 	jr	Z,00110$
                            404 ;driver.c:136: merk = merk >> 1;
   011B CB 3A         [ 8]  405 	srl	d
   011D 18 02         [12]  406 	jr	00113$
   011F                     407 00110$:
                            408 ;driver.c:138: merk = 0x80;
   011F 16 80         [ 7]  409 	ld	d,#0x80
   0121                     410 00113$:
                            411 ;driver.c:143: PIO8255_PORT_A = ~merk;	
   0121 7A            [ 4]  412 	ld	a,d
   0122 2F            [ 4]  413 	cpl
   0123 D3 20         [11]  414 	out	(_PIO8255_PORT_A),a
   0125 C9            [10]  415 	ret
   0126                     416 _LED_Rotate_end::
                            417 ;interrupts.c:7: void nmi_vint(void) __critical __interrupt
                            418 ;	---------------------------------
                            419 ; Function nmi_vint
                            420 ; ---------------------------------
   0126                     421 _nmi_vint_start::
   0126                     422 _nmi_vint:
   0126 F5            [11]  423 	push	af
   0127 C5            [11]  424 	push	bc
   0128 D5            [11]  425 	push	de
   0129 E5            [11]  426 	push	hl
   012A FD E5         [15]  427 	push	iy
                            428 ;interrupts.c:11: __endasm ;
   012C 76            [ 4]  429 	halt
   012D FD E1         [14]  430 	pop	iy
   012F E1            [10]  431 	pop	hl
   0130 D1            [10]  432 	pop	de
   0131 C1            [10]  433 	pop	bc
   0132 F1            [10]  434 	pop	af
   0133 ED 45         [14]  435 	retn
   0135                     436 _nmi_vint_end::
                            437 ;interrupts.c:22: void int_sti_transmit_buffer_empty(void)  __interrupt 
                            438 ;	---------------------------------
                            439 ; Function int_sti_transmit_buffer_empty
                            440 ; ---------------------------------
   0135                     441 _int_sti_transmit_buffer_empty_start::
   0135                     442 _int_sti_transmit_buffer_empty:
   0135 F5            [11]  443 	push	af
   0136 C5            [11]  444 	push	bc
   0137 D5            [11]  445 	push	de
   0138 E5            [11]  446 	push	hl
   0139 FD E5         [15]  447 	push	iy
                            448 ;interrupts.c:25: }
   013B FD E1         [14]  449 	pop	iy
   013D E1            [10]  450 	pop	hl
   013E D1            [10]  451 	pop	de
   013F C1            [10]  452 	pop	bc
   0140 F1            [10]  453 	pop	af
   0141 ED 4D         [14]  454 	reti
   0143                     455 _int_sti_transmit_buffer_empty_end::
                            456 ;interrupts.c:28: void int_sti_receive_buffer_full(void)  __interrupt 
                            457 ;	---------------------------------
                            458 ; Function int_sti_receive_buffer_full
                            459 ; ---------------------------------
   0143                     460 _int_sti_receive_buffer_full_start::
   0143                     461 _int_sti_receive_buffer_full:
   0143 F5            [11]  462 	push	af
   0144 C5            [11]  463 	push	bc
   0145 D5            [11]  464 	push	de
   0146 E5            [11]  465 	push	hl
   0147 FD E5         [15]  466 	push	iy
                            467 ;interrupts.c:31: }
   0149 FD E1         [14]  468 	pop	iy
   014B E1            [10]  469 	pop	hl
   014C D1            [10]  470 	pop	de
   014D C1            [10]  471 	pop	bc
   014E F1            [10]  472 	pop	af
   014F ED 4D         [14]  473 	reti
   0151                     474 _int_sti_receive_buffer_full_end::
                            475 ;interrupts.c:34: void int_sti_timer_a(void)  __interrupt __naked
                            476 ;	---------------------------------
                            477 ; Function int_sti_timer_a
                            478 ; ---------------------------------
   0151                     479 _int_sti_timer_a_start::
   0151                     480 _int_sti_timer_a:
                            481 ;interrupts.c:44: __endasm ;
   0151 F5            [11]  482 	push af
   0152 C5            [11]  483 	push bc
   0153 D5            [11]  484 	push de
   0154 E5            [11]  485 	push hl
   0155 FD E5         [15]  486 	push iy
                            487 ;interrupts.c:46: PIO8255_PORT_A 	= ~(k++);
   0157 FD 21r01r00   [14]  488 	ld	iy,#_int_sti_timer_a_k_1_121
   015B FD 56 00      [19]  489 	ld	d,0 (iy)
   015E FD 21r01r00   [14]  490 	ld	iy,#_int_sti_timer_a_k_1_121
   0162 FD 34 00      [23]  491 	inc	0 (iy)
   0165 7A            [ 4]  492 	ld	a,d
   0166 2F            [ 4]  493 	cpl
   0167 D3 20         [11]  494 	out	(_PIO8255_PORT_A),a
                            495 ;interrupts.c:56: __endasm ;
   0169 F1            [10]  496 	pop af
   016A C1            [10]  497 	pop bc
   016B D1            [10]  498 	pop de
   016C E1            [10]  499 	pop hl
   016D FD E1         [14]  500 	pop iy
   016F FB            [ 4]  501 	ei
   0170 ED 4D         [14]  502 	reti
   0172                     503 _int_sti_timer_a_end::
                            504 ;interrupts.c:60: void int_sti_timer_b(void)  __interrupt __naked
                            505 ;	---------------------------------
                            506 ; Function int_sti_timer_b
                            507 ; ---------------------------------
   0172                     508 _int_sti_timer_b_start::
   0172                     509 _int_sti_timer_b:
                            510 ;interrupts.c:65: __endasm ;
   0172 FB            [ 4]  511 	ei
   0173 ED 4D         [14]  512 	reti
   0175                     513 _int_sti_timer_b_end::
                            514 ;interrupts.c:69: void int_sti_timer_c(void)  __interrupt __naked
                            515 ;	---------------------------------
                            516 ; Function int_sti_timer_c
                            517 ; ---------------------------------
   0175                     518 _int_sti_timer_c_start::
   0175                     519 _int_sti_timer_c:
                            520 ;interrupts.c:74: __endasm ;
   0175 FB            [ 4]  521 	ei
   0176 ED 4D         [14]  522 	reti
   0178                     523 _int_sti_timer_c_end::
                            524 ;interrupts.c:77: void int_sti_timer_d(void)  __interrupt __naked
                            525 ;	---------------------------------
                            526 ; Function int_sti_timer_d
                            527 ; ---------------------------------
   0178                     528 _int_sti_timer_d_start::
   0178                     529 _int_sti_timer_d:
                            530 ;interrupts.c:82: __endasm ;
   0178 FB            [ 4]  531 	ei
   0179 ED 4D         [14]  532 	reti
   017B                     533 _int_sti_timer_d_end::
                            534 ;interrupts.c:88: void int_sti_gpi_0(void) __interrupt
                            535 ;	---------------------------------
                            536 ; Function int_sti_gpi_0
                            537 ; ---------------------------------
   017B                     538 _int_sti_gpi_0_start::
   017B                     539 _int_sti_gpi_0:
   017B F5            [11]  540 	push	af
   017C C5            [11]  541 	push	bc
   017D D5            [11]  542 	push	de
   017E E5            [11]  543 	push	hl
   017F FD E5         [15]  544 	push	iy
                            545 ;interrupts.c:95: __endasm ;
   0181 FB            [ 4]  546 	ei
   0182 ED 4D         [14]  547 	reti
   0184 FD E1         [14]  548 	pop	iy
   0186 E1            [10]  549 	pop	hl
   0187 D1            [10]  550 	pop	de
   0188 C1            [10]  551 	pop	bc
   0189 F1            [10]  552 	pop	af
   018A ED 4D         [14]  553 	reti
   018C                     554 _int_sti_gpi_0_end::
                            555 ;interrupts.c:98: void int_sti_gpi_1(void)  __interrupt __naked
                            556 ;	---------------------------------
                            557 ; Function int_sti_gpi_1
                            558 ; ---------------------------------
   018C                     559 _int_sti_gpi_1_start::
   018C                     560 _int_sti_gpi_1:
                            561 ;interrupts.c:104: __endasm ;
   018C FB            [ 4]  562 	ei
   018D ED 4D         [14]  563 	reti
   018F                     564 _int_sti_gpi_1_end::
                            565 ;interrupts.c:106: void int_sti_gpi_2(void)  __interrupt __naked
                            566 ;	---------------------------------
                            567 ; Function int_sti_gpi_2
                            568 ; ---------------------------------
   018F                     569 _int_sti_gpi_2_start::
   018F                     570 _int_sti_gpi_2:
                            571 ;interrupts.c:111: __endasm ;
   018F FB            [ 4]  572 	ei
   0190 ED 4D         [14]  573 	reti
   0192                     574 _int_sti_gpi_2_end::
                            575 ;interrupts.c:113: void int_sti_gpi_3(void)  __interrupt __naked
                            576 ;	---------------------------------
                            577 ; Function int_sti_gpi_3
                            578 ; ---------------------------------
   0192                     579 _int_sti_gpi_3_start::
   0192                     580 _int_sti_gpi_3:
                            581 ;interrupts.c:118: __endasm ;
   0192 FB            [ 4]  582 	ei
   0193 ED 4D         [14]  583 	reti
   0195                     584 _int_sti_gpi_3_end::
                            585 ;interrupts.c:121: void int_sti_gpi_4(void)  __interrupt __naked
                            586 ;	---------------------------------
                            587 ; Function int_sti_gpi_4
                            588 ; ---------------------------------
   0195                     589 _int_sti_gpi_4_start::
   0195                     590 _int_sti_gpi_4:
                            591 ;interrupts.c:126: __endasm ;
   0195 FB            [ 4]  592 	ei
   0196 ED 4D         [14]  593 	reti
   0198                     594 _int_sti_gpi_4_end::
                            595 ;interrupts.c:129: void int_sti_gpi_5(void)  __interrupt __naked
                            596 ;	---------------------------------
                            597 ; Function int_sti_gpi_5
                            598 ; ---------------------------------
   0198                     599 _int_sti_gpi_5_start::
   0198                     600 _int_sti_gpi_5:
                            601 ;interrupts.c:134: __endasm ;
   0198 FB            [ 4]  602 	ei
   0199 ED 4D         [14]  603 	reti
   019B                     604 _int_sti_gpi_5_end::
                            605 ;interrupts.c:137: void int_sti_gpi_6(void)  __interrupt __naked
                            606 ;	---------------------------------
                            607 ; Function int_sti_gpi_6
                            608 ; ---------------------------------
   019B                     609 _int_sti_gpi_6_start::
   019B                     610 _int_sti_gpi_6:
                            611 ;interrupts.c:142: __endasm ;
   019B FB            [ 4]  612 	ei
   019C ED 4D         [14]  613 	reti
   019E                     614 _int_sti_gpi_6_end::
                            615 ;interrupts.c:145: void int_sti_gpi_7(void)  __interrupt __naked
                            616 ;	---------------------------------
                            617 ; Function int_sti_gpi_7
                            618 ; ---------------------------------
   019E                     619 _int_sti_gpi_7_start::
   019E                     620 _int_sti_gpi_7:
                            621 ;interrupts.c:150: __endasm ;
   019E FB            [ 4]  622 	ei
   019F ED 4D         [14]  623 	reti
   01A1                     624 _int_sti_gpi_7_end::
                            625 ;interrupts.c:154: void int_sti_transmit_error(void)  __interrupt __naked
                            626 ;	---------------------------------
                            627 ; Function int_sti_transmit_error
                            628 ; ---------------------------------
   01A1                     629 _int_sti_transmit_error_start::
   01A1                     630 _int_sti_transmit_error:
                            631 ;interrupts.c:159: __endasm ;
   01A1 FB            [ 4]  632 	ei
   01A2 ED 4D         [14]  633 	reti
   01A4                     634 _int_sti_transmit_error_end::
                            635 ;interrupts.c:163: void int_sti_receive_error(void)  __interrupt __naked
                            636 ;	---------------------------------
                            637 ; Function int_sti_receive_error
                            638 ; ---------------------------------
   01A4                     639 _int_sti_receive_error_start::
   01A4                     640 _int_sti_receive_error:
                            641 ;interrupts.c:168: __endasm ;
   01A4 FB            [ 4]  642 	ei
   01A5 ED 4D         [14]  643 	reti
   01A7                     644 _int_sti_receive_error_end::
                            645 ;main.c:26: void InitHardware()
                            646 ;	---------------------------------
                            647 ; Function InitHardware
                            648 ; ---------------------------------
   01A7                     649 _InitHardware_start::
   01A7                     650 _InitHardware:
                            651 ;main.c:29: PIO8255_CNTRL  = 0x80; 		//Mode 0: Port A,B,C Output
   01A7 3E 80         [ 7]  652 	ld	a,#0x80
   01A9 D3 23         [11]  653 	out	(_PIO8255_CNTRL),a
                            654 ;main.c:30: PIO8255_PORT_A = 0xff;
   01AB 3E FF         [ 7]  655 	ld	a,#0xFF
   01AD D3 20         [11]  656 	out	(_PIO8255_PORT_A),a
                            657 ;main.c:31: PIO8255_PORT_B = 0;
   01AF 3E 00         [ 7]  658 	ld	a,#0x00
   01B1 D3 21         [11]  659 	out	(_PIO8255_PORT_B),a
                            660 ;main.c:32: PIO8255_PORT_C = 0;
   01B3 3E 00         [ 7]  661 	ld	a,#0x00
   01B5 D3 22         [11]  662 	out	(_PIO8255_PORT_C),a
                            663 ;main.c:35: SEG7 = 0xff;
   01B7 3E FF         [ 7]  664 	ld	a,#0xFF
   01B9 D3 60         [11]  665 	out	(_SEG7),a
                            666 ;main.c:38: STI_UCR   = 0x88;			// = 10001000  UART Control Register 8N1, DIV16
   01BB 3E 88         [ 7]  667 	ld	a,#0x88
   01BD D3 0C         [11]  668 	out	(_STI_UCR),a
                            669 ;main.c:39: STI_RSR   = 0x01;			// RX Status - Enable RX
   01BF 3E 01         [ 7]  670 	ld	a,#0x01
   01C1 D3 0D         [11]  671 	out	(_STI_RSR),a
                            672 ;main.c:40: STI_TSR   = 0x05;			// TX Status - TX High, TX enabled
   01C3 3E 05         [ 7]  673 	ld	a,#0x05
   01C5 D3 0E         [11]  674 	out	(_STI_TSR),a
                            675 ;main.c:42: STI_PVR   = STI_TDDR;		// Zeiger PVR auf Timer D Data
   01C7 3E 01         [ 7]  676 	ld	a,#0x01
   01C9 D3 08         [11]  677 	out	(_STI_PVR),a
                            678 ;main.c:43: STI_IDR   = 0x03;			// Timer D Zeitkonstante
   01CB 3E 03         [ 7]  679 	ld	a,#0x03
   01CD D3 00         [11]  680 	out	(_STI_IDR),a
                            681 ;main.c:44: STI_PVR   = STI_TCDCR;		// Zeiger auf Timer C,D Control Register
   01CF 3E 07         [ 7]  682 	ld	a,#0x07
   01D1 D3 08         [11]  683 	out	(_STI_PVR),a
                            684 ;main.c:45: STI_IDR   = 0x89;			// Timer D DIV 4, C = Stop
   01D3 3E 89         [ 7]  685 	ld	a,#0x89
   01D5 D3 00         [11]  686 	out	(_STI_IDR),a
                            687 ;main.c:47: STI_PVR   = STI_DDR;		// Zeiger PVR auf indirect 6 (DDR)
   01D7 3E 06         [ 7]  688 	ld	a,#0x06
   01D9 D3 08         [11]  689 	out	(_STI_PVR),a
                            690 ;main.c:48: STI_IDR   = 0xff;			// GPIO als Output
   01DB 3E FF         [ 7]  691 	ld	a,#0xFF
   01DD D3 00         [11]  692 	out	(_STI_IDR),a
                            693 ;main.c:49: STI_GPIP  = 0x00;			// GPIO auf Null setzen
   01DF 3E 00         [ 7]  694 	ld	a,#0x00
   01E1 D3 01         [11]  695 	out	(_STI_GPIP),a
                            696 ;main.c:51: STI_TADR  = 0xff;			// Reload Wert Timer A
   01E3 3E FF         [ 7]  697 	ld	a,#0xFF
   01E5 D3 0B         [11]  698 	out	(_STI_TADR),a
                            699 ;main.c:52: STI_TABCR = 0x70;			// Timer A DIV 200
   01E7 3E 70         [ 7]  700 	ld	a,#0x70
   01E9 D3 09         [11]  701 	out	(_STI_TABCR),a
                            702 ;main.c:53: STI_PVR   = STI_IERA;		// Timer A Hardware Interrupt einschalten	
   01EB 3E 05         [ 7]  703 	ld	a,#0x05
   01ED D3 08         [11]  704 	out	(_STI_PVR),a
                            705 ;main.c:54: STI_IDR   = 0x20;
   01EF 3E 20         [ 7]  706 	ld	a,#0x20
   01F1 D3 00         [11]  707 	out	(_STI_IDR),a
                            708 ;main.c:55: STI_IMRA  = 0x20;			// Timer A Interrupt unmask
   01F3 3E 20         [ 7]  709 	ld	a,#0x20
   01F5 D3 07         [11]  710 	out	(_STI_IMRA),a
                            711 ;main.c:56: STI_IPRA  = 0x00;			//Pending Ints löschen
   01F7 3E 00         [ 7]  712 	ld	a,#0x00
   01F9 D3 03         [11]  713 	out	(_STI_IPRA),a
                            714 ;main.c:59: STI_PVR   = 0x40;			// Basisadresse der Ints für crt0.s Tabelle setzen
   01FB 3E 40         [ 7]  715 	ld	a,#0x40
   01FD D3 08         [11]  716 	out	(_STI_PVR),a
   01FF C9            [10]  717 	ret
   0200                     718 _InitHardware_end::
                            719 ;main.c:90: int main()
                            720 ;	---------------------------------
                            721 ; Function main
                            722 ; ---------------------------------
   0200                     723 _main_start::
   0200                     724 _main:
                            725 ;main.c:95: InitHardware();
   0200 CDrA7r01      [17]  726 	call	_InitHardware
                            727 ;main.c:99: for (i=0;i<6;i++) {
   0203 16 00         [ 7]  728 	ld	d,#0x00
   0205                     729 00107$:
                            730 ;main.c:100: printstrng(menue[i]);
   0205 6A            [ 4]  731 	ld	l,d
   0206 26 00         [ 7]  732 	ld	h,#0x00
   0208 29            [11]  733 	add	hl, hl
   0209 01r00r00      [10]  734 	ld	bc,#_menue
   020C 09            [11]  735 	add	hl,bc
   020D 4E            [ 7]  736 	ld	c,(hl)
   020E 23            [ 6]  737 	inc	hl
   020F 46            [ 7]  738 	ld	b,(hl)
   0210 D5            [11]  739 	push	de
   0211 C5            [11]  740 	push	bc
   0212 CDr20r00      [17]  741 	call	_printstrng
   0215 F1            [10]  742 	pop	af
   0216 D1            [10]  743 	pop	de
                            744 ;main.c:99: for (i=0;i<6;i++) {
   0217 14            [ 4]  745 	inc	d
   0218 7A            [ 4]  746 	ld	a,d
   0219 D6 06         [ 7]  747 	sub	a, #0x06
   021B 38 E8         [12]  748 	jr	C,00107$
                            749 ;main.c:105: for (n=0;n<100;n++) {
   021D                     750 00118$:
   021D 21 00 00      [10]  751 	ld	hl,#0x0000
                            752 ;main.c:106: for (i=0;i<100;i++) {
   0220                     753 00116$:
   0220 16 00         [ 7]  754 	ld	d,#0x00
   0222                     755 00109$:
                            756 ;main.c:107: Set_GPIO(7,1);
   0222 E5            [11]  757 	push	hl
   0223 D5            [11]  758 	push	de
   0224 01 01 00      [10]  759 	ld	bc,#0x0001
   0227 C5            [11]  760 	push	bc
   0228 3E 07         [ 7]  761 	ld	a,#0x07
   022A F5            [11]  762 	push	af
   022B 33            [ 6]  763 	inc	sp
   022C CDr56r00      [17]  764 	call	_Set_GPIO
   022F F1            [10]  765 	pop	af
   0230 33            [ 6]  766 	inc	sp
   0231 01 B8 0B      [10]  767 	ld	bc,#0x0BB8
   0234 C5            [11]  768 	push	bc
   0235 CDrB8r00      [17]  769 	call	_delay
   0238 F1            [10]  770 	pop	af
   0239 01 00 00      [10]  771 	ld	bc,#0x0000
   023C C5            [11]  772 	push	bc
   023D 3E 07         [ 7]  773 	ld	a,#0x07
   023F F5            [11]  774 	push	af
   0240 33            [ 6]  775 	inc	sp
   0241 CDr56r00      [17]  776 	call	_Set_GPIO
   0244 F1            [10]  777 	pop	af
   0245 33            [ 6]  778 	inc	sp
   0246 D1            [10]  779 	pop	de
   0247 E1            [10]  780 	pop	hl
                            781 ;main.c:106: for (i=0;i<100;i++) {
   0248 14            [ 4]  782 	inc	d
   0249 7A            [ 4]  783 	ld	a,d
   024A D6 64         [ 7]  784 	sub	a, #0x64
   024C 38 D4         [12]  785 	jr	C,00109$
                            786 ;main.c:105: for (n=0;n<100;n++) {
   024E 23            [ 6]  787 	inc	hl
   024F 7D            [ 4]  788 	ld	a,l
   0250 D6 64         [ 7]  789 	sub	a, #0x64
   0252 7C            [ 4]  790 	ld	a,h
   0253 DE 00         [ 7]  791 	sbc	a, #0x00
   0255 38 C9         [12]  792 	jr	C,00116$
   0257 18 C4         [12]  793 	jr	00118$
   0259                     794 _main_end::
                            795 	.area _CODE
   0259                     796 ___str_0:
   0259 5A 38 30 20 53 79   797 	.ascii "Z80 System is online!"
        73 74 65 6D 20 69
        73 20 6F 6E 6C 69
        6E 65 21
   026E 0A                  798 	.db 0x0A
   026F 00                  799 	.db 0x00
   0270                     800 ___str_1:
   0270 2D 2D 2D 2D 2D 2D   801 	.ascii "---------------------------------"
        2D 2D 2D 2D 2D 2D
        2D 2D 2D 2D 2D 2D
        2D 2D 2D 2D 2D 2D
        2D 2D 2D 2D 2D 2D
        2D 2D 2D
   0291 0A                  802 	.db 0x0A
   0292 28 31 29 2E 2E 2E   803 	.ascii "(1)...........Load User Pr"
        2E 2E 2E 2E 2E 2E
        2E 2E 4C 6F 61 64
        20 55 73 65 72 20
        50 72
   02AC 6F 67 72 61 6D      804 	.ascii "ogram"
   02B1 00                  805 	.db 0x00
   02B2                     806 ___str_2:
   02B2 0A                  807 	.db 0x0A
   02B3 28 32 29 2E 2E 2E   808 	.ascii "(2)...........Start User Program"
        2E 2E 2E 2E 2E 2E
        2E 2E 53 74 61 72
        74 20 55 73 65 72
        20 50 72 6F 67 72
        61 6D
   02D3 00                  809 	.db 0x00
   02D4                     810 ___str_3:
   02D4 0A                  811 	.db 0x0A
   02D5 28 33 29 2E 2E 2E   812 	.ascii "(3)...........Clear Memory"
        2E 2E 2E 2E 2E 2E
        2E 2E 43 6C 65 61
        72 20 4D 65 6D 6F
        72 79
   02EF 00                  813 	.db 0x00
   02F0                     814 ___str_4:
   02F0 0A                  815 	.db 0x0A
   02F1 28 34 29 2E 2E 2E   816 	.ascii "(4)...........Dump Memory"
        2E 2E 2E 2E 2E 2E
        2E 2E 44 75 6D 70
        20 4D 65 6D 6F 72
        79
   030A 00                  817 	.db 0x00
   030B                     818 ___str_5:
   030B 0A                  819 	.db 0x0A
   030C 28 35 29 2E 2E 2E   820 	.ascii "(5)...........Restart System"
        2E 2E 2E 2E 2E 2E
        2E 2E 52 65 73 74
        61 72 74 20 53 79
        73 74 65 6D
   0328 00                  821 	.db 0x00
                            822 	.area _INITIALIZER
   0000                     823 __xinit__menue:
   0000r59r02               824 	.dw ___str_0
   0002r70r02               825 	.dw ___str_1
   0004rB2r02               826 	.dw ___str_2
   0006rD4r02               827 	.dw ___str_3
   0008rF0r02               828 	.dw ___str_4
   000Ar0Br03               829 	.dw ___str_5
                            830 	.area _CABS (ABS)
