Pass 1 errors: 00

                 10 ; mc-part of SNARUN. 
                 20 ; Copyright 1994 Aerodyn
                 30 ;
                 40 ; Change history:
                 50 ; 94-12-04 First ver. SKj
                 60 ;
                 70 ;
6498             80        ORG  25752
5CC3             90 BAUD   EQU  23747
                100 ;
6498            110 START  ENT  $
6498 1876       120        JR   L0
649A 181D       130 START2 JR   F1  ; Entry after relocation.
                140 DATA   
649C            150 dummy  DEFS 1
649D            160 i      DEFS 1
649E            170 hl2    DEFS 2
64A0            180 de2    DEFS 2
64A2            190 bc2    DEFS 2
64A4            200 af2    DEFS 2
64A6            210 hl     DEFS 2
64A8            220 de     DEFS 2
64AA            230 bc     DEFS 2
64AC            240 iy     DEFS 2
64AE            250 ix     DEFS 2
64B0            260 int    DEFS 1
64B1            270 r      DEFS 1
64B2            280 af     DEFS 2
64B4            290 sp     DEFS 2
64B6            300 imode  DEFS 1
64B7            310 bcolor DEFS 1
                320 ;
64B8 00         330 MUF1   DEFB 0 ; 1=M1 connected.
                340 ;
                350 ;  Code to be moved
                360 ; to start of screen
                370 ; before execution.
                380 ;
                390 ; Copy 16764-19363 to 23552.
                400 ;
64B9 217C41     410 F1     LD   HL,16764
64BC 11005C     420        LD   DE,23552
64BF 01280A     430        LD   BC,2600
64C2 EDB0       440        LDIR 
                450 ;
                460 ; If M1 connected, restore 16384-19363
                470 ;
64C4 DD210000   480        LD   IX,0
64C8 DD39       490        ADD  IX,SP
64CA DD7E1C     500        LD   A,(IX+MUF1-DATA)
64CD FE00       510        CP   0
64CF 2041       520        JR   NZ,F3 ; Use M1.
                530 ;
                540 ; Restore registers, without M1.
                550 ;
64D1 F1         560        POP  AF
64D2 ED47       570        LD   I,A
64D4 D9         580        EXX  
64D5 E1         590        POP  HL
64D6 D1         600        POP  DE
64D7 C1         610        POP  BC
64D8 D9         620        EXX  
64D9 08         630        EX   AF,AF'
64DA F1         640        POP  AF
64DB 08         650        EX   AF,AF'
64DC 211000     660        LD   HL,imode-hl
64DF 39         670        ADD  HL,SP
64E0 46         680        LD   B,(HL)     ; imode
64E1 23         690        INC  HL
64E2 7E         700        LD   A,(HL)
64E3 D3FE       710        OUT  (#FE),A  ; Set border color.
64E5 04         720        INC  B
64E6 1004       730        DJNZ IM12
64E8 ED46       740        IM   0
64EA 1808       750        JR   IMOK
64EC 1004       760 IM12   DJNZ IM2
64EE ED56       770        IM   1
64F0 1802       780        JR   IMOK
64F2 ED5E       790 IM2    IM   2
64F4 E1         800 IMOK   POP  HL
64F5 D1         810        POP  DE
64F6 C1         820        POP  BC
64F7 FDE1       830        POP  IY
64F9 DDE1       840        POP  IX
64FB F1         850        POP  AF
64FC ED4F       860        LD   R,A
64FE F5         870        PUSH AF
64FF 3B         880        DEC  SP
6500 F1         890        POP  AF
6501 F5         900        PUSH AF
6502 33         910        INC  SP
6503 E604       920        AND  4
6505 2801       930        JR   Z,F4
6507 FB         940        EI   
6508 F1         950 F4     POP  AF
6509 F1         960        POP  AF
650A ED7B1A40   970        LD   SP,(16384+sp-START2)
650E ED45       980        RETN ; Use top of stack.
                990 ENDB   
               1000 ; End of relocated code
               1010 ; if M1 not connected.
6510 186D      1020 L0     JR   L00
               1030 ;
               1040 ; If M1 connected, restore 16384-19363
               1050 ;
6512 216C20    1060 F3     LD   HL,8300
6515 110040    1070        LD   DE,16384
6518 01A40B    1080        LD   BC,2980
651B EDB0      1090        LDIR 
               1100 ;
               1110 ; Restore registers.
               1120 ;
651D F1        1130        POP  AF
651E ED47      1140        LD   I,A
6520 D9        1150        EXX  
6521 E1        1160        POP  HL
6522 D1        1170        POP  DE
6523 C1        1180        POP  BC
6524 D9        1190        EXX  
6525 08        1200        EX   AF,AF'
6526 F1        1210        POP  AF
6527 08        1220        EX   AF,AF'
6528 211000    1230        LD   HL,imode-hl
652B 39        1240        ADD  HL,SP
652C 46        1250        LD   B,(HL)   ; imode
652D 23        1260        INC  HL
652E 7E        1270        LD   A,(HL)
652F D3FE      1280        OUT  (#FE),A  ; Set border color.
6531 04        1290        INC  B
6532 1004      1300        DJNZ IM12M
6534 ED46      1310        IM   0
6536 1808      1320        JR   IMOKM
6538 1004      1330 IM12M  DJNZ IM2M
653A ED56      1340        IM   1
653C 1802      1350        JR   IMOKM
653E ED5E      1360 IM2M   IM   2
6540 E1        1370 IMOKM  POP  HL
6541 D1        1380        POP  DE
6542 C1        1390        POP  BC
6543 FDE1      1400        POP  IY
6545 DDE1      1410        POP  IX
6547 F1        1420        POP  AF
6548 ED4F      1430        LD   R,A
654A F5        1440        PUSH AF
654B 3B        1450        DEC  SP
654C F1        1460        POP  AF
654D F5        1470        PUSH AF
654E 33        1480        INC  SP
654F E604      1490        AND  4
6551 2801      1500        JR   Z,F5
6553 FB        1510        EI   
6554 F1        1520 F5     POP  AF
6555 F1        1530        POP  AF
6556 E5        1540        PUSH HL
               1550 ; Store m/c at 11743-11746
               1560 ; where Spectrum ROM has
               1570 ; SCF, RET, POP AF and RET.
               1580 ; In this way POP AF and RET
               1590 ; are executed after (!)
               1600 ; unmapping of M1 mem.
6557 21DB1F    1610        LD   HL,#1FDB ; IN  A,(#1F)
655A 22DF2D    1620        LD   (11743),HL
655D 21F1C9    1630        LD   HL,#C9F1 ; POP  AF, RET
6560 22E12D    1640        LD   (11745),HL
6563 E1        1650        POP  HL
6564 ED7B2A2C  1660        LD   SP,(11280+sp-START2)
6568 F5        1670        PUSH AF
6569 C3DF2D    1680        JP   11743    ; END
               1690 ENDC   
               1700 ; End of relocated
               1710 ; code for M1.
               1720 ;
               1730 ; SUBROUTINE
               1740 ; Read bytes from RS232
               1750 ; and store at (HL).
               1760 ; No of bytes in BC.
               1770 ;
656C C5        1780 RS232  PUSH BC
656D E5        1790        PUSH HL
656E CF        1800        RST  8
656F 1D        1810        DEFB #1D
6570 E1        1820        POP  HL
6571 C1        1830        POP  BC
6572 30F8      1840        JR   NC,RS232
6574 77        1850        LD   (HL),A
6575 23        1860        INC  HL
6576 0B        1870        DEC  BC
6577 AF        1880        XOR  A
6578 B8        1890        CP   B
6579 20F1      1900        JR   NZ,RS232
657B B9        1910        CP   C
657C 20EE      1920        JR   NZ,RS232
657E C9        1930        RET  
               1940 ;
               1950 ; Start of execution.
               1960 ;
657F DD210400  1970 L00    LD   IX,DATA-START
6583 DD09      1980        ADD  IX,BC
               1990 ; Now IX points to DATA.
               2000 ;
               2010 ; Set up extra system
               2020 ; variables.
               2030 ;
6585 CF        2040        RST  8
6586 31        2050        DEFB #31
               2060 ;
               2070 ; Set baud rate on RS232.
               2080 ;
6587 010C00    2090        LD   BC,12
658A ED43C35C  2100        LD   (BAUD),BC ; 9600 bps
               2110 ;
               2120 ; Read registers.
               2130 ;
658E 011B00    2140        LD   BC,27
6591 DDE5      2150        PUSH IX
6593 E1        2160        POP  HL
6594 23        2170        INC  HL       ; Skip dummy.
6595 CD6C65    2180        CALL RS232
               2190 ;
               2200 ; Read and store 16384-23551.
               2210 ;
6598 210040    2220        LD   HL,16384
659B 01001C    2230        LD   BC,7168
659E CD6C65    2240        CALL RS232
               2250 ;
               2260 ; If M1 connected, Save 16384-19363
               2270 ;
65A1 F3        2280        DI   
65A2 DB9F      2290        IN   A,(#9F)  ; Map M1 memory.
65A4 3A0000    2300        LD   A,(#0000)
65A7 FEF3      2310        CP   #F3
65A9 2810      2320        JR   Z,M1 
65AB DD341C    2330        INC  (IX+MUF1-DATA)  ; Set M1 flag.
65AE 210040    2340        LD   HL,16384
65B1 116C20    2350        LD   DE,8300
65B4 01A40B    2360        LD   BC,2980
65B7 EDB0      2370        LDIR 
65B9 DB1F      2380        IN   A,(#1F)  ;Unmap M1 memory.
65BB FB        2390 M1     EI   
               2400 ;
               2410 ; Read 23552-26151 and store to 16764-19363.
               2420 ;
65BC 217C41    2430        LD   HL,16764
65BF 01280A    2440        LD   BC,2600
65C2 CD6C65    2450        CALL RS232
               2460 ;
               2470 ;
               2480 ; Read and store 26152-65535.
               2490 ;
65C5 212866    2510        LD   HL,26152
65C8 01D899    2520        LD   BC,39384
65CB CD6C65    2530        CALL RS232
65CE F3        2540        DI   ; No more use of OS.
               2550 ;
               2560 ; If M1 connected, move rest of code
               2570 ; to M1 RAM 11280- .
               2580 ;
65CF DD7E1C    2590        LD   A,(IX+MUF1-DATA)
65D2 FE00      2600        CP   0
65D4 2817      2610        JR   Z,E2
65D6 DB9F      2620        IN   A,(#9F)  ; Map M1 memory.
65D8 DDE5      2630        PUSH IX
65DA E1        2640        POP  HL
65DB 01FEFF    2650        LD   BC,START2-DATA
65DE 09        2660        ADD  HL,BC
65DF 11102C    2670        LD   DE,11280
65E2 01D200    2680        LD   BC,ENDC-START2
65E5 EDB0      2690        LDIR 
65E7 31122C    2700        LD   SP,11280+DATA-START2
65EA C3102C    2710        JP   11280
               2720 ;
               2730 ; Else move rest of code to 16384-16763.
               2740 ;
65ED DDE5      2750 E2     PUSH IX
65EF E1        2760        POP  HL
65F0 01FEFF    2770        LD   BC,START2-DATA
65F3 09        2780        ADD  HL,BC
65F4 110040    2790        LD   DE,16384
65F7 017600    2800        LD   BC,ENDB-START2  
65FA EDB0      2810        LDIR 
65FC 310240    2820        LD   SP,16384+DATA-START2
65FF C30040    2830        JP   16384

Pass 2 errors: 00

Table used:   411  from   605 
Executes: 25752 
