ProDOS.FX:Modified SELECTOR....more to come

This commit is contained in:
burniouf 2023-06-10 12:16:06 +02:00
parent c5e3cf4425
commit 5c26012b7f
4 changed files with 311 additions and 301 deletions

Binary file not shown.

View File

@ -1,16 +1,34 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
* object code = sel_1 VolListPtr .EQ $65
* Bird's Better Bye at org = dispadr *
SelectedIndex .EQ $67 name counter
filecount .EQ $68 # of displayable files in directory
FilenameLen .EQ $69 length of filename
bInSubDir .EQ $6B directory level
FilenamePtr .EQ $6C filename storage pointer (16 bit)
*
DirEntLen .EQ $6E directory entry length
DirEntPerBlk .EQ $6F directory entries/block
FileCntInDir .EQ $70 directory file count (16 bit)
*
blkfl .EQ $72 block flag / file counter
ScrollIndex .EQ $73 index # of top name in display
*--------------------------------------
SEL1.FileBuf .EQ $1800 1k
SEL1.DirEntry .EQ $1C00 512b
SEL1.filetypes .EQ $1F00
SEL1.Filenames .EQ $2000
*-------------------------------------- *--------------------------------------
SEL1.START cld SEL1.START cld
bit RROMBNK2 read ROM bit RROMBNK2 read ROM
stz softev * stz softev
lda #$10 set reset vector to 'dispadr' * lda #$10 set reset vector to 'dispadr'
sta softev+1 * sta softev+1
jsr setpwrc create power-up byte * jsr setpwrc create power-up byte
lda #$A0 lda #$A0
jsr $C300 initialize 80 column text card jsr $C300 initialize 80 column text card
@ -21,21 +39,19 @@ SEL1.START cld
jsr GP.TOOLBOX reset MEMTABL jsr GP.TOOLBOX reset MEMTABL
lda #$02 lda #$02
sta smparms init set mark parms pcount. sta SEL1.SetMarkP init set mark parms pcount.
*-------------------------------------- *--------------------------------------
* drive selector ldx DEVCNT
*--------------------------------------
ldx DEVCNT get device count and
.1 lda DEVLST,x .1 lda DEVLST,x
and #$F0 and #$F0
cmp DEVNUM cmp DEVNUM
beq SEL1.VolName beq SEL1.GetVol
dex dex
bra .1 bra .1
*--------------------------------------
SEL1.NextVol ldx lstpntr get device list pointer. SEL1.NextVol ldx VolListPtr get device list pointer.
bne .1 bne .1
ldx DEVCNT get device count. ldx DEVCNT get device count.
@ -43,232 +59,241 @@ SEL1.NextVol ldx lstpntr get device list pointer.
.1 dex .1 dex
lda DEVLST,x get unit number from list. lda DEVLST,x get unit number from list.
*--------------------------------------
SEL1.VolName stx lstpntr SEL1.GetVol stx VolListPtr
sta ol_unit store unit number for online. sta SEL1.OnLineP+1 store unit number for online.
jsr MLI jsr MLI
.DA #MLIONLINE .DA #MLIONLINE
.DA ol_parms .DA SEL1.OnLineP
bcs SEL1.NextVol error check. bcs SEL1.NextVol error check.
stz dlevel haven't read root directory yet. stz bInSubDir haven't read root directory yet.
lda pbuf+1 load description byte. lda pbuf+1 load description byte.
and #$0F mask for name length. and #$0F mask for name length.
beq SEL1.NextVol if 0, then try next unit. beq SEL1.NextVol if 0, then try next unit.
* clc
adc #$02 add 2 to length. adc #$02 add 2 to length.
tax name length in x. tax name length in x.
vnam1 stx pbuf save the name length SEL1.OpenDir stx pbuf save the name length
lda #$2F '/' lda #'/'
sta pbuf+1 slash before and sta pbuf+1 slash before and
sta pbuf,x after name. sta pbuf,x after name.
stz pbuf+1,x null after complete name. stz pbuf+1,x now "/VOLNAME/0
* open and read directory
jsr MLI jsr MLI
.DA #MLIOPEN .DA #MLIOPEN
.DA op_parms .DA SEL1.OpenP
bcc L5D7F good open. bcc SEL1.EnumDir good open.
lda dlevel trying to open root directory ? lda bInSubDir trying to open root directory ?
beq SEL1.NextVol yes, just move to next volume. beq SEL1.NextVol yes, just move to next volume.
jsr bell1 no, generate bell tone jsr bell1 no, generate bell tone
jsr popdir and stay at same level. jsr SEL1.FullPath.. and stay at same level.
stx pbuf stx pbuf
jmp keyloop jmp keyloop
*--------------------------------------
SEL1.EnumDir stz filecount zero file count.
L5D7F inc dlevel lda #1 File Ref Num=1
stz filecount zero file count. sta SEL1.ReadP+1 store in read
lda op_refn get file reference number sta SEL1.SetMarkP+1 and setmark parm lists.
sta rd_refn store in read
sta sm_refn and setmark parm lists. stz SEL1.ReadP+2
lda /SEL1.DirEntry
sta SEL1.ReadP+3
lda #$2B set read parm list for lda #$2B set read parm list for
sta rd_reqlen directory header length. sta SEL1.ReadP+4 directory header length.
stz rd_reqlen+1 stz SEL1.ReadP+5
jsr SEL1.ReadEntry read directory jsr SEL1.ReadEntry read directory
bcs L5DB3 bcs SEL1.CloseDir1
ldx #$03 ldx #$03
L5D9A lda sysentry+$23,x copy directory info .1 lda SEL1.DirEntry+$23,x copy directory info
sta entlen,x to zero page. sta DirEntLen,x to zero page.
dex dex
bpl L5D9A bpl .1
sta rd_reqlen put entry length in read parm list. sta SEL1.ReadP+4 put entry length in read parm list.
lda #$01 set block file counter to 1. lda #$01 set block file counter to 1.
sta blkfl sta blkfl
stz fpos_mid zero out msb's of file position stz SEL1.SetMarkP+3 zero out msb's of file position
stz fpos_hi in setmark parm list. stz SEL1.SetMarkP+4 in setmark parm list.
lda filecnt any files in directory ?
ora filecnt+1
bne L5DB5 if so, continue
L5DB3 bra L5E29 else go close directory file. SEL1.EnumDirNext
lda FileCntInDir
ora FileCntInDir+1
beq SEL1.CloseDir
L5DB5 bit filecnt+1 check msb of file count. SEL1.EnumDirNext1
bmi L5DB3 if set then done.
L5DB9 lda fpos_mid get mid byte of setmark file position. .1 lda #$01 reset lsb
and #$FE reset lsb trb SEL1.SetMarkP+3
sta fpos_mid and save.
ldy blkfl block file counter ldy blkfl block file counter
lda #$00 lda #$00
cpy entblk have we read all entries in this block ? cpy DirEntPerBlk have we read all entries in this block ?
bcc L5DCE if not, continue. bcc .3 if not, continue.
tay if so, zero y-reg and tay if so, zero y-reg and
sty blkfl reset block counter / flag sty blkfl reset block counter / flag
inc fpos_mid inc SEL1.SetMarkP+3
* set up setmark parameters for next file to be read. .2 inc SEL1.SetMarkP+3
* if transfer to second sector, handle it.
L5DCC inc fpos_mid .3 dey decrement file block counter
L5DCE dey decrement file block counter
clc clc
bmi L5DD8 bmi .4
adc entlen add entry length to acc. adc DirEntLen add entry length to acc.
bcc L5DCE determine if we flopped into 2nd half of bcc .3 determine if we flopped into 2nd half of
bcs L5DCC block, if so inc mid byte position. bcs .2 block, if so inc mid byte position.
L5DD8 adc #$04 add 4 and put in .4 adc #$04 add 4 and put in
sta fpos_lo low byte of setmark. sta SEL1.SetMarkP+2 low byte of setmark.
jsr MLI call mli jsr MLI call mli
.DA #MLISETMARK .DA #MLISETMARK
.DA #smparms parameters address = $0060 .DA SEL1.SetMarkP
.HS 00 bcs SEL1.CloseDir
bcs L5DB3 error
jsr SEL1.ReadEntry jsr SEL1.ReadEntry
bcs L5DB3 error. SEL1.CloseDir1 bcs SEL1.CloseDir
inc blkfl increase count of files read. inc blkfl increase count of files read.
lda sysentry file type/length. lda SEL1.DirEntry file type/length.
and #$F0 mask off high nibble. and #$F0 mask off high nibble.
beq L5DB9 deleted file, try next one. beq SEL1.EnumDirNext1
dec filecnt decrement low file count. lda FileCntInDir
bne L5DF8 bne .5
dec filecnt+1 and high if necessary. dec FileCntInDir+1
L5DF8 ror sysentry+$1E check access bit. .5 dec FileCntInDir
bcc L5DB5 if no read, try next file.
lda sysentry+$10 get file type. ror SEL1.DirEntry+$1E check access bit.
cmp #$0F directory file ? bcc SEL1.EnumDirNext if no read, try next file.
beq L5E08 then continue.
cmp #$FF system file ? lda SEL1.DirEntry+$10 get file type.
bne L5DB5 no, read next file. ldx filecount get valid files read.
inx
beq SEL1.CloseDir
L5E08 ldx filecount get valid files read. stx filecount
cpx #$80 if greater than size of filename buffer
bcs L5E29 then close directory
sta filetyps,x else store filetype in zero page dex
jsr namecalc and go set up storage area.
ldy #$0F
L5E15 lda sysentry,y get byte of filename sta SEL1.filetypes,x else store filetype in zero page
sta (fnstore),y store in directed area jsr SEL1.SetFNPtrX and go set up storage area.
ldy #15
.6 lda SEL1.DirEntry,y get byte of filename
sta (FilenamePtr),y store in directed area
dey dey
bpl L5E15 bpl .6
iny y = 0
and #$0F mask off low nibble (name length) and #$0F mask off low nibble (name length)
sta (fnstore),y restore in name buffer sta (FilenamePtr) restore in name buffer
inc filecount increment valid file counter bra SEL1.EnumDirNext
bne L5DB5 get next file (branch always)
L5E26 jmp SEL1.NextVol error. try next unit. L5E26 jmp SEL1.NextVol error. try next unit.
*--------------------------------------
L5E29 jsr MLI close directory file SEL1.CloseDir jsr MLI close directory file
.DA #MLICLOSE .DA #MLICLOSE
.DA cl_parms .DA SEL1.CloseP
bcs L5E26 error. bcs L5E26 error.
jsr settxt use full screen for windows jsr settxt use full screen for windows
jsr home jsr home
lda #$17 cursor at bottom of screen. lda #$17 cursor at bottom of screen.
jsr TABV set vertical position. jsr TABV set vertical position.
ldy #$00
lda #$14 horizontal position. lda #$14 horizontal position.
jsr sethorz print message. sta ch
jsr homecurs cursor to upper/left.
ldy #0 Footer
jsr SET1.MsgOutY
lda #$99
jsr cout cursor to upper/left.
ldx #$00 ldx #$00
L5E48 lda pbuf+1,x .1 lda pbuf+1,x
beq showfiles beq .2
jsr output jsr SEL1.COut
inx inx
bne L5E48 bne .1
showfiles stz valcnt .2 stz SelectedIndex
stz topname init top filename index. stz ScrollIndex init top filename index.
lda filecount # of valid files. ldx filecount # of valid files.
beq keyloop if no files. beq keyloop if no files.
cmp #$15 more than what will fit on screen ? cpx #21 more than what will fit on screen ?
bcc L5E61 no. bcc .3 no.
lda #$14 limit to 20 files on the screen. ldx #20 limit to 20 files on the screen.
L5E61 sta gp_cnt .3 lda #2 set window dimensions
lda #$02 set window dimensions
sta wndtop sta wndtop
sta wndlft sta wndlft
lda #$16
lda #22
sta wndwdth sta wndwdth
sta wndbot sta wndbot
L5E6F jsr nameprnt output filename to screen .4 phx
inc valcnt
dec gp_cnt file counter. jsr SEL1.PrintFN
bne L5E6F continue printing names. inc SelectedIndex
plx
dex
bne .4
stz valcnt stz SelectedIndex
beq L5EAA if last file, it needs to be inverse. beq L5EAA if last file, it needs to be inverse.
*--------------------------------------
uparrow jsr nameprnt print old name in normal. uparrow jsr SEL1.PrintFN print old name in normal.
ldx valcnt get old name number. ldx SelectedIndex
beq L5EAA if already at the top name beq L5EAA if already at the top name
dec valcnt else fix index. dec SelectedIndex
lda cv current cursor line. lda cv current cursor line.
cmp #$02 at top line of window ? cmp #$02 at top line of window ?
bne L5EAA no, move up normally. bne L5EAA no, move up normally.
dec topname fix offset index dec ScrollIndex fix offset index
lda #$16 else sroll windows down a line. lda #$16 else sroll windows down a line.
bne L5EA7 branch always. bne L5EA7 branch always.
*--------------------------------------
dnarrow jsr nameprnt print old name in normal. dnarrow jsr SEL1.PrintFN print old name in normal.
ldx valcnt get old name number. ldx SelectedIndex
inx add one. inx add one.
cpx filecount cpx filecount
bcs L5EAA if already at last filename bcs L5EAA if already at last filename
stx valcnt else update index. stx SelectedIndex
lda cv current cursor line. lda cv current cursor line.
cmp #$15 at bottom line of window ? cmp #$15 at bottom line of window ?
bne L5EAA no, move cursor normally. bne L5EAA no, move cursor normally.
inc topname update offset index inc ScrollIndex update offset index
lda #$17 else scroll up a line. lda #$17 else scroll up a line.
L5EA7 jsr cout L5EA7 jsr cout
L5EAA jsr setinv set inverse text mode.
jsr nameprnt output last filename.
L5EAA jsr setinv set inverse text mode.
jsr SEL1.PrintFN output last filename.
*--------------------------------------
keyloop lda kbd get keyboard input. keyloop lda kbd get keyboard input.
bpl keyloop loop until key pressed. bpl keyloop loop until key pressed.
@ -292,214 +317,220 @@ L5ECB cmp #$89 tab ?
cmp #$9B esc ? cmp #$9B esc ?
bne keyloop no, try again else pop up a directory. bne keyloop no, try again else pop up a directory.
* pop a directory level jsr SEL1.FullPath.. CD ..
jmp SEL1.OpenDir
jsr popdir *--------------------------------------
dec dlevel
bra L5EF1
popdir ldx pbuf
L5EDD dex
lda pbuf,x
cmp #$2F slash
bne L5EDD
cpx #$01
bne L5EEC
ldx pbuf
L5EEC rts
L5EED jmp SEL1.NextVol set up new unit number. L5EED jmp SEL1.NextVol set up new unit number.
*--------------------------------------
L5EF4 ldy SelectedIndex
lda SEL1.filetypes,y get file type.
cmp #S.FI.T.DIR
bne .1 branch if directory.
L5EF0 inx jsr SEL1.SetFullPath
bcs L5EED
L5EF1 jmp vnam1 get new directory info.
* run selected file
L5EF4 jsr MLI
.DA #MLISETPREFIX
.DA pf_parms
bcs L5EED error.
ldx valcnt get name number.
jsr namecalc set up name storage area (on return y=0)
ldx pbuf get prefix length.
L5F04 iny start at y = 1.
lda (fnstore),y get character of name.
inx inx
sta pbuf,x store in prefix buffer.
cpy namelen check length of name.
bcc L5F04 loop until all transferred.
stx pbuf put prefix length into buffer. jmp SEL1.OpenDir get new directory info.
ldy valcnt get file number.
lda filetyps,y get file type. .1 cmp #S.FI.T.SYS
bpl L5EF0 branch if directory. bne keyloop
jsr SEL1.SetFullPath
bcs L5EED
jsr MLI open file
.DA #MLIOPEN
.DA SEL1.OpenP
bcs L5EED
lda SEL1.OpenP+5 move reference number
sta SEL1.ReadP+1 for read.
lda #$20
sta SEL1.ReadP+3 read at $2000
dec SEL1.ReadP+5 was $002B, now $FF2B
jsr SEL1.Read read selected file.
php save possible error.
jsr MLI close file. ignore any error from close
.DA #MLICLOSE
.DA SEL1.CloseP
plp restore status from read.
bcs L5EED if any errors.
jsr settxt reset to full window. jsr settxt reset to full window.
jsr home makes for no flash. jsr home makes for no flash.
lda #$95 ctrl-u lda #$95 ctrl-u
jsr cout turn off 80 columns. jsr cout turn off 80 columns.
jsr MLI open file jmp $2000 execute selected system file.
.DA #MLIOPEN *--------------------------------------
.DA op_parms SET1.MsgOutY lda SEL1.Footer,y
bcs L5EED if error. beq .8
lda op_refn move reference number
sta rd_refn for read.
* lda #$FF read the entire file.
* sta rd_reqlen
* sta rd_reqlen+1
dec rd_reqlen+1 was $002B, now $FF2B
jsr SEL1.Read read selected file.
php save possible error.
jsr MLI close file. ignore any error from close
.DA #MLICLOSE
.DA cl_parms
plp restore status from read.
bcs L5EED if any errors.
jmp sysentry execute selected system file.
* output messages. on entry: acc = horizontal position,
* y = index to message teminated by 0.
sethorz sta ch
msgout lda dsp2msg,y
beq L5F57
jsr cout jsr cout
iny iny
bne msgout bne SET1.MsgOutY
L5F57 rts .8 rts
*--------------------------------------
* name pointer calculator for name storage area SEL1.PrintFN ldx SelectedIndex
namecalc stz fnstore+1 init high byte of 16-bit shift
txa
asl shift to high nibble
rol fnstore+1
asl
rol fnstore+1
asl
rol fnstore+1
asl
rol fnstore+1
sta fnstore low pointer
lda /iobuf
clc
adc fnstore+1
sta fnstore+1
ldy #$00
lda (fnstore),y file name length
sta namelen
rts
* output a filename line
nameprnt lda #$02
sta ch80col horizontal position = 2.
ldx valcnt filename number
txa txa
sec sec
sbc topname calculate line # to display name sbc ScrollIndex calculate line # to display name
inc inc
inc inc
jsr TABV set vertical position. jsr TABV set vertical position.
lda filetyps,x get filetype (x is unchanged by tabv).
bmi L5F99 branch if system file. lda SEL1.filetypes,x get filetype (x is unchanged by tabv).
cmp #S.FI.T.DIR
bne .1 branch if not a DIR
stz ch80col adjust cursor position. stz ch80col adjust cursor position.
lda invflg ave current inverse setting lda invflg Save current inverse setting
pha pha
ldy #fldrmsg-dsp2msg ldy #SEL1.DirIcon-SEL1.Footer
jsr msgout display the folder. jsr SET1.MsgOutY display the folder.
pla restore inverse setting. pla restore inverse setting.
sta invflg sta invflg
L5F99 jsr outsp output a space. .1 lda #$03
jsr namecalc calc name location. sta ch80col
jsr SEL1.SPOut output a space.
jsr SEL1.SetFNPtrX calc name location.
L5F9F iny y = 1 (first time). ldy #0
lda (fnstore),y get name character.
jsr output put on screen.
cpy namelen end of name ?
bcc L5F9F no.
outsp lda #$A0 .2 iny
.HS 2C BIT ABS lda (FilenamePtr),y get name character.
jsr SEL1.COut put on screen.
cpy FilenameLen end of name ?
bcc .2 no.
homecurs lda #$99 SEL1.SPOut lda #' ' SPACE
output ora #$80 set high bit. SEL1.COut ora #$80 set high bit.
jmp cout output to screen. jmp cout output to screen.
SEL1.ReadEntry jsr SEL1.Read SEL1.ReadEntry jsr SEL1.Read
bcs SEL1.Read.RTS bcs SEL1.Read.RTS
ldy #sysentry ldy #SEL1.DirEntry
lda /sysentry lda /SEL1.DirEntry
ldx #2 ldx #2
jmp GP.TOOLBOX jmp GP.TOOLBOX
*--------------------------------------
SEL1.Read jsr MLI mli read call SEL1.Read jsr MLI mli read call
.DA #MLIREAD .DA #MLIREAD
.DA rd_parms .DA SEL1.ReadP
SEL1.Read.RTS rts SEL1.Read.RTS rts
*-------------------------------------- *--------------------------------------
SEL1.SetFullPath
jsr MLI
.DA #MLISETPREFIX
.DA SEL1.SetPrefixP
bcs .9
ldx SelectedIndex
jsr SEL1.SetFNPtrX set up name storage area (on return y=0)
ldx pbuf get prefix length.
ldy #0
.1 iny start at y = 1.
lda (FilenamePtr),y get character of name.
inx
sta pbuf,x store in prefix buffer.
cpy FilenameLen check length of name.
bcc .1 loop until all transferred.
stx pbuf put prefix length into buffer.
inc bInSubDir
clc
.9 rts
*--------------------------------------
SEL1.FullPath.. ldx pbuf
.1 dex
lda pbuf,x
cmp #'/'
bne .1
cpx #$01
bne .9
ldx pbuf
.9 dec bInSubDir
rts
*--------------------------------------
SEL1.SetFNPtrX lda /SEL1.Filenames/16
sta FilenamePtr+1
txa
ldx #4
.1 asl
rol FilenamePtr+1
dex
bne .1
sta FilenamePtr
lda (FilenamePtr)
sta FilenameLen
rts
*--------------------------------------
* data area * data area
*-------------------------------------- *--------------------------------------
dsp2msg .AS -"RETURN: Select | TAB: Chg Vol | ESC: Back" SEL1.Footer .AS -"RETURN:Select,TAB:Chg Vol,ESC:Back"
.HS 00 .HS 00
fldrmsg .HS 0F inverse control code SEL1.DirIcon .HS 0F inverse control code
.HS 1B enable mousetext .HS 1B enable mousetext
.AS -"XY" folder characters .AS -"XY" folder characters
.HS 18 disable mousetext .HS 18 disable mousetext
.HS 0E normal control code .HS 0E normal control code
.HS 00 .HS 00
*-------------------------------------- *--------------------------------------
op_parms .DA #3 3 parms SEL1.OpenP .DA #3 Param Count
.DA pbuf pathname .DA pbuf pathname
.DA op_buf file buffer .DA SEL1.FileBuf file buffer
op_refn .HS 00 reference number .HS 01 reference number
*--------------------------------------
cl_parms .HS 01 1 parm SEL1.CloseP .DA #1 Param Count
.HS 00 reference number. .HS 01 reference number.
*--------------------------------------
ol_parms .HS 02 2 parms SEL1.OnLineP .DA #2 Param Count
ol_unit .HS 60 unit number, default = s6, d1 .HS 60 unit number, default = s6, d1
.DA pbuf+1 data buffer .DA pbuf+1 data buffer
*--------------------------------------
pf_parms .DA #01 one parm SEL1.SetPrefixP .DA #1 Param Count
.DA pbuf pathname .DA pbuf pathname
*--------------------------------------
rd_parms .DA #04 4 parms SEL1.ReadP .DA #4 Param Count
rd_refn .HS 01 reference number
.DA sysentry data buffer
*-------------------------------------- *--------------------------------------
.LIST ON .LIST ON
SEL1.LEN .EQ *-SEL1.START SEL1.LEN .EQ *-SEL1.START
.LIST OFF .LIST OFF
*--------------------------------------
* these last 2 parms (4 bytes) may extend past $300 length limit since
* the request count is set prior to using the parm block and the transfer
* count isn't used at all (except by prodos)
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY
rd_reqlen .BS 2 requested length .BS 1 RefNum
.BS 2 MemPtr
.BS 2 requested length
.BS 2 actual length .BS 2 actual length
SEL1.SetMarkP .BS 1 Param Count
.BS 1 RefNum
.BS 3 FPos
.ED .ED
*-------------------------------------- *--------------------------------------
MAN MAN

View File

@ -13,6 +13,9 @@ NEW
* (as other replacement quit code is supposed to do) because GQuit checks * (as other replacement quit code is supposed to do) because GQuit checks
* this to see if this version of quit code is available. * this to see if this version of quit code is available.
op_buf .EQ $1C00 open file buffer (selector)
SEL2.START SEL2.START
GQdisp lda RRAMWRAMBNK1 read/write LC bank 1 GQdisp lda RRAMWRAMBNK1 read/write LC bank 1
clc clc

View File

@ -88,29 +88,6 @@ zpt .EQ $48 highly used zero page index pointer
datptr .EQ $4A ptr to data area of buffer. datptr .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.
* zero page variables for Bird's Better Bye
smparms .EQ $60 set mark parms
sm_refn .EQ $61 file reference number
fpos_lo .EQ $62 new file position (3 bytes)
fpos_mid .EQ $63
fpos_hi .EQ $64
lstpntr .EQ $65 device list pointer (16 bit)
valcnt .EQ $67 name counter
filecount .EQ $68 # of displayable files in directory
namelen .EQ $69 length of filename
gp_cnt .EQ $6A general purpose counter
dlevel .EQ $6B directory level
fnstore .EQ $6C filename storage pointer (16 bit)
entlen .EQ $6E directory entry length
entblk .EQ $6F directory entries/block
filecnt .EQ $70 directory file count (16 bit)
blkfl .EQ $72 block flag / file counter
topname .EQ $73 index # of top name in display
filetyps .EQ $74 128 byte table of filetypes
errnum .EQ $DE
*-------------------------------------- *--------------------------------------
auxsp .EQ $0101 auxsp .EQ $0101
RAMXDRV .EQ $0200 load address for aux bank /RAM driver RAMXDRV .EQ $0200 load address for aux bank /RAM driver
@ -128,7 +105,6 @@ vblock1 .EQ $0E00 ramdisk directory block
volbuf .EQ $0F00 volume buffer volbuf .EQ $0F00 volume buffer
iobuf .EQ $1400 i/o buffer iobuf .EQ $1400 i/o buffer
fbuf .EQ $1800 FCB buffer fbuf .EQ $1800 FCB buffer
op_buf .EQ $1C00 open file buffer (selector)
sysentry .EQ $2000 .SYS file load address sysentry .EQ $2000 .SYS file load address
xfer .EQ $C314 xfer .EQ $C314