Pass 1 errors: 00

BB80             10        ORG  48000



 ldcode

                 20 *H ldcode
                 30 ;
                 40 ; Copyright AERODYN 1994
                 50 ; Vaesteraas Sweden
                 60 ;
                 70 ; Load one block of CODE
                 80 ; from tape, as stored.
                 90 ;
                100 ; The user inputs the
                110 ; 10'th character of the
                120 ; filename to load with
                130 ; a POKE.
                140 ;
                150 ; Program loading:
                160 ;  LOAD"ldcode"CODE ldcode
                170 ;
                180 ; Call: POKE ldcode+2,51
                190 ;       LET L=USR ldcode
                200 ;
                210 ; Result:
                220 ;  L contains no of bytes
                230 ;   loaded.
0556            240 LOADBY EQU  #556 ; ROM
BB80            250 START  ENT  $
BB80 1812       260        JR   L1
                270 ;
BB82            280 CHAR10 DEFS 1        ; -1      
BB83            290 HEADER DEFS 1        ; Type
BB84            300        DEFS 10       ; +1 Filename
BB8E            310        DEFS 2        ; +11 No of bytes
BB90            320        DEFS 2        ; +13 Start  address
BB92            330        DEFS 2        ; +15 Basic bytes
BB94 DD210300   340 L1     LD   IX,HEADER-START
BB98 DD09       350        ADD  IX,BC    ; HEADER address
BB9A AF         360 L2     XOR  A        ; Signal header.
BB9B DDE5       370        PUSH IX
BB9D 111100     380        LD   DE, 17 ; Bytes
BBA0 37         390        SCF  ; Signal LOAD
BBA1 CD5605     400        CALL LOADBYTES
BBA4 DDE1       410        POP  IX
BBA6 30F2       420        JR   NC,L2    ; Parity error.
BBA8 DD7EFF     430        LD   A,(IX-1)
BBAB DDAE0A     440        XOR  (IX+10)
BBAE 20EA       450        JR   NZ,L2    ; Wrong character.
BBB0 3EFF       460        LD   A,#FF    ; Data block.
BBB2 DD5E0B     470        LD   E,(IX+11)
BBB5 DD560C     480        LD   D,(IX+12)    ; No of bytes.
BBB8 DDE5       490        PUSH IX
BBBA DD4E0D     500        LD   C,(IX+13)
BBBD DD460E     510        LD   B,(IX+14)
BBC0 DD210000   520        LD   IX,0
BBC4 DD09       530        ADD  IX,BC    ; Start address.
BBC6 37         540        SCF  ; LOAD
BBC7 CD5605     550        CALL LOADBYTES
BBCA DDE1       560        POP  IX
BBCC 30CC       570        JR   NC,L2    ; Parity error.
BBCE DD4E0B     580        LD   C,(IX+11)
BBD1 DD460C     590        LD   B,(IX+12)    ; Return no of bytes.
BBD4 C9         600        RET  

Pass 2 errors: 00

Table used:    82  from   253 
Executes: 48000 
