mirror of https://github.com/A2osX/A2osX.git
ProDOS.FX 8M : Bug fixes for QUIT code
This commit is contained in:
parent
e65065228c
commit
0728260b06
Binary file not shown.
Binary file not shown.
|
@ -118,9 +118,9 @@ S.FIEX.ACL.MOD .EQ 46
|
||||||
*
|
*
|
||||||
S.FIEX .EQ 48
|
S.FIEX .EQ 48
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TBX.MemReset .EQ 0
|
TBX.EnumBlk .EQ 0
|
||||||
TBX.EnumBlk .EQ 2
|
TBX.EnumNext .EQ 1
|
||||||
TBX.EnumNext .EQ 4
|
TBX.MemReset .EQ 2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MLI .EQ $BF00
|
MLI .EQ $BF00
|
||||||
GP.DISPATCH .EQ $BF03
|
GP.DISPATCH .EQ $BF03
|
||||||
|
|
|
@ -36,9 +36,16 @@ GP.START1 jmp GP.MLIENTRY MLI Entry point
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
php GP.MLIENTRY
|
php GP.MLIENTRY
|
||||||
sei
|
sei
|
||||||
jmp GP.MLICONT
|
bra GP.MLICONT
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
GP.TOOLBOX bit IO.RRAMWRAMBNK1
|
GP.TOOLBOX bit IO.RRAMWRAMBNK1
|
||||||
|
|
||||||
|
.DO AUXLC=1
|
||||||
|
|
||||||
|
sta IO.SETALTZP
|
||||||
|
|
||||||
|
.FIN
|
||||||
|
|
||||||
jmp XDOS.TBX
|
jmp XDOS.TBX
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.LIST ON
|
.LIST ON
|
||||||
|
@ -75,7 +82,18 @@ GP.IRQVs .HS 0000 int #1
|
||||||
.HS 0000 int #3
|
.HS 0000 int #3
|
||||||
.HS 0000 int #4
|
.HS 0000 int #4
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.BS 8
|
.DO AUXLC=1
|
||||||
|
|
||||||
|
GP.TBXEXIT sta IO.CLRALTZP
|
||||||
|
sta IO.RROMBNK2
|
||||||
|
rts
|
||||||
|
|
||||||
|
.FIN
|
||||||
|
|
||||||
|
.LIST ON
|
||||||
|
GP.FREE2 .EQ $BF90-*
|
||||||
|
.LIST OFF
|
||||||
|
.BS GP.FREE2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.HS 0000 GP.DATE
|
.HS 0000 GP.DATE
|
||||||
.HS 0000 GP.TIME
|
.HS 0000 GP.TIME
|
||||||
|
@ -162,13 +180,16 @@ GP.MLIEXIT.PCL ldx #$FF SELF MODIFIED
|
||||||
GP.MLIEXIT.X ldx #$FF SELF MODIFIED
|
GP.MLIEXIT.X ldx #$FF SELF MODIFIED
|
||||||
GP.MLIEXIT.Y ldy #$FF SELF MODIFIED
|
GP.MLIEXIT.Y ldy #$FF SELF MODIFIED
|
||||||
bra GP.MLIEXITX2
|
bra GP.MLIEXITX2
|
||||||
|
|
||||||
|
GP.SELJMP sta IO.CLRALTZP
|
||||||
|
jmp $1000
|
||||||
|
|
||||||
.FIN
|
.FIN
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.LIST ON
|
.LIST ON
|
||||||
GP.FREE2 .EQ $BFEB-*
|
GP.FREE3 .EQ $BFEB-*
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.BS GP.FREE2
|
.BS GP.FREE3
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
GP.IRQV bit IO.RRAMWRAMBNK1 ***NEW ROM ONLY IRQ $fffe > $Cxxx space***
|
GP.IRQV bit IO.RRAMWRAMBNK1 ***NEW ROM ONLY IRQ $fffe > $Cxxx space***
|
||||||
bit IO.RRAMWRAMBNK1 Entry used when rom/mainLC/auxLC
|
bit IO.RRAMWRAMBNK1 Entry used when rom/mainLC/auxLC
|
||||||
|
@ -190,5 +211,5 @@ GP.LEN .EQ *-GP.START
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/prodos.fx/prodos.s.gp
|
SAVE usr/src/prodos.fx/prodos.s.gp
|
||||||
LOAD usr/src/prodos.fx/pdos8m.s
|
LOAD usr/src/prodos.fx/prodos.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -51,7 +51,7 @@ XDOS.VCB0 .EQ XDOS.VCBs+6 range $D906-$DA00
|
||||||
* ZERO Page
|
* ZERO Page
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
zpt .EQ $48 highly used zero page index pointer
|
zpt .EQ $48 highly used zero page index pointer
|
||||||
datptr .EQ $4A ptr to data area of buffer.
|
ZP.DataPtr .EQ $4A ptr to data area of buffer.
|
||||||
sos .EQ $4C sos buffer pointer.
|
sos .EQ $4C sos buffer pointer.
|
||||||
usrbuf .EQ $4E data ptr in user buffer.
|
usrbuf .EQ $4E data ptr in user buffer.
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -646,7 +646,7 @@ XDOS.GetFCBBufX lda XDOS.FCBs+FCB.BUFID,x get page address of file buffer.
|
||||||
|
|
||||||
beq fcbdead fcb corrupted
|
beq fcbdead fcb corrupted
|
||||||
|
|
||||||
sta datptr+1 save ptr to data area of buffer
|
sta ZP.DataPtr+1 save ptr to data area of buffer
|
||||||
inc
|
inc
|
||||||
inc index block always 2 pages after data
|
inc index block always 2 pages after data
|
||||||
sta zpt+1
|
sta zpt+1
|
||||||
|
@ -654,7 +654,7 @@ XDOS.GetFCBBufX lda XDOS.FCBs+FCB.BUFID,x get page address of file buffer.
|
||||||
lda GB.BUFTABL-2,y ???? ALWAYS 0
|
lda GB.BUFTABL-2,y ???? ALWAYS 0
|
||||||
|
|
||||||
sta bufaddrl
|
sta bufaddrl
|
||||||
sta datptr index and data buffers always on
|
sta ZP.DataPtr index and data buffers always on
|
||||||
sta zpt page boundaries.
|
sta zpt page boundaries.
|
||||||
|
|
||||||
jsr XDOS.FCBDevIDSelect
|
jsr XDOS.FCBDevIDSelect
|
||||||
|
@ -832,8 +832,8 @@ tstfnf cmp #MLI.E.FNOTFND 'file not found' is ok
|
||||||
cmp #$0D
|
cmp #$0D
|
||||||
bne ctyperr report type error if not directory.
|
bne ctyperr report type error if not directory.
|
||||||
|
|
||||||
tstdspc lda GP.DEVNUM make sure destination device
|
tstdspc lda GP.DEVNUM make sure destination device
|
||||||
jsr twrprot1 is not write protected.
|
jsr XDOS.TestWPA is not write protected.
|
||||||
bcs H351D
|
bcs H351D
|
||||||
|
|
||||||
lda nofree is there space in directory to
|
lda nofree is there space in directory to
|
||||||
|
|
|
@ -46,7 +46,7 @@ XDOS.DeallocAX stx bmcnt high address of block.
|
||||||
|
|
||||||
sta XDOS.VCBs+VCB.BMAPIDX,x and make it current.
|
sta XDOS.VCBs+VCB.BMAPIDX,x and make it current.
|
||||||
lda bmadev
|
lda bmadev
|
||||||
jsr gtbmap read it into buffer
|
jsr XDOS.ReadBMDevA read it into buffer
|
||||||
bcs L3C8B
|
bcs L3C8B
|
||||||
|
|
||||||
L3C64 ldy bmptr index to byte
|
L3C64 ldy bmptr index to byte
|
||||||
|
@ -98,7 +98,7 @@ L3CA8 lda XDOS.BMBuf+$100,y search 2nd half for free block
|
||||||
bne L3CA8
|
bne L3CA8
|
||||||
|
|
||||||
inc basval add 2048 offset for next page.
|
inc basval add 2048 offset for next page.
|
||||||
jsr nxtbmap get next bitmap (if exists) and
|
jsr XDOS.NextBM get next bitmap (if exists) and
|
||||||
bcc L3C95 update vcb. branch if no error.
|
bcc L3C95 update vcb. branch if no error.
|
||||||
|
|
||||||
L3CB8 rts return error.
|
L3CB8 rts return error.
|
||||||
|
@ -156,7 +156,7 @@ L3CF7 lda #$80 indicate map is modified.
|
||||||
clc no errors.
|
clc no errors.
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
nxtbmap ldx XDOS.VCBPtr inc to next bitmap, but 1st make sure there is another one.
|
XDOS.NextBM ldx XDOS.VCBPtr inc to next bitmap, but 1st make sure there is another one.
|
||||||
lda XDOS.VCBs+VCB.TBLK+1,x
|
lda XDOS.VCBs+VCB.TBLK+1,x
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
|
@ -183,7 +183,7 @@ fndbmap ldy XDOS.VCBPtr
|
||||||
L3D4A ldy bmastat is it already modified ?
|
L3D4A ldy bmastat is it already modified ?
|
||||||
bmi L3D54 yes, return pointer
|
bmi L3D54 yes, return pointer
|
||||||
|
|
||||||
jsr gtbmap otherwise read in fresh bitmap.
|
jsr XDOS.ReadBMDevA otherwise read in fresh bitmap.
|
||||||
bcs L3D5F if error.
|
bcs L3D5F if error.
|
||||||
|
|
||||||
L3D54 ldy XDOS.VCBPtr get relative block # of bitmap.
|
L3D54 ldy XDOS.VCBPtr get relative block # of bitmap.
|
||||||
|
@ -202,14 +202,14 @@ upbmap clc
|
||||||
lda bmastat is current map modified ?
|
lda bmastat is current map modified ?
|
||||||
bpl .9 no.
|
bpl .9 no.
|
||||||
|
|
||||||
jsr wrtbmap update device.
|
jsr XDOS.WriteBM update device.
|
||||||
bcs .9 if error on writing.
|
bcs .9 if error on writing.
|
||||||
|
|
||||||
stz bmastat mark bitmap buffer as free
|
stz bmastat mark bitmap buffer as free
|
||||||
lda #0 MUST EXIT WITH A=0
|
lda #0 MUST EXIT WITH A=0
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
gtbmap sta bmadev read bitmap specified by dev and vcb.
|
XDOS.ReadBMDevA sta bmadev read bitmap specified by dev and vcb.
|
||||||
|
|
||||||
ldy XDOS.VCBPtr get lowest map # with free blocks in it
|
ldy XDOS.VCBPtr get lowest map # with free blocks in it
|
||||||
lda XDOS.VCBs+VCB.BMAPIDX,y
|
lda XDOS.VCBs+VCB.BMAPIDX,y
|
||||||
|
@ -224,7 +224,7 @@ gtbmap sta bmadev read bitmap specified by dev and vcb.
|
||||||
|
|
||||||
lda #$01 read device command
|
lda #$01 read device command
|
||||||
.HS 2C BIT ABS
|
.HS 2C BIT ABS
|
||||||
wrtbmap lda #$02 write command.
|
XDOS.WriteBM lda #$02 write command.
|
||||||
|
|
||||||
sta ZP.CMDNUM
|
sta ZP.CMDNUM
|
||||||
|
|
||||||
|
@ -244,7 +244,7 @@ wrtbmap lda #$02 write command.
|
||||||
plx keep A=error code if CS
|
plx keep A=error code if CS
|
||||||
stx GP.DEVNUM
|
stx GP.DEVNUM
|
||||||
|
|
||||||
L3DB6 rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DO LOWERCASE=1
|
.DO LOWERCASE=1
|
||||||
XDOS.WriteGBufDir
|
XDOS.WriteGBufDir
|
||||||
|
@ -275,14 +275,7 @@ XDOS.WriteGBuf lda #$02 write command
|
||||||
XDOS.RWBlock sta ZP.BUFPTR+1 buffer high.
|
XDOS.RWBlock sta ZP.BUFPTR+1 buffer high.
|
||||||
stz ZP.BUFPTR buffer low (always on page boundary)
|
stz ZP.BUFPTR buffer low (always on page boundary)
|
||||||
|
|
||||||
stz GP.ERROR clear global error code.
|
jmp XDOS.FileIO2
|
||||||
|
|
||||||
lda #$FF indicates reg call made to dev handler
|
|
||||||
sta ioaccess
|
|
||||||
lda GP.DEVNUM transfer dev # for dispatcher to
|
|
||||||
sta ZP.UNITNUM convert to unit #.
|
|
||||||
|
|
||||||
jmp XDOS.DevCall call the driver.
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DO LOWERCASE=1
|
.DO LOWERCASE=1
|
||||||
|
|
||||||
|
@ -454,7 +447,7 @@ L3E59 lda XDOS.FCBs+FCB.STYPE,y use storage type as # of index levels
|
||||||
and #FCB.F.DBLKMOD if previous data was modified then
|
and #FCB.F.DBLKMOD if previous data was modified then
|
||||||
beq L3E6B disk must be updated.
|
beq L3E6B disk must be updated.
|
||||||
|
|
||||||
jsr wfcbdat
|
jsr XDOS.WriteDBLK
|
||||||
|
|
||||||
bcs L3ED4 if error.
|
bcs L3ED4 if error.
|
||||||
|
|
||||||
|
@ -488,7 +481,7 @@ L3E9D lda XDOS.FCBs+FCB.F,y check to see if previous index block
|
||||||
and #FCB.F.IBLKMOD was modified.
|
and #FCB.F.IBLKMOD was modified.
|
||||||
beq L3EA9 read in over it if current up to date.
|
beq L3EA9 read in over it if current up to date.
|
||||||
|
|
||||||
jsr wfcbidx go update index on disk (fcb block addr)
|
jsr XDOS.WriteIBLK go update index on disk (fcb block addr)
|
||||||
bcs L3ED4
|
bcs L3ED4
|
||||||
|
|
||||||
L3EA9 ldx levels be sure there is a top index
|
L3EA9 ldx levels be sure there is a top index
|
||||||
|
@ -547,8 +540,7 @@ saplevel sta ZP.BLKNUM read in next lower index block.
|
||||||
sta ZP.CMDNUM
|
sta ZP.CMDNUM
|
||||||
|
|
||||||
ldx #zpt address of current index buffer.
|
ldx #zpt address of current index buffer.
|
||||||
|
jsr XDOS.FileIOPtrX go read index block.
|
||||||
jsr fileio1 go read index block.
|
|
||||||
bcs L3ED4 error
|
bcs L3ED4 error
|
||||||
|
|
||||||
jsr XDOS.UpdateFCBIBlk save block address of this index in fcb
|
jsr XDOS.UpdateFCBIBlk save block address of this index in fcb
|
||||||
|
@ -570,25 +562,25 @@ L3F18 jsr XDOS.SetFCBStatus set status to show what's missing
|
||||||
|
|
||||||
lsr discard bit that says data block
|
lsr discard bit that says data block
|
||||||
lsr unallocated because carry indicates if
|
lsr unallocated because carry indicates if
|
||||||
jsr zipdata index block is invalid and needs to be zeroed.
|
jsr XDOS.ZeroData index block is invalid and needs to be zeroed.
|
||||||
bcc svmark branch if it doesn't need zeroed
|
bcc svmark branch if it doesn't need zeroed
|
||||||
|
|
||||||
jsr zeroindex zero index block in user's i/o buffer
|
jsr XDOS.ZeroIndex zero index block in user's i/o buffer
|
||||||
bra svmark
|
bra svmark
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
zipdata lda #$00
|
XDOS.ZeroData lda #$00
|
||||||
tay
|
tay
|
||||||
L3F42 sta (datptr),y zero out data area
|
|
||||||
|
inc ZP.DataPtr+1
|
||||||
|
|
||||||
|
jsr .1
|
||||||
|
|
||||||
|
dec ZP.DataPtr+1
|
||||||
|
|
||||||
|
.1 sta (ZP.DataPtr),y
|
||||||
iny
|
iny
|
||||||
bne L3F42
|
bne .1
|
||||||
|
|
||||||
inc datptr+1
|
|
||||||
|
|
||||||
L3F49 sta (datptr),y
|
|
||||||
iny
|
|
||||||
bne L3F49
|
|
||||||
|
|
||||||
dec datptr+1
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
L3F51 sta ZP.BLKNUM get data block of new position
|
L3F51 sta ZP.BLKNUM get data block of new position
|
||||||
|
@ -615,11 +607,11 @@ L3F68 lda XDOS.FCBs+FCB.MARK,y save old mark in case calling routine
|
||||||
bpl L3F68
|
bpl L3F68
|
||||||
|
|
||||||
clc set up indirect address to buffer
|
clc set up indirect address to buffer
|
||||||
lda datptr 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 tposlh
|
||||||
and #$01
|
and #$01
|
||||||
adc datptr+1
|
adc ZP.DataPtr+1
|
||||||
sta sos+1
|
sta sos+1
|
||||||
L3F86 rts carry set if error
|
L3F86 rts carry set if error
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -659,11 +651,11 @@ L3FB9 ldy #$02 position is forward from current.
|
||||||
|
|
||||||
beq svmark branch always.
|
beq svmark branch always.
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
dirpos1 lda (datptr),y get link address of previous or next
|
dirpos1 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
|
cmp #$01 test for null byte into carry
|
||||||
iny but first be sure there is a link.
|
iny but first be sure there is a link.
|
||||||
lda (datptr),y get the rest of the link.
|
lda (ZP.DataPtr),y get the rest of the link.
|
||||||
bne L3FD8 branch if certain link exists.
|
bne L3FD8 branch if certain link exists.
|
||||||
|
|
||||||
bcs L3FD8 was the low part null as well ?
|
bcs L3FD8 was the low part null as well ?
|
||||||
|
@ -680,9 +672,8 @@ XDOS.ReadFCB.DBLK
|
||||||
lda #$01 read command
|
lda #$01 read command
|
||||||
sta ZP.CMDNUM
|
sta ZP.CMDNUM
|
||||||
|
|
||||||
ldx #datptr points at address of data buffer.
|
ldx #ZP.DataPtr points at address of data buffer.
|
||||||
|
jsr XDOS.FileIOPtrX go do file input.
|
||||||
jsr fileio1 go do file input.
|
|
||||||
bcs L3FF2 error.
|
bcs L3FF2 error.
|
||||||
|
|
||||||
ldy fcbptr
|
ldy fcbptr
|
||||||
|
@ -699,8 +690,7 @@ L3FF2 rts
|
||||||
* sta ZP.CMDNUM
|
* sta ZP.CMDNUM
|
||||||
|
|
||||||
* ldx #zpt address of current index buffer.
|
* ldx #zpt address of current index buffer.
|
||||||
|
* XDOS.FileIOPtrX go read index block.
|
||||||
* jsr fileio1 go read index block.
|
|
||||||
* bcs L400C error
|
* bcs L400C error
|
||||||
|
|
||||||
* ldy fcbptr
|
* ldy fcbptr
|
||||||
|
@ -715,26 +705,26 @@ L3FF2 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
wfcbfst jsr upbmap update the bitmap and write file's 1st block.
|
wfcbfst jsr upbmap update the bitmap and write file's 1st block.
|
||||||
|
|
||||||
lda #$02 write command
|
ldx #$02 write command
|
||||||
.HS 2C skip next instruction
|
.HS 2C BIT ABS
|
||||||
|
|
||||||
rfcbfst lda #$01 read command.
|
rfcbfst ldx #$01 read command.
|
||||||
|
|
||||||
pha save the command
|
|
||||||
lda #FCB.1stBLK
|
lda #FCB.1stBLK
|
||||||
ora fcbptr add offset to fcbptr
|
ora fcbptr add offset to fcbptr
|
||||||
tay
|
tay
|
||||||
pla
|
txa get back command
|
||||||
|
|
||||||
ldx #zpt rd block into index portion of file buf
|
ldx #zpt rd block into index portion of file buf
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
dofileio sta ZP.CMDNUM command
|
XDOS.FileIOPtrXCmdABlkY
|
||||||
|
sta ZP.CMDNUM command
|
||||||
|
|
||||||
lda XDOS.FCBs,y get disk block address from fcb.
|
lda XDOS.FCBs,y get disk block address from fcb.
|
||||||
sta ZP.BLKNUM block 0 not legal
|
sta ZP.BLKNUM block 0 not legal
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
lda XDOS.FCBs+1,y high address of disk block
|
lda XDOS.FCBs+1,y high address of disk block
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
lda #$0C Block = $0000, allocation error.
|
lda #$0C Block = $0000, allocation error.
|
||||||
|
@ -743,39 +733,41 @@ dofileio sta ZP.CMDNUM command
|
||||||
.1 lda XDOS.FCBs+1,y
|
.1 lda XDOS.FCBs+1,y
|
||||||
.2 sta ZP.BLKNUM+1
|
.2 sta ZP.BLKNUM+1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
fileio1 lda $00,x get memory address of buffer from
|
XDOS.FileIOPtrX lda $00,x get memory address of buffer from
|
||||||
sta ZP.BUFPTR page zero pointed to by x register
|
sta ZP.BUFPTR page zero pointed to by x register
|
||||||
lda $01,x
|
lda $01,x
|
||||||
sta ZP.BUFPTR+1 and pass address to device handler
|
sta ZP.BUFPTR+1 and pass address to device handler
|
||||||
|
|
||||||
jsr XDOS.FCBDevIDSelect
|
jsr XDOS.FCBDevIDSelect
|
||||||
|
|
||||||
lda #$FF also, set to indicate reg call made to
|
XDOS.FileIO2 sec also, set to indicate reg call made to
|
||||||
sta ioaccess device handler.
|
ror ioaccess device handler.
|
||||||
lda GP.DEVNUM transfer device # for dispatcher
|
lda GP.DEVNUM transfer device # for dispatcher
|
||||||
sta ZP.UNITNUM to convert to unit #.
|
sta ZP.UNITNUM to convert to unit #.
|
||||||
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.
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
wfcbdat ldx #datptr 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 fcbptr add offset to fcbptr
|
ora fcbptr add offset to fcbptr
|
||||||
tay and put in y.
|
tay and put in y.
|
||||||
lda #$02 write data block.
|
lda #$02 write data block.
|
||||||
jsr dofileio
|
jsr XDOS.FileIOPtrXCmdABlkY
|
||||||
bcs L4096 if errors.
|
bcs L4096 if errors.
|
||||||
|
|
||||||
lda #$BF mark data status as current.
|
lda #$BF mark data status as current.
|
||||||
bra XDOS.ResetFCBStatus
|
bra XDOS.ResetFCBStatus
|
||||||
|
|
||||||
wfcbidx jsr upbmap update bitmap.
|
XDOS.WriteIBLK jsr upbmap update bitmap.
|
||||||
|
|
||||||
ldx #zpt point to address of index buffer
|
ldx #zpt point to address of index buffer
|
||||||
lda #FCB.IBLK and block address of that index block.
|
lda #FCB.IBLK and block address of that index block.
|
||||||
ora fcbptr
|
ora fcbptr
|
||||||
tay
|
tay
|
||||||
lda #$02
|
lda #$02
|
||||||
jsr dofileio go write out index block.
|
jsr XDOS.FileIOPtrXCmdABlkY
|
||||||
bcs L4096 if errors.
|
bcs L4096 if errors.
|
||||||
|
|
||||||
lda #$7F mark index status as current.
|
lda #$7F mark index status as current.
|
||||||
|
|
|
@ -37,7 +37,7 @@ L420D jmp rwdone do nothing.
|
||||||
L4210 jsr valdbuf validate user's data buffer range.
|
L4210 jsr valdbuf validate user's data buffer range.
|
||||||
bcs L4202 branch if memory conflict.
|
bcs L4202 branch if memory conflict.
|
||||||
|
|
||||||
jsr gfcbstyp get storage type
|
jsr XDOS.GetFCB.ST get storage type
|
||||||
cmp #$04 and find out if it's a tree or other.
|
cmp #$04 and find out if it's a tree or other.
|
||||||
bcc L421F branch if a tree file
|
bcc L421F branch if a tree file
|
||||||
|
|
||||||
|
@ -62,15 +62,15 @@ L421F jsr rdposn set up data pointer.
|
||||||
|
|
||||||
sta ioaccess needs to be written to force 1st call
|
sta ioaccess needs to be written to force 1st call
|
||||||
lda usrbuf thru all dev handler checking. make
|
lda usrbuf thru all dev handler checking. make
|
||||||
sta datptr the data buffer the user's space.
|
sta ZP.DataPtr the data buffer the user's space.
|
||||||
lda usrbuf+1
|
lda usrbuf+1
|
||||||
sta datptr+1
|
sta ZP.DataPtr+1
|
||||||
|
|
||||||
L4249 jsr rdposn get next block directly into user space.
|
L4249 jsr rdposn get next block directly into user space.
|
||||||
bcs L42B7 if error.
|
bcs L42B7 if error.
|
||||||
|
|
||||||
L424E inc datptr+1 incll ptrs by one block (512 bytes)
|
L424E inc ZP.DataPtr+1 incll ptrs by one block (512 bytes)
|
||||||
inc datptr+1
|
inc ZP.DataPtr+1
|
||||||
dec rwreqh
|
dec rwreqh
|
||||||
dec rwreqh
|
dec rwreqh
|
||||||
inc tposlh
|
inc tposlh
|
||||||
|
@ -116,7 +116,7 @@ L429C dec zpt+1
|
||||||
lda ioaccess has 1st call gone to device yet ?
|
lda ioaccess has 1st call gone to device yet ?
|
||||||
beq L4249 no, go thru normal route
|
beq L4249 no, go thru normal route
|
||||||
|
|
||||||
lda datptr+1 reset hi buffer address for dev handler
|
lda ZP.DataPtr+1 reset hi buffer address for dev handler
|
||||||
sta ZP.BUFPTR+1
|
sta ZP.BUFPTR+1
|
||||||
jsr XDOS.DevCall
|
jsr XDOS.DevCall
|
||||||
bcc L424E no errors, branch always.
|
bcc L424E no errors, branch always.
|
||||||
|
@ -147,21 +147,21 @@ preprw ldy fcbptr adj pointer to user's buffer to make
|
||||||
lda usrbuf
|
lda usrbuf
|
||||||
sbc tposll
|
sbc tposll
|
||||||
sta usrbuf
|
sta usrbuf
|
||||||
bcs L42E9 if no adjustment to hi address needed
|
bcs .1 if no adjustment to hi address needed
|
||||||
|
|
||||||
dec usrbuf+1
|
dec usrbuf+1
|
||||||
|
|
||||||
L42E9 lda XDOS.FCBs+FCB.NLMASK,y test for new line enabled.
|
.1 lda XDOS.FCBs+FCB.NLMASK,y test for new line enabled.
|
||||||
clc
|
clc
|
||||||
beq L42F9 if new line not enabled.
|
beq .2 if new line not enabled.
|
||||||
|
|
||||||
sec carry indicates new line enabled
|
sec carry indicates new line enabled
|
||||||
sta nlmask
|
sta nlmask
|
||||||
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.
|
||||||
|
|
||||||
L42F9 ldy tposll index to 1st data.
|
.2 ldy tposll index to 1st data.
|
||||||
lda datptr 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.
|
||||||
rts return statuses.
|
rts return statuses.
|
||||||
|
@ -195,7 +195,7 @@ L4319 dex dec # of bytes left to move.
|
||||||
inc tposhi
|
inc tposhi
|
||||||
|
|
||||||
L4329 inc sos+1 and sos buffer high address.
|
L4329 inc sos+1 and sos buffer high address.
|
||||||
eor datptr+1 (carry is undisturbed)
|
eor ZP.DataPtr+1 (carry is undisturbed)
|
||||||
beq L4310 branch if more to read in buffer.
|
beq L4310 branch if more to read in buffer.
|
||||||
|
|
||||||
clv indicate not finished.
|
clv indicate not finished.
|
||||||
|
@ -208,7 +208,7 @@ L4332 lda rwreqh
|
||||||
bne L4340 no, adjust high byte of request.
|
bne L4340 no, adjust high byte of request.
|
||||||
|
|
||||||
lda sos+1 maybe, check for end of block buffer.
|
lda sos+1 maybe, check for end of block buffer.
|
||||||
eor datptr+1 (don't disturb carry).
|
eor ZP.DataPtr+1 (don't disturb carry).
|
||||||
bne L4343 if hi count can be dealt with next time
|
bne L4343 if hi count can be dealt with next time
|
||||||
|
|
||||||
L4340 dec rwreqh
|
L4340 dec rwreqh
|
||||||
|
@ -252,9 +252,9 @@ L4374 plp restore return statuses.
|
||||||
|
|
||||||
setvflg rts this byte ($60) is used to set v flag.
|
setvflg rts this byte ($60) is used to set v flag.
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
fxdatptr lda datptr put current user buffer address back to normal
|
fxdatptr lda ZP.DataPtr put current user buffer address back to normal
|
||||||
sta usrbuf
|
sta usrbuf
|
||||||
lda datptr+1
|
lda ZP.DataPtr+1
|
||||||
sta usrbuf+1 bank pair byte should be moved also.
|
sta usrbuf+1 bank pair byte should be moved also.
|
||||||
|
|
||||||
ldx fcbptr restore buffer address
|
ldx fcbptr restore buffer address
|
||||||
|
@ -275,13 +275,13 @@ XDOS.ReadDir jsr rdposn
|
||||||
bne L43B7 branch if not eof error.
|
bne L43B7 branch if not eof error.
|
||||||
|
|
||||||
jsr svmark
|
jsr svmark
|
||||||
jsr zipdata clear out data block.
|
jsr XDOS.ZeroData clear out data block.
|
||||||
|
|
||||||
ldy #$00 provide dummy back pointer for future
|
ldy #$00 provide dummy back pointer for future
|
||||||
ldx fcbptr re-position. x = hi byte of last block
|
ldx fcbptr re-position. x = hi byte of last block
|
||||||
|
|
||||||
L43A6 lda XDOS.FCBs+FCB.DBLK,x
|
L43A6 lda XDOS.FCBs+FCB.DBLK,x
|
||||||
sta (datptr),y
|
sta (ZP.DataPtr),y
|
||||||
stz XDOS.FCBs+FCB.DBLK,x mark current block as impossible
|
stz XDOS.FCBs+FCB.DBLK,x mark current block as impossible
|
||||||
inx
|
inx
|
||||||
iny inc indexes to do both hi and low bytes
|
iny inc indexes to do both hi and low bytes
|
||||||
|
@ -313,7 +313,7 @@ mvdbufr ldy #$02 move the pointer to user's buffer
|
||||||
lda (ZP.A3L),y
|
lda (ZP.A3L),y
|
||||||
sta usrbuf+1
|
sta usrbuf+1
|
||||||
|
|
||||||
gfcbstyp ldy fcbptr return storage type
|
XDOS.GetFCB.ST ldy fcbptr return storage type
|
||||||
lda XDOS.FCBs+FCB.STYPE,y
|
lda XDOS.FCBs+FCB.STYPE,y
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -399,7 +399,7 @@ XDOS.Write jsr mvcbytes first determine if requested write is legal.
|
||||||
L445E lda #MLI.E.LOCKED illegal access error.
|
L445E lda #MLI.E.LOCKED illegal access error.
|
||||||
bne L44A2
|
bne L44A2
|
||||||
|
|
||||||
L4462 jsr tstwprot otherwise, make sure device is not
|
L4462 jsr XDOS.TestWP otherwise, make sure device is not
|
||||||
bcs L44A2 write protected. if so, branch to abort.
|
bcs L44A2 write protected. if so, branch to abort.
|
||||||
|
|
||||||
lda cbytes
|
lda cbytes
|
||||||
|
@ -506,7 +506,7 @@ L4507 iny page crossed ?
|
||||||
bne L44A2
|
bne L44A2
|
||||||
|
|
||||||
L451C inc sos+1 adjust sos buffer high address
|
L451C inc sos+1 adjust sos buffer high address
|
||||||
eor datptr+1 (carry is undisturbed)
|
eor ZP.DataPtr+1 (carry is undisturbed)
|
||||||
beq L44FF branch if more to write to buffer.
|
beq L44FF branch if more to write to buffer.
|
||||||
|
|
||||||
clv indicates not finished.
|
clv indicates not finished.
|
||||||
|
@ -519,7 +519,7 @@ L4525 lda rwreqh
|
||||||
bne L4533 if not.
|
bne L4533 if not.
|
||||||
|
|
||||||
lda sos+1 this is necessary for proper
|
lda sos+1 this is necessary for proper
|
||||||
eor datptr+1 adjustment of request count
|
eor ZP.DataPtr+1 adjustment of request count
|
||||||
bne L4536
|
bne L4536
|
||||||
|
|
||||||
L4533 dec rwreqh
|
L4533 dec rwreqh
|
||||||
|
@ -559,7 +559,7 @@ L4564 jsr fcbused set directory flush bit.
|
||||||
topdown jsr swapdown make current 1st block an entry in new
|
topdown jsr swapdown make current 1st block an entry in new
|
||||||
bcs L45B1 top. branch if errors.
|
bcs L45B1 top. branch if errors.
|
||||||
|
|
||||||
jsr gfcbstyp get storage type
|
jsr XDOS.GetFCB.ST get storage type
|
||||||
|
|
||||||
* has storage type been changed to 'tree' ? if not, assume it was originally
|
* has storage type been changed to 'tree' ? if not, assume it was originally
|
||||||
* a seed and both levels need to be built. otherwise, only an index needs
|
* a seed and both levels need to be built. otherwise, only an index needs
|
||||||
|
@ -591,22 +591,21 @@ L457A jsr alcwblk get another block address for the sap
|
||||||
jsr wfcbfst save new top of tree
|
jsr wfcbfst save new top of tree
|
||||||
bcs L45B1
|
bcs L45B1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
zeroindex lda #$00
|
XDOS.ZeroIndex lda #$00
|
||||||
tay
|
tay
|
||||||
.1 sta (zpt),y zero out the index half of the user's
|
|
||||||
iny i/o buffer
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
inc zpt+1
|
inc zpt+1
|
||||||
|
jsr .1
|
||||||
|
|
||||||
.2 sta (zpt),y
|
dec zpt+1
|
||||||
|
|
||||||
|
.1 sta (zpt),y
|
||||||
iny
|
iny
|
||||||
bne .2
|
bne .1
|
||||||
|
|
||||||
dec zpt+1 restore proper address
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
sapdown jsr gfcbstyp find out if dealing with a tree.
|
sapdown jsr XDOS.GetFCB.ST find out if dealing with a tree.
|
||||||
cmp #$01 if seed then adj to file type is needed.
|
cmp #$01 if seed then adj to file type is needed.
|
||||||
beq swapdown branch if seed
|
beq swapdown branch if seed
|
||||||
|
|
||||||
|
@ -661,14 +660,14 @@ alcwblk jsr alc1blk
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
tstwprot jsr XDOS.GetFCBStatus check for 'never been modified' condition
|
XDOS.TestWP jsr XDOS.GetFCBStatus check for 'never been modified' condition
|
||||||
and #$F0
|
and #$F0
|
||||||
clc
|
clc
|
||||||
bne tstwprot.RTS ordinary rts if known write ok.
|
bne XDOS.Tpos2Y.RTS ordinary rts if known write ok.
|
||||||
|
|
||||||
jsr XDOS.FCBDevIDSelect
|
jsr XDOS.FCBDevIDSelect
|
||||||
|
|
||||||
twrprot1 sta ZP.UNITNUM make the device status call
|
XDOS.TestWPA sta ZP.UNITNUM make the device status call
|
||||||
|
|
||||||
lda ZP.BLKNUM+1
|
lda ZP.BLKNUM+1
|
||||||
pha
|
pha
|
||||||
|
@ -683,19 +682,14 @@ twrprot1 sta ZP.UNITNUM make the device status call
|
||||||
|
|
||||||
lda #$00 otherwise, assume no errors.
|
lda #$00 otherwise, assume no errors.
|
||||||
|
|
||||||
.1 plx
|
.1 jmp XDOS.PopBlkNumRTS restore the block #
|
||||||
stx ZP.BLKNUM restore the block #
|
|
||||||
plx
|
|
||||||
stx ZP.BLKNUM+1
|
|
||||||
|
|
||||||
tstwprot.RTS rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
XDOS.Tpos2Y lda tposhi get index to next block address
|
XDOS.Tpos2Y lda tposhi get index to next block address
|
||||||
lsr
|
lsr
|
||||||
lda tposlh
|
lda tposlh
|
||||||
ror
|
ror
|
||||||
tay index to address = int(pos/512)
|
tay index to address = int(pos/512)
|
||||||
rts
|
XDOS.Tpos2Y.RTS rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/prodos.fx/prodos.s.xdos.d
|
SAVE usr/src/prodos.fx/prodos.s.xdos.d
|
||||||
|
|
|
@ -8,14 +8,14 @@ XDOS.Close ldy #$01 close all ?
|
||||||
sta cferr clear global close error.
|
sta cferr clear global close error.
|
||||||
* lda #$00 start at the beginning.
|
* lda #$00 start at the beginning.
|
||||||
|
|
||||||
L4654 sta fcbptr save current low byte of pointer.
|
.1 sta fcbptr save current low byte of pointer.
|
||||||
tax get the level at which the file
|
tax get the level at which the file
|
||||||
lda XDOS.FCBs+FCB.FLEVEL,x was opened.
|
lda XDOS.FCBs+FCB.FLEVEL,x was opened.
|
||||||
cmp GP.FLEVEL if file's level is < global level
|
cmp GP.FLEVEL if file's level is < global level
|
||||||
bcc L4675 then don't close.
|
bcc .2 then don't close.
|
||||||
|
|
||||||
lda XDOS.FCBs+FCB.ID,x is this reference file open ?
|
lda XDOS.FCBs+FCB.ID,x is this reference file open ?
|
||||||
beq L4675 no, try next.
|
beq .2 no, try next.
|
||||||
|
|
||||||
jsr flush2 clean it out...
|
jsr flush2 clean it out...
|
||||||
bcs L46B6 return flush errors.
|
bcs L46B6 return flush errors.
|
||||||
|
@ -24,14 +24,14 @@ L4654 sta fcbptr save current low byte of pointer.
|
||||||
|
|
||||||
ldy #$01
|
ldy #$01
|
||||||
lda (ZP.A3L),y
|
lda (ZP.A3L),y
|
||||||
beq L4675 no error if close all.
|
beq .2 no error if close all.
|
||||||
|
|
||||||
bcs L46B6 close error.
|
bcs L46B6 close error.
|
||||||
|
|
||||||
L4675 lda fcbptr inc pointer to next fcb
|
.2 lda fcbptr inc pointer to next fcb
|
||||||
clc
|
clc
|
||||||
adc #FCB
|
adc #FCB
|
||||||
bcc L4654 branch if within same page.
|
bcc .1 branch if within same page.
|
||||||
|
|
||||||
lda cferr on final close report logged errors.
|
lda cferr on final close report logged errors.
|
||||||
beq L46B4 branch if errors.
|
beq L46B4 branch if errors.
|
||||||
|
@ -119,14 +119,14 @@ L4704 jsr XDOS.GetFCBStatus
|
||||||
and #$40 does current data buffer need to be
|
and #$40 does current data buffer need to be
|
||||||
beq L4710 written ? branch if not.
|
beq L4710 written ? branch if not.
|
||||||
|
|
||||||
jsr wfcbdat if so, go write it.
|
jsr XDOS.WriteDBLK if so, go write it.
|
||||||
bcs L46E6 if error.
|
bcs L46E6 if error.
|
||||||
|
|
||||||
L4710 jsr XDOS.GetFCBStatus check to see if the index block (tree
|
L4710 jsr XDOS.GetFCBStatus check to see if the index block (tree
|
||||||
and #$80 files only) needs to be written.
|
and #$80 files only) needs to be written.
|
||||||
beq L471C branch if not.
|
beq L471C branch if not.
|
||||||
|
|
||||||
jsr wfcbidx
|
jsr XDOS.WriteIBLK
|
||||||
bcs L46E6 return any errors.
|
bcs L46E6 return any errors.
|
||||||
|
|
||||||
L471C ldy #0
|
L471C ldy #0
|
||||||
|
@ -267,7 +267,7 @@ L47CA lda #MLI.E.LOCKED access error
|
||||||
sec
|
sec
|
||||||
L47CD rts
|
L47CD rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
XDOS.SetEOF jsr gfcbstyp can only move end of tree, sapling or seed.
|
XDOS.SetEOF jsr XDOS.GetFCB.ST can only move end of tree, sapling or seed.
|
||||||
cmp #$04 tree type ?
|
cmp #$04 tree type ?
|
||||||
bcs L47CA if not then access error
|
bcs L47CA if not then access error
|
||||||
|
|
||||||
|
@ -280,7 +280,7 @@ XDOS.SetEOF jsr gfcbstyp can only move end of tree, sapling or seed.
|
||||||
and #$02 is write enabled to set new eof ?
|
and #$02 is write enabled to set new eof ?
|
||||||
beq L47CA no, access error.
|
beq L47CA no, access error.
|
||||||
|
|
||||||
jsr tstwprot hardware write protected ?
|
jsr XDOS.TestWP hardware write protected ?
|
||||||
bcs L47CA yes, access error.
|
bcs L47CA yes, access error.
|
||||||
|
|
||||||
ldy fcbptr save old eof so it can be seen
|
ldy fcbptr save old eof so it can be seen
|
||||||
|
@ -330,11 +330,11 @@ L481C lda (ZP.A3L),y
|
||||||
purge jsr flush1 make sure file is current
|
purge jsr flush1 make sure file is current
|
||||||
bcs L47CD
|
bcs L47CD
|
||||||
|
|
||||||
ldx datptr+1 pointer to index block
|
ldx ZP.DataPtr+1 pointer to index block
|
||||||
inx
|
inx
|
||||||
inx
|
inx
|
||||||
stx zpt+1 (zero page conflict with dir buf ptr)
|
stx zpt+1 (zero page conflict with dir buf ptr)
|
||||||
ldx datptr
|
ldx ZP.DataPtr
|
||||||
stx zpt
|
stx zpt
|
||||||
ldy fcbptr check if eof < mark
|
ldy fcbptr check if eof < mark
|
||||||
iny
|
iny
|
||||||
|
@ -405,18 +405,17 @@ L48A2 ldy fcbptr also must pass file's 1st block address.
|
||||||
|
|
||||||
sec
|
sec
|
||||||
ldy fcbptr
|
ldy fcbptr
|
||||||
ldx #$00
|
ldx #$ff
|
||||||
|
|
||||||
L48C2 lda firstbl,x
|
L48C2 inx
|
||||||
sta XDOS.FCBs+FCB.1stBLK,y move in possible new first file block
|
lda firstbl,x
|
||||||
|
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
|
||||||
sta XDOS.FCBs+FCB.UBLK,y
|
sta XDOS.FCBs+FCB.UBLK,y
|
||||||
iny
|
iny
|
||||||
inx
|
|
||||||
txa
|
txa
|
||||||
and #$01 test for both bytes adjusted
|
beq L48C2 without disturbing carry.
|
||||||
bne L48C2 without disturbing carry.
|
|
||||||
|
|
||||||
lda stortyp get possibly modified storage type
|
lda stortyp get possibly modified storage type
|
||||||
jsr XDOS.SetFCBSType
|
jsr XDOS.SetFCBSType
|
||||||
|
@ -427,8 +426,8 @@ L48C2 lda firstbl,x
|
||||||
iny
|
iny
|
||||||
iny
|
iny
|
||||||
|
|
||||||
ldx #$02
|
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 tposll,x
|
||||||
eor #$80 position from incorrect place.
|
eor #$80 position from incorrect place.
|
||||||
|
@ -440,12 +439,13 @@ L48F2 lda XDOS.FCBs+FCB.MARK,y tell 'rdposn' to go to correct
|
||||||
jsr rdposn go to correct position.
|
jsr rdposn go to correct position.
|
||||||
|
|
||||||
bcc L490D if no error.
|
bcc L490D if no error.
|
||||||
tax otherwise, report latest error.
|
|
||||||
pla
|
plx discard latest error code to stack
|
||||||
|
|
||||||
plp
|
plp
|
||||||
txa restore latest error code to stack
|
|
||||||
sec
|
sec
|
||||||
php
|
php
|
||||||
|
|
||||||
pha save new error.
|
pha save new error.
|
||||||
|
|
||||||
* mark file as in need of a flush and update fcb with new end of file,
|
* mark file as in need of a flush and update fcb with new end of file,
|
||||||
|
@ -455,13 +455,10 @@ L490D jsr eofset go mark and update
|
||||||
jsr flush1 then go do the flush.
|
jsr flush1 then go do the flush.
|
||||||
bcc L491C branch if no error.
|
bcc L491C branch if no error.
|
||||||
|
|
||||||
tax save latest error.
|
plx clean previous error off stack
|
||||||
pla clean previous error off stack
|
plx and previous P
|
||||||
plp
|
rts
|
||||||
txa and restore latest error to stack.
|
|
||||||
sec show error condition.
|
|
||||||
php restore error status to stack
|
|
||||||
pha and the error code.
|
|
||||||
L491C pla report any errors that may have
|
L491C pla report any errors that may have
|
||||||
plp appeared.
|
plp appeared.
|
||||||
rts
|
rts
|
||||||
|
@ -524,7 +521,7 @@ XDOS.GetFileInfo
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
XDOS.SetFileInfo
|
XDOS.SetFileInfo
|
||||||
jsr XDOS.FindFile get the file to work on.
|
jsr XDOS.FindFile get the file to work on.
|
||||||
bcs L49CF if error.
|
bcs .3 if error.
|
||||||
|
|
||||||
lda GP.BUBIT see if backup bit can be cleared
|
lda GP.BUBIT see if backup bit can be cleared
|
||||||
eor #$20
|
eor #$20
|
||||||
|
@ -534,24 +531,24 @@ XDOS.SetFileInfo
|
||||||
|
|
||||||
ldy #$0D init pointer to user supplied list.
|
ldy #$0D init pointer to user supplied list.
|
||||||
|
|
||||||
L49B9 ldx inftabl-3,y get index to corresponding 'd.' table.
|
.1 ldx inftabl-3,y get index to corresponding 'd.' table.
|
||||||
bmi L49C3 branch if parameter can't be set.
|
bmi .2 branch if parameter can't be set.
|
||||||
|
|
||||||
lda (ZP.A3L),y
|
lda (ZP.A3L),y
|
||||||
sta d_stor,x
|
sta d_stor,x
|
||||||
|
|
||||||
L49C3 dey has user's request been satisfied ?
|
.2 dey has user's request been satisfied ?
|
||||||
cpy #$03
|
cpy #$03
|
||||||
bcs L49B9 no, move next byte.
|
bcs .1 no, move next byte.
|
||||||
|
|
||||||
and #$18 make sure no illegal access bits were
|
and #$18 make sure no illegal access bits were
|
||||||
beq L49D0 set !! branch if legal access.
|
beq .4 set !! branch if legal access.
|
||||||
|
|
||||||
lda #MLI.E.LOCKED otherwise, access error.
|
lda #MLI.E.LOCKED otherwise, access error.
|
||||||
sec
|
sec
|
||||||
L49CF rts
|
.3 rts
|
||||||
|
|
||||||
L49D0 ldy #$0B
|
.4 ldy #$0B
|
||||||
lda (ZP.A3L),y was clock null input ?
|
lda (ZP.A3L),y was clock null input ?
|
||||||
bne XDOS.SetFileInfoEx.8
|
bne XDOS.SetFileInfoEx.8
|
||||||
|
|
||||||
|
@ -706,13 +703,13 @@ L49FF ldy #0 get newname's length
|
||||||
ldy #$00
|
ldy #$00
|
||||||
ldx XDOS.VCBPtr update vcb also.
|
ldx XDOS.VCBPtr update vcb also.
|
||||||
|
|
||||||
.1 lda XDOS.PathBuf,y move new name to vcb.
|
.3 lda XDOS.PathBuf,y move new name to vcb.
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
sta XDOS.VCBs,x
|
sta XDOS.VCBs,x
|
||||||
iny next character
|
iny next character
|
||||||
inx
|
inx
|
||||||
bra .1
|
bra .3
|
||||||
.8
|
.8
|
||||||
* clc no errors
|
* clc no errors
|
||||||
.9 rts
|
.9 rts
|
||||||
|
@ -771,17 +768,15 @@ L4A52 ldy rnptr index to last name in the chain.
|
||||||
beq L4A76 if so, continue processing.
|
beq L4A76 if so, continue processing.
|
||||||
|
|
||||||
L4A72 lda #MLI.E.INVPATH bad pathname error.
|
L4A72 lda #MLI.E.INVPATH bad pathname error.
|
||||||
|
.HS 2C BIT ABS
|
||||||
|
L4A7F lda #MLI.E.DUPFILE
|
||||||
L4A74 sec
|
L4A74 sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
L4A76 jsr XDOS.CheckPath test for duplicate file name.
|
L4A76 jsr XDOS.CheckPath test for duplicate file name.
|
||||||
bcs L4A7F branch if file not found, which is ok !!
|
bcc L4A7F duplicate name error.
|
||||||
|
|
||||||
lda #MLI.E.DUPFILE duplicate name error.
|
cmp #MLI.E.FNOTFND was it a valid file not found ?
|
||||||
sec
|
|
||||||
rts
|
|
||||||
|
|
||||||
L4A7F cmp #MLI.E.FNOTFND was it a valid file not found ?
|
|
||||||
bne L4A74 no, rename error.
|
bne L4A74 no, rename error.
|
||||||
|
|
||||||
jsr XDOS.GetPath syntax pathname of file to be changed.
|
jsr XDOS.GetPath syntax pathname of file to be changed.
|
||||||
|
@ -799,7 +794,7 @@ L4A7F cmp #MLI.E.FNOTFND was it a valid file not found ?
|
||||||
lda #MLI.E.LOCKED otherwise, illegal access.
|
lda #MLI.E.LOCKED otherwise, illegal access.
|
||||||
.HS 2C BIT ABS
|
.HS 2C BIT ABS
|
||||||
L4A98 lda #MLI.E.INCFF
|
L4A98 lda #MLI.E.INCFF
|
||||||
L4A9B sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
L4A9D lda d_stor find out which storage type.
|
L4A9D lda d_stor find out which storage type.
|
||||||
|
@ -867,8 +862,8 @@ L4B39 lda d_attr make sure ok to destroy file.
|
||||||
lda #MLI.E.LOCKED access error
|
lda #MLI.E.LOCKED access error
|
||||||
jsr GP.SYSERR
|
jsr GP.SYSERR
|
||||||
|
|
||||||
L4B45 lda GP.DEVNUM last device used.
|
L4B45 lda GP.DEVNUM last device used.
|
||||||
jsr twrprot1 test for write protected hardware
|
jsr XDOS.TestWPA test for write protected hardware
|
||||||
bcs L4B66 before going thru deallocation.
|
bcs L4B66 before going thru deallocation.
|
||||||
|
|
||||||
lda d_frst 'detree' needs first block address
|
lda d_frst 'detree' needs first block address
|
||||||
|
@ -928,7 +923,7 @@ L4BA1 dec h_fcnt mark header with one less file.
|
||||||
L4BAF cmp #$01 adjust carry accordingly
|
L4BAF cmp #$01 adjust carry accordingly
|
||||||
rts
|
rts
|
||||||
|
|
||||||
dvcbrev ldx XDOS.VCBPtr update block free count in vcb. point to vcb of correct device.
|
dvcbrev ldx XDOS.VCBPtr update block free count in vcb. point to vcb of correct device.
|
||||||
lda deblock get # of blocks recently freed.
|
lda deblock get # of blocks recently freed.
|
||||||
adc XDOS.VCBs+VCB.FBLK,x
|
adc XDOS.VCBs+VCB.FBLK,x
|
||||||
sta XDOS.VCBs+VCB.FBLK,x update current free block count.
|
sta XDOS.VCBs+VCB.FBLK,x update current free block count.
|
||||||
|
|
|
@ -100,7 +100,7 @@ L4C99 stx dtmpx save index to dealc buf.
|
||||||
jsr XDOS.ReadGBuf read sapling level into XDOS.GBuf.
|
jsr XDOS.ReadGBuf read sapling level into XDOS.GBuf.
|
||||||
bcs L4CC2 return errors.
|
bcs L4CC2 return errors.
|
||||||
|
|
||||||
jsr dealblk go free all data indexes in this block
|
jsr XDOS.DeallocBlk0 go free all data indexes in this block
|
||||||
bcs L4CC2
|
bcs L4CC2
|
||||||
|
|
||||||
jsr XDOS.WriteGBuf write the flipped index block
|
jsr XDOS.WriteGBuf write the flipped index block
|
||||||
|
@ -116,7 +116,7 @@ L4CC2 rts sapling block numbers.
|
||||||
|
|
||||||
L4CC3 ldy dtree deallocate all sapling blocks greater
|
L4CC3 ldy dtree deallocate all sapling blocks greater
|
||||||
iny than specified block.
|
iny than specified block.
|
||||||
jsr dalblk1 (master index in XDOS.GBuf)
|
jsr XDOS.DeallocBlkY (master index in XDOS.GBuf)
|
||||||
bcs L4CC2 if errors.
|
bcs L4CC2 if errors.
|
||||||
|
|
||||||
jsr XDOS.WriteGBuf write updated master index back to disk.
|
jsr XDOS.WriteGBuf write updated master index back to disk.
|
||||||
|
@ -147,7 +147,7 @@ L4CF5 ldy dsap pointer to last of desirable indexes.
|
||||||
iny inc to 1st undesirable.
|
iny inc to 1st undesirable.
|
||||||
beq L4D05 branch if all are desirable.
|
beq L4D05 branch if all are desirable.
|
||||||
|
|
||||||
jsr dalblk1 deallocate all indexes above specified.
|
jsr XDOS.DeallocBlkY deallocate all indexes above specified.
|
||||||
bcs L4CC2
|
bcs L4CC2
|
||||||
|
|
||||||
jsr XDOS.WriteGBuf write out the index block
|
jsr XDOS.WriteGBuf write out the index block
|
||||||
|
@ -222,63 +222,65 @@ shrink ldx firstbh first deallocate top index block
|
||||||
sta ZP.BLKNUM+1
|
sta ZP.BLKNUM+1
|
||||||
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 firstbl
|
||||||
lda XDOS.GBuf+$100
|
lda XDOS.GBuf+$100
|
||||||
sta firstbh
|
sta firstbh
|
||||||
ldy #$00
|
ldy #$00
|
||||||
jsr swapme 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,
|
||||||
lda stortyp from tree to sapling,
|
lda stortyp from tree to sapling,
|
||||||
sbc #$10 or from sapling to seed.
|
sbc #$10 or from sapling to seed.
|
||||||
sta stortyp
|
sta stortyp
|
||||||
jmp XDOS.WriteGBuf write the (deallocated) old top index.
|
jmp XDOS.WriteGBuf write the (deallocated) old top index.
|
||||||
|
*--------------------------------------
|
||||||
dealblk ldy #$00 start at beginning.
|
XDOS.DeallocBlk0
|
||||||
dalblk1 lda ZP.BLKNUM save disk address of XDOS.GBuf's data.
|
ldy #$00 start at beginning.
|
||||||
|
XDOS.DeallocBlkY
|
||||||
|
lda ZP.BLKNUM save disk address of XDOS.GBuf's data.
|
||||||
pha
|
pha
|
||||||
lda ZP.BLKNUM+1
|
lda ZP.BLKNUM+1
|
||||||
pha
|
pha
|
||||||
|
|
||||||
L4D96 sty saptr save current index.
|
.1 sty saptr save current index.
|
||||||
lda XDOS.GBuf,y get low address of block to deallocate.
|
lda XDOS.GBuf,y get low address of block to deallocate.
|
||||||
cmp #$01 test for null block into carry.
|
cmp #$01 test for null block into carry.
|
||||||
ldx XDOS.GBuf+$100,y get remainder of block address.
|
ldx XDOS.GBuf+$100,y get remainder of block address.
|
||||||
bne L4DA5 branch if not null.
|
bne .2 branch if not null.
|
||||||
|
|
||||||
bcc L4DB0 was the low part null too ?
|
bcc .3 was the low part null too ?
|
||||||
|
|
||||||
L4DA5 jsr XDOS.DeallocAX free it up on volume bitmap.
|
.2 jsr XDOS.DeallocAX free it up on volume bitmap.
|
||||||
bcs L4DB4 return any error.
|
bcs XDOS.PopBlkNumRTS return any error.
|
||||||
|
|
||||||
ldy saptr get index to sapling level index block.
|
ldy saptr get index to sapling level index block.
|
||||||
|
|
||||||
jsr swapme
|
jsr XDOS.SwapGBUFY
|
||||||
|
|
||||||
L4DB0 iny next block address.
|
.3 iny next block address.
|
||||||
bne L4D96 if more to deallocate or test.
|
bne .1 if more to deallocate or test.
|
||||||
|
|
||||||
clc no error.
|
clc no error.
|
||||||
|
*--------------------------------------
|
||||||
L4DB4 tax save error code, if any.
|
XDOS.PopBlkNumRTS
|
||||||
pla restore blocknm (16 bit)
|
plx restore blocknm (16 bit)
|
||||||
sta ZP.BLKNUM+1
|
stx ZP.BLKNUM+1 keeping A and C if error
|
||||||
pla
|
plx
|
||||||
sta ZP.BLKNUM
|
stx ZP.BLKNUM
|
||||||
txa restore return code
|
|
||||||
rts
|
rts
|
||||||
|
*--------------------------------------
|
||||||
swapme lda delflag swapping or zeroing ?
|
XDOS.SwapGBUFY lda delflag swapping or zeroing ?
|
||||||
bne L4DC5 skip if swapping.
|
bne .1 skip if swapping.
|
||||||
|
|
||||||
tax make x = 0.
|
tax make x = 0.
|
||||||
beq L4DCB zero the index (always taken).
|
beq .2 zero the index (always taken).
|
||||||
|
|
||||||
L4DC5 ldx XDOS.GBuf+$100,y index high
|
.1 ldx XDOS.GBuf+$100,y index high
|
||||||
lda XDOS.GBuf,y index low
|
lda XDOS.GBuf,y index low
|
||||||
L4DCB sta XDOS.GBuf+$100,y save index high
|
|
||||||
|
.2 sta XDOS.GBuf+$100,y save index high
|
||||||
txa
|
txa
|
||||||
sta XDOS.GBuf,y save index low
|
sta XDOS.GBuf,y save index low
|
||||||
rts done.
|
rts done.
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* MEMMGR memory manager
|
* MEMMGR memory manager
|
||||||
|
@ -295,10 +297,10 @@ alcbufr1 lda (ZP.A3L),y this buffer must be on a page boundary.
|
||||||
cmp #$BC nor greater than $BB00
|
cmp #$BC nor greater than $BB00
|
||||||
bcs L4E1E since it would wipe out globals...
|
bcs L4E1E since it would wipe out globals...
|
||||||
|
|
||||||
sta datptr+1
|
sta ZP.DataPtr+1
|
||||||
dey
|
dey
|
||||||
lda (ZP.A3L),y low address should be zero !
|
lda (ZP.A3L),y low address should be zero !
|
||||||
sta datptr
|
sta ZP.DataPtr
|
||||||
bne L4E1E error if not page boundary.
|
bne L4E1E error if not page boundary.
|
||||||
|
|
||||||
inx add 4 pages for 1k buffer.
|
inx add 4 pages for 1k buffer.
|
||||||
|
@ -311,7 +313,7 @@ L4DED dex test for conflicts.
|
||||||
and GP.MEMTABL,y
|
and GP.MEMTABL,y
|
||||||
bne L4E1E report memory conflict, if any.
|
bne L4E1E report memory conflict, if any.
|
||||||
|
|
||||||
cpx datptr+1 test all 4 pages.
|
cpx ZP.DataPtr+1 test all 4 pages.
|
||||||
bne L4DED
|
bne L4DED
|
||||||
|
|
||||||
inx add 4 pages again for allocation.
|
inx add 4 pages again for allocation.
|
||||||
|
@ -321,7 +323,7 @@ L4DED dex test for conflicts.
|
||||||
|
|
||||||
L4DFE dex set proper bits to 1
|
L4DFE dex set proper bits to 1
|
||||||
jsr XDOS.MemTablEOR
|
jsr XDOS.MemTablEOR
|
||||||
cpx datptr+1 set all 4 pages
|
cpx ZP.DataPtr+1 set all 4 pages
|
||||||
bne L4DFE
|
bne L4DFE
|
||||||
|
|
||||||
ldy fcbptr calculate buffer number
|
ldy fcbptr calculate buffer number
|
||||||
|
@ -329,7 +331,7 @@ L4DFE dex set proper bits to 1
|
||||||
asl buffer number = (entnum) * 2.
|
asl buffer number = (entnum) * 2.
|
||||||
sta XDOS.FCBs+FCB.BUFID,y save it in fcb.
|
sta XDOS.FCBs+FCB.BUFID,y save it in fcb.
|
||||||
tax use entnum * 2 as index to global
|
tax use entnum * 2 as index to global
|
||||||
lda datptr+1 buffer addr tables. get addr already
|
lda ZP.DataPtr+1 buffer addr tables. get addr already
|
||||||
sta GB.BUFTABL-1,x validated as good. store hi addr
|
sta GB.BUFTABL-1,x validated as good. store hi addr
|
||||||
|
|
||||||
clc (entnums start at 1, not 0)
|
clc (entnums start at 1, not 0)
|
||||||
|
@ -441,11 +443,11 @@ XDOS.SetBuf ldy #$03
|
||||||
ldx #$03
|
ldx #$03
|
||||||
|
|
||||||
.1 lda (usrbuf),y move all 4 pages of the buffer to
|
.1 lda (usrbuf),y move all 4 pages of the buffer to
|
||||||
sta (datptr),y new location.
|
sta (ZP.DataPtr),y new location.
|
||||||
iny
|
iny
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
inc datptr+1
|
inc ZP.DataPtr+1
|
||||||
inc usrbuf+1
|
inc usrbuf+1
|
||||||
dex
|
dex
|
||||||
bpl .1
|
bpl .1
|
||||||
|
@ -519,16 +521,24 @@ XDOS.CallDisp lda IO.RRAMWRAMBNK2 read/write RAM bank 2
|
||||||
eor #$A5
|
eor #$A5
|
||||||
sta ROM.PWREDUP power up byte
|
sta ROM.PWREDUP power up byte
|
||||||
|
|
||||||
|
.DO AUXLC=1
|
||||||
|
|
||||||
|
jmp GP.SELJMP
|
||||||
|
|
||||||
|
.ELSE
|
||||||
|
|
||||||
jmp $1000
|
jmp $1000
|
||||||
|
|
||||||
|
.FIN
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
XDOS.SPREMAP ldx #$03 assume 3 parameters.
|
XDOS.SPREMAP ldx #$03 assume 3 parameters.
|
||||||
lda ZP.CMDNUM
|
lda ZP.CMDNUM
|
||||||
sta .5
|
sta .5
|
||||||
bne .1 taken if not status call
|
bne .1 taken if not status call
|
||||||
|
|
||||||
ldy #XDOS.SPStatus set up memory for the status list buffer
|
ldy #XDOS.SPStatusBuf set up memory for the status list buffer
|
||||||
sty ZP.BUFPTR fake up the prodos parameters
|
sty ZP.BUFPTR fake up the prodos parameters
|
||||||
ldy /XDOS.SPStatus
|
ldy /XDOS.SPStatusBuf
|
||||||
sty ZP.BUFPTR+1
|
sty ZP.BUFPTR+1
|
||||||
stz ZP.BLKNUM set statcode = 0 for simple status call
|
stz ZP.BLKNUM set statcode = 0 for simple status call
|
||||||
|
|
||||||
|
@ -568,9 +578,9 @@ XDOS.SPREMAP ldx #$03 assume 3 parameters.
|
||||||
ldx .5 status call ?
|
ldx .5 status call ?
|
||||||
bne .9 no...
|
bne .9 no...
|
||||||
|
|
||||||
ldx XDOS.SPStatus+1 else get the block count
|
ldx XDOS.SPStatusBuf+1 else get the block count
|
||||||
ldy XDOS.SPStatus+2
|
ldy XDOS.SPStatusBuf+2
|
||||||
lda XDOS.SPStatus get the returned status.
|
lda XDOS.SPStatusBuf get the returned status.
|
||||||
bit #$10 is there a disk present ?
|
bit #$10 is there a disk present ?
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
|
@ -585,20 +595,36 @@ XDOS.SPREMAP ldx #$03 assume 3 parameters.
|
||||||
sec
|
sec
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
XDOS.SPParams .HS 03 # of parms (always 3 except format)
|
|
||||||
XDOS.SPParams.U .HS 00 unit number
|
|
||||||
XDOS.SPParams.B .HS 0000 data buffer
|
|
||||||
.HS 000000 block number (3 bytes)
|
|
||||||
*--------------------------------------
|
|
||||||
XDOS.TBX bit IO.RRAMWRAMBNK1 Get RW access to LC
|
XDOS.TBX bit IO.RRAMWRAMBNK1 Get RW access to LC
|
||||||
jsr .1
|
|
||||||
|
.DO AUXLC=1
|
||||||
|
|
||||||
|
stx .1+1
|
||||||
|
tsx
|
||||||
|
stx $100
|
||||||
|
ldx $101
|
||||||
|
txs
|
||||||
|
|
||||||
|
.1 ldx #$FF SELF MODIFIED
|
||||||
|
|
||||||
|
jsr .2
|
||||||
|
|
||||||
|
tsx
|
||||||
|
stx $101
|
||||||
|
ldx $100
|
||||||
|
txs
|
||||||
|
jmp GP.TBXEXIT
|
||||||
|
|
||||||
|
.ELSE
|
||||||
|
|
||||||
|
jsr .2
|
||||||
jmp IRQ.ToRomRTS
|
jmp IRQ.ToRomRTS
|
||||||
|
|
||||||
|
.FIN
|
||||||
|
|
||||||
.1 jmp (.2,x)
|
.2 cpx #TBX.EnumNext
|
||||||
|
beq XDOS.TBX.EnumNext
|
||||||
.2 .DA XDOS.TBX.MemReset
|
bcc XDOS.TBX.EnumBlk
|
||||||
.DA XDOS.TBX.EnumBlk
|
|
||||||
.DA XDOS.TBX.EnumNext
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
XDOS.TBX.MemReset
|
XDOS.TBX.MemReset
|
||||||
ldx #$17
|
ldx #$17
|
||||||
|
@ -641,7 +667,7 @@ XDOS.TBX.CheckFCnt
|
||||||
lda h_fcnt
|
lda h_fcnt
|
||||||
ora h_fcnt+1
|
ora h_fcnt+1
|
||||||
beq XDOS.TBX.SECRTS
|
beq XDOS.TBX.SECRTS
|
||||||
* clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
XDOS.TBX.EnumNext
|
XDOS.TBX.EnumNext
|
||||||
|
@ -954,20 +980,23 @@ XRW.D2SeekTime .EQ *
|
||||||
XDOS.SPVectHi .HS 00000000000000 storage for high byte of smartport entry.
|
XDOS.SPVectHi .HS 00000000000000 storage for high byte of smartport entry.
|
||||||
.HS 00
|
.HS 00
|
||||||
.HS 00000000000000
|
.HS 00000000000000
|
||||||
|
*--------------------------------------
|
||||||
|
XDOS.SPParams .HS 00 # of parms
|
||||||
|
XDOS.SPParams.U .HS 00 unit number
|
||||||
|
XDOS.SPParams.B .HS 0000 data buffer
|
||||||
|
.HS 000000 block number (3 bytes)
|
||||||
|
|
||||||
XDOS.SPStatus .HS 00000000
|
XDOS.SPStatusBuf .HS 00000000
|
||||||
|
*--------------------------------------
|
||||||
.LIST ON
|
.LIST ON
|
||||||
XDOS.DATA.LEN .EQ *-XDOS.DATA
|
XDOS.DATA.LEN .EQ *-XDOS.DATA
|
||||||
|
XDOS.FREE .EQ $FEFD-*
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
|
.BS XDOS.FREE
|
||||||
.ED
|
.ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* zero fill to page boundary - 3 ($FEFD). so that cortland flag stays within page boundary.
|
|
||||||
.LIST ON
|
|
||||||
XDOS.FREE .EQ $FEFD-*-XDOS.DATA.LEN (2.0.3 = $0C)
|
|
||||||
.LIST OFF
|
|
||||||
XDOS.CortDisp .EQ $FEFD
|
XDOS.CortDisp .EQ $FEFD
|
||||||
XDOS.CortFlag .EQ $FEFF cortland flag. 1 = Cortland system (must stay within page boundary)
|
XDOS.CortFlag .EQ $FEFF cortland flag. 1 = Cortland system (must stay within page boundary)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.EP
|
.EP
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
Loading…
Reference in New Issue