org 5000
di
ld b,4
ld ix,6000
loop push bc
ld de,4
ld a,255
scf
call load
ld de,8972
ld a,255
scf
call load
pop bc
djnz loop
call key_press
ld ix,6000
ld b,4
loop2 push bc
ld de,4
ld a,255
call save
dec ix
ld de,8972
ld a,255
call save
pop bc
dec ix
djnz loop2
jp 0
load ld bc,#f610
out (c),c
EXX
LD BC,#F500
LD HL,#7FF5
EXX
LD BC,#F792
OUT (C),C
DEC B
LD C,#10
OUT (C),C
INC D
EX AF,AF'
DEC D
LD BC,#7F10
OUT (C),C
LD C,#4B
OUT (C),C
EXX
IN A,(C)
EXX
RRA
AND #40
OR #02
LD C,A
CP A
L8897: RET NZ
L8898: CALL L891F
JR NC,L8897
LD HL,#0415
L88A0: DJNZ L88A0
DEC HL
LD A,H
OR L
JR NZ,L88A0
CALL L891B
JR NC,L8897
L88AC: LD B,#9C
CALL L891B
JR NC,L8897
LD A,#C6
CP B
JR NC,L8898
INC H
JR NZ,L88AC
L88BB: LD B,#C9
CALL L891F
JR NC,L8897
LD A,B
CP #D4
JR NC,L88BB
CALL L891F
RET NC
LD A,C
XOR #07
LD C,A
LD H,#00
LD B,#B0
JR L88F4
L88D5: EX AF,AF'
JR NZ,L88DF
JR NC,L88E9
LD (IX+#00),L
JR L88EE
L88DF: RL C
XOR L
RET NZ
LD A,C
RRA
LD C,A
INC DE
JR L88F0
L88E9: LD A,(IX+#00)
XOR L
RET NZ
L88EE: INC IX
L88F0: DEC DE
EX AF,AF'
LD B,#B2
L88F4: LD L,#01
L88F6: CALL L891B
RET NC
LD A,#CB
CP B
RL L
LD B,#B0
JP NC,L88F6
LD A,H
XOR L
LD H,A
LD A,D
OR E
JR NZ,L88D5
LD BC,#7F00
LD A,#54
OUT (C),A
LD BC,#F782
OUT (C),C
LD A,H
CP #01
RET
L891B: CALL L891F
RET NC
L891F: LD A,#16
L8921: DEC A
JR NZ,L8921
AND A
L8925: INC B
RET Z
EXX
IN A,(C)
EXX
RRA
XOR C
AND #40
JR Z,L8925
LD A,C
XOR #41
LD C,A
OR #40
EXX
LD B,H
OUT (C),A
LD B,L
EXX
SCF
RET
save push af
ld a,#10
ld bc,#f600
out (c),a
ld hl,3224
_pause djnz _pause
dec hl
ld a,h
or l
jr nz,_pause
di
pop af
ex af,af'
ld hl,3224
inc de
dec ix
ld a,#30
ld b,a
sa_leader djnz sa_leader
ld b,#f6
out (c),a
xor #20
ld b,#a4
dec l
jr nz,sa_leader
dec b
dec h
jp p,sa_leader
ld b,#2f
sa_sync_1 djnz sa_sync_1
ld b,#f6
out (c),a
ld a,#10
ld b,#37
sa_sync_2 djnz sa_sync_2
ld b,#f6
out (c),a
ld b,#3b
ex af,af'
ld l,a
jp sa_start
sa_loop ld a,d
or e
jr z,sa_parity
ld l,(ix+0)
sa_loop_p ld a,h
xor l
sa_start ld h,a
scf
jp sa_8_bits
sa_parity ld l,h
jr sa_loop_p
sa_bit_2 ld a,#10
bit 7,a
sa_bit_1 djnz sa_bit_1
jr nc,sa_out
ld b,#42
sa_set djnz sa_set
sa_out ld b,#f6
out (c),a
ld b,#3e
jr nz,sa_bit_2
dec b
and a
sa_8_bits rl l
ld a,#30
jr nz,sa_bit_1
dec de
inc ix
ld b,#31
ld a,d
inc a
jp nz,sa_loop
ld b,#f6
out (c),a
ld b,#38
sa_delay djnz sa_delay
xor a
ld bc,#f600
out (c),a
ret
key_press ld b,&f5
.v1 in a,(c)
rra
jr nc,v1
call read_matrix
ld a,(matrix_buffer+2)
bit 2,a
jr z,key_press
ret
.read_matrix ld hl,matrix_buffer
ld bc,&f40e
out (c),c
ld b,&f6
in a,(C)
and &30
ld c,A
or &C0
out (c),a
out (c),c
inc b
ld a,&92
out (c),a
push bc
set 6,c
.scan_key ld b,&f6
out (c),c
ld b,&f4
in a,(c)
cpl
ld (hl),a
inc hl
inc c
ld a,c
and &0f
cp &0a
jr nz,scan_key
pop bc
ld a,&82
out (c),a
dec b
out (c),c
ret
.matrix_buffer defs 10
Edited: Put the code into (http://www.cpcwiki.eu/forum/Themes/default/images/bbc/code.gif) code tags
Does anyone already try to compile this ?
A tape loader for something and to save this something again?