home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Commodore 64 Scene Diskmags Assortment
/
Dump_2_1997-06-21_Raiders_of_the_Lost_Empire_Side_A.d64
/
load.ass
< prev
next >
Wrap
Text File
|
2023-02-26
|
4KB
|
196 lines
; sensei/arise/fraction/kreciki
; darek domaga\a
; kusocinskiego 2/3
; 64-920
; pi\a
; tel. (0-67) 13-69-45
;
; - loadery na zamowienie
;
;-------------------
;
;1. najpierw wprowadz loader do stacji
; wywolujac program: INIT{CBM-@}TR&SC{CBM-@}4{CBM-@}YOU
; np.
; jsr INIT
;
; program INIT, po wywolaniu moze zo
; stac skasowany - jest juz niepotrzebny
;
;2. LOAD pliku; aby zaladowac plik, w
; akumulatorze podajesz sciezke a w
; rejestrze .Y dajesz sektor i
; wywolujesz program LOAD{CBM-@}TR&SC{CBM-@}4{CBM-@}YOU
;
;3. troche info o stronie technicznej.
;
; - loader jest irq dwu-bitowy. laduje
; na podana sciezke i sektor. wykorzy
; stuje tylko dwie komorki na stronie
; zerowej: $ae i $af. pliki sa ladowa
; ne pod adres zapisany wczesniej przy
; save pliku. np.
; save"zak1",8,1000,2000,1000
;
; - nie zmieniaj szesciu najstarszych
; bitow w $dd00 - 11111100
; {CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}{CBM-T}
; - bez obaw mozesz zmieniac banki w
; $dd00 na przerwaniach.
;
; - po zaladowaniu pliku, adres koncowy
; bedzie w wektorze $ae/$af. wektor, z
; ktorego korzysta loader mozesz
; dowolnie zmienic.
; patrz etykieta: wek
;
; - moze sie zdarzyc, ze loader opozni
; przerwania o max. jedna linie rastra.
;
; - aby zwiekszyc predkosc ladowania
; loader nie sprawdza czy podczas pracy
; wystapily bledy.
;
; - dane moga byc ladowane w obszar
; od $0334 do $ffff
;
; - loader miesci sie w buforze
; magnetofonu: $0334 do $03ff
;
;4. przyklad uzycia:
;
; jsr INIT
; ...
;laduj lda #$sciezka
; ldy #$sektor
; jsr LOAD ; laduje plik
; ...
; jmp laduj
;
;-------------------
;
;-------------------
wek = $ae ; <- mozesz dowolnie
; {CBM-T}{CBM-T} ; zmienic
;-------------------
load
sta wek+1 ; sciezka
sty wek+0 ; sektor
lda $dd00
and #3
sta $dd00
ldx #1
bit $dd00
bvc *-3
trans ldy #8
lsr wek,x
ror a
ror a
ror a
eor $dd00
and #%00100000
ora #%00010000
sei
eor $dd00
sta $dd00
cli
dey
bne trans+2
jsr op
dex
bpl trans
;-------------------
bit $dd00
bvs *-3
lda $dd00
ora #%00100000
sta $dd00
jsr rec
sta wek+0
jsr rec
sta wek+1
lda #$ea
sta cont
;-------------------
rec
bit $dd00
bvc *-3
sec
sei
lda $dd00
and #3
sta bank+1
sta vic+1
eor #%00100000
sta wait+1
rast lda $d012
sbc #50
bcc *+6
and #$07
beq rast
bank lda #3
sta $dd00
bit $dd00
bpl end
wait ldx #%00100011
nop
lda $dd00
lsr a
lsr a
eor $dd00
lsr a
lsr a
eor $dd00
lsr a
lsr a
eor $dd00
stx $dd00
cli
vic eor #66
cont rts
pha
lda #$10
sei
ldx $01
sta $01
pla
sta (wek),y
stx $01
cli
inc wek+0
bne rec
inc wek+1
bne rec
;-------------------
end
sei
lda $dd00
and #3
eor #%00010000
sta $dd00
jsr op
eor #%00110000
sta $dd00
cli
lda #$60
sta cont
bit $dd00
bvs *-3
op rts
;-------------------