FMSORG	= $700
FMSZPG	= $43
IOCBORG	= $340
LMASK	= 3
DCBORG	= $300
DHADR	= $E453
EOL	= $9B
DEVTAB	= $31A
ZICB	= $20
LMADR	= $2E7
DUPINIT	= $1540
STAK	= $102
OSBTM	= $DF
DSKTIM	= $246
TIMOUT	= 15
	ORG IOCBORG
IOCB
ICHID:	ORG *+1
ICDNO:	ORG *+1
ICCOM:	ORG *+1
ICSTA:	ORG *+1
ICBAL:	ORG *+1
ICBAH:	ORG *+1
ICPUT:	ORG *+2
ICBLL:	ORG *+1
ICBLH:	ORG *+1
ICAUX1:	ORG *+1
ICAUX2:	ORG *+1
ICAUX3:	ORG *+1
ICAUX4:	ORG *+1
ICAUX5:	ORG *+1
ICAUX6:	ORG *+1
ICLEN	= *-IOCB
	ORG *+ICLEN*7
ICOIN	= $01
ICOOUT	= $02
ICIO	= $03
ICGBR	= $04
ICGRT	= $05
ICGBC	= $06
ICGTC	= $07
ICPBR	= $08
ICPTR	= $09
ICPBC	= $0A
ICPTC	= $0B
ICCLOSE	= $0C
ICSTAT	= $0D
ICDDC	= $0E
ICMAX	= $0E
ICFREE	= $0F
ICSOK	= $01
ICSTR	= $02
ICSEOF	= $03
ICSBRK	= $80
ICSDNR	= $81
ICSNED	= $82
ICSDER	= $83
ICSIVC	= $84
ICSNOP	= $85
ICSIVN	= $86
ICSWPC	= $87
ICDNOZ	= ICDNO-IOCB+ZICB
ICBLLZ	= ICBLL-IOCB+ZICB
ICBLHZ	= ICBLH-IOCB+ZICB
ICBALZ	= ICBAL-IOCB+ZICB
ICBAHZ	= ICBAH-IOCB+ZICB
ICCOMZ	= ICCOM-IOCB+ZICB
ICPUTZ	= ICPUT-IOCB+ZICB
	ORG DCBORG
DCB
DCBSBI:	ORG *+1
DCBDRV:	ORG *+1
DCBCMD:	ORG *+1
DCBSTA:	ORG *+1
DCBBUF:	ORG *+2
DCBTO:	ORG *+2
DCBCNT:	ORG *+2
DCBSEC:	ORG *+2
DCBCRS	= 'R
DCBCWS	= 'W
DCBCST	= 'S
DCBCFD	= '!
DCBSOK	= $01
DCBDNR	= $81
DCBCNR	= $82
DCBDER	= $83
DCBIVC	= $84
DCBWPR	= $87
	ORG FMSZPG
ZBUFP:	ORG *+2
ZDRVA:	ORG *+2
ZSBA:	ORG *+2
ERRNO:	ORG *+1
	ORG FMSORG
BFLG:	.BYTE 0
BRCNT:	.BYTE 3
BLDADR:	.WORD FMSORG
BINTADR:	.WORD DUPINIT
BCONT:	JMP XBCONT
SABYTE:	.BYTE 3
DRVBYT:	.BYTE 01
SAFBFW:	.BYTE 0
SASA:	.BYTE 01
	.BYTE $15
DFSFLG:	.BYTE 0
DFLINK:	.BYTE 0,0
BLDISP:	.BYTE 125
DFLADR:	.BYTE $CB
	.BYTE 07
XBCONT
	LDY DFSFLG
	BEQ BFAIL
	LDA DFLADR
	STA ZBUFP
	STA DCBBUF
	LDA DFLADR+1
	STA ZBUFP+1
	STA DCBBUF+1
	LDA DFLINK+1
	LDY DFLINK
XBC1:	CLC
	LDX DFSFLG
	JSR BSIO
	BMI BFAIL
	LDY BLDISP
	LDA (ZBUFP),Y
	AND #LMASK
	PHA
	INY
	ORA (ZBUFP),Y
	BEQ BGOOD
	LDA (ZBUFP),Y
	TAY
	JSR INCBA
	PLA
	JMP XBC1
BFAIL:	LDA #$C0
	BNE XBRTN
BGOOD:	PLA
XBRTN:	ASL A
	TAY
	RTS
INCBA:	CLC
	LDA ZBUFP
	ADC BLDISP
	STA DCBBUF
	STA ZBUFP
	LDA ZBUFP+1
	ADC #$00
	STA DCBBUF+1
	STA ZBUFP+1
	RTS
BSIO	= *
	STA DCBSEC+1
	STY DCBSEC
BSIOR:	LDA #DCBCRS
	LDY #$40
	BCC DSIO1
	LDA #DCBCWS
	LDY #$80
DSIO1
	STA DCBCMD
	STY DCBSTA
	LDA #$31
	LDY #TIMOUT
DSIO2
	STA DCBSBI
	STY DCBTO
	LDA #$03
	STA RETRY
	LDA #$00
	LDY #$80
	DEX
	BEQ DSIO3
	LDA #$01
	LDY #$00
	STA DCBCNT+1
DSIO3:	STY DCBCNT
DSIO4
	JSR $E459
	BPL DSIO5
	DEC RETRY
	BMI DSIO5
	LDX #$40
	LDA #DCBCRS
	CMP DCBCMD
	BEQ STRTYP
	LDA #DCBCFD
	CMP DCBCMD
	BEQ STRTYP
	LDX #$80
STRTYP:	STX DCBSTA
	JMP DSIO4
DSIO5:	LDX CURFCB
	LDA DCBSTA
	RTS
DFMSDH
	.WORD DFMOPN-1
	.WORD DFMCLS-1
	.WORD DFMGET-1
	.WORD DFMPUT-1
	.WORD DFMSTA-1
	.WORD DFMDDC-1
	ORG   $07E0
DINIT	= *
	LDA SASA
	STA ZBUFP
	LDA SASA+1
	STA ZBUFP+1
	LDA DRVBYT
	STA TEMP1
	LDX #$07
DIA:	STX TEMP2
	ASL TEMP1
	BCS DIHAVE
	LDA #$00
	STA DRVTBL,X
	STA DBUFAL,X
	STA DBUFAH,X
	BEQ DIDDEC
DIHAVE
	LDA #$00
	STA (ZBUFP),Y
	INX
	STX DCBDRV
	LDA #DCBCST
	STA DCBCMD
	JSR DHADR
	LDY #$02
	LDA $02EA
	AND #$20
	BNE DI256
	DEY
DI256:	TYA
	LDX TEMP2
	STA DRVTBL,X
	LDA ZBUFP
	STA DBUFAL,X
	LDA ZBUFP+1
	STA DBUFAH,X
	JSR DINCBP
	DEY
	BEQ DIDDEC
	JSR DINCBP
DIDDEC:	DEX
	BPL DIA
	LDY SABYTE
	LDX #$00
DINXTS:	LDA #$00
	DEY
	BPL DISETS
	TYA   
DISETS:	STA SECTBL,X
	TYA
	BMI DISNI
	LDA ZBUFP
	STA SABUFL,X
	LDA ZBUFP+1
	STA SABUFH,X
	JSR DINCBP
DISNI:	INX
	CPX #$10
	BNE DINXTS
	LDA ZBUFP
	STA LMADR
	LDA ZBUFP+1
	STA LMADR+1
	JMP CLRFCB
DINCBP:	CLC
	LDA ZBUFP
	ADC #$80
	STA ZBUFP
	LDA ZBUFP+1
	ADC #$00
	STA ZBUFP+1
	RTS
CLRFCB	= *
	LDY #$7F
	LDA #$00
CFCBX:	STA FCB,Y
	DEY
	BNE CFCBX
	LDY #$00
ADI1:	LDA Y
	BEQ ADI2
	CMP #'D
	BEQ ADI2
	INY
	INY
	INY
	CPY #$1E
	BNE ADI1
	BRK
ADI2:	LDA #'D
	STA DEVTAB,Y
	LDA #DFMSDH&255
	STA DEVTAB+1,Y
	LDA #DFMSDH/256
	STA DEVTAB+2,Y
	RTS
DFMOPN:	JSR SETUP
	JSR FNDCODE
	LDA ICAUX1,X
	STA FCBOTC,X
	AND #OPDIR
	BEQ OPN1
	JMP LISTDIR
OPN1:	JSR SFDIR
	PHP
	LDA FCBOTC,X
	CMP #OPIN
	BEQ DFOIN
	CMP #OPOUT
	BEQ DFOOUT
	CMP #OPIN+OPOUT
	BEQ DFOUPD
	CMP #OPOUT+OPAPND
	BEQ DFOAPN
	JMP ERDVDC
DFOIN	= *
	PLP
	BCS OPNER1
	BCC DFOUI
DFOUPD	= *
	PLP
	BCS OPNER1
	JSR TSTLOCK
DFOUI	= *
	JSR DFRDSU
	JMP GREAT
OPNER1:	JMP ERFNF
DFOAPN	= *
	PLP
	BCS OPNER1
	LDY CDIRD
	LDA FILDIR+DFDFL1,Y
	AND #DFDNLD
	BEQ APOER
	JSR TSTLOCK
	JSR OPVTOC
	JSR GETSECTOR
	STA FCBSSN+1,X
	LDA FCBLSN,X
	STA FCBSSN,X
	JMP DHFOX2
APOER:	JMP ERAPO
DFOOUT	= *
	PLP
	BCS DFOX1
	JSR XDEL0
	LDY CDIRD
	JMP OPN1A
DFOX1	= *
	LDA DHOLES
	BMI OPNER2
	STA CDIRS
	JSR RDDIR
	LDA DHOLED
	STA CDIRD
	LDA DHFNUM
	STA SFNUM
	JSR OPVTOC
	LDY CDIRD
	LDX #$0A
	LDA #$20
OPN1B:	STA FILDIR+DFDPFN,Y
	INY
	DEX
	BPL OPN1B
	LDX CURFCB
OPN1A	= *
	JSR GETSECTOR
	LDY CDIRD
	STA FILDIR+DFDSSN+1,Y
	LDA FCBLSN,X
	STA FILDIR+DFDSSN,Y
	LDA #DFDINU+DFDOUT+DFDNLD
	STA FILDIR+DFDFL1,Y
	LDA #$00
	STA FILDIR+DFDCNT+1,Y
	STA FILDIR+DFDCNT,Y
	LDX #$00
OPN2:	LDA FNAME,X
	CMP #'?
	BEQ OPN2A
	STA FILDIR+DFDPFN,Y
OPN2A	= *
	INY
	INX
	CPX #$0B
	BCC OPN2
	LDX CURFCB
	JSR WRTDIR
DHFOX2	= *
	JSR SETFCB
	JSR WRTN6
OPN3:	LDA #FCBFAS
	STA FCBFLG,X
	JSR TSTDOS
	BNE DHFOX3
	JMP WRTDOS
DHFOX3	= *
	JMP GREAT
OPNER2:	JSR ERDFULL
SETFCB	= *
	LDA #$00
	STA FCBFLG,X
OPNF1:	LDA SFNUM
	ASL A
	ASL A
	STA FCBFNO,X
	LDA #$00
	STA FCBDLN,X
	STA FCBCNT,X
	STA FCBCNT+1,X
	RTS
DFRDSU:	JSR SETFCB
	LDY CDIRD
	LDA DFDFL1+FILDIR,Y
	AND #DFDNLD
	STA FCBSLT,X
	LDA FILD+DFDSSN,Y
	STA FCBLSN,X
	LDA FILDIR+DFDSSN+1,Y
	STA FCBLSN+1,X
	JSR RDNSO
	RTS
DFMPUT
	STA SVDBYT
	LDA ICDNO,X
	STA ICDNO-IOCB+ZICB
	JSR SETUP
	LDY ENTSTK
	LDA STAK,Y
	CMP #OSBTM
	BCS FRMCIO
	LDA #$00
	STA ICCOMZ
FRMCIO:	LDA FCBOTC,X
	AND #OPOUT
	BEQ PUTER
	LDY FCBDLN,X
	TYA
	CMP FCBMLN,X
	BCC PUT1
	JSR WRTNXS
	BCS PEOF
	JSR WTBUR
	LDY #$00
	BCS PUT1
	LDA (ICBALZ),Y
	STA SVDBYT
PUT1:	INC FCBDLN,X
	LDA SVDBYT
	STA (ZSBA),Y
	LDA #FCBFSM
	ORA FCBFLG,X
	STA FCBFLG,X
	JMP GREAT
PUTER:	JMP ERDVDC
PEOF:	JMP ERREOF
WTBUR:	LDA FCBFLG,X
	BPL NOBURST
	BMI TBURST
RTBUR:	LDA #$00
TBURST:	STA BURTYP
	LDA ICCOMZ
	AND #$02
	BEQ NOBURST
	JSR TBLEN
	BCS NOBURST
	LDA ICBALZ
	STA ZSBA
	LDA ICBAHZ
	STA ZSBA+1
NXTBUR:	LDA BURTYP
	BMI WRBUR
	JSR RDNXTS
	BCC BBINC
	BCS BUREOF
NOBURST SEC
	RTS
WRBUR:	LDA DRVMDL
	STA FCBDLN,X
	TAY
	LDA (ZSBA),Y
	STA SVD1
	INY
	LDA (ZSBA),Y
	STA SVD2
	INY
	LDA (ZSBA),Y
	STA SVD3
	JSR WRTNXS
	LDY DRVMDL
	LDA SVD1
	STA (ZSBA),Y
	INY
	LDA SVD2
	STA (ZSBA),Y
	INY
	LDA SVD3
	STA (ZSBA),Y
BBINC:	CLC
	LDA ZSBA
	ADC FCBMLN,X
	STA ZSBA
	LDA ZSBA+1
	ADC #$00
	STA ZSBA+1
	SEC
	LDA ICBLLZ
	SBC FCBMLN,X
	STA ICBLLZ
	LDA ICBLHZ
	SBC #$00
	NOP
	STA ICBLHZ
	JSR TBLEN
	BCC NXTBUR
BUREOF	= *
	LDA ZSBA
	STA ICBALZ
	LDA ZSBA+1
	STA ICBAHZ
	LDY FCBBUF,X
	DEY
	JSR SSBA
BURST:	CLC
	RTS
TBLEN	= *
	LDA DRVTYP
	CMP #$01
	BNE TBL256
	LDA ICBLLZ
	BMI BURST
TBL256:	LDA ICBLHZ
	BNE BURST
	SEC
	RTS
DFMGET	= *
	JSR SETUP
	LDA FCBOTC,X
FDSCHAR
	AND #OPDIR
	BEQ GET1
	JMP GDCHAR
GET1:	LDA FCBDLN,X
	CMP FCBMLN,X
	BCC GET2
	JSR RTBUR
	JSR RDNXTS
	BCC GET1
GEOF	= *
	JMP ERREOF
GET2:	TAY
	LDA (ZSBA),Y
	STA SVDBYT
	INY
	TYA
	STA FCBDLN,X
EFLOOK	= *
	LDY FCBLEN,X
	BNE GET3
	LDY FCBLSN+1,X
	BNE GET3
	CMP FCBMLN,X
	BCC GET3
	LDA #$03
	JMP RETURN
GET3:	JMP GREAT
DFMSTA
	JSR SETUP
	JSR FNDCODE
	JSR SFDIR
	BCS SFNF
	JSR TSTLOCK
	JMP GREAT
SFNF:	JMP ERFNF
DFMCLS
	JSR SETUP
	LDA FCBOTC,X
	AND #OPOUT
	BEQ CLDONE
	ROL FCBFLG,X
	BCC CLUPDT
	JSR WRTLSEC
	JSR RRDIR
	LDA FCBCNT+1,X
	PHA
	LDA FCBCNT,X
	PHA
	LDA FCBOTC,X
	AND #OPAPND
	BEQ CLOUT
	JSR DFRDSU
APP1:	JSR RDNXTS
	BCC APP1
	LDA FCBSSN,X
	STA FCBLSN,X
	LDA FCBSSN+1,X
	STA FCBLSN+1,X
	JSR WRTN2
CLOUT:	LDY CDIRD
	CLC
	PLA
	ADC FILDIR+DFDCNT,Y
	STA FILDIR+DFDCNT,Y
	PLA
	ADC FILDIR+DFDCNT+1,Y
	STA FILDIR+DFDCNT+1,Y
	LDA #DFDINU+DFDNLD
	STA FILDIR+DFDFL1,Y
	JSR WRTDIR
	JSR WRTVTOC
CLDONE:	LDA #$00
	STA FCBOTC,X
	JMP FGREAT
CLUPDT	= *
	ROL FCBFLG,X
	BCC CLDONE
	JSR WRCSIO
	JMP CLDONE
RRDIR	= *
	LDA FCBFNO,X
	LSR A
	LSR A
	STA SFNUM
	JSR FNSHFT
	STA CDIRS
	JSR FNSHFT
	JSR FNSHF1
	ASL A
	STA CDIRD
	JMP RDDIR
FNSHFT:	LDA #$00
FNSHF1:	LDY #$03
FNSHF2:	ASL FCBFNO,X
	ROL A
	DEY
	BNE FNSHF2
	RTS
DFMDDC
	JSR SETUP
	LDA ICCOM,X
	CMP #254
	BEQ XFV
	CMP #MAXDDC
	BCS DVDCER
	SEC
	SBC #$20
	BCC DVDCER
	ASL A
	TAY
	LDA DVDCVT,Y
	PHA
	LDA DVDCVT+1,Y
	PHA
	RTS
DVDCVT
	.DBYTE XRENAME-1
	.DBYTE XDELETE-1
	.DBYTE DVDCER-1
	.DBYTE XLOCK-1
	.DBYTE XUNLOCK-1
	.DBYTE XPOINT-1
	.DBYTE XNOTE-1
MAXDDC	= $27
DVDCER:	JMP ERDVDC
XFV:	JMP XFORMAT
XRENAME
	JSR FNDCODE
	STY TEMP2
	JSR SFDIR
	BCC XRN1
	JMP ERFNF
XRN1:	JSR TSTLOCK
	JSR TSTDOS
	BNE XRN1A
	JSR DELDOS
XRN1A:	LDY TEMP2
	JSR FNDCNX
	JSR TSTDOS
	BNE XRN1B
	LDY CDIRD
	LDA FILDIR+DFDSSN+1,Y
	PHA
	LDA FILDIR+DFDSSN,Y
	TAY
	PLA
	JSR SETDSO
XRN1B:	LDX #0
	LDY CDIRD
XRN2:	LDA FNAME,X
	CMP #'?
	BEQ XRN3
	STA FILDIR+DFDPFN,Y
XRN3:	INY
	INX
	CPX #$0B
	BCC XRN2
	LDX CURFCB
	JSR WRTDIR
	JSR FNDCODE
	JSR CSFDIR
	BCC XRN1
	JMP FGREAT
XDELETE
	JSR FNDCODE
	JSR SFDIR
	BCS DFNF
XDELX	= *
	JSR XDEL0
	JSR TSTDOS
	BNE XDELY
	JSR DELDOS
XDELY
XDEL3:	JSR WRTDIR
	JSR CSFDIR
	BCC XDELX
	JSR WRTVTOC
	JMP FGREAT
XDEL0:	JSR OPVTOC
XDEL1:	LDY CDIRD
	JSR TSTLOCK
	LDA #DFDEDE
	STA FILDIR+DFDFL1,Y
	JSR DFRDSU
	JMP XDEL2A
XDEL2:	JSR RDNXTS
	BCS XDEL4
XDEL2A	= *
	JSR FRESECT
	JMP XDEL2
XDEL4	= *
	LDY #DVDWRQ
	LDA #$FF
	STA (ZDRVA),Y
	RTS
DFNF:	JMP ERFNF
XLOCK
	LDA #DFDLOC
	STA TEMP4
	BNE XLCOM
XUNLOCK
	LDA #0
	STA TEMP4
XLCOM:	JSR FNDCODE
	JSR SFDIR
	BCC XLC1
	JMP ERFNF
XLC1:	LDY CDIRD
	LDA FILDIR+DFDFL1,Y
	AND #$DF
	ORA TEMP4
	STA FILDIR+DFDFL1,Y
	JSR WRTDIR
	JSR CSFDIR
	BCC XLC1
	JMP FGREAT
TSTLOCK
	LDY CDIRD
	LDA FILDIR+DFDFL1,Y
	AND #DFDLOC
	BNE TLF
	RTS
TLF:	JMP ERFLOCK
XPOINT
	LDA FCBFLG,X
	BMI PERR1
	LDA ICAUX4,X
	CMP FCBCSN+1,X
	BNE XP1
	LDA ICAUX3,X
	CMP FCBCSN,X
	BEQ XP2
XP1:	LDA FCBFLG,X
	BEQ XP1A
	JSR WRCSIO
	LDA #0
	STA FCBFLG,X
XP1A	= *
	LDA ICAUX4,X
	STA FCBLSN+1,X
	LDA ICAUX3,X
	STA FCBLSN,X
	JSR RDNSO
	BCS XPERR
XP2:	LDA ICAUX5,X
	CMP FCBMLN,X
	BCC XP3
	BEQ XP3
XPERR	= *
	JMP ERRPDL
XP3:	STA FCBDLN,X
	JMP GREAT
PERR1:	JMP ERRPOT
XNOTE
	LDA FCBDLN,X
	STA ICAUX5,X
	LDA FCBCSN,X
	STA ICAUX3,X
	LDA FCBCSN+1,X
	STA ICAUX4,X
	JMP GREAT
XFORMAT
	LDA ZSBA+1
	STA DCBBUF+1
	LDA ZSBA
	STA DCBBUF
	LDA #DCBCFD
	STA DCBCMD
	LDA #$40
	STA DCBSTA
	LDX DRVTYP
	LDA #$31
	LDY DSKTIM
	JSR DSIO2
	BPL XF0
	CPY #$90
	BNE XFERR
TSTFMT	= *
	LDY #0
	LDA (ZSBA),Y
	CMP #$FF
	BNE XFBAD
	INY
	LDA (ZSBA),Y
	CMP #$FF
	BEQ XFERR
XFBAD:	JMP ERDBAD
XFERR:	JMP RETURN
XF0
	LDA #0
	TAY
XF1:	STA (ZDRVA),Y
	INY
	BPL XF1
	LDY #0
	LDA #2
	STA (ZDRVA),Y
	INY
	LDA #$C3
	STA (ZDRVA),Y
	INY
	INY
	STA (ZDRVA),Y
	LDA #2
	DEY
	STA (ZDRVA),Y
	INY
	INY
	STA (ZDRVA),Y
	LDY #DVDSMP
	LDA #$FF
XF2:	STA (ZDRVA),Y
	INY
	CPY #DVDSMP+90
	BNE XF2
	LDA #$0F
	LDY #DVDSMP
	STA (ZDRVA),Y
	LDY #DVDSMP+45
	LDA #0
	STA (ZDRVA),Y
	INY
	LDA #$7F
	STA (ZDRVA),Y
	JSR WRTVTOC
	LDA #0
	TAY
XF3:	STA FILDIR,Y
	INY   
	BPL XF3
	LDA #7
	STA CDIRS
XF4:	JSR WRTDIR
	DEC CDIRS
	BPL XF4
	JSR DELDOS
	JMP FGREAT
LISTDIR
	LDA #0
	STA TEMP4
	JSR SFDIR
	BCC LDENT1
	BCS LDCNT
GDCHAR
	BIT TEMP4
	BMI LDDONE
	LDY TEMP4
	LDA (ZSBA),Y
	STA SVDBYT
	INC TEMP4
	CMP #EOL
	BNE GDCRTN
	CPY #17
	BCS LDENT
	LDA #$80
	STA TEMP4
GDCRTN:	JMP GREAT
LDENT:	LDA #0
	STA TEMP4
	JSR CSFDIR
	BCS LDCNT
LDENT1
	JSR FDENT
	JMP GREAT
LDCNT:	JSR RDVTOC
	LDY #DVDNSA+1
	LDA (ZDRVA),Y
	PHA
	DEY
	LDA (ZDRVA),Y
	TAY
	PLA
	JSR CVDX
	LDY #3
	LDX #FSCML-1
MVFSCM:	LDA FSCM,X
	STA (ZSBA),Y
	INY
	DEX
	BPL MVFSCM
	JSR CVDY
	LDA #0
	STA TEMP4
	JMP FGREAT
LDDONE
	JMP ERREOF
FSCM:	.BYTE "SROTCES EERF "
FSCML	= *-FSCM
FDENT
	LDY #0
	LDA #$20
	STA (ZSBA),Y
	LDX CDIRD
	LDA FILDIR+DFDFL1,X
	AND #DFDLOC
	BEQ LD1
	LDA #'*
	STA (ZSBA),Y
LD1:	INY
	LDA #$20
	STA (ZSBA),Y
	INY   
LD2:	LDA FILDIR+DFDPFN,X
	STA (ZSBA),Y
	INX
	INY
	CPY #13
	BCC LD2
	LDA #$20
	STA (ZSBA),Y
	INY
	STY TEMP4
	LDX CDIRD
	LDY FILDIR+DFDCNT,X
	LDA FILDIR+DFDCNT+1,X
CVDX
	LDX #100
	JSR CVDIGIT
	LDX #10
	JSR CVDIGIT
	TYA
	JSR STDIGIT
	LDY #17
CVDY:	LDA #EOL
	STA (ZSBA),Y
	LDY #0
	STY TEMP4
	RTS
CVDIGIT:	STX TEMP3
	LDX #$FF
CVD1:	STA TEMP2
	STY TEMP1
	INX
	SEC
	LDA TEMP1
	SBC TEMP3
	TAY
	LDA TEMP2
	SBC #0
	BCS CVD1
	TXA
STDIGIT ORA #$30
	LDY TEMP4
	STA (ZSBA),Y
	INC TEMP4
	LDA TEMP2
	LDY TEMP1
	RTS
FNDCODE
	LDA ICBAL,X
	STA ZBUFP
	LDA ICBAH,X
	STA ZBUFP+1
	LDY #2
FD0A:	LDA (ZBUFP),Y
	DEY
	BMI FNDERR
	CMP #':
FD0B
	BNE FD0A
	INY
FNDCNX
	LDX #11
	LDA #$20
FD0:	STA FNAME,X
	DEX
	BPL FD0
	LDX #0
	STX EXTSW
FD1:	INY
	LDA (ZBUFP),Y
	CMP #'*
	BNE FD3
FD2:	LDA #'?
	JSR FDSCHAR
	BCC FD2
	BPL FD1
	BMI FDEND
FD3:	CMP #'.
	BNE FD4
	BIT EXTSW
	BMI FDEND
	LDX #8
	ROR EXTSW
	BCC FD1
FD4:	CMP #'?
	BEQ FD6
	CMP #'A
	BCC FD5
	CMP #$5B
	BCC FD6
FD5:	CPX #0
	BEQ FNDERR
	CMP #$30
	BCC FDEND
	CMP #$3A
	BCS FDEND
FD6:	JSR FDSCHAR
	JMP FD1
FDEND:	LDX CURFCB
	RTS   
FNDERR:	JMP ERRFN
	CPX #8
	BCC FDSC2
	BEQ FDSC1
	CPX #12
	BCC FDSC2
	RTS
FDSC1:	BIT EXTSW
	BMI FDSC2
	RTS
FDSC2:	STA FNAME,X
	INX
	CLC
	RTS
SFDIR
	LDA #$FF
	STA DHOLES
	STA CDIRS
	STA SFNUM
	LDA #$70
	STA CDIRD
CSFDIR
	INC SFNUM
	CLC   
	LDA CDIRD
	ADC #DFDELN
	BPL SFD2
	INC CDIRS
	LDA #8
	CMP CDIRS
	BCC SFD1
	BEQ SDRTN
SFD1:	JSR RDDIR
	LDA #0
SFD2:	STA CDIRD
	TAY
	LDA FILDIR+DFDFL1,Y
	BEQ SFDSH
	BMI SFDSH
	AND #DFDOUT
	BNE CSFDIR
	LDX #0
SFD3:	LDA FNAME,X
	CMP #'?
	BEQ SFD4
	CMP FILDIR+DFDPFN,Y
	BNE CSFDIR
SFD4:	INX
	INY
	CPX #11
	BNE SFD3
	CLC
	BCC SDRTN
SFDSH
	LDA DHOLES
	BPL SFDSH1
	LDA CDIRS
	STA DHOLES
	LDA CDIRD
	STA DHOLED
	LDA SFNUM
	STA DHFNUM
SFDSH1:	LDA FILDIR+DFDFL1,Y
	BMI CSFDIR
	SEC
SDRTN:	LDX CURFCB
	RTS
WRTNXS
	LDA FCBFLG,X
	BMI WRTN1
	ASL A
	BPL WRU1
	ASL A
	STA FCBFLG,X
	JSR WRCSIO
	BMI WRNERR
WRU1:	JMP RDNXTS
WRTN1:	JSR GETSECTOR
WRTLSEC:	LDA FCBDLN,X
WRTLS1:	LDY DRVLBT
	STA (ZSBA),Y
WRTN2:	LDA FCBLSN+1,X
	ORA FCBFNO,X
	LDY DRVMDL
	STA (ZSBA),Y
	INY
	LDA FCBLSN,X
	STA (ZSBA),Y
	JSR WRCSIO
	BPL WRTN5
WRNERR:	LDA DCBSTA
	STA TEMP4
	LDA #0
	STA FCBOTC,X
	LDA TEMP4
	JMP RETURN
WRTN5
	INC FCBCNT,X
	BNE WRTN6
	INC FCBCNT+1,X
WRTN6
	JSR MVLSN
	LDA #0
	STA FCBLSN,X
	STA FCBLSN+1,X
	STA FCBDLN,X
	LDA DRVMDL
	STA FCBMLN,X
	CLC   
	RTS   
WRCSIO:	SEC
RWCSIO:	LDA FCBCSN+1,X
	LDY FCBCSN,X
	JMP DSIO
MVLSN:	LDA FCBLSN,X
	STA FCBCSN,X
	LDA FCBLSN+1,X
	STA FCBCSN+1,X
	RTS
RDNXTS
	LDA FCBFLG,X
	BEQ RDNSO
	JMP WRTNXS
RDNSO	= *
	LDA FCBLSN,X
	ORA FCBLSN+1,X
	BNE RDNS1
	SEC
	RTS   
RDNS1:	JSR MVLSN
	CLC
	JSR RWCSIO
	BMI RDIOER
	LDY DRVMDL
	LDA (ZSBA),Y
	AND #$FC
	CMP FCBFNO,X
	BNE RDFNMM
	LDA (ZSBA),Y
	AND #$03
	STA FCBLSN+1,X
	INY
	LDA (ZSBA),Y
	STA FCBLSN,X
	INY
	LDA (ZSBA),Y
	PHA
	LDA FCBSLT,Y
	BNE RDNS3
	PLA
	BMI RDNS2
	LDA #125
RDNS2:	AND #$7F
	PHA
RDNS3:	PLA
	STA FCBMLN,X
	LDA #0
	STA FCBDLN,X
	CLC   
	RTS   
RDIOER:	JSR ERRIO
RDFNMM	= *
	LDA ICCOM,X
	CMP #$21
	BEQ RDDELE
	JSR ERFNMM
RDDELE:	SEC
	RTS
RDDIR:	CLC
	BCC DIRIO
WRTDIR:	SEC
DIRIO:	PHP
	LDA #FILDIR/256
	STA DCBBUF+1
	LDA #FILDIR&255
	STA DCBBUF
	CLC
	LDA CDIRS
	ADC #$69
	TAY   
	LDA #1
	ADC #0
	JMP DSYSIO
RDVTOC
	LDY #DVDWRQ
	LDA (ZDRVA),Y
	BEQ RDVGO
	RTS
RDVGO:	CLC
	BCC VTIO
WRTVTOC
WRVTOC:	LDY #DVDWRQ
	LDA #0
	STA (ZDRVA),Y
	SEC
VTIO:	PHP
	LDA ZDRVA+1
	STA DCBBUF+1
	LDA ZDRVA
	STA DCBBUF
	LDY #$68
	LDA #1
DSYSIO
	PLP
DSYSIA
	LDX DRVTYP
	JSR BSIO
	BMI DSIOER
	RTS
DSIOER:	CMP #DCBDER
	BEQ DEAD
	JMP ERRIO
DEAD:	JMP ERRSYS
OPVTOC
	JSR RDVTOC
	JMP WRTVTOC
FRESECT
	LDA FCBCSN,X
	ORA FCBCSN+1,X
	BEQ FSRTS
	LDA #0
	LDY #3
FS1:	LSR FCBCSN+1,X
	ROR FCBCSN,X
	ROR A
	DEY
	BNE FS1
	LDY #5
FS2:	ROR A
	DEY
	BNE FS2
	TAY
	LDA #0
	SEC
FS3:	ROR A
	DEY
	BPL FS3
	PHA
	LDA FCBCSN,X
	ADC #DVDSMP
	TAY
	PLA   
	ORA (ZDRVA),Y
	STA (ZDRVA),Y
	LDY #DVDNSA
	LDA (ZDRVA),Y
	CLC
	ADC #1
	STA (ZDRVA),Y
	INY
	LDA (ZDRVA),Y
	ADC #0
	STA (ZDRVA),Y
FSRTS	= *
	RTS
GETSECTOR
	LDY #DVDSMP-1
GS1:	INY
	CPY #90+DVDSMP
	BCS GSERR
	LDA (ZDRVA),Y
	BEQ GS1
	STY TEMP1
	PHA
	SEC
	LDY #DVDNSA
	LDA (ZDRVA),Y
	SBC #1
	STA (ZDRVA),Y
	INY
	LDA (ZDRVA),Y
	SBC #0
	STA (ZDRVA),Y
	INY
	LDA #$FF
	STA (ZDRVA),Y
	PLA
	LDY #$FF
GS2:	INY
	ASL A
	BCC GS2
	STY TEMP2
GS3:	LSR A
	DEY
	BPL GS3
	LDY TEMP1
	STA (ZDRVA),Y
	SEC
	LDA TEMP1
	SBC #DVDSMP
	LDY #0
	STY TEMP1
GS4:	ASL A
	ROL TEMP1
	INY
	CPY #3
	BCC GS4
	CLC
	ADC TEMP2
	STA FCBLSN,X
	LDA TEMP1
	ADC #0
	STA FCBLSN+1,X
	RTS
GSERR:	JMP ERRNSA
SETUP:	LDA #$9F
	STA ERRNO
	STX CURFCB
	TSX
	INX
	INX
	STX ENTSTK
	LDX CURFCB
	LDY ICDNOZ
	STY DCBDRV
	DEY
	LDA DBUFAL,Y
	STA ZDRVA
	LDA DBUFAH,Y
	STA ZDRVA+1
	LDA DRVTBL,Y
	BEQ DERR1
	STA DRVTYP
	TAY
	LDA DRVMDL,Y
	STA DRVMDL
	LDA DRVLBT,Y
	STA DRVLBT
	LDY FCBBUF,X
	DEY
	BPL SSBA
	LDY #0
GSB1:	LDA SECTBL,Y
	BEQ GSB4
GSB2:	INY
	CPY #$10
	BCC GSB1
GSB3:	JMP ERRNSB
GSB4:	LDA DRVTYP
	LSR A
	BCS GSB5
	INY
	CPY #16
	BCS GSB3
	LDA SECTBL,Y
	BNE GSB2
	DEY
	LDA #$80
	STA SECTBL+1,Y
GSB5:	LDA #$80
	STA SECTBL,Y
	TYA
	STA FCBBUF,X
	INC FCBBUF,X
SSBA:	LDA SABUFL,Y
	STA ZSBA
	LDA SABUFH,Y
	STA ZSBA+1
	RTS
DERR1:	JMP ERRDNO
FRESBUF	= *
	LDY FCBBUF,X
	BEQ FSBR
	DEY
	LDA #0
	STA FCBBUF,X
	STA SECTBL,Y
	LDA DRVTYP
	LSR A
	BCS FSBR
	LSR A
	STA SECTBL+1,Y
FSBR:	RTS
DSIO
	PHA
	LDA ZSBA
	STA DCBBUF
	LDA ZSBA+1
	STA DCBBUF+1
	PLA
	LDX DRVTYP
	JSR BSIO
	RTS
WRTDOS
	LDY FCBCSN,X
	LDA FCBCSN+1,X
	JSR SETDSO
	JSR WD0
	JMP GREAT
DELDOS
	LDA #0
DD1
	STA DFSFLG
WRTSCO
	LDA #FMSORG/256
	STA DCBBUF+1
	LDA #FMSORG&255
	STA DCBBUF
	LDA #0
	STA DCBSEC
	STA DCBSEC+1
WRNBS:	INC DCBSEC
	LDX #1
	SEC
	JSR BSIOR
	CLC
	LDA DCBBUF
	ADC #128
	STA DCBBUF
	LDA DCBBUF+1
	ADC #0
	STA DCBBUF+1
	LDA DCBSEC
	CMP BRCNT
	BNE WRNBS
	RTS
SETDSO:	STY DFLINK
	STA DFLINK+1
	LDA DRVTYP
	STA DFSFLG
	LDY DRVMDL
	STY BLDISP
	BNE DD1
WD0:	LDA DFLADR
	STA ZBUFP
	LDA DFLADR+1
	STA ZBUFP+1
WD1:	LDY #0
WD2:	LDA (ZBUFP),Y
	STA (ZSBA),Y
	INY
	CPY DRVMDL
	BCC WD2
	TYA
	STA FCBDLN,X
	JSR INCBA
	CMP SASA+1
	BCC WD3
	BNE WD4
	LDA ZBUFP
	CMP SASA
	BCC WD3
	BNE WD4
WD3:	JSR WRTNXS
	JMP WD1
WD4:	RTS
TSTDOS
	LDY #11
TDF1:	LDA FNAME-1,Y
	CMP DFN-1,Y
	BNE TDFR
	DEY
	BNE TDF1
TDFR:	RTS
DFN:	.BYTE "DOS   SYS"
ERDBAD:	INC ERRNO
ERAPO:	INC ERRNO
ERRPOT:	INC ERRNO
ERFNF:	INC ERRNO
ERDFULL:	INC ERRNO
ERDVDC:	INC ERRNO
ERFLOCK:	INC ERRNO
ERRPDL:	INC ERRNO
ERRFN:	INC ERRNO
ERFNMM:	INC ERRNO
ERRSYS:	INC ERRNO
ERRNSA:	INC ERRNO
ERRNSB:	INC ERRNO
ERRDNO:	INC ERRNO
	LDA ERRNO
RETURN:	LDX CURFCB
	STA ICSTA,X
	LDX ENTSTK
	TXS
	LDX CURFCB
	TAY
	LDA SVDBYT
	RTS
ERRIO:	LDA DCBSTA
	BMI RETURN
FGREAT:	LDX CURFCB
	JSR FRESBUF
GREAT:	LDA #01
	BNE RETURN
ERREOF:	LDA #$88
	BMI RETURN
DRVMDL:	.BYTE 0
	.BYTE 125
	.BYTE 253
DRVLBT:	.BYTE 0
	.BYTE 127
	.BYTE 255
DRVTYP:	ORG *+1
RETRY:	ORG *+1
ENTSTK:	ORG *+1
CURFCB:	ORG *+1
DHOLES:	ORG *+1
DHOLED:	ORG *+1
DHFNUM:	ORG *+1
CDIRD:	ORG *+1
CDIRS:	ORG *+1
SFNUM:	ORG *+1
SVDBYT:	ORG *+1
SVD1:	ORG *+1
SVD2:	ORG *+1
SVD3:	ORG *+1
EXTSW
TEMP1:	ORG *+1
TEMP2:	ORG *+1
TEMP3:	ORG *+1
TEMP4:	ORG *+1
BURTYP:	ORG *+1
DRVTBL:	ORG *+8
SECTBL:	ORG *+16
DBUFAL:	ORG *+8
DBUFAH:	ORG *+8
SABUFL:	ORG *+16
SABUFH:	ORG *+16
FNAME:	ORG *+12
AFNAME:	ORG *+12
MDRV:	ORG *+1
Z	= *
	ORG $1381
FCB
FCBFNO:	ORG *+1
FCBOTC:	ORG *+1
	ORG *+1
FCBSLT:	ORG *+1
FCBFLG:	ORG *+1
FCBMLN:	ORG *+1
FCBDLN:	ORG *+1
FCBBUF:	ORG *+1
FCBCSN:	ORG *+2
FCBLSN:	ORG *+2
FCBSSN:	ORG *+2
FCBCRS
FCBCNT:	ORG *+2
FCBLEN	= *-FCB
	ORG FCBLEN*7+*
OPIN	= $04
OPOUT	= $08
OPDIR	= $02
OPAPND	= $01
FCBFAS	= $80
FCBFSM	= $40
DFDFL1	= 0
DFDCNT	= 1
DFDSSN	= 3
DFDPFN	= 5
DFDXFN	= 13
DFDELN	= 16
DFDEUU	= 0
DFDEDE	= $80
DFDINU	= $40
DFDOUT	= $01
DFDLOC	= $20
DFDNLD	= $02
FILDIR:	ORG *+256
DVDTCD	= 0
DVDMSN	= 1
DVDNSA	= 3
DVDWRQ	= 5
DVDSMP	= 10
ENDFMS	= *
	END
