;--------------------------------------- ;hd¤dos ;--------------------------------------- nrparty = $02 nrerror = $03 maxpoz = $04 sector = $05 glow = $06 cylind = $07 nrklastra = $09 work = $0b ilewklast = $0e sec¤head = $0f ;0f 10 ilesectorow = $11 reszta = $12 ;12 13 ilosc = $14 buf = $15 ;15,16 gdziefat1 = $17 ;where is fat gdziefat2 = $19 gdziemain = $1b ; where is dir firstcl = $1d ; where is 1 cluster ileglowic = $1f dirpoz = $20 filestart = $21 dest = $23 bankpoz = $25 dirend = $26 fbufend = $27 mask = $28 fat = $29 act¤fat = $2a pozytion = $2b lo¤flag = $2c freecl = $2d help = $2f f¤nam = $30 f¤typ = $3b ext¤n = $3c f¤hour = $46 f¤date = $48 f¤cl = $4a filelengh = $4c fileklaster = $50 ileklastrow = $52 fl = $54 ;fast load mark f¤ns = $55 ;file name size storage = $56 size = $58 cbmname = $5c r¤y1 = $7c f¤buf1 = $7d byte1 = $7f f¤end1 = $80 dir2 = $81 ;second dir 81 82 value01 = $83 f¤end2 = $84 roz¤y = $85 flaga = $86 area = $b0 partycja = $fa adres = $fe;fe ff ;ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ fattab = $0200 ;fat 1 or 2 linktab = $0400 dirtab = $0600 ;0600 -1600 -8sec/ cluster filebuf1 = $1600 ;1600 -2600 -8sec/ cluster filebuf2 = $2600 ; for open freetab = $3600 info = $3f00 ;ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ pia = $dcc0 status = $dc8e *= $e400 ;--4.08.1997 by Kisiel/ICON ; procedures are linked to kernal dosinit jmp dosini0 loadfile jmp lo¤fl savefile jmp sa¤fl makedir jmp mkdir rmfile jmp delete loadklt jmp loadcl saveklt jmp savecl open jmp openproc getbyte jmp getproc chkin jmp chk ; chkin procedure ;--------------------------------------- chk lda $40b9 ora #$60 cmp f¤end1 bne chk1 lda #$00 sta flaga chk1 cmp f¤end2 bne chk2 lda #$01 sta flaga chk2 cmp #$6f bne chkerr sta flaga chkerr rts ;open procedure ;--------------------------------------- openproc jsr setinfo lda #$00 sta roz¤y lda #$01 sta lo¤flag ldx #$00 jsr calc2 sta $4090 lda $40bb sta filestart lda $40bc sta filestart+1 lda $40b7 sta f¤ns jsr calcfiz ldy #$00 opr1 lda (dest),y sta freetab,y iny cpy f¤ns bne opr1 ldx #$00 jsr calc2 ldy #$00 lda $40b9 cmp #$6f beq rozkaz ldy f¤end1 bne opr2 sta f¤end1 jmp opfb1 opr2 lda #$fe sta pia+2 rts rozkaz sta flaga roz0 lda freetab,y cmp #" " beq rozend sta area,y iny bne roz0 rozend sta area,y sty f¤ns procesor ldy #$00 pr1 lda area,y cmp roz1,y bne pr2 iny cpy f¤ns bne pr1 jmp mkdir pr2 cmp roz2,y bne pr3 iny cpy f¤ns bne pr1 jmp rm pr3 cmp roz3,y bne pr4 iny cpy f¤ns bne pr1 jmp mv pr4 cmp roz4,y bne pr5 iny cpy f¤ns bne pr1 jmp cd pr5 rts ;no operation cd rts rm rts mv rts ;-------ROZKAZY ------------------------ roz1 .text "mkdir " roz2 .text "rm " roz3 .text "mv " roz4 .text "cd " ; setinfo ;--------------------------------------- setinfo ldy #$00 lda nrerror beq infook cmp #$01 bne s1 ldy #ierr1 sty dest+1 s1 cmp #$02 bne s2 ldy #ierr2 sty dest+1 s2 cmp #$03 bne s3 ldy #ierr3 sty dest+1 s3 cmp #$04 bne s4 ldy #ierr4 sty dest+1 s4 cmp #$05 bne s5 ldy #ierr5 sty dest+1 s5 cmp #$06 bne s6 ldy #ierr6 sty dest+1 s6 cmp #$07 bne s7 ldy #ierr7 sty dest+1 s7 cmp #$08 bne s8 ldy #ierr8 sty dest+1 s8 ldy #$00 str lda (dest),y beq setend sta info,y iny bne str infook lda iok,y beq setend sta info,y iny bne infook setend sta info,y rts iok .text "00,ok,00,00" .byte 0 ierr1 .text "01,ms-dos¤error,00,00" .byte 0 ierr2 .text "02,load¤bufer,00,00" .byte 0 ierr3 .text "03,fat16¤error,00,00" .byte 0 ierr4 .text "04,no¤hd,00,00" .byte 0 ierr5 .text "05,file¤not¤found,00,00" .byte 0 ierr6 .text "06,file¤exists,00,00" .byte 0 ierr7 .text "07,bios¤save,00,00" .byte 0 ierr8 .text "08,no¤chanel,00,00" .byte 0 ;getbyte ;--------------------------------------- getproc lda flaga beq gpr1 cmp #$01 beq gpr2 ldy roz¤y lda info,y beq gpr0 sta $40a4 sty roz¤y clc rts gpr0 sta $40a4 lda #$40 sta $4090 clc rts gpr1 jmp getb1 gpr2 clc rts ;open file in bufer1 4 read ;--------------------------------------- opfb1 lda freetab cmp #"$" bne op0 jsr getdl lda #$00 sta dirpoz lda #>filebuf1 sta dest+1 lda #filebuf1 sta filelengh+1 jmp op4 op0 jsr ffn bcc op1 jmp err5 op1 jsr loadcl jsr calcsize lda size+1 sta ileklastrow lda size+2 sta ileklastrow+1 lda #$00 sta r¤y1 lda #>filebuf1 sta f¤buf1+1 lda #filebuf1 sta f¤buf1+1 lda #dirtab sta buf+1 lda #dirtab sta storage+1 mkok jsr ffcl ldy #$0c mk2 lda wzordir,y sta f¤nam,y iny cpy #$20 bne mk2 lda freecl sta f¤cl lda freecl+1 sta f¤cl+1 lda #$10 sta f¤typ lda storage sta buf lda storage+1 sta buf+1 ldy #$00 mk3 lda f¤nam,y sta (buf),y iny cpy #$20 bne mk3 jsr putcld lda freecl sta fileklaster lda freecl+1 sta fileklaster+1 lda #$ff sta freecl sta freecl+1 jsr allcl jsr zdbuf ldy #$00 mk4 lda wzordir,y sta dirtab,y iny cpy #$40 bne mk4 lda fileklaster sta dirtab+$1a lda fileklaster+1 sta dirtab+$1b lda linktab sta dirtab+$3a lda linktab+1 sta dirtab+$3b lda #>dirtab sta buf+1 lda #$00 sta buf jsr savecl2 rts ;--------------------------------------- wzordir .byte $2e,$20,$20,$20,$20,$20 .byte $20,$20,$20,$20,$20,$10 .byte $00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00,$2c,$65 .byte $85,$22,$03,$00,$00,$00 .byte $00,$00,$2e,$2e,$20,$20 .byte $20,$20,$20,$20,$20,$20 .byte $20,$10,$00,$00,$00,$00 .byte $00,$00,$00,$00,$00,$00 .byte $2c,$65,$85,$22,$02,$00 .byte $00,$00,$00,$00 ;zero dir bufer ;--------------------------------------- zdbuf lda #>dirtab sta dest+1 lda #$00 sta dest tay zd1 sta (dest),y iny bne zd1 inc dest+1 ldx dest+1 cpx dirend bne zd1 rts ;save file ;--------------------------------------- sa¤fl jsr s¤afl jsr ffn bcs sa¤fl1 jmp err6 sa¤fl1 lda buf sta storage lda buf+1 sta storage+1 cmp dirend bcc saok jsr dexp ldx dirpoz stx help jsr getdl ldx help inx stx dirpoz lda #dirtab sta storage+1 saok jsr ffcl lda freecl sta f¤cl sta fileklaster lda freecl+1 sta f¤cl+1 sta fileklaster+1 jsr cfdp jsr calcsize lda size+1 sta ileklastrow lda size+2 sta ileklastrow+1 lda storage sta buf lda storage+1 sta buf+1 jsr fe jsr calcfiz lda filestart sta filebuf1 lda filestart+1 sta filebuf1+1 jsr cfat lda dest+1 sta filestart+1 lda dest sec sbc #$02 sta filestart bcs sa¤fl2 dec filestart+1 sa¤fl2 ldy #$02 bne sa¤fl3+2 sa¤fl3 ldy #$00 jsr ttb jsr savecl lda freecl sta fileklaster lda freecl+1 sta fileklaster+1 dec ileklastrow beq sa¤fl5 sa¤fl4 jsr fnfc jsr allcl lda freecl+1 sta fileklaster+1 lda freecl sta fileklaster lda filestart+1 cmp #$80 bcc sa¤fl3 and #%00111111 ora #%01000000 sta filestart+1 ldx bankpoz inx jsr calc2 jmp sa¤fl3 sa¤fl5 lda ileklastrow+1 beq sa¤end bne sa¤fl4 sa¤end lda #$ff sta freecl sta freecl+1 jsr allcl jsr putcld rts ;transfer to bufer ;--------------------------------------- ttb lda #$00 sta buf lda #>filebuf1 sta buf+1 lda filestart sta dest lda filestart+1 sta dest+1 lda #$34 sta $01 ttb1 lda (dest),y sta (buf),y iny bne ttb1 inc dest+1 inc buf+1 lda buf+1 cmp fbufend bne ttb1 lda dest sta filestart lda dest+1 sta filestart+1 lda #$36 sta $01 clc rts ;saveklaster ;--------------------------------------- savecl lda #>filebuf1 sta buf+1 lda #filebuf1 sta buf+1 lda #filebuf1 sta buf+1 lda #filebuf1 sta buf+1 lda #filebuf1 sta buf+1 lda #$00 sta buf ldy #$00 lo¤l3 lda (buf),y sta (dest),y iny bne lo¤l3 inc buf+1 inc dest+1 dex bne lo¤l3 lo¤l4 ldx filelengh beq lo¤le lo¤l5 lda (buf),y sta (dest),y iny dex bne lo¤l5 lo¤le lda bankpoz ror a ror a ror a and #%11000000 sta help lda dest+1 and #%00111111 ora help dey sty storage sta storage+1 cpy #$ff bcc lll dec storage+1 lll inc storage+1 ldy storage+1 ldx storage lda value01 sta $01 clc rts ;get load"$",8 ;ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ dl¤get jsr getdl lda #$01 sta filestart lda #$08 sta filestart+1 lda #$00 sta dirpoz jsr calcfiz dl¤get2 lda $01 sta value01 jsr getdcl jsr load st ldy #$1d lda (buf),y sta size+1 iny lda (buf),y sta size+2 iny lda (buf),y sta size+3 jsr calcsize ldx #$00 st0 lda wzor,x sta cbmname,x inx cpx #$20 bne st0 lda size+2 sta cbmname+3 lda size+1 sta cbmname+2 ldx #$08 cmp #$0a bcc st1 dex cmp #100 bcc st1 dex st1 stx help ldy #$00 st2 lda (buf),y bne dl0 jmp dl¤get¤e dl0 cmp #"_" bne dl1 lda #"¤" dl1 cmp #$20 beq st4 sta cbmname,x iny inx cpy #11 bne st2 iny st3 lda (buf),y beq st4 cmp #"_" bne dl2 lda #"¤" dl2 cmp #$20 beq st4 sta cbmname,x inx iny cpy #17 bne st3 st4 stx storage ldx help dex lda #""" sta cbmname,x ldx storage sta cbmname,x lda help clc adc #18 tax ldy #$0b lda (buf),y ldy #$00 cmp #$10 bne st6 st5 lda w¤dir,y sta cbmname,x inx iny cpy #$03 bne st5 jmp st¤6 st6 lda w¤prg,y sta cbmname,x inx iny cpy #$03 bne st6 st¤6 ldx #$00 ldy #$00 st¤7 lda cbmname,x sta (dest),y iny inx cpx #$21 bne st¤7 lda dest clc adc #$20 sta dest bcc st¤8 inc dest+1 st¤8 lda buf clc adc #$20 sta buf bcc st¤9 inc buf+1 lda buf+1 cmp dirend st¤9 beq st¤10 jmp st st¤10 inc dirpoz jmp dl¤get2 dl¤get¤e lda #$00 iny sta (dest),y iny sta (dest),y iny sta (dest),y ldy dest iny iny sty storage lda dest+1 and #%00111111 sta storage+1 lda value01 sta $01 ldx storage ldy storage+1 rts wzor .byte $01,$01 .byte $00,$00 ;size .byte $20,$20,$20,$20 .byte $20,$20,$20,$20 .byte $20,$20,$20,$20 .byte $20,$20,$20,$20 .byte $20,$20,$20,$20 .byte $20,$20,$20,$20 .byte $20,$20,$20,$00 wzor2 .text "dir" w¤dir .text "dir" w¤prg .text "prg" ;find file name in actual dir ;ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ ffn jsr getdl lda #$00 sta dirpoz ffn1 jsr getdcl bcs ffn¤e jsr load lda #dirtab sta buf+1 ffn2 ldy #$00 ffn3 lda (buf),y beq ffn¤e ff¤ lda (buf),y and cbmname,y beq ff¤2 cmp f¤nam,y bne ffn4 ff¤2 iny cpy f¤ns bne ff¤ ldy #$1a lda (buf),y sta f¤cl sta fileklaster iny lda (buf),y sta f¤cl+1 sta fileklaster+1 ldx #$00 fftr iny lda (buf),y sta size,x sta filelengh,x inx cpx #$04 bne fftr inc $d020 ;usun! clc ;file found rts ffn4 lda buf clc adc #$20 sta buf bcc ffn2 inc buf+1 lda buf+1 cmp dirend bne ffn2 inc dirpoz bne ffn1 ffn¤e lda #$00 sec rts ;delete file ;ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ delete jsr ffn bcc del¤1 rts ;not found del¤1 lda #"." ldy #$00 sta (buf),y jsr putcld jsr cfat del¤2 lda f¤cl+1 sta fat jsr lfat jsr sfaf ldy #$00 lda (dest),y sta f¤cl iny lda (dest),y sta f¤cl+1 cmp #$ff beq del¤l ;last ? del¤3 lda #$00 tay sta (dest),y iny sta (dest),y jsr sfat jmp del¤2 del¤l dey lda (dest),y cmp #$ff bne del¤3 lda #$00 sta (dest),y iny sta (dest),y jsr sfat rts ;pobierz cluster z dir ;ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ getdcl lda linktab bne czyzby lda linktab+1 beq glowny czyzby lda dirpoz asl a tax lda linktab,x cmp #$ff bne g¤22 lda linktab+1,x cmp #$ff beq getdcl¤e lda linktab,x g¤22 sta nrklastra inx lda linktab,x sta nrklastra+1 jsr clnafiz notojuz lda ilewklast sta ilosc lda #dirtab sta buf+1 clc rts glowny lda #$00; sta work+1 lda gdziemain ldx dirpoz cpx maxpoz bcs getdcl¤e ldx dirpoz beq glowny¤2 glowny¤1 clc adc ilewklast dex bne glowny¤1 glowny¤2 sta work bcc glow3 ;???! lda #$01 sta work+1 glow3 lda #$00 sta work+2 jsr find¤n jmp notojuz getdcl¤e sec rts ;put claster dir ;ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ putcld jsr getdcl bcs putcld¤e jsr save clc putcld¤e rts ;getdir link ;ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ getdl lda linktab bne g¤1 lda linktab+1 bne g¤1 beq getdl¤end g¤1 ldx #$01 stx pozytion lda linktab,x getdl¤2 sta fat jsr lfat ldx pozytion dex lda linktab,x inx asl a tay bcc getdl¤lo lda fattab+$0100,y inx iny sta linktab,x lda fattab+$0100,y inx sta linktab,x stx pozytion cmp #$ff bne getdl¤2 ; dey ; lda fattab+$0100,y ; cmp #$ff ; bne getdl¤2 beq getdl¤end getdl¤lo lda fattab,y inx iny sta linktab,x lda fattab,y inx sta linktab,x stx pozytion cmp #$ff bne getdl¤2 ;dey ;lda fattab,y ;cmp #$ff ;bne getdl¤2 getdl¤end rts ;oblicz adres fizyczny w banku ;ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ calcfiz lda filestart sta dest lda filestart+1 sta dest+1 and #%11000000 clc rol a rol a rol a tax calc2 stx bankpoz lda b¤tab1,x sta pia lda b¤tab2,x sta pia+2 lda dest+1 and #%00111111 ora #%01000000 sta dest+1 clc rts b¤tab1 .byte $c8,$d8,$e8,$f8 b¤tab2 .byte $fd,$fe,$ff,$f0 ;calcsize -- size na ilosc clastow ;ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ calcsize lda size sec sbc #$01 sta size bcs cs¤0 lda size+1 sec sbc #$01 sta size+1 bcs cs¤0 lda size+2 sec sbc #$01 sta size+2 bcs cs¤0 dec size+3 lda size+3 cmp #$ff bne cs¤0 ldx #$01 sta size+1 dex sta size+2 cs¤0 lsr size+3 ;proc na 4cl ror size+2 ror size+1 lda ilewklast lsr a tax ;2 lub 1 cs¤1 lsr size+3 ror size+2 ror size+1 dex bne cs¤1 inc size+1 bne cs¤end inc size+2 cs¤end rts ;set actual file name ; only for load and save ;ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ s¤afl ldx #$00 s¤a1 lda #$20 sta f¤nam,x sta area,x lda #$ff sta cbmname,x inx cpx #21 bne s¤a1 ldx #$00 jsr calc2 lda $40bb sta filestart lda $40bc sta filestart+1 lda $40b7 sta f¤ns jsr calcfiz ldy #$00 s¤a2 lda (dest),y sta area,y iny cpy f¤ns bne s¤a2 ldx #$00 s¤a3 lda area,x cmp #$20 beq s¤aend cmp #"," beq s¤aend cmp #"?" bne ss¤ jsr setmask ss¤ cmp #"¤" bne ss¤0 lda #"_" ss¤0 cmp #"*" bne ss¤1 jmp setgwiazd ss¤1 sta f¤nam,x inx cpx #11 bne s¤a3 ldy #11 inx s¤a4 lda area,y cmp #$20 beq s¤aend cmp #"?" bne ss¤2 jsr setmask ss¤2 cmp #"*" bne ss¤3 jmp setgwiazd ss¤3 sta f¤nam,x inx iny cpy #17 bne s¤a5 s¤aend lda #$00 sta cbmname+$0b cpx #13 bcc s¤a5 ldx #17 stx f¤ns lda f¤nam s¤a6 rts s¤a5 ldx #12 stx f¤ns rts setmask lda #$00 sta cbmname,x rts setgwiazd lda #$00 sta cbmname,x inx iny cpy #17 bne setgwiazd lda #$ff sta cbmname+$0b bne s¤a5 ;12345678 wzor3 .text " " .text " " .byte $20 .text " " ;find next file cluster ;ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ fnfcl lda fileklaster+1 sta fat jsr lfat lda fileklaster asl a tay bcc fnfcl2 lda fattab+$0100,y sta fileklaster iny lda fattab+$0100,y sta fileklaster+1 clc rts fnfcl2 lda fattab,y sta fileklaster iny lda fattab,y sta fileklaster+1 rts ;find free cluster ;ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ ffcl lda #$00 sta fat ffcl0 jsr lfat ldy #$00 ffcl1 lda fattab,y beq ffcl4 iny iny bne ffcl1 ffcl2 lda fattab+$0100,y beq ffcl5 iny iny bne ffcl2 inc fat bne ffcl0 ;nie sprawdza ile dec $d020 jmp *-3 ffcl4 iny lda fattab,y beq ffcl6 iny bne ffcl1 beq ffcl2 ffcl5 iny lda fattab+$0100,y beq ffcl7 iny bne ffcl2 inc fat bne ffcl0 dec $d020 jmp *-3 ffcl6 dey tya lsr a sta freecl lda fat sta freecl+1 clc rts ffcl7 dey tya sec ror a sta freecl lda fat sta freecl+1 clc rts ;find next free cluster ;ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ fnfc jsr lfat ldx freecl inx beq fnfc2 txa fnfc1 asl a tay bcc ffcl1 bcs ffcl2 fnfc2 inc fat bne ffcl0 dec $d020 jmp *-3 ;allokacja clustra ;use after fnfc!!!! ;ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ allcl lda fileklaster+1 sta fat jsr lfat lda fileklaster asl a tay bcs allcl1 lda freecl sta fattab,y lda freecl+1 iny sta fattab,y jsr sfat lda freecl+1 cmp #$ff beq allcl0 sta fat jsr lfat allcl0 clc rts allcl1 lda freecl sta fattab+$0100,y lda freecl+1 iny sta fattab+$0100,y jsr sfat lda freecl+1 cmp #$ff beq allcl0 sta fat jsr lfat clc rts ;set fizyczny adres w facie ;ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ sfaf lda f¤cl asl a bcs sfaf¤2 sta dest lda #>fattab sta dest+1 clc rts sfaf¤2 sta dest ldx #>fattab inx stx dest+1 clc rts ;copy fat 1 to 2 ;ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ cfat jsr lfat jsr sfat2 rts ;save fat ;ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ sfat lda #$00 sta sector sta glow sta cylind sta cylind+1 sta work+2 lda gdziefat1+1 sta work+1 lda act¤fat clc adc gdziefat1 sta work bcc sfat¤1 inc work+1 sfat¤1 jsr find¤n lda #$01 sta ilosc lda #>fattab sta buf+1 lda #fattab sta buf+1 lda #linktab sta buf+1 jsr load ldx #$15 lda linktab,x cmp #$f8 beq dos1 jmp dosini0 dos1 lda #$00 sta gdziefat1+1 sta gdziefat2+1 sta gdziemain+1 sta firstcl+1 ldx #$0d lda linktab,x sta ilewklast inx lda linktab,x sta gdziefat1 inx lda linktab,x sta gdziefat1+1 lda gdziefat1 clc ldx #$16 adc linktab,x sta gdziefat2 inx lda gdziefat1+1 adc linktab,x sta gdziefat2+1 ldx #$16 lda gdziefat2 clc adc linktab,x sta gdziemain inx lda gdziefat2+1 adc linktab,x sta gdziemain+1 sta firstcl lda gdziemain clc adc #24 sta firstcl bcc dosend inc firstcl dosend lda #$00 sta linktab sta linktab+1 lda ilesectorow sta help lda #$00 sta sec¤head ldx ileglowic inx stx storage ldx #$08 dl lsr help bcc dl¤n clc adc storage dl¤n ror a ror sec¤head dex bne dl sta sec¤head+1 lda ilewklast asl a clc adc #>dirtab sta dirend lda ilewklast asl a clc adc #>filebuf1 sta fbufend lda ilewklast asl a tax dex stx mask ;do 4 ok! lda linktab+1 cmp #$3c bne nomsdos ldx #$00 ldy #$36 dosfat lda linktab,y cmp p¤tex,x bne df¤err iny inx cpx #$05 bne dosfat nomsdos lda ilewklast asl a clc adc #>dirtab sta dirend lda #24 sta maxpoz lda ilewklast lsr a dint lsr maxpoz lsr a bne dint lda #$ff sta act¤fat ;!!!!!! lda #$00 sta dir2 sta dir2+1 lda #$00 sta linktab sta linktab+1 rts df¤err jmp err3 p¤tex .text "fat16" ;--------------------------------------- BIOS jmp tabel ;--------------------------------------- init = $e000 load = $e003 identify = $e006 diag = $e009 fload = $e00c save = $e00f g4b = $e012 err1 = $e015 err2 = $e018 err3 = $e01b err4 = $e01e err5 = $e021 err6 = $e024 err7 = $e027 err8 = $e02a err9 = $e02d erra = $e030 errb = $e033 errc = $e036 errd = $e039 erre = $e03c errf = $e03f err10 = $e042