Bankgeschäfte mit dem CPC6128

  • Habe aus einer alten CPCAI (9'88) einen Ready to use-Tip für den CPC6128 abgetippt. Dort kann ich mit Assembler Daten auf die 2.Bank schreiben und lesen.
    Weiß jemand warum rcopy ,d.h. einen Speicherbereich von der 2.Bank lesen nicht funktioniert? Der Rechner hängt sich immer auf!
    Kann mir jemand helfen, der das Heft zu Hause hat und das Listing auch ausprobiert hat?
    Das Listing lautet folgendermaßen: (Die ersten fünf Zeilen sind von mir)
    org &a000


    ld de,&0000
    ld bc,&3fff
    ld hl,&c000
    call rcopy
    ret


    ;****************************************
    ;**************************** SUB BANKMAN
    ;*********************************** 6128
    ;********************** 128k bank manager
    ;****************************** 153 bytes
    ;****************************************


    ;LD E,(HL)
    bpeek: call bank1
    out (c),c
    ld e,(hl)
    bank0: ld bc,#7fc0
    out (c),c
    ret


    ;LD (HL),E
    bpoke: call bank1
    out (c),c
    ld (hl),e
    jr bank0


    ;LD DE,(HL)
    bdeek: call bank1
    out (c),c
    ld e,(hl)
    inc hl
    ld d,(hl)
    jr bank0


    ;LD (HL),DE
    bdoke: call bank1
    out (c),c
    ld (hl),e
    inc hl
    ld (hl),d
    jr bank0


    ;SAVE [(DE)-(BC)] -> (HL)
    bcopy: ld a,b
    ld (bl1+1),a
    ld a,c
    ld (bl2+1),a
    call bank1
    bnext: ld a,(de)
    out (c),c
    ld (hl),a
    ld a,#c0
    out (c),a
    inc hl
    bit 7,h
    jr z,bokay
    ld hl,#4000
    inc c
    ld a,c
    cp #c8
    jr nz,bokay
    sub 4
    ld c,a
    bokay: inc de
    ld a,d
    bl1: cp #00
    jr nz,bnext
    ld a,e
    bl2: cp #00
    jr nz,bnext
    ret


    ;LOAD (HL)->[(DE)-(BC)]
    rcopy: ld a,b
    ld (rl1+1),a
    ld a,c
    ld (rl2+1),a
    call bank1
    rnext: out (c),c
    ld a,(hl)
    push af
    ld a,#c0
    out (c),a
    pop af
    ld (de),a
    inc hl
    bit 7,h
    jr z,rokay
    ld hl,#4000
    inc c
    ld a,c
    cp #c8
    jr nz,rokay
    sub 4
    ld c,a
    rokay: inc de
    ld a,d
    rl1: cp #00
    jr nz,rnext
    ld a,e
    rl2: cp #00
    jr nz,rnext
    ret


    bank1: ld a,h
    and &c0
    rlca
    rlca
    add a,#c4
    ld c,a
    ld b,#7f
    res 7,h
    set 6,h
    ret
    Freue mich auf Antwort.Bis dann, ziggy,