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,