Jeśli chodzi o rozmiar pliku na dyskietce to nie ma tu żadnych ograniczeń prócz fizycznych możliwości nośnika.
Program ładujący do kolejnych banków może wyglądać np tak (wyjęty z jakiegoś mojego kodu i zmodyfikowany, ale nie przetestowany):
load equ *
ldx #$10
lda #4 ;read
sta icaux1,x
lda #3 ;open
sta iccmd,x
lda <filename
sta icbufa,x
lda >filename
sta icbufa+1,x
lda #filenamelength
sta icbufl,x
lda #0
sta icbufl+1,x
jsr ciov
bmi err
ldy #0
sty bankindex
loadloop equ *
lda banks,y
sta portb
;zaladowanie bloku do banku
lda #4 ;read
sta icaux1,x
lda #7 ;getbyte
sta iccmd,x
lda <$4000
sta icbufa,x
lda >$4000
sta icbufa+1,x
lda <$4000
sta icbufl,x
lda >$4000
sta icbufl+1,x
jsr ciov
bmi doclose
inc bankindex
ldy bankindex
cpy #bankscount
bcc loadloop
doclose equ *
php
;na końcu włączamy podstawowy bank
lda #$ff
sta portb
lda #12 ;close
sta iccmd,x
jsr ciov
plp
err equ *
rts
filename dta c'D1:DOWOL.DTA'
filenamelength equ *-filename
;tu są wartości dla portb włączające odpowiednie banki - system powinien być włączony!
banks dta b($c3),b($c7)
bankscount equ *-banks
To Ci pozwoli ładować strumieniowo plik (nie musisz go dzielić fizycznie na ileś tam plików, bo nie ma takiej potrzeby) do kilku banków zdefiniowanych w tablicy banks.
Na wyjściu w Y masz kod błędu, rejestr F nienaruszony w tym sensie, że po jsr load możesz zrobić bmi obsługabłędu.
hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje