]> cloudbase.mooo.com Git - avrcpm.git/commitdiff
added Atmega8 support
authorLeo <erbl259-lmu@yahoo.de>
Fri, 2 Jul 2010 13:49:13 +0000 (13:49 +0000)
committerLeo <erbl259-lmu@yahoo.de>
Fri, 2 Jul 2010 13:49:13 +0000 (13:49 +0000)
added a Makefile

git-svn-id: svn://cu.loc/avr-cpm/trunk@4 57430480-672e-4586-8877-bcf8adbbf3b7

avrcpm/avr/Makefile [new file with mode: 0644]
avrcpm/avr/z80.asm
avrcpm/avr/z80.hex

diff --git a/avrcpm/avr/Makefile b/avrcpm/avr/Makefile
new file mode 100644 (file)
index 0000000..27b3b0c
--- /dev/null
@@ -0,0 +1,104 @@
+# AVR-ASM Makefile, derived from the WinAVR template (which
+# is public domain), believed to be neutral to any flavor of "make"
+# (GNU make, BSD make, SysV make)
+
+MCU = atmega8
+F_CPU = 12288000
+#BAUD = 38400
+BAUD = 57600
+DRAM_DQ_ORDER = 1
+
+TARGET = z80
+ASRC = z80.asm
+
+# Place -D or -U options here
+CDEFS = -DF_CPU=$(F_CPU) -DBAUD=$(BAUD) -D$(MCU) -DDRAM_DQ_ORDER=$(DRAM_DQ_ORDER)
+
+WINEPATH = C:/Programme/Atmel/AVR\ Tools/AvrAssembler2
+DEFS = $(WINEPATH)/Appnotes
+
+AS = wine $(WINEPATH)/avrasm2.exe
+ASFLAGS = -I $(DEFS) $(CDEFS)
+
+# Programming support using avrdude. Settings and variables.
+
+AVRDUDE_PROGRAMMER = dragon_isp
+AVRDUDE_PORT = usb
+
+AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
+AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
+
+
+# Uncomment the following if you want avrdude's erase cycle counter.
+# Note that this counter needs to be initialized first using -Yn,
+# see avrdude manual.
+#AVRDUDE_ERASE_COUNTER = -y
+
+# Uncomment the following if you do /not/ wish a verification to be
+# performed after programming the device.
+#AVRDUDE_NO_VERIFY = -V
+
+# Increase verbosity level.  Please use this when submitting bug
+# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> 
+# to submit bug reports.
+#AVRDUDE_VERBOSE = -v -v
+
+AVRDUDE_BASIC = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
+AVRDUDE_FLAGS = $(AVRDUDE_BASIC) $(AVRDUDE_NO_VERIFY) $(AVRDUDE_VERBOSE) $(AVRDUDE_ERASE_COUNTER)
+
+AVRDUDE = avrdude
+REMOVE = rm -f
+MV = mv -f
+
+
+# Define all listing files.
+LST = $(ASRC:.asm=.lst)
+
+# Combine all necessary flags and optional flags.
+# Add target processor to flags.
+ALL_ASFLAGS =  $(ASFLAGS)
+
+# Default target.
+all: hex lst
+
+hex: $(TARGET).hex
+eep: $(TARGET).eep
+lst: $(TARGET).lst
+map: $(TARGET).map
+
+
+# Program the device.  
+program: $(TARGET).hex $(TARGET).eep
+       $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
+
+flash: $(TARGET).hex
+       $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH)
+
+eeprom: $(TARGET).hex $(TARGET).eep
+       $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_EEPROM)
+
+
+
+.SUFFIXES: .hex .eep .lst
+
+%.hex: %.asm
+       $(AS) $(ALL_ASFLAGS) -fI -o $@ $<
+
+%.lst: %.asm
+       @$(AS) $(ALL_ASFLAGS) -v0 -f- -l $@ $<
+
+%.map: %.asm
+       $(AS) $(ALL_ASFLAGS) -v0 -f- -m $@ $<
+
+tags: $(SRC) $(ASRC)
+       ctags $(SRC) $(ASRC)
+
+
+
+# Target: clean project.
+clean:
+       $(REMOVE) $(TARGET).hex $(TARGET).eep $(TARGET).obj $(TARGET).map $(TARGET).lst
+
+
+.PHONY:        all hex eep lst map program flash eeprom tags clean
+
index 6e8d57b175093f184d63a1262b365569ae6529a9..9911e8c784cc73494b83419c1255cdd392c26d77 100755 (executable)
 ;    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 
-;FUSE_H=0xDF
-;FUSE_L=0xF7
-.include "m88def.inc"
-;device ATmega88
+#if defined atmega8
+       .include "m8def.inc"
+
+#elif defined atmega48
+       .include "m48def.inc"
+#else                               /* default */
+       .include "m88def.inc"
+       ;FUSE_H=0xDF
+       ;FUSE_L=0xF7
+#endif
+
+#ifndef F_CPU
+       #define F_CPU  20000000        /* system clock in Hz; defaults to 20MHz */
+#endif
+#ifndef BAUD
+       #define BAUD   38400           /* console baud rate */
+#endif
+; 
+.equ UBRR_VAL   = ((F_CPU+BAUD*8)/(BAUD*16)-1)  ; clever rounding
+
+#define REFR_RATE   64000       /* dram refresh rate. most drams need 1/15.6µs */
+#define REFR_PRE    8           /* timer prescale factor */
+#define REFR_CS     0x02        /* timer clock select for 1/8  */
+#define REFR_CNT    F_CPU / REFR_RATE / REFR_PRE
+
+
+#if defined __ATmega8__
+       .equ refr_vect = OC2addr
+#else
+       .equ refr_vect = OC2Aaddr
+#endif
+
 
 .equ MMC_DEBUG   = 0
 .equ INS_DEBUG   = 0
@@ -44,6 +73,7 @@
 .equ ram_a6 = 6
 .equ ram_a7 = 7
 
+
 ;Port B
 .equ ram_a4    =       0
 .equ ram_a3    =       1
 
 
 ;SRAM
+.dseg
 ;Sector buffer for 512 byte reads/writes from/to SD-card
-.equ sectbuff = 0x200
 
+sectbuff:
+    .byte   512
+
+
+.cseg
 .org 0
        rjmp start              ; reset vector
-       nop                             ; ext int 0
-       nop                             ; ext int 1
-       nop                             ; pcint0
-       nop                             ; pcint1
-       nop                             ; pcint2
-       nop                             ; wdt
+.org refr_vect
        rjmp refrint    ; tim2cmpa
-       nop                             ; tim2cmpb
-       nop                             ; tim2ovf
 
+.org INT_VECTORS_SIZE
 start:
        ldi temp,low(RAMEND)    ; top of memory
        out SPL,temp            ; init stack pointer
@@ -128,13 +157,23 @@ start:
 
 ; - Kill wdt
        wdr
+#if defined __ATmega8__
+       ldi temp,0
+       out MCUCSR,temp
+       
+       ldi temp,(1<<WDCE) | (1<<WDE)
+       out WDTCSR,temp
+       ldi temp,(1<<WDCE)
+       out WDTCSR,temp
+#else
        ldi temp,0
        out MCUSR,temp
-       ldi temp,0x18
+
+       ldi temp,(1<<WDCE) | (1<<WDE)
        sts WDTCSR,temp
-       ldi temp,0x10
+       ldi temp,(1<<WDCE)
        sts WDTCSR,temp
-
+#endif
 
 ; - Setup Ports
        ldi temp,$3F
@@ -144,34 +183,56 @@ start:
        ldi temp,$22
        out DDRC,temp
 
-       sbi portc,ram_w
-       sbi portc,ram_cas
-       sbi portb,ram_ras
-       sbi portd,ram_oe
-       sbi portd,mmc_cs
+       sbi PORTC,ram_w
+       sbi PORTC,ram_cas
+       sbi PORTB,ram_ras
+       sbi PORTD,ram_oe
+       sbi PORTD,mmc_cs
 
 
 ; - Init serial port
-       ldi temp,$18
-       sts ucsr0b,temp
-       ldi temp,$6
-       sts ucsr0c,temp
-       ldi temp,32
-       sts ubrr0l,temp
-       ldi temp,0
-       sts ubrr0h,temp
+#if defined __ATmega8__
+       ldi temp, (1<<TXEN) | (1<<RXEN)
+       out UCSRB,temp
+       ldi temp, (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0)
+       out UCSRC,temp
+       ldi temp, HIGH(UBRR_VAL)
+       out UBRRH,temp
+       ldi temp, LOW(UBRR_VAL)
+       out UBRRL,temp
+#else
+       ldi temp, (1<<TXEN0) | (1<<RXEN0)
+       sts UCSR0B,temp
+       ldi temp, (1<<UCSZ01) | (1<<UCSZ00)
+       sts UCSR0C,temp
+       ldi temp, HIGH(UBRR_VAL)
+       sts UBRR0H,temp
+       ldi temp, LOW(UBRR_VAL)
+       sts UBRR0L,temp
+#endif
 
 ;Init timer2. Refresh-call should happen every (8ms/512)=312 cycles.
-       ldi temp,2
-       sts tccr2a,temp
-       ldi temp,2 ;clk/8
-       sts tccr2b,temp
-       ldi temp,39 ;=312 cycles
-       sts ocr2a,temp
-       ldi temp,2
-       sts timsk2,temp
+
+#ifdef __ATmega8__
+       ldi temp,REFR_CNT
+       out OCR2,temp
+       ldi temp,(1<<WGM21) | REFR_CS   ;CTC, clk/REFR_PRE
+       out TCCR2,temp
+       ldi temp, (1<<OCIE2)
+       out TIMSK,temp
+#else
+       ldi temp,REFR_CNT ;=312 cycles
+       sts OCR2A,temp
+       ldi temp, (1<<WGM21)
+       sts TCCR2A,temp
+       ldi temp, REFR_CS               ;clk/REFR_PRE
+       sts TCCR2B,temp
+       ldi temp,(1<<OCIE2A)
+       sts TIMSK2,temp
+#endif
        sei
 
+
 .if BOOTWAIT
        push temp
        ldi temp,0
@@ -522,9 +583,13 @@ portWrite:
 
 
 conStatus:
-       lds temp2,UCSR0A
        ldi temp,0
-       sbrc temp2,7
+#if defined __ATmega8__
+    sbic  UCSRA,RXC
+#else
+       lds temp2,UCSR0A
+       sbrc temp2,RXC0
+#endif
         ldi temp,0xff
        ret
 
@@ -804,7 +869,7 @@ mmcInit:
        out SPCR,temp
        
        ;Init start: send 80 clocks with cs disabled
-       sbi portd,mmc_cs
+       sbi PORTD,mmc_cs
 
        ldi temp2,20
 mmcInitLoop:
@@ -813,21 +878,21 @@ mmcInitLoop:
        dec temp2
        brne mmcInitLoop
 
-       cbi portd,mmc_cs
+       cbi PORTD,mmc_cs
        rcall mmcByteNoSend
        rcall mmcByteNoSend
        rcall mmcByteNoSend
        rcall mmcByteNoSend
        rcall mmcByteNoSend
        rcall mmcByteNoSend
-       sbi portd,mmc_cs
+       sbi PORTD,mmc_cs
        rcall mmcByteNoSend
        rcall mmcByteNoSend
        rcall mmcByteNoSend
        rcall mmcByteNoSend
 
        ;Send init command
-       cbi portd,mmc_cs
+       cbi PORTD,mmc_cs
        ldi temp,0xff   ;dummy
        rcall mmcByte
        ldi temp,0xff   ;dummy
@@ -850,7 +915,7 @@ mmcInitLoop:
        ldi temp2,0
        rcall mmcWaitResp
 
-       sbi portd,mmc_cs
+       sbi PORTD,mmc_cs
        rcall mmcByteNoSend
 
 
@@ -859,7 +924,7 @@ mmcInitLoop:
 mmcInitOcrLoop:        
        push temp2
 
-       cbi portd,mmc_cs
+       cbi PORTD,mmc_cs
        ldi temp,0xff   ;dummy
        rcall mmcByte
        ldi temp,0x41   ;cmd
@@ -881,7 +946,7 @@ mmcInitOcrLoop:
        cpi temp,0
        breq mmcInitOcrLoopDone
 
-       sbi portd,mmc_cs
+       sbi PORTD,mmc_cs
        rcall mmcByteNoSend
        
        pop temp2
@@ -894,7 +959,7 @@ mmcInitOcrLoop:
 
 mmcInitOcrLoopDone:
        pop temp2
-       sbi portd,mmc_cs
+       sbi PORTD,mmc_cs
        rcall mmcByteNoSend
 
        ldi temp,0
@@ -908,7 +973,7 @@ mmcReadSect:
        ldi temp,0x50
        out SPCR,temp
 
-       cbi portd,mmc_cs
+       cbi PORTD,mmc_cs
        rcall mmcByteNoSend
        ldi temp,0x51   ;cmd (read sector)
        rcall mmcByte
@@ -951,7 +1016,7 @@ mmcreadloop:
        rcall mmcByteNoSend
        rcall mmcByteNoSend
 
-       sbi portd,mmc_cs
+       sbi PORTD,mmc_cs
        rcall mmcByteNoSend
 
        ldi temp,0
@@ -965,7 +1030,7 @@ mmcWriteSect:
        ldi temp,0x50
        out SPCR,temp
 
-       cbi portd,mmc_cs
+       cbi PORTD,mmc_cs
        rcall mmcByteNoSend
 
        ldi temp,0x58   ;cmd (write sector)
@@ -1018,7 +1083,7 @@ mmcwaitwritten:
        cpi temp,0xff
        brne mmcwaitwritten
 
-       sbi portd,mmc_cs
+       sbi PORTD,mmc_cs
        rcall mmcByteNoSend
 
        ldi temp,0
@@ -1029,42 +1094,50 @@ mmcwaitwritten:
 ;Set up wdt to time out after 1 sec.
 resetAVR:
        cli
-       ldi temp,0x10
+#if defined __ATmega8__
+       ldi temp,(1<<WDCE)
+       out WDTCSR,temp
+       ldi temp,(1<<WDCE) | (1<<WDE) | (110<<WDP0)
+       out WDTCSR,temp
+#else
+       ldi temp,(1<<WDCE)
        sts WDTCSR,temp
-       ldi temp,0x1f
+       ldi temp,(1<<WDCE) | (1<<WDE) | (110<<WDP0)
        sts WDTCSR,temp
+#endif
 resetwait:
        rjmp resetwait
 
+
 ; ------------------ DRAM routines -------------
 
 ;Sends the address in zh:zl to the ram
 dram_setaddr:
        push temp
-       in temp,portd
+       in temp,PORTD
        andi temp,0x17
-       out portd,temp
-       in temp,portb
+       out PORTD,temp
+       in temp,PORTB
        andi temp,0xE0
-       out portb,temp
+       out PORTB,temp
        sbrc zl,0
-        sbi portb,ram_a0
+        sbi PORTB,ram_a0
        sbrc zl,1
-        sbi portb,ram_a1
+        sbi PORTB,ram_a1
        sbrc zl,2
-        sbi portb,ram_a2
+        sbi PORTB,ram_a2
        sbrc zl,3
-        sbi portb,ram_a3
+        sbi PORTB,ram_a3
        sbrc zl,4
-        sbi portb,ram_a4
+        sbi PORTB,ram_a4
        sbrc zl,5
-        sbi portd,ram_a5
+        sbi PORTD,ram_a5
        sbrc zl,6
-        sbi portd,ram_a6
+        sbi PORTD,ram_a6
        sbrc zl,7
-        sbi portd,ram_a7
+        sbi PORTD,ram_a7
        sbrc zh,0
-        sbi portd,ram_a8
+        sbi PORTD,ram_a8
        pop temp
        ret
 
@@ -1082,7 +1155,7 @@ dram_getnibble:
 
 dram_sendnibble:
        push temp2
-       in temp2,portc
+       in temp2,PORTC
        andi temp2,0xE2
 
        sbrc temp,0
@@ -1094,7 +1167,7 @@ dram_sendnibble:
        sbrc temp,3
         ori temp2,(1<<ram_d4)
 
-       out portc,temp2
+       out PORTC,temp2
        pop temp2
        ret
 
@@ -1110,38 +1183,38 @@ dram_read:
        rol zh
        ;z=addr[15-7]
        rcall dram_setaddr
-       cbi portb,ram_ras
+       cbi PORTB,ram_ras
 
        ldi zh,0
        mov zl,adrl
        andi zl,0x7F
        rcall dram_setaddr
        nop
-       cbi portc,ram_cas
+       cbi PORTC,ram_cas
        nop
        nop
-       cbi portd,ram_oe
+       cbi PORTD,ram_oe
        nop
        rcall dram_getnibble    
-       sbi portd,ram_oe
+       sbi PORTD,ram_oe
        swap temp
-       sbi portc,ram_cas
+       sbi PORTC,ram_cas
 
        ldi zh,0
        mov zl,adrl
        ori zl,0x80
        rcall dram_setaddr
        nop
-       cbi portc,ram_cas
+       cbi PORTC,ram_cas
        nop
-       cbi portd,ram_oe
+       cbi PORTD,ram_oe
        nop
        nop
        rcall dram_getnibble    
 
-       sbi portd,ram_oe
-       sbi portc,ram_cas
-       sbi portb,ram_ras
+       sbi PORTD,ram_oe
+       sbi PORTC,ram_cas
+       sbi PORTB,ram_ras
        sei
        ret
 
@@ -1165,7 +1238,7 @@ dram_write:
        rcall dram_setaddr
        nop
        nop
-       cbi portb,ram_ras
+       cbi PORTB,ram_ras
 
        ldi zh,0
        mov zl,adrl
@@ -1173,15 +1246,15 @@ dram_write:
        rcall dram_setaddr
        nop
        nop
-       cbi portc,ram_cas
+       cbi PORTC,ram_cas
        nop
        nop
-       cbi portc,ram_w
+       cbi PORTC,ram_w
        nop
        nop
        nop
-       sbi portc,ram_w
-       sbi portc,ram_cas
+       sbi PORTC,ram_w
+       sbi PORTC,ram_cas
 
 
        ldi zh,0
@@ -1190,52 +1263,52 @@ dram_write:
        rcall dram_setaddr
        swap temp
        rcall dram_sendnibble
-       cbi portc,ram_cas
+       cbi PORTC,ram_cas
        nop
        nop
-       cbi portc,ram_w
+       cbi PORTC,ram_w
        nop
        nop
-       sbi portc,ram_w
+       sbi PORTC,ram_w
        nop
        nop
-       sbi portc,ram_cas
-       sbi portb,ram_ras
+       sbi PORTC,ram_cas
+       sbi PORTB,ram_ras
 
        in temp,ddrc
        andi temp,0xE2
        out ddrc,temp
-       in temp,portc
+       in temp,PORTC
        andi temp,0xE2
-       out portc,temp
+       out PORTC,temp
        sei
        ret
 
 refrint:
        nop
+;      nop
+;      nop
+       cbi PORTC,ram_cas
+;      nop
+;      nop
+;      nop
+;      nop
+       cbi PORTB,ram_ras
        nop
-       nop
-       cbi portc,ram_cas
-       nop
-       nop
-       nop
-       nop
-       cbi portb,ram_ras
-       nop
-       nop
-       nop
-       nop
-       sbi portc,ram_cas
-       nop
-       nop
-       nop
-       nop
-       sbi portb,ram_ras
-       nop
-       nop
-       nop
-       nop
-       nop
+;      nop
+;      nop
+;      nop
+       sbi PORTC,ram_cas
+;      nop
+;      nop
+;      nop
+;      nop
+       sbi PORTB,ram_ras
+;      nop
+;      nop
+;      nop
+;      nop
+;      nop
        reti
        
 
@@ -1307,21 +1380,34 @@ printstr_end:
 
 ;Fetches a char from the uart to temp. If none available, waits till one is.
 uartgetc:
-       lds temp,ucsr0a
-       sbrs temp,7
+#if defined __ATmega8__
+       sbis UCSRA,RXC
         rjmp uartgetc
-       lds temp,udr0
+    in  temp,UDR
+#else
+       lds temp,UCSR0A
+       sbrs temp,RXC0
+        rjmp uartgetc
+       lds temp,UDR0
+#endif
        ret
 
 ;Sends a char from temp to the uart. 
 uartputc:
+#if defined __ATmega8__
+uartputc_l:
+       sbis UCSRA,UDRE
+        rjmp uartputc_l
+    out UDR,temp
+#else
        push temp
 uartputc_l:
-       lds temp,ucsr0a
-       sbrs temp,5
+       lds temp,UCSR0A
+       sbrs temp,UDRE0
         rjmp uartputc_l
        pop temp
-       sts udr0,temp
+       sts UDR0,temp
+#endif
        ret
 
 ; ------------ Fetch phase stuff -----------------
@@ -1773,182 +1859,182 @@ opjumps:
 ;
 ;I sure hope I got the mapping between flags and instructions correct...
 
-;----------------------------------------------------------------\r
-;|                                                              |\r
-;|                            Zilog                             |\r
-;|                                                              |\r
-;|                 ZZZZZZZ    88888      000                    |\r
-;|                      Z    8     8    0   0                   |\r
-;|                     Z     8     8   0   0 0                  |\r
-;|                    Z       88888    0  0  0                  |\r
-;|                   Z       8     8   0 0   0                  |\r
-;|                  Z        8     8    0   0                   |\r
-;|                 ZZZZZZZ    88888      000                    |\r
-;|                                                              |\r
-;|          Z80 MICROPROCESSOR Instruction Set Summary          |\r
-;|                                                              |\r
-;----------------------------------------------------------------\r
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;|----------+------+---------------------+----------------------|\r
-;|ADC A,s   |***V0*|Add with Carry       |A=A+s+CY              |\r
-;|ADC HL,ss |**?V0*|Add with Carry       |HL=HL+ss+CY           |\r
-;|ADD A,s   |***V0*|Add                  |A=A+s                 |\r
-;|ADD HL,ss |--?-0*|Add                  |HL=HL+ss              |\r
-;|ADD IX,pp |--?-0*|Add                  |IX=IX+pp              |\r
-;|ADD IY,rr |--?-0*|Add                  |IY=IY+rr              |\r
-;|AND s     |***P00|Logical AND          |A=A&s                 |\r
-;|BIT b,m   |?*1?0-|Test Bit             |m&{2^b}               |\r
-;|CALL cc,nn|------|Conditional Call     |If cc CALL            |\r
-;|CALL nn   |------|Unconditional Call   |-[SP]=PC,PC=nn        |\r
-;|CCF       |--?-0*|Complement Carry Flag|CY=~CY                |\r
-;|CP s      |***V1*|Compare              |A-s                   |\r
-;|CPD       |****1-|Compare and Decrement|A-[HL],HL=HL-1,BC=BC-1|\r
-;|CPDR      |****1-|Compare, Dec., Repeat|CPD till A=[HL]or BC=0|\r
-;|CPI       |****1-|Compare and Increment|A-[HL],HL=HL+1,BC=BC-1|\r
-;|CPIR      |****1-|Compare, Inc., Repeat|CPI till A=[HL]or BC=0|\r
-;|CPL       |--1-1-|Complement           |A=~A                  |\r
-;|DAA       |***P-*|Decimal Adjust Acc.  |A=BCD format          |\r
-;|DEC s     |***V1-|Decrement            |s=s-1                 |\r
-;|DEC xx    |------|Decrement            |xx=xx-1               |\r
-;|DEC ss    |------|Decrement            |ss=ss-1               |\r
-;|DI        |------|Disable Interrupts   |                      |\r
-;|DJNZ e    |------|Dec., Jump Non-Zero  |B=B-1 till B=0        |\r
-;|EI        |------|Enable Interrupts    |                      |\r
-;|EX [SP],HL|------|Exchange             |[SP]<->HL             |\r
-;|EX [SP],xx|------|Exchange             |[SP]<->xx             |\r
-;|EX AF,AF' |------|Exchange             |AF<->AF'              |\r
-;|EX DE,HL  |------|Exchange             |DE<->HL               |\r
-;|EXX       |------|Exchange             |qq<->qq'   (except AF)|\r
-;|HALT      |------|Halt                 |                      |\r
-;|IM n      |------|Interrupt Mode       |             (n=0,1,2)|\r
-;|IN A,[n]  |------|Input                |A=[n]                 |\r
-;|IN r,[C]  |***P0-|Input                |r=[C]                 |\r
-;|INC r     |***V0-|Increment            |r=r+1                 |\r
-;|INC [HL]  |***V0-|Increment            |[HL]=[HL]+1           |\r
-;|INC xx    |------|Increment            |xx=xx+1               |\r
-;|INC [xx+d]|***V0-|Increment            |[xx+d]=[xx+d]+1       |\r
-;|INC ss    |------|Increment            |ss=ss+1               |\r
-;|IND       |?*??1-|Input and Decrement  |[HL]=[C],HL=HL-1,B=B-1|\r
-;|INDR      |?1??1-|Input, Dec., Repeat  |IND till B=0          |\r
-;|INI       |?*??1-|Input and Increment  |[HL]=[C],HL=HL+1,B=B-1|\r
-;|INIR      |?1??1-|Input, Inc., Repeat  |INI till B=0          |\r
-;|JP [HL]   |------|Unconditional Jump   |PC=[HL]               |\r
-;|JP [xx]   |------|Unconditional Jump   |PC=[xx]               |\r
-;|JP nn     |------|Unconditional Jump   |PC=nn                 |\r
-;|JP cc,nn  |------|Conditional Jump     |If cc JP              |\r
-;|JR e      |------|Unconditional Jump   |PC=PC+e               |\r
-;|JR cc,e   |------|Conditional Jump     |If cc JR(cc=C,NC,NZ,Z)|\r
-;|LD dst,src|------|Load                 |dst=src               |\r
-;|LD A,i    |**0*0-|Load                 |A=i            (i=I,R)|\r
-;|LDD       |--0*0-|Load and Decrement   |[DE]=[HL],HL=HL-1,#   |\r
-;|LDDR      |--000-|Load, Dec., Repeat   |LDD till BC=0         |\r
-;|LDI       |--0*0-|Load and Increment   |[DE]=[HL],HL=HL+1,#   |\r
-;|LDIR      |--000-|Load, Inc., Repeat   |LDI till BC=0         |\r
-;|NEG       |***V1*|Negate               |A=-A                  |\r
-;|NOP       |------|No Operation         |                      |\r
-;|OR s      |***P00|Logical inclusive OR |A=Avs                 |\r
-;|OTDR      |?1??1-|Output, Dec., Repeat |OUTD till B=0         |\r
-;|OTIR      |?1??1-|Output, Inc., Repeat |OUTI till B=0         |\r
-;|OUT [C],r |------|Output               |[C]=r                 |\r
-;|OUT [n],A |------|Output               |[n]=A                 |\r
-;|OUTD      |?*??1-|Output and Decrement |[C]=[HL],HL=HL-1,B=B-1|\r
-;|OUTI      |?*??1-|Output and Increment |[C]=[HL],HL=HL+1,B=B-1|\r
-;|POP xx    |------|Pop                  |xx=[SP]+              |\r
-;|POP qq    |------|Pop                  |qq=[SP]+              |\r
-;|PUSH xx   |------|Push                 |-[SP]=xx              |\r
-;|PUSH qq   |------|Push                 |-[SP]=qq              |\r
-;|RES b,m   |------|Reset bit            |m=m&{~2^b}            |\r
-;|RET       |------|Return               |PC=[SP]+              |\r
-;|RET cc    |------|Conditional Return   |If cc RET             |\r
-;|RETI      |------|Return from Interrupt|PC=[SP]+              |\r
-;|RETN      |------|Return from NMI      |PC=[SP]+              |\r
-;|RL m      |**0P0*|Rotate Left          |m={CY,m}<-            |\r
-;|RLA       |--0-0*|Rotate Left Acc.     |A={CY,A}<-            |\r
-;|RLC m     |**0P0*|Rotate Left Circular |m=m<-                 |\r
-;|RLCA      |--0-0*|Rotate Left Circular |A=A<-                 |\r
-;----------------------------------------------------------------\r
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;|----------+------+---------------------+----------------------|\r
-;|RLD       |**0P0-|Rotate Left 4 bits   |{A,[HL]}={A,[HL]}<- ##|\r
-;|RR m      |**0P0*|Rotate Right         |m=->{CY,m}            |\r
-;|RRA       |--0-0*|Rotate Right Acc.    |A=->{CY,A}            |\r
-;|RRC m     |**0P0*|Rotate Right Circular|m=->m                 |\r
-;|RRCA      |--0-0*|Rotate Right Circular|A=->A                 |\r
-;|RRD       |**0P0-|Rotate Right 4 bits  |{A,[HL]}=->{A,[HL]} ##|\r
-;|RST p     |------|Restart              | (p=0H,8H,10H,...,38H)|\r
-;|SBC A,s   |***V1*|Subtract with Carry  |A=A-s-CY              |\r
-;|SBC HL,ss |**?V1*|Subtract with Carry  |HL=HL-ss-CY           |\r
-;|SCF       |--0-01|Set Carry Flag       |CY=1                  |\r
-;|SET b,m   |------|Set bit              |m=mv{2^b}             |\r
-;|SLA m     |**0P0*|Shift Left Arithmetic|m=m*2                 |\r
-;|SRA m     |**0P0*|Shift Right Arith.   |m=m/2                 |\r
-;|SRL m     |**0P0*|Shift Right Logical  |m=->{0,m,CY}          |\r
-;|SUB s     |***V1*|Subtract             |A=A-s                 |\r
-;|XOR s     |***P00|Logical Exclusive OR |A=Axs                 |\r
-;|----------+------+--------------------------------------------|\r
-;| F        |-*01? |Flag unaffected/affected/reset/set/unknown  |\r
-;| S        |S     |Sign flag (Bit 7)                           |\r
-;| Z        | Z    |Zero flag (Bit 6)                           |\r
-;| HC       |  H   |Half Carry flag (Bit 4)                     |\r
-;| P/V      |   P  |Parity/Overflow flag (Bit 2, V=overflow)    |\r
-;| N        |    N |Add/Subtract flag (Bit 1)                   |\r
-;| CY       |     C|Carry flag (Bit 0)                          |\r
-;|-----------------+--------------------------------------------|\r
-;| n               |Immediate addressing                        |\r
-;| nn              |Immediate extended addressing               |\r
-;| e               |Relative addressing (PC=PC+2+offset)        |\r
-;| [nn]            |Extended addressing                         |\r
-;| [xx+d]          |Indexed addressing                          |\r
-;| r               |Register addressing                         |\r
-;| [rr]            |Register indirect addressing                |\r
-;|                 |Implied addressing                          |\r
-;| b               |Bit addressing                              |\r
-;| p               |Modified page zero addressing (see RST)     |\r
-;|-----------------+--------------------------------------------|\r
-;|DEFB n(,...)     |Define Byte(s)                              |\r
-;|DEFB 'str'(,...) |Define Byte ASCII string(s)                 |\r
-;|DEFS nn          |Define Storage Block                        |\r
-;|DEFW nn(,...)    |Define Word(s)                              |\r
-;|-----------------+--------------------------------------------|\r
-;| A  B  C  D  E   |Registers (8-bit)                           |\r
-;| AF  BC  DE  HL  |Register pairs (16-bit)                     |\r
-;| F               |Flag register (8-bit)                       |\r
-;| I               |Interrupt page address register (8-bit)     |\r
-;| IX IY           |Index registers (16-bit)                    |\r
-;| PC              |Program Counter register (16-bit)           |\r
-;| R               |Memory Refresh register                     |\r
-;| SP              |Stack Pointer register (16-bit)             |\r
-;|-----------------+--------------------------------------------|\r
-;| b               |One bit (0 to 7)                            |\r
-;| cc              |Condition (C,M,NC,NZ,P,PE,PO,Z)             |\r
-;| d               |One-byte expression (-128 to +127)          |\r
-;| dst             |Destination s, ss, [BC], [DE], [HL], [nn]   |\r
-;| e               |One-byte expression (-126 to +129)          |\r
-;| m               |Any register r, [HL] or [xx+d]              |\r
-;| n               |One-byte expression (0 to 255)              |\r
-;| nn              |Two-byte expression (0 to 65535)            |\r
-;| pp              |Register pair BC, DE, IX or SP              |\r
-;| qq              |Register pair AF, BC, DE or HL              |\r
-;| qq'             |Alternative register pair AF, BC, DE or HL  |\r
-;| r               |Register A, B, C, D, E, H or L              |\r
-;| rr              |Register pair BC, DE, IY or SP              |\r
-;| s               |Any register r, value n, [HL] or [xx+d]     |\r
-;| src             |Source s, ss, [BC], [DE], [HL], nn, [nn]    |\r
-;| ss              |Register pair BC, DE, HL or SP              |\r
-;| xx              |Index register IX or IY                     |\r
-;|-----------------+--------------------------------------------|\r
-;| +  -  *  /  ^   |Add/subtract/multiply/divide/exponent       |\r
-;| &  ~  v  x      |Logical AND/NOT/inclusive OR/exclusive OR   |\r
-;| <-  ->          |Rotate left/right                           |\r
-;| [ ]             |Indirect addressing                         |\r
-;| [ ]+  -[ ]      |Indirect addressing auto-increment/decrement|\r
-;| { }             |Combination of operands                     |\r
-;| #               |Also BC=BC-1,DE=DE-1                        |\r
-;| ##              |Only lower 4 bits of accumulator A used     |\r
-;----------------------------------------------------------------\r
-\r
+;----------------------------------------------------------------
+;|                                                              |
+;|                            Zilog                             |
+;|                                                              |
+;|                 ZZZZZZZ    88888      000                    |
+;|                      Z    8     8    0   0                   |
+;|                     Z     8     8   0   0 0                  |
+;|                    Z       88888    0  0  0                  |
+;|                   Z       8     8   0 0   0                  |
+;|                  Z        8     8    0   0                   |
+;|                 ZZZZZZZ    88888      000                    |
+;|                                                              |
+;|          Z80 MICROPROCESSOR Instruction Set Summary          |
+;|                                                              |
+;----------------------------------------------------------------
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;|----------+------+---------------------+----------------------|
+;|ADC A,s   |***V0*|Add with Carry       |A=A+s+CY              |
+;|ADC HL,ss |**?V0*|Add with Carry       |HL=HL+ss+CY           |
+;|ADD A,s   |***V0*|Add                  |A=A+s                 |
+;|ADD HL,ss |--?-0*|Add                  |HL=HL+ss              |
+;|ADD IX,pp |--?-0*|Add                  |IX=IX+pp              |
+;|ADD IY,rr |--?-0*|Add                  |IY=IY+rr              |
+;|AND s     |***P00|Logical AND          |A=A&s                 |
+;|BIT b,m   |?*1?0-|Test Bit             |m&{2^b}               |
+;|CALL cc,nn|------|Conditional Call     |If cc CALL            |
+;|CALL nn   |------|Unconditional Call   |-[SP]=PC,PC=nn        |
+;|CCF       |--?-0*|Complement Carry Flag|CY=~CY                |
+;|CP s      |***V1*|Compare              |A-s                   |
+;|CPD       |****1-|Compare and Decrement|A-[HL],HL=HL-1,BC=BC-1|
+;|CPDR      |****1-|Compare, Dec., Repeat|CPD till A=[HL]or BC=0|
+;|CPI       |****1-|Compare and Increment|A-[HL],HL=HL+1,BC=BC-1|
+;|CPIR      |****1-|Compare, Inc., Repeat|CPI till A=[HL]or BC=0|
+;|CPL       |--1-1-|Complement           |A=~A                  |
+;|DAA       |***P-*|Decimal Adjust Acc.  |A=BCD format          |
+;|DEC s     |***V1-|Decrement            |s=s-1                 |
+;|DEC xx    |------|Decrement            |xx=xx-1               |
+;|DEC ss    |------|Decrement            |ss=ss-1               |
+;|DI        |------|Disable Interrupts   |                      |
+;|DJNZ e    |------|Dec., Jump Non-Zero  |B=B-1 till B=0        |
+;|EI        |------|Enable Interrupts    |                      |
+;|EX [SP],HL|------|Exchange             |[SP]<->HL             |
+;|EX [SP],xx|------|Exchange             |[SP]<->xx             |
+;|EX AF,AF' |------|Exchange             |AF<->AF'              |
+;|EX DE,HL  |------|Exchange             |DE<->HL               |
+;|EXX       |------|Exchange             |qq<->qq'   (except AF)|
+;|HALT      |------|Halt                 |                      |
+;|IM n      |------|Interrupt Mode       |             (n=0,1,2)|
+;|IN A,[n]  |------|Input                |A=[n]                 |
+;|IN r,[C]  |***P0-|Input                |r=[C]                 |
+;|INC r     |***V0-|Increment            |r=r+1                 |
+;|INC [HL]  |***V0-|Increment            |[HL]=[HL]+1           |
+;|INC xx    |------|Increment            |xx=xx+1               |
+;|INC [xx+d]|***V0-|Increment            |[xx+d]=[xx+d]+1       |
+;|INC ss    |------|Increment            |ss=ss+1               |
+;|IND       |?*??1-|Input and Decrement  |[HL]=[C],HL=HL-1,B=B-1|
+;|INDR      |?1??1-|Input, Dec., Repeat  |IND till B=0          |
+;|INI       |?*??1-|Input and Increment  |[HL]=[C],HL=HL+1,B=B-1|
+;|INIR      |?1??1-|Input, Inc., Repeat  |INI till B=0          |
+;|JP [HL]   |------|Unconditional Jump   |PC=[HL]               |
+;|JP [xx]   |------|Unconditional Jump   |PC=[xx]               |
+;|JP nn     |------|Unconditional Jump   |PC=nn                 |
+;|JP cc,nn  |------|Conditional Jump     |If cc JP              |
+;|JR e      |------|Unconditional Jump   |PC=PC+e               |
+;|JR cc,e   |------|Conditional Jump     |If cc JR(cc=C,NC,NZ,Z)|
+;|LD dst,src|------|Load                 |dst=src               |
+;|LD A,i    |**0*0-|Load                 |A=i            (i=I,R)|
+;|LDD       |--0*0-|Load and Decrement   |[DE]=[HL],HL=HL-1,#   |
+;|LDDR      |--000-|Load, Dec., Repeat   |LDD till BC=0         |
+;|LDI       |--0*0-|Load and Increment   |[DE]=[HL],HL=HL+1,#   |
+;|LDIR      |--000-|Load, Inc., Repeat   |LDI till BC=0         |
+;|NEG       |***V1*|Negate               |A=-A                  |
+;|NOP       |------|No Operation         |                      |
+;|OR s      |***P00|Logical inclusive OR |A=Avs                 |
+;|OTDR      |?1??1-|Output, Dec., Repeat |OUTD till B=0         |
+;|OTIR      |?1??1-|Output, Inc., Repeat |OUTI till B=0         |
+;|OUT [C],r |------|Output               |[C]=r                 |
+;|OUT [n],A |------|Output               |[n]=A                 |
+;|OUTD      |?*??1-|Output and Decrement |[C]=[HL],HL=HL-1,B=B-1|
+;|OUTI      |?*??1-|Output and Increment |[C]=[HL],HL=HL+1,B=B-1|
+;|POP xx    |------|Pop                  |xx=[SP]+              |
+;|POP qq    |------|Pop                  |qq=[SP]+              |
+;|PUSH xx   |------|Push                 |-[SP]=xx              |
+;|PUSH qq   |------|Push                 |-[SP]=qq              |
+;|RES b,m   |------|Reset bit            |m=m&{~2^b}            |
+;|RET       |------|Return               |PC=[SP]+              |
+;|RET cc    |------|Conditional Return   |If cc RET             |
+;|RETI      |------|Return from Interrupt|PC=[SP]+              |
+;|RETN      |------|Return from NMI      |PC=[SP]+              |
+;|RL m      |**0P0*|Rotate Left          |m={CY,m}<-            |
+;|RLA       |--0-0*|Rotate Left Acc.     |A={CY,A}<-            |
+;|RLC m     |**0P0*|Rotate Left Circular |m=m<-                 |
+;|RLCA      |--0-0*|Rotate Left Circular |A=A<-                 |
+;----------------------------------------------------------------
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;|----------+------+---------------------+----------------------|
+;|RLD       |**0P0-|Rotate Left 4 bits   |{A,[HL]}={A,[HL]}<- ##|
+;|RR m      |**0P0*|Rotate Right         |m=->{CY,m}            |
+;|RRA       |--0-0*|Rotate Right Acc.    |A=->{CY,A}            |
+;|RRC m     |**0P0*|Rotate Right Circular|m=->m                 |
+;|RRCA      |--0-0*|Rotate Right Circular|A=->A                 |
+;|RRD       |**0P0-|Rotate Right 4 bits  |{A,[HL]}=->{A,[HL]} ##|
+;|RST p     |------|Restart              | (p=0H,8H,10H,...,38H)|
+;|SBC A,s   |***V1*|Subtract with Carry  |A=A-s-CY              |
+;|SBC HL,ss |**?V1*|Subtract with Carry  |HL=HL-ss-CY           |
+;|SCF       |--0-01|Set Carry Flag       |CY=1                  |
+;|SET b,m   |------|Set bit              |m=mv{2^b}             |
+;|SLA m     |**0P0*|Shift Left Arithmetic|m=m*2                 |
+;|SRA m     |**0P0*|Shift Right Arith.   |m=m/2                 |
+;|SRL m     |**0P0*|Shift Right Logical  |m=->{0,m,CY}          |
+;|SUB s     |***V1*|Subtract             |A=A-s                 |
+;|XOR s     |***P00|Logical Exclusive OR |A=Axs                 |
+;|----------+------+--------------------------------------------|
+;| F        |-*01? |Flag unaffected/affected/reset/set/unknown  |
+;| S        |S     |Sign flag (Bit 7)                           |
+;| Z        | Z    |Zero flag (Bit 6)                           |
+;| HC       |  H   |Half Carry flag (Bit 4)                     |
+;| P/V      |   P  |Parity/Overflow flag (Bit 2, V=overflow)    |
+;| N        |    N |Add/Subtract flag (Bit 1)                   |
+;| CY       |     C|Carry flag (Bit 0)                          |
+;|-----------------+--------------------------------------------|
+;| n               |Immediate addressing                        |
+;| nn              |Immediate extended addressing               |
+;| e               |Relative addressing (PC=PC+2+offset)        |
+;| [nn]            |Extended addressing                         |
+;| [xx+d]          |Indexed addressing                          |
+;| r               |Register addressing                         |
+;| [rr]            |Register indirect addressing                |
+;|                 |Implied addressing                          |
+;| b               |Bit addressing                              |
+;| p               |Modified page zero addressing (see RST)     |
+;|-----------------+--------------------------------------------|
+;|DEFB n(,...)     |Define Byte(s)                              |
+;|DEFB 'str'(,...) |Define Byte ASCII string(s)                 |
+;|DEFS nn          |Define Storage Block                        |
+;|DEFW nn(,...)    |Define Word(s)                              |
+;|-----------------+--------------------------------------------|
+;| A  B  C  D  E   |Registers (8-bit)                           |
+;| AF  BC  DE  HL  |Register pairs (16-bit)                     |
+;| F               |Flag register (8-bit)                       |
+;| I               |Interrupt page address register (8-bit)     |
+;| IX IY           |Index registers (16-bit)                    |
+;| PC              |Program Counter register (16-bit)           |
+;| R               |Memory Refresh register                     |
+;| SP              |Stack Pointer register (16-bit)             |
+;|-----------------+--------------------------------------------|
+;| b               |One bit (0 to 7)                            |
+;| cc              |Condition (C,M,NC,NZ,P,PE,PO,Z)             |
+;| d               |One-byte expression (-128 to +127)          |
+;| dst             |Destination s, ss, [BC], [DE], [HL], [nn]   |
+;| e               |One-byte expression (-126 to +129)          |
+;| m               |Any register r, [HL] or [xx+d]              |
+;| n               |One-byte expression (0 to 255)              |
+;| nn              |Two-byte expression (0 to 65535)            |
+;| pp              |Register pair BC, DE, IX or SP              |
+;| qq              |Register pair AF, BC, DE or HL              |
+;| qq'             |Alternative register pair AF, BC, DE or HL  |
+;| r               |Register A, B, C, D, E, H or L              |
+;| rr              |Register pair BC, DE, IY or SP              |
+;| s               |Any register r, value n, [HL] or [xx+d]     |
+;| src             |Source s, ss, [BC], [DE], [HL], nn, [nn]    |
+;| ss              |Register pair BC, DE, HL or SP              |
+;| xx              |Index register IX or IY                     |
+;|-----------------+--------------------------------------------|
+;| +  -  *  /  ^   |Add/subtract/multiply/divide/exponent       |
+;| &  ~  v  x      |Logical AND/NOT/inclusive OR/exclusive OR   |
+;| <-  ->          |Rotate left/right                           |
+;| [ ]             |Indirect addressing                         |
+;| [ ]+  -[ ]      |Indirect addressing auto-increment/decrement|
+;| { }             |Combination of operands                     |
+;| #               |Also BC=BC-1,DE=DE-1                        |
+;| ##              |Only lower 4 bits of accumulator A used     |
+;----------------------------------------------------------------
+
 
 ;ToDo: Parity at more instructions...
 
@@ -1962,14 +2048,14 @@ opjumps:
 do_op_nop:
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;|INC r     |***V0-|Increment            |r=r+1                 |\r
-;|INC [HL]  |***V0-|Increment            |[HL]=[HL]+1           |\r
-;|INC [xx+d]|***V0-|Increment            |[xx+d]=[xx+d]+1       |\r
-;\r
-; OK\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;|INC r     |***V0-|Increment            |r=r+1                 |
+;|INC [HL]  |***V0-|Increment            |[HL]=[HL]+1           |
+;|INC [xx+d]|***V0-|Increment            |[xx+d]=[xx+d]+1       |
+;
+; OK
 do_op_inc:
        andi  z_flags, (1<<ZFL_C)       ; bis auf Carry alles auf 0
        ldi   temp, 1
@@ -1981,17 +2067,17 @@ do_op_inc:
        sbrc  opl, 7                    ; Sign
        ori   z_flags, (1<<ZFL_S)       
        bst   temp, AVR_H               ; Half Sign
-       bld   z_flags, ZFL_H\r
-  bst   temp, AVR_C               ; Overflow\r
-  bld   z_flags, ZFL_P\r
+       bld   z_flags, ZFL_H
+  bst   temp, AVR_C               ; Overflow
+  bld   z_flags, ZFL_P
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;|DEC s     |***V1-|Decrement            |s=s-1                 |\r
-;\r
-; OK\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;|DEC s     |***V1-|Decrement            |s=s-1                 |
+;
+; OK
 do_op_dec:
        andi  z_flags, (1<<ZFL_C)       ; bis auf Carry alles auf 0
        ori   z_flags, (1<<ZFL_N)       ; Negation auf 1
@@ -2005,18 +2091,18 @@ do_op_dec:
        bld   z_flags, ZFL_S
        bst   temp, AVR_H               ; Half Sign
        bld   z_flags, ZFL_H
-  bst   temp, AVR_C               ; Underflow\r
-  bld   z_flags, ZFL_P\r
-       ret
-\r
-\r
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;|INC xx    |------|Increment            |xx=xx+1               |\r
-;|INC ss    |------|Increment            |ss=ss+1               |\r
-;\r
-; OK\r
+  bst   temp, AVR_C               ; Underflow
+  bld   z_flags, ZFL_P
+       ret
+
+
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;|INC xx    |------|Increment            |xx=xx+1               |
+;|INC ss    |------|Increment            |ss=ss+1               |
+;
+; OK
 do_op_inc16:
        ldi   temp, 1
        ldi   temp2, 0
@@ -2024,13 +2110,13 @@ do_op_inc16:
        adc   oph, temp2
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;|DEC xx    |------|Decrement            |xx=xx-1               |\r
-;|DEC ss    |------|Decrement            |ss=ss-1               |\r
-;\r
-; OK\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;|DEC xx    |------|Decrement            |xx=xx-1               |
+;|DEC ss    |------|Decrement            |ss=ss-1               |
+;
+; OK
 do_op_dec16:
        ldi   temp, 1
        ldi   temp2, 0
@@ -2038,12 +2124,12 @@ do_op_dec16:
        sbc   oph, temp2
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;|RLCA      |--0-0*|Rotate Left Circular |A=A<-                 |\r
-;\r
-; OK\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;|RLCA      |--0-0*|Rotate Left Circular |A=A<-                 |
+;
+; OK
 do_op_rlc:
        ;Rotate Left Cyclical. All bits move 1 to the 
        ;left, the msb becomes c and lsb.
@@ -2055,12 +2141,12 @@ do_op_rlc:
 do_op_rlc_noc:
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;|RRCA      |--0-0*|Rotate Right Circular|A=->A                 |\r
-;\r
-; OK\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;|RRCA      |--0-0*|Rotate Right Circular|A=->A                 |
+;
+; OK
 do_op_rrc: 
        ;Rotate Right Cyclical. All bits move 1 to the 
        ;right, the lsb becomes c and msb.
@@ -2072,12 +2158,12 @@ do_op_rrc:
 do_op_rrc_noc:
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;|RRA       |--0-0*|Rotate Right Acc.    |A=->{CY,A}            |\r
-;\r
-; OK\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;|RRA       |--0-0*|Rotate Right Acc.    |A=->{CY,A}            |
+;
+; OK
 do_op_rr: 
        ;Rotate Right. All bits move 1 to the right, the lsb 
        ;becomes c, c becomes msb.
@@ -2091,11 +2177,11 @@ do_op_rr:
        bld     z_flags,ZFL_C
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_rl:
        ;Rotate Left. All bits move 1 to the left, the msb 
        ;becomes c, c becomes lsb.
@@ -2109,11 +2195,11 @@ do_op_rl:
        bld z_flags,ZFL_C
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_adda:
        ldi z_flags,0
        add opl,z_a
@@ -2133,11 +2219,11 @@ adda_no_s:
        bld z_flags,ZFL_C
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_adca:
        clc
        sbrc z_flags,ZFL_C
@@ -2158,11 +2244,11 @@ do_op_adca:
        andi z_flags,~(1<<ZFL_N)
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_subfa:
        mov temp,z_a
        sub temp,opl
@@ -2181,11 +2267,11 @@ do_op_subfa:
        ori z_flags,(1<<ZFL_N)
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_sbcfa:
        mov temp,z_a
        clc
@@ -2209,11 +2295,11 @@ do_op_sbcfa:
        ori z_flags,(1<<ZFL_N)
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_anda:
        ldi z_flags,0
        and opl,z_a
@@ -2227,11 +2313,11 @@ do_op_anda:
        mov temp,opl
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_ora:
        ldi z_flags,0
        or opl,z_a
@@ -2245,11 +2331,11 @@ do_op_ora:
        mov temp,opl
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_xora:
        ldi z_flags,0
        eor opl,z_a
@@ -2263,11 +2349,11 @@ do_op_xora:
        mov temp,opl
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_addhl:
        add opl,z_l
        adc oph,z_h
@@ -2277,11 +2363,11 @@ do_op_addhl:
        andi z_flags,~(1<<ZFL_N)
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_sthl: ;store hl to mem loc in opl
        ;ToDo: check flags
        mov adrl,opl
@@ -2301,11 +2387,11 @@ do_op_sthl: ;store hl to mem loc in opl
 
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_rmem16:
        mov adrl,opl
        mov adrh,oph
@@ -2319,11 +2405,11 @@ do_op_rmem16:
        mov oph,temp
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_rmem8:
        mov adrl,opl
        mov adrh,oph
@@ -2331,11 +2417,11 @@ do_op_rmem8:
        mov opl,temp
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_da:
        ;DAA -> todo
        rcall do_op_inv
@@ -2343,40 +2429,40 @@ do_op_da:
        ret
 
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_scf:
        ori z_flags,(1<<ZFL_C)
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_ccf:
        ldi temp,(1<<ZFL_C)
        eor z_flags,temp
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_cpl:
        com opl
        ori z_flags,(1<<ZFL_N)|(1<<ZFL_H)
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_push16:
        ldi temp,1
        ldi temp2,0
@@ -2417,11 +2503,11 @@ do_op_push16:
 
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_pop16:
        mov adrl,z_spl
        mov adrh,z_sph
@@ -2461,11 +2547,11 @@ do_op_pop16:
 .endif
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_exhl:
        mov temp,z_h
        mov z_h,oph
@@ -2475,27 +2561,27 @@ do_op_exhl:
        mov opl,temp
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_di:
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_ei:
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_ifnz:
        sbrs z_flags, ZFL_Z
        ret
@@ -2503,11 +2589,11 @@ do_op_ifnz:
        ldi insdecl, 0
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_ifz:
        sbrc z_flags, ZFL_Z
        ret
@@ -2515,11 +2601,11 @@ do_op_ifz:
        ldi insdecl, 0
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_ifnc:
        sbrs z_flags, ZFL_C
   ret
@@ -2527,11 +2613,11 @@ do_op_ifnc:
        ldi insdecl, 0
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_ifc:
        sbrc z_flags, ZFL_C
        ret
@@ -2539,11 +2625,11 @@ do_op_ifc:
        ldi insdecl, 0
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_ifpo:
        rcall do_op_calcparity
        sbrs temp2, 0
@@ -2552,11 +2638,11 @@ do_op_ifpo:
        ldi insdecl, 0
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_ifpe:
        rcall do_op_calcparity  
        sbrc temp2, 0
@@ -2565,11 +2651,11 @@ do_op_ifpe:
        ldi insdecl, 0
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_ifp: ;sign positive, aka s=0
        sbrs z_flags, ZFL_S
         ret
@@ -2577,11 +2663,11 @@ do_op_ifp: ;sign positive, aka s=0
        ldi insdecl,0
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_ifm: ;sign negative, aka s=1
        sbrc z_flags, ZFL_S
         ret
@@ -2589,11 +2675,11 @@ do_op_ifm: ;sign negative, aka s=1
        ldi insdecl, 0
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 ;Interface with peripherials goes here :)
 do_op_outa: ; out (opl),a
 .if PORT_DEBUG
@@ -2613,11 +2699,11 @@ do_op_outa: ; out (opl),a
        rcall portWrite
        ret
 
-;----------------------------------------------------------------\r
-;|Mnemonic  |SZHPNC|Description          |Notes                 |\r
-;----------------------------------------------------------------\r
-;\r
-; Not yet checked\r
+;----------------------------------------------------------------
+;|Mnemonic  |SZHPNC|Description          |Notes                 |
+;----------------------------------------------------------------
+;
+; Not yet checked
 do_op_in:      ; in a,(opl)
 .if PORT_DEBUG
        rcall printstr
@@ -2639,7 +2725,7 @@ do_op_in: ; in a,(opl)
 .endif
        ret
 
-;----------------------------------------------------------------\r
+;----------------------------------------------------------------
 do_op_calcparity:
        ldi temp2,1
        sbrc parityb,0
@@ -2661,7 +2747,7 @@ do_op_calcparity:
        andi temp2,1
        ret
 
-;----------------------------------------------------------------\r
+;----------------------------------------------------------------
 do_op_inv:
        rcall printstr
        .db "Invalid opcode @ PC=",0,0
@@ -2669,8 +2755,8 @@ do_op_inv:
        rcall printhex
        mov   temp,z_pcl
        rcall printhex
-\r
-;----------------------------------------------------------------\r
+
+;----------------------------------------------------------------
 haltinv:
        rjmp haltinv
         
index be782325e8cb16704a8e23502cee50774eaef4c9..63a0a3fa93fecb746da1bc70cd2e1a590c82b94f 100644 (file)
 :020000020000FC\r
-:1000000009C0000000000000000000000000ABC2BA\r
-:10001000000000000FEF0DBF04E00EBFA89500E048\r
-:1000200004BF08E10093600000E1009360000FE36B\r
-:1000300004B90EEF0AB902E207B9419A459A2D9A1E\r
-:100040005A9A5C9A08E10093C10006E00093C2004E\r
-:1000500000E20093C40000E00093C50002E00093BA\r
-:10006000B00002E00093B10007E20093B30002E0A9\r
-:10007000009370007894A1D243504D206F6E2061A0\r
-:100080006E204156522C2076312E300D000095D234\r
-:10009000496E6974696E67206D6D632E2E2E0D009A\r
-:1000A00026D150E060E00BEC27D201E010E0500FC9\r
-:1000B000611FC8F760E050E069D1E0E0F2E060E283\r
-:1000C00050E00191FF93EF9317D2EF91FF9101E080\r
-:1000D00010E0500F611FE038A1F7F23091F700E017\r
-:1000E000802F00E2902F20E068D20D4F6B2C204330\r
-:1000F0005055206973206C697665210D000020E061\r
-:10010000913018F09C3D08F421E0582F692FCDD193\r
-:10011000019610E0EAEAFAE0E00FF11FE00FF11FAC\r
-:100120007591A491072F0F71003059F010E0000F66\r
-:10013000E4E0F6E0E00FF11F05911491E02FF12FBC\r
-:1001400009950A2F0C7F0695003051F0E6EAF7E09A\r
-:1001500010E0E00FF11F05911491E02FF12F0995A8\r
-:100160007295A295072F0E70A0730A2B003051F0E4\r
-:10017000E8EDF6E010E0E00FF11F05911491E02F9B\r
-:10018000F12F0995BCCF103091F01130B1F00895E6\r
-:100190001030A9F01230E1F01031E1F01231E1F04D\r
-:1001A0001431E1F01531E1F01631E1F008951091CC\r
-:1001B000C00000E017FD0FEF089514D20895FDD19F\r
-:1001C00044656275673A2000F3D1F7D10D000895B8\r
-:1001D00010D20895B02E0895C02E0895E02E0895EF\r
-:1001E000D02E08950F935C2D60E01B2D103031F060\r
-:1001F0000AE1500F00E0601F1A95F8CF0F9101300F\r
-:1002000011F0023019F15F936695579566955795F1\r
-:10021000BDD05F91E0E0F2E000E810E050FDE00FBB\r
-:1002200050FDF11F51FDF3956D2D5E2D10E81F93CC\r
-:100230000191FF93EF9360D1EF91FF9101E010E006\r
-:10024000500F611F1F911A9591F708955F936F9357\r
-:10025000669557956695579599D06F915F915F9385\r
-:100260006F93E0E0F2E000E810E050FDE00F50FD99\r
-:10027000F11F51FDF3956D2D5E2D10E81F93FF9337\r
-:10028000EF9313D1EF91FF91019301E010E0500F34\r
-:10029000611F1F911A9591F76F915F916695579520\r
-:1002A000669557959BD008950FEF0EBD0DB507FFCE\r
-:1002B000FDCF0EB50895E0E0F0E0F6DF0F3F21F44A\r
-:1002C0003196FF3F11F0F9CF0895012F71D175D10B\r
-:1002D0003A204572726F723A204D4D432072657319\r
-:1002E000702074696D656F7574210D00A3C003E5FE\r
-:1002F0000CBD5C9A14E1012FD8DF1A95E1F75C98E8\r
-:10030000D3DFD2DFD1DFD0DFCFDFCEDF5C9ACCDF2F\r
-:10031000CBDFCADFC9DF5C980FEFC7DF0FEFC5DFA8\r
-:1003200000E4C3DF00E0C1DF00E0BFDF00E0BDDFCD\r
-:1003300000E0BBDF05E9B9DF0FEFB7DF10E0BBDF9F\r
-:100340005C9AB2DF16E91F935C980FEFAEDF01E411\r
-:10035000ACDF00E0AADF00E0A8DF00E0A6DF00E0FD\r
-:10036000A4DF05E9A2DFA0DF11E0A5DF003041F046\r
-:100370005C9A9ADF1F911A95103029F704E0A5CFF7\r
-:100380001F915C9A91DF00E00CBD089500E50CBD63\r
-:100390005C988ADF01E589DF00E0550F661F001FCA\r
-:1003A00084DF062F82DF052F80DF00E07EDF05E996\r
-:1003B0007CDF0FEF7ADF12E07EDF13E07CDFE0E02E\r
-:1003C000F2E072DF0193E030E1F7F430D1F76CDF57\r
-:1003D0006BDF5C9A69DF00E00CBD089500E50CBDA1\r
-:1003E0005C9862DF08E561DF00E0550F661F001FC3\r
-:1003F0005CDF062F5ADF052F58DF00E056DF05E9E6\r
-:1004000054DF0FEF52DF11E056DF0EEF4EDFE0E07A\r
-:10041000F2E001914ADFE030E1F7F430D1F744DF58\r
-:1004200043DF42DF41DF0F3FE9F75C9A3DDF00E049\r
-:100430000CBD0895F89400E1009360000FE1009373\r
-:100440006000FFCF0F930BB107710BB905B1007EB0\r
-:1004500005B9E0FD2C9AE1FD2B9AE2FD2A9AE3FD15\r
-:10046000299AE4FD289AE5FD5D9AE6FD5E9AE7FD8E\r
-:100470005F9AF0FD5B9A0F910895007F30990160BB\r
-:1004800032990260349904603399086008951F938B\r
-:1004900018B1127E00FD116001FD146002FD1061B3\r
-:1004A00003FD186018B91F910895F894E62FF0E045\r
-:1004B000152F110FEE1FFF1FC5DF2D98F0E0E52F60\r
-:1004C000EF77C0DF00004598000000005A98000058\r
-:1004D000D4DF5A9A0295459AF0E0E52FE068B2DF42\r
-:1004E0000000459800005A9800000000C6DF5A9AA4\r
-:1004F000459A2D9A78940895F89417B11D6117B90B\r
-:10050000C6DFE62FF0E0152F110FEE1FFF1F9ADF59\r
-:10051000000000002D98F0E0E52FE06893DF000078\r
-:100520000000459800000000419800000000000015\r
-:10053000419A459AF0E0E52FEF7784DF0295A7DF37\r
-:10054000459800000000419800000000419A00001A\r
-:100550000000459A2D9A07B1027E07B908B1027EC4\r
-:1005600008B9789408950000000000004598000044\r
-:100570000000000000002D980000000000000000B6\r
-:10058000459A00000000000000002D9A00000000C5\r
-:1005900000000000000018950F930F700A3020F043\r
-:1005A000095C27D00F910895005D23D00F91089525\r
-:1005B0000295F2DF0295F0DF0895FF91EF910F931E\r
-:1005C000EE0FFF1F0591003031F013D00D30D1F741\r
-:1005D0000AE00FD0F7CF3196F695E7950F91EF939C\r
-:1005E000FF9308950091C00007FFFCCF0091C60063\r
-:1005F00008950F930091C00005FFFCCF0F91009369\r
-:10060000C60008951603170319031B031D031F03D8\r
-:100610002103230325032C032F033203350338035F\r
-:100620003D034203470354035A0365030895322DE3\r
-:100630000895332D0895342D0895352D0895362DC0\r
-:100640000895382D0895372D08953B2F422D09D256\r
-:100650003B7F10FF34600895342D432D0895362DCF\r
-:10066000452D0895372D482D0895392D4A2D08958B\r
-:10067000632D542D1ADF302F0895652D562D15DF6B\r
-:10068000302F0895682D572D10DF302F08956A2DD3\r
-:10069000592D0BDF302F6A2D592D01E010E0500F3E\r
-:1006A000611F03DF402F0895582F692FFEDE01964A\r
-:1006B000302F0895582F692FF8DE302F0196582FCC\r
-:1006C000692FF3DE0196402F0895582F692FEDDE34\r
-:1006D000087340E0302F089581038203840386036A\r
-:1006E00088038A038C038E03900397039A039D0368\r
-:1006F000BC03BF03A003A503AA03AF03C203C60341\r
-:10070000CE030895232E0895332E0895432E089581\r
-:10071000532E0895632E0895832E0895732E089501\r
-:10072000242EB32F00E0F02EB2FFF3940895342E60\r
-:10073000432E0895542E632E0895842E732E08950B\r
-:10074000632D542D032FD8DE0895652D562D032FCC\r
-:10075000D3DE0895682D572D032FCEDE08956A2D20\r
-:10076000592D032FC9DE6A2D592D01E010E0500FDD\r
-:10077000611F042FC1DE0895A42E932E0895942F97\r
-:10078000832F089522D1832F942F08953F934F9361\r
-:10079000382F492F09D19F918F910895642F532F9E\r
-:1007A000022DAADE0895FB03FC03080415041A04B5\r
-:1007B0001F0425042B0434043D044D045F046F041E\r
-:1007C00084048F049A04A504AC04B904C404C904C5\r
-:1007D000CC04D104CE04E504D404FF0404050905C7\r
-:1007E0000E05130519051F05240529052D05F60419\r
-:1007F000FD04FE0444050895B17001E0300F0FB709\r
-:10080000F32E01FBB6F937FDB06805FBB4F9089586\r
-:10081000B170B26001E0301B0FB7F32E01FBB6F9E7\r
-:1008200004FBB7F905FBB4F9089501E010E0300FBF\r
-:10083000411F089501E010E0301B410B0895BC7E7C\r
-:10084000330F10F43160B1600895BC7E369510F41A\r
-:100850003068B16008958894B0FD089437950FB75B\r
-:10086000BC7E00FBB0F908958894B0FD0894331F56\r
-:100870000FB7BC7E00FBB0F90895B0E0320D0FB7A2\r
-:1008800001FBB6F904FB303809F4B06805FBB4F994\r
-:1008900003FBB2F900FBB0F908958894B0FD089409\r
-:1008A000321D0FB7B0E001FBB6F937FDB06805FBAC\r
-:1008B000B4F903FBB2F900FBB0F9BD7F0895022D36\r
-:1008C000031B302F0FB701FBB6F904FBB7F905FB8B\r
-:1008D000B4F903FBB2F900FBB0F9B2600895022D40\r
-:1008E0008894B0FD0894030B302F0FB704FBB7F9C1\r
-:1008F00005FBB4F903FBB2F900FBB0F930300FB7D8\r
-:1009000001FBB6F9B2600895B0E032210FB701FBE8\r
-:10091000B6F904FBB7F905FBB4F9032F0895B0E06D\r
-:1009200032290FB701FBB6F904FBB7F905FBB4F99F\r
-:10093000032F0895B0E032250FB701FBB6F904FB91\r
-:10094000B7F905FBB4F9032F0895370D481D0FB70C\r
-:1009500000FBB0F9BD7F0895532F642F072DCCDD28\r
-:1009600001E010E0300F411F532F642F082DC4DD2C\r
-:100970000895532F642F99DD302F01E0500F00E0D0\r
-:10098000601F93DD402F0895532F642F8EDD302F8D\r
-:1009900008957AD0032F0895B160089501E0B0273B\r
-:1009A00008953095B261089501E010E0901AA10A0F\r
-:1009B000592D6A2D042FA0DD01E010E0901AA10A44\r
-:1009C000592D6A2D032F98DD0895592D6A2D6DDD5F\r
-:1009D000302F01E010E0900EA11E592D6A2D65DD2B\r
-:1009E000402F01E010E0900EA11E0895082D842EE6\r
-:1009F000402F072D732E302F089508950895B6FFC8\r
-:100A00000895A0E070E00895B6FD0895A0E070E0BC\r
-:100A10000895B0FF0895A0E070E00895B0FD089536\r
-:100A2000A0E070E008951DD010FF0895A0E070E0F0\r
-:100A3000089517D010FD0895A0E070E00895B7FF65\r
-:100A40000895A0E070E00895B7FD0895A0E070E07B\r
-:100A50000895022D132F9CDB0895132F94DB302F64\r
-:100A6000089511E0F0FC1395F1FC1395F2FC139539\r
-:100A7000F3FC1395F4FC1395F5FC1395F6FC139514\r
-:100A8000F7FC13951170089598DD496E76616C69D5\r
-:100A900064206F70636F646520402050433D000008\r
-:100AA000092F86DD082F84DDFFCF00003201C10150\r
-:100AB000290D4204420851002114009C69412D0077\r
-:100AC00029116304630871002118009C5201E1019F\r
-:100AD0004A0D8404840891002120009C6A412E0064\r
-:100AE0004A11A504A508B100211C009C7201124402\r
-:100AF0006B0DC604C608D1002150009C6B417249A1\r
-:100B00006B11E704E708F1002158009C9201920262\r
-:100B10008C0D0F060F0A11020054009C6C41324CE0\r
-:100B20008C11210421083100005C42004300440084\r
-:100B30004500460047004F0041006200630064002A\r
-:100B40006500660067006F0061008200830084001A\r
-:100B50008500860087008F008100A200A300A4000A\r
-:100B6000A500A600A700AF00A100C200C300C400FA\r
-:100B7000C500C600C700CF00C100E200E300E400EA\r
-:100B8000E500E600E700EF00E100020203020402D4\r
-:100B900005020602070200000102220023002400D1\r
-:100BA0002500260027002F002100222423242424AE\r
-:100BB0002524262427242F242124222823282428DE\r
-:100BC0002528262827282F282128222C232C242CAE\r
-:100BD000252C262C272C2F2C212C2230233024307E\r
-:100BE0002530263027302F3021302234233424344E\r
-:100BF0002534263427342F342134223C233C243C12\r
-:100C0000253C263C273C2F3C213C223823382438E5\r
-:100C10002538263827382F382138022C032C042C6D\r
-:100C2000052C062C072C0F2C012C406A2061B26980\r
-:100C3000B201726A096431247302406E4002B26DDF\r
-:100C4000009C726E72023128730240724061B27170\r
-:100C5000118872720A64312C73024076009CB2755E\r
-:100C6000318C7276009C31307302407A6061B279C7\r
-:100C70003092727A0B6431347302407EAB01B27DE4\r
-:100C80004A91727E009C313C730240820061B281C5\r
-:100C90000094728208643138730240868B01B285F9\r
-:0A0CA00000987286009C112C73026C\r
+:0200000012C02C\r
+:02000600A8C28E\r
+:100026000FE50DBF04E00EBFA89500E004BF08E190\r
+:1000360001BD00E101BD0FE307BB0EEF01BB02E20C\r
+:1000460004BBA99AAD9AC59A929A949A08E10AB9FC\r
+:1000560006E800BD00E000BD0CE009B908E103BDFB\r
+:100066000AE005BD00E809BF78948BD243504D20C5\r
+:100076006F6E20616E204156522C2076312E300D47\r
+:1000860000007FD2496E6974696E67206D6D632EBC\r
+:100096002E2E0D0024D150E060E00BEC23D201E0BF\r
+:1000A60010E0500F611FC8F760E050E067D1E0E64E\r
+:1000B600F0E060E250E00191FF93EF9313D2EF91ED\r
+:1000C600FF9101E010E0500F611FE03EA1F7F03014\r
+:1000D60091F700E0802F00E2902F20E052D20D4FE2\r
+:1000E6006B2C20435055206973206C697665210D71\r
+:1000F600000020E0913018F09C3D08F421E0582FD4\r
+:10010600692FC9D1019610E0E0E7FAE0E00FF11F90\r
+:10011600E00FF11F7591A491072F0F71003059F070\r
+:1001260010E0000FE2ECF5E0E00FF11F05911491ED\r
+:10013600E02FF12F09950A2F0C7F0695003051F01C\r
+:10014600E4E6F7E010E0E00FF11F05911491E02FCF\r
+:10015600F12F09957295A295072F0E70A0730A2BA1\r
+:10016600003051F0E6E9F6E010E0E00FF11F0591EE\r
+:100176001491E02FF12F0995BCCF103091F011307A\r
+:10018600A1F00895103099F01230D1F01031D1F06D\r
+:100196001231D1F01431D1F01531D1F01631D1F040\r
+:1001A600089500E05F990FEF089500D20895E9D110\r
+:1001B60044656275673A2000DFD1E3D10D000895EA\r
+:1001C600F9D10895B02E0895C02E0895E02E089511\r
+:1001D600D02E08950F935C2D60E01B2D103031F06A\r
+:1001E6000AE1500F00E0601F1A95F8CF0F91013019\r
+:1001F60011F0023019F15F936695579566955795FC\r
+:10020600BDD05F91E0E6F0E000E810E050FDE00FC1\r
+:1002160050FDF11F51FDF3956D2D5E2D10E81F93D6\r
+:100226000191FF93EF935ED1EF91FF9101E010E012\r
+:10023600500F611F1F911A9591F708955F936F9361\r
+:10024600669557956695579599D06F915F915F938F\r
+:100256006F93E0E6F0E000E810E050FDE00F50FD9F\r
+:10026600F11F51FDF3956D2D5E2D10E81F93FF9341\r
+:10027600EF9311D1EF91FF91019301E010E0500F40\r
+:10028600611F1F911A9591F76F915F91669557952A\r
+:10029600669557959BD008950FEF0FB90EB107FFDE\r
+:1002A600FDCF0FB10895E0E0F0E0F6DF0F3F21F457\r
+:1002B6003196FF3F11F0F9CF0895012F5DD161D13D\r
+:1002C6003A204572726F723A204D4D432072657323\r
+:1002D600702074696D656F7574210D00A3C003E508\r
+:1002E6000DB9949A14E1012FD8DF1A95E1F7949885\r
+:1002F600D3DFD2DFD1DFD0DFCFDFCEDF949ACCDF02\r
+:10030600CBDFCADFC9DF94980FEFC7DF0FEFC5DF7A\r
+:1003160000E4C3DF00E0C1DF00E0BFDF00E0BDDFD7\r
+:1003260000E0BBDF05E9B9DF0FEFB7DF10E0BBDFA9\r
+:10033600949AB2DF16E91F9394980FEFAEDF01E4AB\r
+:10034600ACDF00E0AADF00E0A8DF00E0A6DF00E007\r
+:10035600A4DF05E9A2DFA0DF11E0A5DF003041F050\r
+:10036600949A9ADF1F911A95103029F704E0A5CFC9\r
+:100376001F91949A91DF00E00DB9089500E50DB93B\r
+:1003860094988ADF01E589DF00E0550F661F001F9C\r
+:1003960084DF062F82DF052F80DF00E07EDF05E9A0\r
+:1003A6007CDF0FEF7ADF12E07EDF13E07CDFE0E632\r
+:1003B600F0E072DF0193E036E1F7F230D1F76CDF5F\r
+:1003C6006BDF949A69DF00E00DB9089500E50DB979\r
+:1003D600949862DF08E561DF00E0550F661F001F95\r
+:1003E6005CDF062F5ADF052F58DF00E056DF05E9F0\r
+:1003F60054DF0FEF52DF11E056DF0EEF4EDFE0E67F\r
+:10040600F0E001914ADFE036E1F7F230D1F744DF60\r
+:1004160043DF42DF41DF0F3FE9F7949A3DDF00E01B\r
+:100426000DB90895F89400E101BD0EE701BDFFCFB7\r
+:100436000F9302B3077102BB08B3007E08BBE0FD51\r
+:10044600C49AE1FDC39AE2FDC29AE3FDC19AE4FDB6\r
+:10045600C09AE5FD959AE6FD969AE7FD979AF0FD16\r
+:10046600939A0F910895007F989901609A99026076\r
+:100476009C9904609B99086008951F9315B3127E9A\r
+:1004860000FD116001FD146002FD106103FD18609E\r
+:1004960015BB1F910895F894E62FF0E0152F110F64\r
+:1004A600EE1FFF1FC5DFC598F0E0E52FEF77C0DF31\r
+:1004B6000000AD980000000092980000D4DF929AE8\r
+:1004C6000295AD9AF0E0E52FE068B2DF0000AD9846\r
+:1004D6000000929800000000C6DF929AAD9AC59A75\r
+:1004E60078940895F89414B31D6114BBC6DFE62F03\r
+:1004F600F0E0152F110FEE1FFF1F9ADF000000001E\r
+:10050600C598F0E0E52FE06893DF00000000AD98A5\r
+:1005160000000000A998000000000000A99AAD9A0A\r
+:10052600F0E0E52FEF7784DF0295A7DFAD980000B6\r
+:100536000000A99800000000A99A00000000AD9AEA\r
+:10054600C59A04B3027E04BB05B3027E05BB78944C\r
+:1005560008950000AD98C5980000AD9AC59A189503\r
+:100566000F930F700A3020F0095C24D00F91089584\r
+:10057600005D20D00F9108950295F2DF0295F0DF1D\r
+:100586000895FF91EF910F93EE0FFF1F0591003035\r
+:1005960031F010D00D30D1F70AE00CD0F7CF3196FC\r
+:1005A600F695E7950F91EF93FF9308955F9BFECF26\r
+:1005B6000CB108955D9BFECF0CB90895F502F602C5\r
+:1005C600F802FA02FC02FE020003020304030B0314\r
+:1005D6000E031103140317031C032103260333031D\r
+:1005E600390344030895322D0895332D0895342D8B\r
+:1005F6000895352D0895362D0895382D0895372DF3\r
+:1006060008953B2F422D0DD23B7F10FF3460089595\r
+:10061600342D432D0895362D452D0895372D482D1B\r
+:100626000895392D4A2D0895632D542D34DF302F2A\r
+:100636000895652D562D2FDF302F0895682D572DDF\r
+:100646002ADF302F08956A2D592D25DF302F6A2D88\r
+:10065600592D01E010E0500F611F1DDF402F089556\r
+:10066600582F692F18DF0196302F0895582F692FBC\r
+:1006760012DF302F0196582F692F0DDF0196402F7C\r
+:100686000895582F692F07DF087340E0302F08952B\r
+:100696006003610363036503670369036B036D030B\r
+:1006A6006F03760379037C039B039E037F03840316\r
+:1006B60089038E03A103A503AD030895232E089590\r
+:1006C600332E0895432E0895532E0895632E0895CC\r
+:1006D600832E0895732E0895242EB32F00E0F02E56\r
+:1006E600B2FFF3940895342E432E0895542E632EAC\r
+:1006F6000895842E732E0895632D542D032FF2DE54\r
+:100706000895652D562D032FEDDE0895682D572D7E\r
+:10071600032FE8DE08956A2D592D032FE3DE6A2D97\r
+:10072600592D01E010E0500F611F042FDBDE089504\r
+:10073600A42E932E0895942F832F089526D1832FC8\r
+:10074600942F08953F934F93382F492F0DD19F91A2\r
+:100756008F910895642F532F022DC4DE0895DA0376\r
+:10076600DB03E903F803FD03020408040E0417047F\r
+:100776002004300442045204670472047D04880491\r
+:100786008F049C04A704AC04AF04B404B104C804E9\r
+:10079600B704E204E704EC04F104F604FC040205E1\r
+:1007A60007050C051005D904E004E10427050895A2\r
+:1007B600B17001E0300F0FB7F32E01FBB6F937FD2C\r
+:1007C600B06805FBB4F900FBB2F90895B170B260E8\r
+:1007D60001E0301B0FB7F32E01FBB6F904FBB7F9A6\r
+:1007E60005FBB4F900FBB2F9089501E010E0300F03\r
+:1007F600411F089501E010E0301B410B0895BC7EB7\r
+:10080600330F10F43160B1600895BC7E369510F454\r
+:100816003068B16008958894B0FD089437950FB795\r
+:10082600BC7E00FBB0F908958894B0FD0894331F90\r
+:100836000FB7BC7E00FBB0F90895B0E0320D0FB7DC\r
+:1008460001FBB6F904FB303809F4B06805FBB4F9CE\r
+:1008560003FBB2F900FBB0F908958894B0FD089443\r
+:10086600321D0FB7B0E001FBB6F937FDB06805FBE6\r
+:10087600B4F903FBB2F900FBB0F9BD7F0895022D70\r
+:10088600031B302F0FB701FBB6F904FBB7F905FBC5\r
+:10089600B4F903FBB2F900FBB0F9B2600895022D7A\r
+:1008A6008894B0FD0894030B302F0FB704FBB7F9FB\r
+:1008B60005FBB4F903FBB2F900FBB0F930300FB712\r
+:1008C60001FBB6F9B2600895B0E032210FB701FB23\r
+:1008D600B6F904FBB7F905FBB4F9032F0895B0E0A8\r
+:1008E60032290FB701FBB6F904FBB7F905FBB4F9DA\r
+:1008F600032F0895B0E032250FB701FBB6F904FBCC\r
+:10090600B7F905FBB4F9032F0895370D481D0FB746\r
+:1009160000FBB0F9BD7F0895532F642F072DE2DD4C\r
+:1009260001E010E0300F411F532F642F082DDADD50\r
+:100936000895532F642FAFDD302F01E0500F00E0F4\r
+:10094600601FA9DD402F0895532F642FA4DD302F9B\r
+:1009560008957AD0032F0895B160089501E0B02775\r
+:1009660008953095B261089501E010E0901AA10A49\r
+:10097600592D6A2D042FB6DD01E010E0901AA10A68\r
+:10098600592D6A2D032FAEDD0895592D6A2D83DD6D\r
+:10099600302F01E010E0900EA11E592D6A2D7BDD4F\r
+:1009A600402F01E010E0900EA11E0895082D842E20\r
+:1009B600402F072D732E302F089508950895B6FF02\r
+:1009C6000895A0E070E00895B6FD0895A0E070E0F7\r
+:1009D6000895B0FF0895A0E070E00895B0FD089571\r
+:1009E600A0E070E008951DD010FF0895A0E070E02B\r
+:1009F600089517D010FD0895A0E070E00895B7FFA0\r
+:100A06000895A0E070E00895B7FD0895A0E070E0B5\r
+:100A16000895022D132FB6DB0895132FAEDB302F6A\r
+:100A2600089511E0F0FC1395F1FC1395F2FC139573\r
+:100A3600F3FC1395F4FC1395F5FC1395F6FC13954E\r
+:100A4600F7FC1395117008959CDD496E76616C690B\r
+:100A560064206F70636F646520402050433D000042\r
+:100A6600092F8ADD082F88DDFFCF00003201C10182\r
+:100A7600290D4204420851002114009C69412D00B1\r
+:100A860029116304630871002118009C5201E101D9\r
+:100A96004A0D8404840891002120009C6A412E009E\r
+:100AA6004A11A504A508B100211C009C720112443C\r
+:100AB6006B0DC604C608D1002150009C6B417249DB\r
+:100AC6006B11E704E708F1002158009C920192029D\r
+:100AD6008C0D0F060F0A11020054009C6C41324C1B\r
+:100AE6008C11210421083100005C420043004400BF\r
+:100AF6004500460047004F00410062006300640065\r
+:100B06006500660067006F00610082008300840054\r
+:100B16008500860087008F008100A200A300A40044\r
+:100B2600A500A600A700AF00A100C200C300C40034\r
+:100B3600C500C600C700CF00C100E200E300E40024\r
+:100B4600E500E600E700EF00E1000202030204020E\r
+:100B5600050206020702000001022200230024000B\r
+:100B66002500260027002F002100222423242424E8\r
+:100B76002524262427242F24212422282328242818\r
+:100B86002528262827282F282128222C232C242CE8\r
+:100B9600252C262C272C2F2C212C223023302430B8\r
+:100BA6002530263027302F30213022342334243488\r
+:100BB6002534263427342F342134223C233C243C4C\r
+:100BC600253C263C273C2F3C213C22382338243820\r
+:100BD6002538263827382F382138022C032C042CA8\r
+:100BE600052C062C072C0F2C012C406A2061B269BB\r
+:100BF600B201726A096431247302406E4002B26D1A\r
+:100C0600009C726E72023128730240724061B271AA\r
+:100C1600118872720A64312C73024076009CB27598\r
+:100C2600318C7276009C31307302407A6061B27901\r
+:100C36003092727A0B6431347302407EAB01B27D1E\r
+:100C46004A91727E009C313C730240820061B281FF\r
+:100C56000094728208643138730240868B01B28533\r
+:0A0C660000987286009C112C7302A6\r
 :00000001FF\r