[abc80] Re: Abc80-fpga: skriva till direktfiler på PRB:
juhasz at abc.se
juhasz at abc.se
Mon Aug 10 07:41:58 PDT 2009
Tackar! Ska bli intressant att testa nån kväll!
Dessutom antar jag att rutinen kan användas direkt från "ld ix,(65074)"
utan omvägen via Q0$ om man lägger destinationsadressen på stacken och
sedan anropar? Målet med min övning är ju att kopiera in en fil binärt i
minnet... Då är det ju trevligt att bara kunna ange dest adress...
Hälsningar
Robert
> Helt och totalt otestat:
>
> ;
> ; Get a binary block from the file in DE loaded into Q0¤
> ;
> ; Usage: Z%=CALL%(address, filenum);
> ;
> ; Note: the only position-dependent instruction in this
> ; entire piece of code is the CALL instruction near the end.
> ;
> org 32768 ; Or whereever...
>
> get_blk:
> ; DE = file number
> ; Find Q0¤
> push ix
> ld hl,(65065) ; Variable list
> find_q0:
> ld a,l
> or h
> jr nz,var_not_end
> rst 10h
> defb 128+0 ; "Ej tillåtet öka DIM"
> var_not_end:
> ld a,(hl)
> inc hl
> cp 02h ; ?0¤
> ld a,(hl)
> inc hl
> jr nz,skip
> cp 'Q' ; Q..
> jr z,found_q0
> skip:
> ld a,(hl)
> inc hl
> ld h,(hl)
> ld l,a
> jr find_q0
> found_q0:
> ld e,(hl)
> inc hl
> ld a,(hl)
> inc hl
> and a
> jr nz,okdim
> ld a,e
> cp 253
> jr nc,okdim
> rst 10h
> defb 128+10 ; "Texten får ej plats i strängen"
> okdim:
> ld b,(hl)
> inc hl
> ld c,(hl)
> push bc ; String data pointer
> ld (hl),253 ; Length <- 253
> inc hl
> ld (hl),0
>
> ; Now we have the string target address on stack, and the
> ; file number in (D)E. Find the file.
> ld ix,(65074)
> find_file:
> defb 0ddh
> ld a,l ; LD A,IXL
> defb 0ddh
> or h ; OR IXH
> jr nz,file_not_end
> rst 10h
> defb 128+44 ; "Logisk fil ej öppen"
> file_not_end:
> ld a,(ix+2)
> cp e
> jr z,found_file
> ld c,(ix+0)
> ld b,(ix+1)
> push bc
> pop ix
> jr find_file
> found_file:
> ld l,(ix+3) ; Point to the device list entry
> ld h,(ix+4)
> inc hl
> inc hl
> inc hl
> inc hl
> inc hl
> ld e,(hl)
> inc hl
> ld d,(hl)
> ld hl,3*5 ; READ BLOCK
> add hl,de
> call jp_hl ; Call the read block routine
> ; Now HL -> filled buffer
> pop de
> ld bc,253
> ldir
> pop ix
> ret
> jp_hl:
> jp (hl)
>
> --
> H. Peter Anvin, Intel Open Source Technology Center
> I work for Intel. I don't speak on their behalf.
>
More information about the ABC80
mailing list