KERNEL & DRVs : lot of fixes around DEV.Open() , KCONFIG

SH : fiw for line wrap
ProDOS.FX : removed a strange bug inherited from 2.0.3 trashing FCBs
This commit is contained in:
burniouf 2023-11-26 14:17:41 +01:00
parent d69b4e0488
commit 74acfeccd1
31 changed files with 219 additions and 201 deletions

Binary file not shown.

Binary file not shown.

View File

@ -51,7 +51,7 @@ IO.Reset.In sec
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
IO.Pipe.Out >PUSHEA.G IO.TMPFIFO IO.Pipe.Out >PUSHEA.G IO.FIFONAME
>PUSHWZ mode >PUSHWZ mode
>SYSCALL MKFIFO >SYSCALL MKFIFO
bcs .9 bcs .9
@ -129,7 +129,7 @@ IO.Pipe.OpenR ldx #O.RDONLY+O.TEXT
IO.Pipe.OpenW ldx #O.WRONLY+O.TEXT IO.Pipe.OpenW ldx #O.WRONLY+O.TEXT
IO.Pipe.Open >LEA.G IO.TMPFIFO IO.Pipe.Open >LEA.G IO.FIFONAME
*-------------------------------------- *--------------------------------------
IO.FOpenYAX >PUSHYA IO.FOpenYAX >PUSHYA
txa txa

View File

@ -780,7 +780,7 @@ Sleep .BS 4
*M32.BUF .BS 12 -1234567890\0 *M32.BUF .BS 12 -1234567890\0
TimeBuf .EQ * TimeBuf .EQ *
M32.BUF .EQ * M32.BUF .EQ *
IO.TMPFIFO .BS 12 /tmp/fifoXX\0 IO.FIFONAME .BS 12 /dev/fifoXX\0
*-------------------------------------- *--------------------------------------
DS.END .ED DS.END .ED
*-------------------------------------- *--------------------------------------

View File

@ -149,7 +149,7 @@ Dev.Detect >STYA ZPArgPtr
ldx DEVSLOT0x ldx DEVSLOT0x
lda #A2osX.S.NIC lda #A2osX.S.NIC
sta A2osX.S,x sta A2osX.S-1,x
* clc * clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------

View File

@ -46,7 +46,7 @@ Dev.Detect >STYA ARGS
.1 and #$0f .1 and #$0f
tay tay
lda A2osX.S,y lda A2osX.S-1,y
bne .3 bne .3
ldx #DEVSIG.Length-1 ldx #DEVSIG.Length-1
@ -79,7 +79,7 @@ Dev.Detect >STYA ARGS
pha pha
tay tay
lda #A2osX.S.COM lda #A2osX.S.COM
sta A2osX.S,y sta A2osX.S-1,y
pla pla
asl asl
asl asl

View File

@ -46,7 +46,7 @@ Dev.Detect >STYA ARGS
.1 and #$0f .1 and #$0f
tay tay
lda A2osX.S,y lda A2osX.S-1,y
bne .3 bne .3
ldx #DEVSIG.Length-1 ldx #DEVSIG.Length-1
@ -79,7 +79,7 @@ Dev.Detect >STYA ARGS
pha pha
tay tay
lda #A2osX.S.COM lda #A2osX.S.COM
sta A2osX.S,y sta A2osX.S-1,y
pla pla
asl asl
asl asl

View File

@ -51,7 +51,7 @@ Dev.Detect >STYA ZPArgPtr
ldx #$70 ldx #$70
ldy #7 ldy #7
.1 lda A2osX.S,y IO based detection, avoid scanning in Disk Controller IO!!!! .1 lda A2osX.S-1,y IO based detection, avoid scanning in Disk Controller IO!!!!
bne .2 bne .2
lda L91C96.BSR+1,x lda L91C96.BSR+1,x
@ -100,7 +100,7 @@ Dev.Detect >STYA ZPArgPtr
ldx DEVSLOT0x ldx DEVSLOT0x
lda #A2osX.S.NIC lda #A2osX.S.NIC
sta A2osX.S,x sta A2osX.S-1,x
* clc * clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------

View File

@ -42,7 +42,7 @@ Dev.Detect >STYA ARGS
.1 and #$0f .1 and #$0f
tay tay
lda A2osX.S,y lda A2osX.S-1,y
bne .3 bne .3
ldy #4 ldy #4
@ -74,7 +74,7 @@ Dev.Detect >STYA ARGS
pha pha
tay tay
lda #A2osX.S.SND lda #A2osX.S.SND
sta A2osX.S,y sta A2osX.S-1,y
pla pla
asl asl
asl asl

View File

@ -73,6 +73,8 @@ Dev.Detect >LDYA L.MSG.DETECT
sta GOMOUSE.JMP+2 sta GOMOUSE.JMP+2
and #$0F and #$0F
sta DEVSLOT0n sta DEVSLOT0n
tax
ora #$30 ora #$30
sta FD.DEV.NAME+3 sta FD.DEV.NAME+3
asl asl
@ -80,6 +82,9 @@ Dev.Detect >LDYA L.MSG.DETECT
asl asl
asl asl
sta GOMOUSE.n0+1 sta GOMOUSE.n0+1
lda #A2osX.S.XY
sta A2osX.S-1,x
>PUSHW L.MSG.DETECT.OK >PUSHW L.MSG.DETECT.OK
>PUSHW L.FD.DEV.NAME >PUSHW L.FD.DEV.NAME

View File

@ -7,6 +7,7 @@ NEW
*-------------------------------------- *--------------------------------------
.INB inc/macros.i .INB inc/macros.i
.INB inc/a2osx.i .INB inc/a2osx.i
.INB inc/kernel.i
.INB inc/mli.e.i .INB inc/mli.e.i
.INB inc/com.i .INB inc/com.i
*-------------------------------------- *--------------------------------------
@ -46,7 +47,7 @@ Dev.Detect >STYA ARGS
.1 and #$0f .1 and #$0f
tay tay
lda A2osX.S,y lda A2osX.S-1,y
bne .3 bne .3
ldx #DEVSIG.Length-1 ldx #DEVSIG.Length-1
@ -79,7 +80,7 @@ Dev.Detect >STYA ARGS
pha pha
tay tay
lda #A2osX.S.COM lda #A2osX.S.COM
sta A2osX.S,y sta A2osX.S-1,y
pla pla
asl asl
asl asl
@ -292,7 +293,7 @@ DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ
.PS "Apple // Int Crd" .PS "Apple // Int Crd"
.DA #S.DIB.T.CHAR .DA #S.DIB.T.CHAR
.DA #0 .DA #0
.DA #0,#94 .DA K.VER
*-------------------------------------- *--------------------------------------
DCB .DA #S.DCB.T.COM DCB .DA #S.DCB.T.COM
.DA #0 FLAGS .DA #0 FLAGS

View File

@ -117,7 +117,7 @@ Dev.Detect >STYA ZPArgsPtr
.1 and #$0f .1 and #$0f
tay tay
lda A2osX.S,y lda A2osX.S-1,y
bne .3 bne .3
ldx #DEVSIG.Length-1 ldx #DEVSIG.Length-1
@ -187,7 +187,7 @@ Dev.Detect >STYA ZPArgsPtr
and #$0F and #$0F
tax tax
lda #A2osX.S.NIC lda #A2osX.S.NIC
sta A2osX.S,x sta A2osX.S-1,x
* clc * clc

View File

@ -55,7 +55,7 @@ Dev.Detect >STYA ZPArgPtr
ldx #$70+$88 ldx #$70+$88
ldy #7 ldy #7
.1 lda A2osX.S,y IO based detection, avoid scanning in Disk Controller IO!!!! .1 lda A2osX.S-1,y IO based detection, avoid scanning in Disk Controller IO!!!!
bne .2 bne .2
lda #W5100.MR.RST lda #W5100.MR.RST
@ -127,7 +127,7 @@ Dev.Detect >STYA ZPArgPtr
ldx DEVSLOT0x ldx DEVSLOT0x
lda #A2osX.S.NIC lda #A2osX.S.NIC
sta A2osX.S,x sta A2osX.S-1,x
* clc * clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------

View File

@ -56,7 +56,7 @@ Dev.Detect >STYA ZPArgPtr
ldx #$70 ldx #$70
ldy #7 ldy #7
.1 lda A2osX.S,y IO based detection, avoid scanning in Disk Controller IO!!!! .1 lda A2osX.S-1,y IO based detection, avoid scanning in Disk Controller IO!!!!
bne .2 bne .2
lda /PP.ID lda /PP.ID
@ -121,7 +121,7 @@ Dev.Detect >STYA ZPArgPtr
ldx DEVSLOT0x ldx DEVSLOT0x
lda #A2osX.S.NIC lda #A2osX.S.NIC
sta A2osX.S,x sta A2osX.S-1,x
* clc * clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------

View File

@ -53,7 +53,7 @@ Dev.Detect >STYA ZPArgPtr
ldx #$70+$88 ldx #$70+$88
ldy #7 ldy #7
.1 lda A2osX.S,y IO based detection, avoid scanning in Disk Controller IO!!!! .1 lda A2osX.S-1,y IO based detection, avoid scanning in Disk Controller IO!!!!
bne .2 bne .2
lda #W5100.MR.RST lda #W5100.MR.RST
@ -125,7 +125,7 @@ Dev.Detect >STYA ZPArgPtr
ldx DEVSLOT0x ldx DEVSLOT0x
lda #A2osX.S.NIC lda #A2osX.S.NIC
sta A2osX.S,x sta A2osX.S-1,x
* clc * clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------

View File

@ -67,7 +67,7 @@ A2osX.HZ .EQ A2osX.KCONFIG+00 5/6 for 50/60Hz
A2osX.TTYDEVS .EQ A2osX.KCONFIG+01 A2osX.TTYDEVS .EQ A2osX.KCONFIG+01
A2osX.F .EQ A2osX.KCONFIG+02 A2osX.F .EQ A2osX.KCONFIG+02
A2osX.F.CHROOT .EQ %10000000 ChRooting to /RAMx A2osX.F.CHROOT .EQ %10000000 ChRooting to /RAMx
A2osX.F.PMODE .EQ %01000000 Pre-emptive Mode A2osX.F.PMODE .EQ %01000000 Preemptive Mode
* *
A2osX.S .EQ A2osX.KCONFIG+09 7 slots A2osX.S .EQ A2osX.KCONFIG+09 7 slots
A2osX.S.Z80 .EQ $80 A2osX.S.Z80 .EQ $80

View File

@ -346,9 +346,9 @@ XDOS.SysDeath tax death error code.
.1 sta IO.CLRPAGE2 switch in text page 1. .1 sta IO.CLRPAGE2 switch in text page 1.
ldy #deathmsg.LEN-1 ldy #XDOS.SysErrMsgL-1
.2 lda deathmsg,y .2 lda XDOS.SysErrMsg,y
sta $400,y 'SYS ERR-$' sta $400,y 'SYS ERR-$'
dey dey
bpl .2 bpl .2
@ -361,7 +361,7 @@ XDOS.SysDeath tax death error code.
adc #$06 inc to alpha a-f adc #$06 inc to alpha a-f
.3 ldy #deathmsg.LEN .3 ldy #XDOS.SysErrMsgL
ora #$80 ora #$80
sta $400,y sta $400,y
@ -381,9 +381,9 @@ XDOS.BFMgr lda XDOS.CmdFlags,x translate into command address.
sta cmdtemp sta cmdtemp
and #$3F bit 6 is refnum, 5 is time to process and #$3F bit 6 is refnum, 5 is time to process
tax tax
lda cmdtable,x move address to indirect jump lda XDOS.CmdJmps,x move address to indirect jump
sta .8+1 sta .8+1
lda cmdtable+1,x high byte lda XDOS.CmdJmps+1,x high byte
sta .8+2 sta .8+2
lda #$20 init backup bit flag lda #$20 init backup bit flag
@ -695,10 +695,11 @@ badref lda #MLI.E.BADREF requested refnum is
sec illegal (out of range) sec illegal (out of range)
rts rts
*-------------------------------------- *--------------------------------------
XDOS.Online jsr mvdbufr figure out how big buffer has to be. XDOS.Online jsr XDOS.GetUserBuf figure out how big buffer has to be.
stz cbytes set this for valdbuf routine. stz cbytes set this for valdbuf routine.
stz cbytes+1 stz cbytes+1
ldy #$01 ldy #$01
lda (ZP.A3L),y if 0 then cbytes=$100 else $010 for one lda (ZP.A3L),y if 0 then cbytes=$100 else $010 for one
and #$F0 device. mask out unused nibble. and #$F0 device. mask out unused nibble.

View File

@ -208,9 +208,9 @@ XDOS.FindFile jsr XDOS.CheckPath see if file exists
XDOS.CheckPath jsr XDOS.FindVol XDOS.CheckPath jsr XDOS.FindVol
bcs fnderr.RTS bcs fnderr.RTS
bne lookfil0 branch if more than root bne XDOS.CheckPath1 branch if more than root
jsr XDOS.ZPT.InitGBuf jsr XDOS.ZPT.InitGBuf zpt = GBUF+4
ldy #$1F move in id and date info ldy #$1F move in id and date info
@ -228,6 +228,7 @@ XDOS.CheckPath jsr XDOS.FindVol
lda #$D0 fake directory file lda #$D0 fake directory file
sta XDOS.DE.Filename sta XDOS.DE.Filename
lda XDOS.GBuf+2 check forward link. lda XDOS.GBuf+2 check forward link.
ora XDOS.GBuf+3 if non-zero, assume full sized directory ora XDOS.GBuf+3 if non-zero, assume full sized directory
bne .3 else assume it's the slot 3 /RAM volume bne .3 else assume it's the slot 3 /RAM volume
@ -244,7 +245,7 @@ errdir lda #MLI.E.BADDIR directory error
fnderr sec fnderr sec
fnderr.RTS rts fnderr.RTS rts
*-------------------------------------- *--------------------------------------
lookfil0 stz nofree reset free entry indicator. XDOS.CheckPath1 stz nofree reset free entry indicator.
sec dir to be searched has header in this block. sec dir to be searched has header in this block.
@ -363,7 +364,7 @@ L386C asl
.FIN .FIN
movhead jsr XDOS.GetDH move directory info. movhead jsr XDOS.GetDH move directory info.
jmp lookfil0 do next local pathname. jmp XDOS.CheckPath1 do next local pathname.
*-------------------------------------- *--------------------------------------
XDOS.GetDH ldx #10 move this directory info XDOS.GetDH ldx #10 move this directory info

View File

@ -390,13 +390,13 @@ L3DFD lda #MLI.E.BEYEOF invalid position
rts rts
*-------------------------------------- *--------------------------------------
XDOS.SetMark ldy #$04 index to user's desired position. XDOS.SetMark ldy #$04 index to user's desired position.
ldx XDOS.FCBPtr file's control block index. ldx XDOS.FCBPtr file's control block index.
inx inc by 2 for index to hi eof inx inc by 2 for index to hi eof
inx inx
sec indicate comparisons are necessary. sec indicate comparisons are necessary.
.1 lda (ZP.A3L),y move it to 'tpos' .1 lda (ZP.A3L),y move it to 'tpos'
sta tposll-2,y sta XDOS.TmpPos-2,y
bcc .2 branch if mark < eof bcc .2 branch if mark < eof
cmp XDOS.FCBs+FCB.EOF,x cmp XDOS.FCBs+FCB.EOF,x
@ -411,12 +411,12 @@ XDOS.SetMark ldy #$04 index to user's desired position.
eor #$01 preserves carry status. eor #$01 preserves carry status.
bne .1 branch if more. bne .1 branch if more.
*-------------------------------------- *--------------------------------------
rdposn ldy XDOS.FCBPtr test to see if new position is rdposn ldy XDOS.FCBPtr test to see if new position is
lda XDOS.FCBs+FCB.MARK+1,y within the same (current) data block. lda XDOS.FCBs+FCB.MARK+1,y within the same (current) data block.
and #$FE and #$FE
sta scrtch sta scrtch
lda tposlh middle byte of new position lda XDOS.TmpPos+1 middle byte of new position
sec sec
sbc scrtch sbc scrtch
sta scrtch sta scrtch
@ -425,7 +425,7 @@ rdposn ldy XDOS.FCBPtr test to see if new position is
cmp #$02 must be within 512 bytes of beginning cmp #$02 must be within 512 bytes of beginning
bcs L3E44 of current position. bcs L3E44 of current position.
lda tposhi make sure within the same 64k. lda XDOS.TmpPos+2 make sure within the same 64k.
cmp XDOS.FCBs+FCB.MARK+2,y cmp XDOS.FCBs+FCB.MARK+2,y
bne L3E44 branch if not. bne L3E44 branch if not.
@ -439,8 +439,9 @@ L3E44 lda XDOS.FCBs+FCB.STYPE,y determine file type for positioning.
jmp dirmark no, test for dir type. jmp dirmark no, test for dir type.
L3E50 ldy #$A4 clear illegal filetype entry in fcb L3E50
sta XDOS.FCBs,y * ldy #$A4 ??????? clear illegal filetype entry in fcb
* sta XDOS.FCBs,y ??????? WILL TRASH anther FCB
lda #MLI.E.BADREF and report error lda #MLI.E.BADREF and report error
sec sec
rts rts
@ -459,7 +460,7 @@ L3E6B ldy XDOS.FCBPtr test to see if current index block
lda XDOS.FCBs+FCB.MARK+2,y is usable by checking if new lda XDOS.FCBs+FCB.MARK+2,y is usable by checking if new
and #$FE position is within 128k of the and #$FE position is within 128k of the
sta scrtch beginning of current sapling level sta scrtch beginning of current sapling level
lda tposhi chunk. lda XDOS.TmpPos+2 chunk.
sec sec
sbc scrtch sbc scrtch
bcc L3E9D branch if a new index block is needed. bcc L3E9D branch if a new index block is needed.
@ -471,9 +472,9 @@ L3E6B ldy XDOS.FCBPtr test to see if current index block
dex dex
bne datlevel1 no, use current indexes. bne datlevel1 no, use current indexes.
L3E89 lda tposlh is new position < 512 ? L3E89 lda XDOS.TmpPos+1 is new position < 512 ?
lsr lsr
ora tposhi ora XDOS.TmpPos+2
bne L3EEF no, mark both data and index block as bne L3EEF no, mark both data and index block as
lda XDOS.FCBs+FCB.1stBLK,y unallocated. 1st block is only block lda XDOS.FCBs+FCB.1stBLK,y unallocated. 1st block is only block
@ -492,7 +493,7 @@ L3EA9 ldx levels be sure there is a top index
cpx #$03 before reading it... cpx #$03 before reading it...
beq posindex branch if file is a tree. beq posindex branch if file is a tree.
lda tposhi is new position within range of a lda XDOS.TmpPos+2 is new position within range of a
lsr sapling file (less than 128k) ? lsr sapling file (less than 128k) ?
php save results php save results
lda #$07 (no level is allocated for new pos'n) lda #$07 (no level is allocated for new pos'n)
@ -517,7 +518,7 @@ posindex jsr XDOS.ClrFCBStatus clr all alloc requirements for previous
jsr rfcbfst position. get highest level index block jsr rfcbfst position. get highest level index block
bcs L3ED4 bcs L3ED4
lda tposhi then test for a sap level index block lda XDOS.TmpPos+2 then test for a sap level index block
lsr lsr
tay tay
lda (zpt),y lda (zpt),y
@ -597,23 +598,23 @@ rnewpos sta ZP.BLKNUM+1
jsr XDOS.ClrFCBStatus show whole chain is allocated. jsr XDOS.ClrFCBStatus show whole chain is allocated.
*-------------------------------------- *--------------------------------------
svmark ldy XDOS.FCBPtr update position in fcb svmark ldy XDOS.FCBPtr update position in fcb
iny iny
iny iny
ldx #$02 ldx #$02
L3F68 lda XDOS.FCBs+FCB.MARK,y save old mark in case calling routine L3F68 lda XDOS.FCBs+FCB.MARK,y save old mark in case calling routine
sta oldmark,x fails later. sta oldmark,x fails later.
lda tposll,x lda XDOS.TmpPos,x
sta XDOS.FCBs+FCB.MARK,y sta XDOS.FCBs+FCB.MARK,y
dey dey
dex move 3 byte position marker dex move 3 byte position marker
bpl L3F68 bpl L3F68
clc set up indirect address to buffer clc set up indirect address to buffer
lda ZP.DataPtr page pointed to by the current lda ZP.DataPtr page pointed to by the current
sta sos position marker. sta sos position marker.
lda tposlh lda XDOS.TmpPos+1
and #$01 and #$01
adc ZP.DataPtr+1 adc ZP.DataPtr+1
sta sos+1 sta sos+1
@ -630,15 +631,15 @@ L3F9C lda scrtch recover results of previous subtraction.
sta cntent blocks must be read to get to new pos'n. sta cntent blocks must be read to get to new pos'n.
lda XDOS.FCBs+FCB.MARK+1,y test for positive direction lda XDOS.FCBs+FCB.MARK+1,y test for positive direction
cmp tposlh indicated by carry. cmp XDOS.TmpPos+1 indicated by carry.
lda XDOS.FCBs+FCB.MARK+2,y lda XDOS.FCBs+FCB.MARK+2,y
sbc tposhi sbc XDOS.TmpPos+2
bcc L3FB9 if set, position forward. otherwise, bcc L3FB9 if set, position forward. otherwise,
L3FAB ldy #$00 read directory file in reverse order. L3FAB ldy #$00 read directory file in reverse order.
jsr dirpos1 read previous block. jsr XDOS.DirSeek read previous block.
bcs L3FD6 if error. bcs L3FD6 if error.
inc cntent count up to 128. inc cntent count up to 128.
@ -647,7 +648,7 @@ L3FAB ldy #$00 read directory file in reverse order.
bmi svmark always. bmi svmark always.
L3FB9 ldy #$02 position is forward from current. L3FB9 ldy #$02 position is forward from current.
jsr dirpos1 read next directory block jsr XDOS.DirSeek read next directory block
bcs L3FD6 if error. bcs L3FD6 if error.
dec cntent dec cntent
@ -655,22 +656,17 @@ L3FB9 ldy #$02 position is forward from current.
beq svmark branch always. beq svmark branch always.
*-------------------------------------- *--------------------------------------
dirpos1 lda (ZP.DataPtr),y get link address of previous or next XDOS.DirSeek lda (ZP.DataPtr),y get link address of previous or next
sta ZP.BLKNUM directory block. sta ZP.BLKNUM directory block.
cmp #$01 test for null byte into carry iny
iny but first be sure there is a link. lda (ZP.DataPtr),y get the rest of the link.
lda (ZP.DataPtr),y get the rest of the link. sta ZP.BLKNUM+1
bne L3FD8 branch if certain link exists. ora ZP.BLKNUM but first be sure there is a link.
bne XDOS.ReadFCB.DBLK branch if certain link exists.
bcs L3FD8 was the low part null as well ?
lda #MLI.E.EOF something is wrong with directory file! lda #MLI.E.EOF something is wrong with directory file!
sec error. sec error.
L3FD6 rts L3FD6 rts
L3FD8 sta ZP.BLKNUM+1
*-------------------------------------- *--------------------------------------
XDOS.ReadFCB.DBLK XDOS.ReadFCB.DBLK
lda #$01 read command lda #$01 read command
@ -690,23 +686,6 @@ XDOS.ReadFCB.DBLK
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
*rfcbidx lda #$01 prepare to read index block : read command
* sta ZP.CMDNUM
* ldx #zpt address of current index buffer.
* XDOS.FileIOPtrX go read index block.
* bcs L400C error
* ldy XDOS.FCBPtr
* lda ZP.BLKNUM
* sta XDOS.FCBs+FCB.IBLK,y save block address of this index in fcb
* lda ZP.BLKNUM+1
* sta XDOS.FCBs+FCB.IBLK+1,y
** clc
*L400C rts
*--------------------------------------
wfcbfst jsr XDOS.FlushBM update the bitmap and write file's 1st block. wfcbfst jsr XDOS.FlushBM update the bitmap and write file's 1st block.
ldx #$02 write command ldx #$02 write command
@ -715,7 +694,7 @@ wfcbfst jsr XDOS.FlushBM update the bitmap and write file's 1st block.
rfcbfst ldx #$01 read command. rfcbfst ldx #$01 read command.
lda #FCB.1stBLK lda #FCB.1stBLK
ora XDOS.FCBPtr add offset to XDOS.FCBPtr ora XDOS.FCBPtr add offset to XDOS.FCBPtr
tay tay
txa get back command txa get back command
@ -751,8 +730,6 @@ XDOS.FileIO2 sec also, set to indicate reg call made to
stz GP.ERROR clear global error code. stz GP.ERROR clear global error code.
jmp XDOS.DevCall call the driver. jmp XDOS.DevCall call the driver.
*-------------------------------------- *--------------------------------------
*--------------------------------------
XDOS.WriteDBLK ldx #ZP.DataPtr point at memory address with x and XDOS.WriteDBLK ldx #ZP.DataPtr point at memory address with x and
lda #FCB.DBLK disk address with y. lda #FCB.DBLK disk address with y.
ora XDOS.FCBPtr add offset to XDOS.FCBPtr ora XDOS.FCBPtr add offset to XDOS.FCBPtr
@ -848,7 +825,7 @@ L40FF ldx #$06 move address of 1st block of file, end
L4101 sta ZP.BLKNUM+1 of file and current usage count. L4101 sta ZP.BLKNUM+1 of file and current usage count.
lda XDOS.FCBPtr lda XDOS.FCBPtr
ora ofcbtbl,x this is done via a translation table ora XDOS.DE2FCB,x this is done via a translation table
tay between directory info and fcb. tay between directory info and fcb.
lda XDOS.DE.KeyPtr,x lda XDOS.DE.KeyPtr,x
sta XDOS.FCBs,y sta XDOS.FCBs,y
@ -877,7 +854,7 @@ L4101 sta ZP.BLKNUM+1 of file and current usage count.
ldy #$02 etc. set desired position to 0. ldy #$02 etc. set desired position to 0.
lda #$00 lda #$00
L413C sta tposll,y L413C sta XDOS.TmpPos,y
dey dey
bpl L413C bpl L413C

View File

@ -1,10 +1,10 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
XDOS.Read jsr mvdbufr xfer buffer address and request count XDOS.Read jsr XDOS.GetUserBuf xfer buffer address and request count
jsr mvcbytes to a more accessable location, also jsr mvcbytes to a more accessable location, also
pha get fcb attributes and save on stack. pha get fcb attributes and save on stack.
jsr calcmrk calc mark after read, test if mark > eof jsr XDOS.CalcNewMark calc mark after read, test if mark > eof
pla carry set means end mark > eof. pla carry set means end mark > eof.
and #$01 test for read enabled. and #$01 test for read enabled.
beq .9 beq .9
@ -13,11 +13,11 @@ XDOS.Read jsr mvdbufr xfer buffer address and request count
ldy XDOS.FCBPtr request to read until just before eof. ldy XDOS.FCBPtr request to read until just before eof.
lda XDOS.FCBs+FCB.EOF,y result = (eof-1) - position lda XDOS.FCBs+FCB.EOF,y result = (eof-1) - position
sbc tposll sbc XDOS.TmpPos
sta cbytes sta cbytes
sta rwreql sta rwreql
lda XDOS.FCBs+FCB.EOF+1,y lda XDOS.FCBs+FCB.EOF+1,y
sbc tposlh sbc XDOS.TmpPos+1
sta cbytes+1 sta cbytes+1
sta rwreqh sta rwreqh
ora cbytes if both bytes = 0 then eof error ora cbytes if both bytes = 0 then eof error
@ -74,12 +74,12 @@ L424E inc ZP.DataPtr+1 incll ptrs by one block (512 bytes)
inc ZP.DataPtr+1 inc ZP.DataPtr+1
dec rwreqh dec rwreqh
dec rwreqh dec rwreqh
inc tposlh inc XDOS.TmpPos+1
inc tposlh inc XDOS.TmpPos+1
bne L4269 if pos'n doesn't get to a 64k boundary bne L4269 if pos'n doesn't get to a 64k boundary
inc tposhi otherwise, must check for a 128k one. inc XDOS.TmpPos+2 otherwise, must check for a 128k one.
lda tposhi carry set if 128k boundary reached. lda XDOS.TmpPos+2 carry set if 128k boundary reached.
eor #$01 eor #$01
lsr lsr
@ -147,7 +147,7 @@ rwdone ldy #$06 return total # of bytes actually read
preprw ldy XDOS.FCBPtr adj pointer to user's buffer to make preprw ldy XDOS.FCBPtr adj pointer to user's buffer to make
sec the transfer sec the transfer
lda ZP.UserBuf lda ZP.UserBuf
sbc tposll sbc XDOS.TmpPos
sta ZP.UserBuf sta ZP.UserBuf
bcs .1 if no adjustment to hi address needed bcs .1 if no adjustment to hi address needed
@ -162,7 +162,7 @@ preprw ldy XDOS.FCBPtr adj pointer to user's buffer to make
lda XDOS.FCBs+FCB.NLBYTE,y move newline character to more lda XDOS.FCBs+FCB.NLBYTE,y move newline character to more
sta nlchar accesible spot. sta nlchar accesible spot.
.2 ldy tposll index to 1st data. .2 ldy XDOS.TmpPos index to 1st data.
lda ZP.DataPtr reset low order of position pointer to lda ZP.DataPtr reset low order of position pointer to
sta sos beginning of page. sta sos beginning of page.
ldx rwreql get low order count of requested bytes. ldx rwreql get low order count of requested bytes.
@ -191,10 +191,10 @@ L4319 dex dec # of bytes left to move.
lda sos+1 test for end of buffer, but first lda sos+1 test for end of buffer, but first
inc ZP.UserBuf+1 adjust user buffer pointer inc ZP.UserBuf+1 adjust user buffer pointer
inc tposlh and position inc XDOS.TmpPos+1 and position
bne L4329 bne L4329
inc tposhi inc XDOS.TmpPos+2
L4329 inc sos+1 and sos buffer high address. L4329 inc sos+1 and sos buffer high address.
eor ZP.DataPtr+1 (carry is undisturbed) eor ZP.DataPtr+1 (carry is undisturbed)
@ -227,14 +227,14 @@ L4350 iny adjust position.
bne L435D bne L435D
inc ZP.UserBuf+1 inc pointers inc ZP.UserBuf+1 inc pointers
inc tposlh inc XDOS.TmpPos+1
bne L435D bne L435D
inc tposhi inc XDOS.TmpPos+2
L435D bit setvflg (sets v flag) L435D bit setvflg (sets v flag)
L4360 sty tposll save low position L4360 sty XDOS.TmpPos save low position
bvs L4366 bvs L4366
inx leave request as +1 for next call inx leave request as +1 for next call
@ -304,11 +304,12 @@ mvcbytes ldy #$04 move request count to a more accessable location
sta cbytes+1 sta cbytes+1
sta rwreqh sta rwreqh
ldy XDOS.FCBPtr return y = val(XDOS.FCBPtr), ldy XDOS.FCBPtr return y = val(XDOS.FCBPtr),
lda XDOS.FCBs+FCB.ACCESS,y a = attributes lda XDOS.FCBs+FCB.ACCESS,y a = attributes
clc and carry clear... * clc and carry clear...
rts rts
*-------------------------------------- *--------------------------------------
mvdbufr ldy #$02 move the pointer to user's buffer XDOS.GetUserBuf ldy #$02 move the pointer to user's buffer
lda (ZP.A3L),y to the block file manager lda (ZP.A3L),y to the block file manager
sta ZP.UserBuf z-page area sta ZP.UserBuf z-page area
iny iny
@ -326,11 +327,14 @@ XDOS.GetFCB.ST ldy XDOS.FCBPtr return storage type
* y,x,a is unknown * y,x,a is unknown
* carry set indicates scrtch > eof * carry set indicates scrtch > eof
*-------------------------------------- *--------------------------------------
calcmrk ldx #$00 XDOS.CalcNewMark
ldx #$00
ldy XDOS.FCBPtr ldy XDOS.FCBPtr
clc clc
L43EE lda XDOS.FCBs+FCB.MARK,y
sta tposll,x .1 lda XDOS.FCBs+FCB.MARK,y
sta XDOS.TmpPos,x
sta oldmark,x sta oldmark,x
adc cbytes,x adc cbytes,x
sta scrtch,x sta scrtch,x
@ -340,18 +344,18 @@ L43EE lda XDOS.FCBs+FCB.MARK,y
iny iny
inx inx
bne L43EE always. bne .1 always.
*--------------------------------------
eoftest lda scrtch,x new mark in scrtch. eoftest lda scrtch,x new mark in scrtch.
cmp XDOS.FCBs+FCB.EOF,y is new position > eof ? cmp XDOS.FCBs+FCB.EOF,y is new position > eof ?
bcc L4414 no, proceed. bcc .1 no, proceed.
bne L4414 yes, adjust 'cbytes' request bne .1 yes, adjust 'cbytes' request
dey dey
dex all tree bytes compared ? dex all tree bytes compared ?
bpl eoftest no, test next lowest bpl eoftest no, test next lowest
L4414 rts .1 rts
*-------------------------------------- *--------------------------------------
werreof jsr plus2fcb reset eof to pre-error position. werreof jsr plus2fcb reset eof to pre-error position.
@ -392,7 +396,7 @@ plus2fcb lda #$02 on exit both a and y = XDOS.FCBPtr+2.
*-------------------------------------- *--------------------------------------
XDOS.Write jsr mvcbytes first determine if requested write is legal. XDOS.Write jsr mvcbytes first determine if requested write is legal.
pha pha
jsr calcmrk save a copy of eof to old eof, set/clr jsr XDOS.CalcNewMark save a copy of eof to old eof, set/clr
jsr wadjeof carry to determine if new mark > eof. jsr wadjeof carry to determine if new mark > eof.
pla get attributes again. pla get attributes again.
and #$02 is write enabled ? and #$02 is write enabled ?
@ -410,7 +414,7 @@ L4462 jsr XDOS.TestWP otherwise, make sure device is not
jmp rwdone else do nothing. jmp rwdone else do nothing.
L4472 jsr mvdbufr move the user's buffer ptr to bfm zero L4472 jsr XDOS.GetUserBuf move the user's buffer ptr to bfm zero
cmp #$04 page area, also get storage type. cmp #$04 page area, also get storage type.
bcs L445E if not tree, return an access error. bcs L445E if not tree, return an access error.
@ -498,10 +502,10 @@ L4507 iny page crossed ?
lda sos+1 test for end of buffer lda sos+1 test for end of buffer
inc ZP.UserBuf+1 but first adjust user buffer pointer inc ZP.UserBuf+1 but first adjust user buffer pointer
inc tposlh and position inc XDOS.TmpPos+1 and position
bne L451C bne L451C
inc tposhi inc XDOS.TmpPos+2
bne L451C bne L451C
lda #MLI.E.BEYEOF out of range if > 32MB lda #MLI.E.BEYEOF out of range if > 32MB
@ -532,14 +536,14 @@ L4539 iny and position
bne L4546 bne L4546
inc ZP.UserBuf+1 inc pointers inc ZP.UserBuf+1 inc pointers
inc tposlh inc XDOS.TmpPos+1
bne L4546 bne L4546
inc tposhi inc XDOS.TmpPos+2
L4546 bit setvflg set v flag L4546 bit setvflg set v flag
L4549 sty tposll save low position L4549 sty XDOS.TmpPos save low position
stx rwreql and remainder of request count. stx rwreql and remainder of request count.
php save statuses php save statuses
@ -547,7 +551,7 @@ L4549 sty tposll save low position
jsr XDOS.SetFCBStatus jsr XDOS.SetFCBStatus
clc adjust user's low buffer address clc adjust user's low buffer address
lda tposll lda XDOS.TmpPos
adc ZP.UserBuf adc ZP.UserBuf
sta ZP.UserBuf sta ZP.UserBuf
bcc L4564 bcc L4564
@ -576,7 +580,7 @@ topdown jsr swapdown make current 1st block an entry in new
L457A jsr alcwblk get another block address for the sap L457A jsr alcwblk get another block address for the sap
bcs L45B1 level index. branch if errors. bcs L45B1 level index. branch if errors.
lda tposhi calculate position of new index block lda XDOS.TmpPos+2 calculate position of new index block
lsr in the top of the tree. lsr in the top of the tree.
tay tay
lda scrtch get address of newly allocated index lda scrtch get address of newly allocated index
@ -686,9 +690,9 @@ XDOS.TestWPA sta ZP.UNITNUM make the device status call
.1 jmp XDOS.PopBlkNumRTS restore the block # .1 jmp XDOS.PopBlkNumRTS restore the block #
*-------------------------------------- *--------------------------------------
XDOS.Tpos2Y lda tposhi get index to next block address XDOS.Tpos2Y lda XDOS.TmpPos+2 get index to next block address
lsr lsr
lda tposlh lda XDOS.TmpPos+1
ror ror
tay index to address = int(pos/512) tay index to address = int(pos/512)
XDOS.Tpos2Y.RTS rts XDOS.Tpos2Y.RTS rts

View File

@ -300,7 +300,7 @@ L47EF lda XDOS.FCBs+FCB.EOF,y
ldx #$02 ldx #$02
L47FD lda (ZP.A3L),y position mark to new eof L47FD lda (ZP.A3L),y position mark to new eof
sta tposll,x sta XDOS.TmpPos,x
dey dey
dex dex
bpl L47FD bpl L47FD
@ -308,7 +308,7 @@ L47FD lda (ZP.A3L),y position mark to new eof
ldx #$02 point to 3rd byte. ldx #$02 point to 3rd byte.
L4808 lda oldeof,x see if eof moved backwards so blocks L4808 lda oldeof,x see if eof moved backwards so blocks
cmp tposll,x can be released. cmp XDOS.TmpPos,x can be released.
bcc eofset (branch if not) bcc eofset (branch if not)
bne purge branch if blocks to be released bne purge branch if blocks to be released
@ -344,7 +344,7 @@ purge jsr XDOS.FlushOne make sure file is current
ldx #$02 ldx #$02
L4840 lda XDOS.FCBs+FCB.MARK,y L4840 lda XDOS.FCBs+FCB.MARK,y
cmp tposll,x compare until not equal or carry clear. cmp XDOS.TmpPos,x compare until not equal or carry clear.
bcc L485F branch if eof > mark. bcc L485F branch if eof > mark.
bne L484E branch if eof < mark. bne L484E branch if eof < mark.
@ -356,7 +356,7 @@ L4840 lda XDOS.FCBs+FCB.MARK,y
L484E ldy XDOS.FCBPtr L484E ldy XDOS.FCBPtr
ldx #$00 ldx #$00
L4853 lda tposll,x fake position, correct position will L4853 lda XDOS.TmpPos,x fake position, correct position will
sta XDOS.FCBs+FCB.MARK,y be made below... sta XDOS.FCBs+FCB.MARK,y be made below...
iny iny
inx inx
@ -364,13 +364,13 @@ L4853 lda tposll,x fake position, correct position will
bne L4853 bne L4853
L485F jsr XDOS.GetFreeCntVCBX force free block count before releasing L485F jsr XDOS.GetFreeCntVCBX force free block count before releasing
lda tposll blocks. prepare for purge of excess... lda XDOS.TmpPos blocks. prepare for purge of excess...
sta dseed all blocks and bytes beyond new eof sta dseed all blocks and bytes beyond new eof
lda tposlh must be zero'd lda XDOS.TmpPos+1 must be zero'd
sta dsap sta dsap
and #$01 and #$01
sta dseed+1 sta dseed+1
lda tposhi lda XDOS.TmpPos+2
lsr lsr
sta dtree sta dtree
ror dsap pass position in terms of block & bytes. ror dsap pass position in terms of block & bytes.
@ -396,9 +396,9 @@ L485F jsr XDOS.GetFreeCntVCBX force free block count before releasing
L489F sta dseed+1 L489F sta dseed+1
L48A2 ldy XDOS.FCBPtr also must pass file's 1st block address. L48A2 ldy XDOS.FCBPtr also must pass file's 1st block address.
lda XDOS.FCBs+FCB.1stBLK,y lda XDOS.FCBs+FCB.1stBLK,y
sta firstbl sta XDOS.1stBLK
lda XDOS.FCBs+FCB.1stBLK+1,y lda XDOS.FCBs+FCB.1stBLK+1,y
sta firstbh sta XDOS.1stBLK+1
stz deblock lastly, initialize # of blocks to stz deblock lastly, initialize # of blocks to
stz deblock+1 be free'd. stz deblock+1 be free'd.
jsr detree deallocate blocks from tree. jsr detree deallocate blocks from tree.
@ -410,7 +410,7 @@ L48A2 ldy XDOS.FCBPtr also must pass file's 1st block address.
ldx #$ff ldx #$ff
L48C2 inx L48C2 inx
lda firstbl,x lda XDOS.1stBLK,x
sta XDOS.FCBs+FCB.1stBLK,y move in possible new first file block sta XDOS.FCBs+FCB.1stBLK,y move in possible new first file block
lda XDOS.FCBs+FCB.UBLK,y address. adjust usage count also lda XDOS.FCBs+FCB.UBLK,y address. adjust usage count also
sbc deblock,x sbc deblock,x
@ -431,7 +431,7 @@ L48C2 inx
ldx #2 ldx #2
L48F2 lda XDOS.FCBs+FCB.MARK,y tell 'rdposn' to go to correct L48F2 lda XDOS.FCBs+FCB.MARK,y tell 'rdposn' to go to correct
sta tposll,x sta XDOS.TmpPos,x
eor #$80 position from incorrect place. eor #$80 position from incorrect place.
sta XDOS.FCBs+FCB.MARK,y sta XDOS.FCBs+FCB.MARK,y
dey dey
@ -500,7 +500,7 @@ XDOS.GetFileInfo
bcs .9 bcs .9
.1 lda XDOS.DE.Filename transfer bytes from internal order to .1 lda XDOS.DE.Filename transfer bytes from internal order to
lsr call spec via 'inftabl' translation lsr call spec via XDOS.DE2FINFO translation
lsr table but first change storage type to lsr table but first change storage type to
lsr external (low nibble) format. lsr external (low nibble) format.
lsr lsr
@ -508,7 +508,7 @@ XDOS.GetFileInfo
ldy #$11 index to last of user's spec table. ldy #$11 index to last of user's spec table.
.2 lda inftabl-3,y .2 lda XDOS.DE2FINFO-3,y
and #$7F strip bit used by setinfo and #$7F strip bit used by setinfo
tax tax
lda XDOS.DE.Filename,x move directory info to call spec. table lda XDOS.DE.Filename,x move directory info to call spec. table
@ -533,7 +533,7 @@ XDOS.SetFileInfo
ldy #$0D init pointer to user supplied list. ldy #$0D init pointer to user supplied list.
.1 ldx inftabl-3,y get index to corresponding 'd.' table. .1 ldx XDOS.DE2FINFO-3,y get index to corresponding 'd.' table.
bmi .2 branch if parameter can't be set. bmi .2 branch if parameter can't be set.
lda (ZP.A3L),y lda (ZP.A3L),y
@ -905,9 +905,9 @@ L4B45 lda GP.DEVNUM last device used.
bcs L4B67 before going thru deallocation. bcs L4B67 before going thru deallocation.
lda XDOS.DE.KeyPtr 'detree' needs first block address lda XDOS.DE.KeyPtr 'detree' needs first block address
sta firstbl sta XDOS.1stBLK
lda XDOS.DE.KeyPtr+1 lda XDOS.DE.KeyPtr+1
sta firstbh sta XDOS.1stBLK+1
lda XDOS.DE.Filename find out which storage type. lda XDOS.DE.Filename find out which storage type.
and #$F0 strip off name length. and #$F0 strip off name length.
cmp #$40 is it a seed, sapling or tree ? cmp #$40 is it a seed, sapling or tree ?
@ -927,9 +927,9 @@ XDOS.DestroyFile
* lda #$00 set 'detree' input variables, must be * lda #$00 set 'detree' input variables, must be
L4B6F stz stortyp,x in order: deblock, dtree, dsap, dseed. .1 stz stortyp,x in order: deblock, dtree, dsap, dseed.
dex dex
bne L4B6F loop until all zero'd. bne .1 loop until all zero'd.
lda #$02 this avoids an extra file i/o and pre- lda #$02 this avoids an extra file i/o and pre-
sta dseed+1 vents destruction of any deleted data. sta dseed+1 vents destruction of any deleted data.
@ -938,8 +938,8 @@ L4B6F stz stortyp,x in order: deblock, dtree, dsap, dseed.
dec delflag reset flag. dec delflag reset flag.
bcs L4B93 (de-evolution) bcs L4B93 (de-evolution)
L4B85 ldx firstbh L4B85 lda XDOS.1stBLK now deallocate seed.
lda firstbl now deallocate seed. ldx XDOS.1stBLK+1
jsr XDOS.DeallocAX jsr XDOS.DeallocAX
bcs L4B93 bcs L4B93
@ -961,7 +961,7 @@ L4BAF cmp #$01 adjust carry accordingly
rts rts
*-------------------------------------- *--------------------------------------
L4BCD bcc L4B85 branch widened (always taken) L4BCD bcc L4B85 branch widened (always taken)
*--------------------------------------
XDOS.DestroyDir cmp #$D0 is this a directory file ? XDOS.DestroyDir cmp #$D0 is this a directory file ?
bne L4C1B no, file incompatible. bne L4C1B no, file incompatible.

View File

@ -6,7 +6,7 @@ NEW
* *
* on entry: * on entry:
* stortype = storage type in upper nibble, lower nibble is undisturbed. * stortype = storage type in upper nibble, lower nibble is undisturbed.
* firstbl & firstbh = first block of file (index or data). * XDOS.1stBLK = first block of file (index or data).
* deblock = 0 * deblock = 0
* dtree = ptr to 1st block with data to be deallocated at tree level. * dtree = ptr to 1st block with data to be deallocated at tree level.
* dsap = ptr to 1st block at sapling level. * dsap = ptr to 1st block at sapling level.
@ -14,7 +14,7 @@ NEW
* *
* on exit: * on exit:
* stortype = modified result of storage type (if applicable). * stortype = modified result of storage type (if applicable).
* firstbl & h = modified if storage type changed. * XDOS.1stBLK = modified if storage type changed.
* deblock = total number of blocks freed at all levels. * deblock = total number of blocks freed at all levels.
* dtree, dsap, deseed unchanged. * dtree, dsap, deseed unchanged.
* *
@ -204,16 +204,16 @@ L4D4F jmp XDOS.WriteGBuf update data block to disk.
L4D52 rts return error status. L4D52 rts return error status.
drdfrst lda firstbl read specified 1st block into XDOS.GBuf drdfrst lda XDOS.1stBLK read specified 1st block into XDOS.GBuf
ldx firstbh ldx XDOS.1stBLK+1
jmp XDOS.ReadGBufAX go read it jmp XDOS.ReadGBufAX go read it
*-------------------------------------- *--------------------------------------
* beware that dealloc may bring in a new bitmap block and may destroy * beware that dealloc may bring in a new bitmap block and may destroy
* locations 46 and 47 which are used to point to the current index block. * locations 46 and 47 which are used to point to the current index block.
*-------------------------------------- *--------------------------------------
shrink ldx firstbh first deallocate top index block shrink ldx XDOS.1stBLK+1 first deallocate top index block
phx phx
lda firstbl lda XDOS.1stBLK
pha save block address of this index block. pha save block address of this index block.
jsr XDOS.DeallocAX free it from the bitmap jsr XDOS.DeallocAX free it from the bitmap
pla pla
@ -223,9 +223,9 @@ shrink ldx firstbh first deallocate top index block
bcs L4D1E report errors. bcs L4D1E report errors.
lda XDOS.GBuf get # of new 1st block from old index. lda XDOS.GBuf get # of new 1st block from old index.
sta firstbl sta XDOS.1stBLK
lda XDOS.GBuf+$100 lda XDOS.GBuf+$100
sta firstbh sta XDOS.1stBLK+1
ldy #$00 ldy #$00
jsr XDOS.SwapGBUFY flip that one entry in old top index. jsr XDOS.SwapGBUFY flip that one entry in old top index.
sec now change file type, sec now change file type,
@ -830,7 +830,7 @@ XDOS.CmdFlags .HS A0A1A2
.HS 50515253 .HS 50515253
.HS 94959697 .HS 94959697
cmdtable .DA XDOS.Create XDOS.CmdJmps .DA XDOS.Create
.DA XDOS.Destroy .DA XDOS.Destroy
.DA XDOS.Rename .DA XDOS.Rename
.DA XDOS.SetFileInfo .DA XDOS.SetFileInfo
@ -869,13 +869,18 @@ xdosver .HS 00
compat .HS 00 compat .HS 00
.HS C3270D000000 .HS C3270D000000
.FIN .FIN
rootstuf .HS 0F02000400000800 rootstuf .HS 0F.0200.0400.000800
whichbit .HS 8040201008040201 whichbit .HS 8040201008040201
ofcbtbl .HS 0C0D1819151617 XDOS.DE2FCB .DA #FCB.1stBLK+0
inftabl .HS 1E101F2080939421 .DA #FCB.1stBLK+1
.HS 22232418191A1B .DA #FCB.UBLK+0
deathmsg .AS -"SYS ERR-$0" .DA #FCB.UBLK+1
deathmsg.LEN .EQ *-deathmsg .DA #FCB.EOF+0
.DA #FCB.EOF+1
.DA #FCB.EOF+2
XDOS.DE2FINFO .HS 1E.10.1F.20.80.93.94.21.22.23.24.18.19.1A.1B
XDOS.SysErrMsg .AS -"SYS ERR-$0"
XDOS.SysErrMsgL .EQ *-XDOS.SysErr
*-------------------------------------- *--------------------------------------
XDOS.DATA .DUMMY XDOS.DATA .DUMMY
*-------------------------------------- *--------------------------------------
@ -943,9 +948,7 @@ XDOS.BM.DevID .HS 00
XDOS.BM.BlkNum .HS 0000 XDOS.BM.BlkNum .HS 0000
XDOS.BM.Idx .HS 00 XDOS.BM.Idx .HS 00
tposll .HS 00 XDOS.TmpPos .HS 000000
tposlh .HS 00
tposhi .HS 00
rwreql .HS 00 rwreql .HS 00
rwreqh .HS 00 rwreqh .HS 00
@ -968,8 +971,7 @@ cferr .HS 00
* deallocation temporary variables * deallocation temporary variables
firstbl .HS 00 XDOS.1stBLK .HS 0000
firstbh .HS 00
stortyp .HS 00 stortyp .HS 00
*-------------------------------------- *--------------------------------------
deblock .HS 0000 deblock .HS 0000

View File

@ -79,7 +79,7 @@ CS.INIT lda DevID
stx hBuf stx hBuf
>STYA IOCTL+S.IOCTL.BUFPTR for CS.INIT.DEV >STYA IOCTL+S.IOCTL.BUFPTR for CS.INIT.DEV
jsr CS.INIT.DEV jsr CS.INIT.DEV
bcs .90 bcs .90

View File

@ -244,7 +244,7 @@ MSG.TCPIPERR .AZ "TELNETD:TCP/IP Not initialized properly."
MSG.SKTERR .AZ "TELNETD:Listen Error." MSG.SKTERR .AZ "TELNETD:Listen Error."
MSG.INCOMING .CZ "TELNETD:Incoming Connection [SKT=%h] From : %d.%d.%d.%d\r\n" MSG.INCOMING .CZ "TELNETD:Incoming Connection [SKT=%h] From : %d.%d.%d.%d\r\n"
*-------------------------------------- *--------------------------------------
NOD.Template .AZ "/tmp/tty%h" NOD.Template .AZ "/dev/tty%h"
CMD.Template .AZ "${ROOT}sbin/getty -E %s ${ROOT}sbin/login" CMD.Template .AZ "${ROOT}sbin/getty -E %s ${ROOT}sbin/login"
*-------------------------------------- *--------------------------------------
SA.LOCAL .DA #AF.INET S.SOCKADDR.AF SA.LOCAL .DA #AF.INET S.SOCKADDR.AF

View File

@ -49,7 +49,7 @@ Dev.Detect >STYA ZPArgPtr
.1 and #$0f .1 and #$0f
tay tay
lda A2osX.S,y lda A2osX.S-1,y
bne .3 bne .3
ldx #DEVSIG.Length-1 ldx #DEVSIG.Length-1
@ -112,7 +112,7 @@ Dev.Detect >STYA ZPArgPtr
and #$0F and #$0F
tay tay
lda #A2osX.S.COM lda #A2osX.S.COM
sta A2osX.S,y sta A2osX.S-1,y
* clc * clc

View File

@ -144,7 +144,7 @@ Dev.Detect >STYA ZPArgPtr
ldx DEVSLOT0x ldx DEVSLOT0x
lda #A2osX.S.NIC lda #A2osX.S.NIC
sta A2osX.S,x sta A2osX.S-1,x
* clc * clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------

View File

@ -49,17 +49,15 @@ NEW
*-------------------------------------- *--------------------------------------
* Public Vars * Public Vars
*-------------------------------------- *--------------------------------------
.LIST ON
.BS A2osX.KCONFIG-* .BS A2osX.KCONFIG-*
.LIST OFF
*-------------------------------------- *--------------------------------------
* Kernel Config Block * Kernel Config Block
*-------------------------------------- *--------------------------------------
.DA #6 A2osX.HZ=60hz .DA #6 A2osX.HZ : 60hz
.DA #2 A2osX.TTYDEVS=2 .DA #2 A2osX.TTYDEVS : 2
.DA #0 ChRoot/Preemptive Disabled .DA #0 A2osX.F : ChRoot/Preemptive Disabled
.HS 000000000000 spare .BS A2osX.S-*
.HS 00000000000000 All Slots marked as "Free" .BS 7 All Slots marked as "Free"
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE usr/src/sys/kernel.s.gp SAVE usr/src/sys/kernel.s.gp

View File

@ -139,7 +139,9 @@ Kernel.Init2 sei
>LDYAI MSG.FX >LDYAI MSG.FX
jsr PrintFYA jsr PrintFYA
.5 lda A2osX.HZ .5 sta IO.SETALTZP
lda A2osX.HZ
sta IO.CLRALTZP
pha pha
>LDYAI MSG.HZ >LDYAI MSG.HZ
jsr PrintFYA jsr PrintFYA
@ -293,6 +295,15 @@ KConfigLoad >LDYAI MSG.KCREAD
pla pla
plp plp
bcs .9 bcs .9
ldx #15
.3 lda A2osX.KCONFIG,x
sta IO.SETALTZP
sta A2osX.KCONFIG,x
sta IO.CLRALTZP
dex
bpl .3
>LDYAI MSG.KCREAD.OK >LDYAI MSG.KCREAD.OK
bra .8 bra .8
@ -619,7 +630,7 @@ CPU.Init.Z80 >PUSHWI MSG.Z80
sta A2osX.Z80SLOT sta A2osX.Z80SLOT
tax tax
lda #A2osX.S.Z80 lda #A2osX.S.Z80
sta A2osX.S,x sta A2osX.S-1,x
>PUSHWI MSG.Z80.OK >PUSHWI MSG.Z80.OK
lda A2osX.Z80SLOT lda A2osX.Z80SLOT
@ -845,7 +856,7 @@ DevMgrInit >LDYAI MSG.DEV
lda #A2osX.S.BLK lda #A2osX.S.BLK
.7 ldx FD.BDEV+S.FD.DEV.BUSID .7 ldx FD.BDEV+S.FD.DEV.BUSID
sta A2osX.S,x sta A2osX.S-1,x
.8 dec .1+1 .8 dec .1+1
bmi .80 bmi .80
@ -907,7 +918,7 @@ DevMgr.VXD >LDYAI VSD.PATCH
bit IO.RRAMWRAMBNK1 bit IO.RRAMWRAMBNK1
lda #A2osX.S.VXD lda #A2osX.S.VXD
sta A2osX.S,x sta A2osX.S-1,x
plp plp
@ -1109,7 +1120,7 @@ IrqMgr.TClk stz ZPPtr1 Try finding a TClock Card...
tay get $n0 tay get $n0
sty IRQ.n0 sty IRQ.n0
lda #A2osX.S.CLK lda #A2osX.S.CLK
sta A2osX.S,x sta A2osX.S-1,x
lda #$40+$20 Enable interrupt + 64Hz lda #$40+$20 Enable interrupt + 64Hz
sta $c080,y sta $c080,y

View File

@ -154,7 +154,7 @@ K.MKFIFO jsr STAT.PM
ldy #0 ldy #0
.1 lda STAT.TMPFIFO,y .1 lda STAT.DEVFIFO,y
sta (ZPPtr1),y fill pathname buffer sta (ZPPtr1),y fill pathname buffer
iny iny
cpy #9 cpy #9
@ -283,7 +283,7 @@ STAT.PM >PULLW K.S.STAT+S.STAT.MODE
>PULLW ZPPtr1 pathname >PULLW ZPPtr1 pathname
rts rts
*-------------------------------------- *--------------------------------------
STAT.TMPFIFO .AS "/tmp/fifo" STAT.DEVFIFO .AS "/dev/fifo"
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE usr/src/sys/kernel.s.stat SAVE usr/src/sys/kernel.s.stat

View File

@ -359,43 +359,57 @@ TERMX.CUF clc
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
TERMX.BS TERMX.CUB sec no wrap
TERMX.CUB ldy #S.DCB.TTY.CH
lda (ZPDCBPtr),y
beq TERMX.BS.8
dec .HS 90 BCC
sta (ZPDCBPtr),y
TERMX.BS.8 clc TERMX.BS clc wrap
jsr TERMX.BS1
clc
rts rts
*-------------------------------------- *--------------------------------------
TERMX.DEL ldy #S.DCB.TTY.CH TERMX.BS1 ldy #S.DCB.TTY.CH
lda (ZPDCBPtr),y lda (ZPDCBPtr),y
beq .1 beq .1
dec dec
sta (ZPDCBPtr),y sta (ZPDCBPtr),y
bra .3
.1 ldy #S.DCB.TTY.CV clc
rts
.1 bcs .9 no wrap
ldy #S.DCB.TTY.CV
lda (ZPDCBPtr),y lda (ZPDCBPtr),y
beq TERMX.BS.8 sec
beq .9
dec dec
sta (ZPDCBPtr),y sta (ZPDCBPtr),y
ldy #S.DCB.TTY.CH ldy #S.DCB.TTY.CH
lda #79 lda #79
sta (ZPDCBPtr),y S.DCB.TTY.CH sta (ZPDCBPtr),y
clc
.3 lda #C.SPACE .9 rts
*--------------------------------------
TERMX.DEL clc wrap
jsr TERMX.BS1
bcs TERMX.CR.8
lda #C.SPACE
jmp SetCharAtCurPos jmp SetCharAtCurPos
*-------------------------------------- *--------------------------------------
TERMX.CR lda #0 TERMX.CR lda #0
ldy #S.DCB.TTY.CH ldy #S.DCB.TTY.CH
sta (ZPDCBPtr),y sta (ZPDCBPtr),y
clc
TERMX.CR.8 clc
rts rts
*-------------------------------------- *--------------------------------------
TERMX.SO sec TERMX.SO sec

View File

@ -38,7 +38,7 @@ UNISTD.Open ldx #5 /dev/
jsr K.GetDevByName jsr K.GetDevByName
bcc .6 bcc .6
.2 ldx #1 ldx #1
.3 lda FILEs.hFD-1,x .3 lda FILEs.hFD-1,x
beq .5 beq .5
@ -69,7 +69,11 @@ UNISTD.Open ldx #5 /dev/
cpx #K.FILE.MAX+1 cpx #K.FILE.MAX+1
bcc .3 bcc .3
jmp FS.OPEN.REG lda #MLI.E.NODEV
* sec
rts
.2 jmp FS.OPEN.REG
.6 jsr DEV.GetPDrv .6 jsr DEV.GetPDrv