mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-19 07:30:41 +00:00
ProDOSFX:Fixes in Loaders, BASICFX:fix an issue while launching from A2osX
This commit is contained in:
parent
225566cca4
commit
daeea23549
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -475,7 +475,7 @@ L9D1C lda #$05
|
||||
L9D1F jmp BS.ERROUT
|
||||
|
||||
L9D22 lda #$FF
|
||||
sta BS.CAR.EICB
|
||||
sta BS.CAT.EICB
|
||||
|
||||
jsr BS.GetFTableIdx
|
||||
|
||||
@ -489,7 +489,7 @@ L9D22 lda #$FF
|
||||
lda GP.SBUFADR
|
||||
sec
|
||||
|
||||
L9D45 inc BS.CAR.EICB
|
||||
L9D45 inc BS.CAT.EICB
|
||||
sbc BS.CAT.EL
|
||||
bcs L9D45
|
||||
|
||||
@ -914,7 +914,7 @@ BS.KW.FRE stz BS.TXTTAB
|
||||
sec
|
||||
sbc AS.ARRAYEND+1
|
||||
cmp #$07
|
||||
bcc LA07D
|
||||
bcc .1
|
||||
|
||||
sbc #$03
|
||||
sta XBBD9
|
||||
@ -927,11 +927,11 @@ BS.KW.FRE stz BS.TXTTAB
|
||||
sbc AS.STRINGSTART+1
|
||||
adc #$01
|
||||
cmp XBBD9
|
||||
bcs LA07D
|
||||
bcs .1
|
||||
|
||||
sta XBBD9
|
||||
|
||||
LA07D lda AS.HIMEM+1
|
||||
.1 lda AS.HIMEM+1
|
||||
sta BS.MEMSIZE+1
|
||||
|
||||
lda AS.HIMEM
|
||||
|
@ -5,13 +5,13 @@ BS.GetSysBuf lda #$04
|
||||
|
||||
LA1FB sta XBBB5
|
||||
jsr BS.KW.FRE
|
||||
bcs LA24E
|
||||
bcs .99
|
||||
|
||||
lda AS.STRINGSTART+1
|
||||
sbc AS.ARRAYEND+1
|
||||
cmp XBBB5
|
||||
lda #BS.E.NOBUFFER
|
||||
bcc LA24E
|
||||
bcc .98
|
||||
|
||||
lda AS.STRINGSTART+1
|
||||
sta ZP.PCH
|
||||
@ -48,8 +48,8 @@ LA1FB sta XBBB5
|
||||
sta BS.BUFPAGE
|
||||
rts
|
||||
|
||||
LA24E sec
|
||||
rts
|
||||
.98 sec
|
||||
.99 rts
|
||||
|
||||
XBBB5 .BS 1
|
||||
*--------------------------------------
|
||||
@ -943,7 +943,7 @@ LAB63 cmp #$FF
|
||||
rts
|
||||
|
||||
LAB6F pha
|
||||
jsr LB562
|
||||
jsr BS.CloseAll
|
||||
jsr LB36B
|
||||
|
||||
stz GP.ParamA
|
||||
@ -980,10 +980,10 @@ BS.KW.CHAIN jsr LA411
|
||||
ldx XBBEA
|
||||
dex
|
||||
stx AS.HIMEM+1
|
||||
jsr LAC22
|
||||
jsr BS.LoadBAS
|
||||
ldx BS.AS.HIMEMSave
|
||||
stx AS.HIMEM+1
|
||||
bcs LAC33
|
||||
bcs BS.LoadBAS0.RTS
|
||||
|
||||
jsr AS.CLEAR1
|
||||
jsr LA480
|
||||
@ -997,17 +997,17 @@ BS.KW.RUN stz GP.IFILACTV
|
||||
lsr
|
||||
bcc LABF4
|
||||
|
||||
jsr LAC1D
|
||||
bcs LAC33
|
||||
jsr BS.LoadBAS0
|
||||
bcs BS.LoadBAS0.RTS
|
||||
|
||||
jsr AS.CLEAR1
|
||||
|
||||
LABE6 sta AS.ERRFLG
|
||||
jsr LACB6
|
||||
jsr BS.SetRunLineNum
|
||||
jsr BS.SaveCSWKSW
|
||||
jsr LABF4
|
||||
jmp AS.NEXTSTMT
|
||||
|
||||
*--------------------------------------
|
||||
LABF4 jsr AS.NORMAL
|
||||
lda #$A3
|
||||
sta X9F65
|
||||
@ -1018,20 +1018,56 @@ LABF4 jsr AS.NORMAL
|
||||
jsr BS.SetState
|
||||
jmp BS.SYNERR
|
||||
*--------------------------------------
|
||||
BS.KW.LOAD jsr LAC1D
|
||||
bcs LAC33
|
||||
BS.KW.LOAD jsr BS.LoadBAS0
|
||||
bcs BS.LoadBAS0.RTS
|
||||
|
||||
BS.ENTRY jsr AS.CLEAR1
|
||||
jsr BS.SetState0
|
||||
|
||||
stz ZP.CH
|
||||
jmp AS.RESTART1
|
||||
*--------------------------------------
|
||||
BS.LoadBAS0 jsr BS.CloseAll
|
||||
BS.LoadBAS0.RTS bcs BS.LoadBAS.RTS
|
||||
|
||||
LAC1D jsr LB562
|
||||
bcs LAC33
|
||||
BS.LoadBAS lda #$01
|
||||
ldx #$FC
|
||||
jsr BS.CheckFTypeXAccessA
|
||||
bcs BS.LoadBAS.RTS
|
||||
|
||||
LAC22 jsr LAC34
|
||||
bcs LAC33
|
||||
jsr BS.MLIGetEOF
|
||||
bcs BS.LoadBAS.RTS
|
||||
|
||||
lda AS.PGRMSTART
|
||||
sta GP.MLIRW.DATAPTR
|
||||
adc GP.SBUFADR
|
||||
sta GP.ParamA
|
||||
|
||||
lda AS.PGRMSTART+1
|
||||
sta GP.MLIRW.DATAPTR+1
|
||||
adc GP.SBUFADR+1
|
||||
sta GP.ParamA+1
|
||||
bcs .1
|
||||
|
||||
cmp AS.HIMEM+1
|
||||
|
||||
.1 lda #BS.E.TOOLARGE
|
||||
bcs BS.LoadBAS.RTS
|
||||
|
||||
ldx GP.SBUFADR
|
||||
ldy GP.SBUFADR+1
|
||||
jsr BS.ReadXYBytes
|
||||
bcs BS.LoadBAS.RTS
|
||||
|
||||
jsr BS.MLIClose
|
||||
bcs BS.LoadBAS.RTS
|
||||
|
||||
jsr LAC80
|
||||
ldx GP.ParamA+1
|
||||
ldy GP.ParamA
|
||||
|
||||
stx AS.PGRMEND+1
|
||||
sty AS.PGRMEND
|
||||
|
||||
sty AS.ARRAYSTART
|
||||
sty AS.VARSTART
|
||||
@ -1040,50 +1076,13 @@ LAC22 jsr LAC34
|
||||
stx AS.VARSTART+1
|
||||
stx AS.ARRAYEND+1
|
||||
|
||||
LAC33 rts
|
||||
|
||||
LAC34 lda #$01
|
||||
ldx #$FC
|
||||
jsr BS.CheckFTypeXAccessA
|
||||
bcs LAC33
|
||||
|
||||
jsr BS.MLIGetEOF
|
||||
bcs LAC33
|
||||
|
||||
lda AS.PGRMSTART
|
||||
sta GP.MLIRW.DATAPTR
|
||||
adc GP.SBUFADR
|
||||
sta GP.ParamA
|
||||
lda AS.PGRMSTART+1
|
||||
sta GP.MLIRW.DATAPTR+1
|
||||
adc GP.SBUFADR+1
|
||||
sta GP.ParamA+1
|
||||
bcs LAC5E
|
||||
|
||||
cmp AS.HIMEM+1
|
||||
|
||||
LAC5E lda #BS.E.TOOLARGE
|
||||
bcs LAC33
|
||||
|
||||
ldx GP.SBUFADR
|
||||
ldy GP.SBUFADR+1
|
||||
jsr BS.ReadXYBytes
|
||||
bcs LAC33
|
||||
|
||||
jsr BS.MLIClose
|
||||
bcs LAC33
|
||||
|
||||
jsr LAC80
|
||||
ldx GP.ParamA+1
|
||||
ldy GP.ParamA
|
||||
stx AS.PGRMEND+1
|
||||
sty AS.PGRMEND
|
||||
rts
|
||||
|
||||
BS.LoadBAS.RTS rts
|
||||
*--------------------------------------
|
||||
LAC80 sec
|
||||
lda AS.PGRMSTART
|
||||
sbc GP.FIAUXTYPE
|
||||
sta ZP.A1L
|
||||
|
||||
lda AS.PGRMSTART+1
|
||||
sbc GP.FIAUXTYPE+1
|
||||
sta ZP.A1H
|
||||
@ -1113,7 +1112,8 @@ LAC98 stx ZP.PCL
|
||||
clc
|
||||
bcc LAC98
|
||||
|
||||
LACB6 lda GP.FoundBITS+1
|
||||
BS.SetRunLineNum
|
||||
lda GP.FoundBITS+1
|
||||
and #CMDBITS1.LINE
|
||||
clc
|
||||
beq LACD9
|
||||
|
@ -380,7 +380,7 @@ LB087 lda #BS.E.NODEV
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
BS.KW.BYE jsr LB562
|
||||
BS.KW.BYE jsr BS.CloseAll
|
||||
jsr LB36B
|
||||
jsr BS.RAMReset
|
||||
* lda #$65
|
||||
@ -573,16 +573,15 @@ BS.ReadDirEnt lda #$59
|
||||
jsr BS.MLIRead
|
||||
bcs LB203
|
||||
|
||||
ldx #$03
|
||||
|
||||
LB1EA lda $27C,x
|
||||
sta BS.CAT.EL,x
|
||||
dex
|
||||
bpl LB1EA
|
||||
lda $27D
|
||||
sta BS.CAT.EPB
|
||||
|
||||
lda $27C
|
||||
sta BS.CAT.EL
|
||||
sta GP.MLIRW.COUNT
|
||||
|
||||
lda #$01
|
||||
sta BS.CAR.EICB
|
||||
sta BS.CAT.EICB
|
||||
|
||||
stz GP.SBUFADR+1
|
||||
stz GP.SBUFADR+2
|
||||
@ -630,13 +629,13 @@ LB23D lda #BS.E.LOCKED
|
||||
LB241 lda GP.SBUFADR+1
|
||||
and #$FE
|
||||
sta GP.SBUFADR+1
|
||||
ldy BS.CAR.EICB
|
||||
ldy BS.CAT.EICB
|
||||
lda #$00
|
||||
cpy BS.CAT.EPB
|
||||
bcc LB25D
|
||||
|
||||
tay
|
||||
sty BS.CAR.EICB
|
||||
sty BS.CAT.EICB
|
||||
inc GP.SBUFADR+1
|
||||
|
||||
LB25A inc GP.SBUFADR+1
|
||||
@ -658,17 +657,17 @@ LB268 adc #$04
|
||||
jsr BS.MLIRead
|
||||
bcs LB28D
|
||||
|
||||
inc BS.CAR.EICB
|
||||
inc BS.CAT.EICB
|
||||
lda DIRENTBUF
|
||||
and #$F0
|
||||
beq LB241
|
||||
|
||||
lda BS.CAT.FileCnt
|
||||
bne .1
|
||||
* lda BS.CAT.FileCnt
|
||||
* bne .1
|
||||
|
||||
dec BS.CAT.FileCnt+1
|
||||
* dec BS.CAT.FileCnt+1
|
||||
|
||||
.1 dec BS.CAT.FileCnt
|
||||
*.1 dec BS.CAT.FileCnt
|
||||
|
||||
LB28D rts
|
||||
*--------------------------------------
|
||||
@ -805,7 +804,7 @@ LB36B lda GP.EXECACTV
|
||||
sta GP.EXECFILE
|
||||
ldx #$08
|
||||
lda BS.REFNUMs,x
|
||||
jsr LB515
|
||||
jsr BS.CloseA
|
||||
|
||||
LB37B rts
|
||||
*--------------------------------------
|
||||
@ -1053,12 +1052,12 @@ LB508 rts
|
||||
*--------------------------------------
|
||||
BS.KW.CLOSE lda GP.FoundBITS
|
||||
and #CMDBITS0.FN1
|
||||
beq LB562
|
||||
beq BS.CloseAll
|
||||
|
||||
jsr BS.CheckFilename
|
||||
bcs LB4B1
|
||||
|
||||
LB515 sta GP.MLICF.REFNUM
|
||||
BS.CloseA sta GP.MLICF.REFNUM
|
||||
lda BS.BUFPAGEs-1,x
|
||||
sta BS.BUFPAGE
|
||||
bit GP.EXECFILE
|
||||
@ -1094,13 +1093,13 @@ LB53F stz MLI.LEVEL
|
||||
LB55E dec GP.OPENCNT
|
||||
rts
|
||||
*--------------------------------------
|
||||
LB562 ldx GP.OPENCNT
|
||||
BS.CloseAll ldx GP.OPENCNT
|
||||
beq LB573
|
||||
|
||||
stx GP.EXECFILE
|
||||
lda BS.REFNUMs,x
|
||||
jsr LB515
|
||||
bcc LB562
|
||||
jsr BS.CloseA
|
||||
bcc BS.CloseAll
|
||||
|
||||
LB572 rts
|
||||
|
||||
@ -1111,7 +1110,7 @@ LB573 stz GP.MLICF.REFNUM
|
||||
jmp BS.MLIClose
|
||||
*--------------------------------------
|
||||
BS.KW.POSITION jsr BS.CheckFilename
|
||||
bcs LB5EF
|
||||
bcs LB5F0
|
||||
|
||||
sta GP.MLIRW.REFNUM
|
||||
sta GP.NEWLREF
|
||||
@ -1135,17 +1134,17 @@ LB592 lda GP.FoundBITS+1
|
||||
|
||||
LB5AD lda #$EF
|
||||
sta GP.MLIRW.COUNT
|
||||
|
||||
stz GP.MLIRW.COUNT+1
|
||||
stz GP.MLIRW.DATAPTR
|
||||
|
||||
stz GP.MLIRW.DATAPTR
|
||||
lda #$02
|
||||
sta GP.MLIRW.DATAPTR+1
|
||||
|
||||
lda #$7F
|
||||
sta GP.NLINEMASK
|
||||
lda #MLI.C.NEWLINE
|
||||
jsr GP.GOSYSTEM
|
||||
bcs LB5EF
|
||||
bcs LB5F0
|
||||
|
||||
LB5CB lda GP.ParamF
|
||||
ora GP.ParamF+1
|
||||
@ -1153,7 +1152,7 @@ LB5CB lda GP.ParamF
|
||||
beq LB5F0
|
||||
|
||||
jsr BS.MLIRead
|
||||
bcs LB5EF
|
||||
bcs LB5F0
|
||||
|
||||
lda GP.ParamF
|
||||
sbc #$00
|
||||
@ -1164,7 +1163,7 @@ LB5CB lda GP.ParamF
|
||||
bcs LB5CB
|
||||
|
||||
LB5ED lda #BS.E.INVOPT
|
||||
LB5EF sec
|
||||
sec
|
||||
LB5F0 rts
|
||||
*--------------------------------------
|
||||
LB5F1 lda BS.RecordSize
|
||||
|
@ -189,8 +189,8 @@ BS.CATWIDTH .BS 1
|
||||
|
||||
BS.CAT.EL .BS 1
|
||||
BS.CAT.EPB .BS 1
|
||||
BS.CAT.FileCnt .BS 2
|
||||
BS.CAR.EICB .BS 1
|
||||
*BS.CAT.FileCnt .BS 2
|
||||
BS.CAT.EICB .BS 1
|
||||
*--------------------------------------
|
||||
.LIST ON
|
||||
BS.FREESPACE .EQ $BC17-*
|
||||
|
@ -343,12 +343,12 @@ LDR.ShrinkRAM stz bRAMFlag
|
||||
dex
|
||||
bpl .2
|
||||
|
||||
.9 sec No $BF device found at S3D2
|
||||
.99 rts dont use LC !!!!
|
||||
|
||||
.8 clc
|
||||
.8 clc No $BF device found
|
||||
rts
|
||||
|
||||
.9 sec
|
||||
.99 rts
|
||||
|
||||
.3 jsr LDR.GFInfoRAM
|
||||
bcs .99
|
||||
|
||||
|
@ -1361,12 +1361,6 @@ BSX.ToUpper cmp #'a'
|
||||
eor #$20
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
.LIST ON
|
||||
BSX.SIZE .EQ *-BSX.JMPX
|
||||
.LIST OFF
|
||||
|
||||
.BS $F000-*
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/basic.fx/basic.s.x
|
||||
|
@ -236,7 +236,8 @@ LDR.GP.DST .EQ *
|
||||
LDR.AUX.SRC .PH $E000
|
||||
LDR.AUX.DST .EQ *
|
||||
.INB usr/src/basic.fx/basic.s.x
|
||||
.EP
|
||||
.INB usr/src/basic.fx/basic.s.xm
|
||||
.EP
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/basic.fx/basic.s
|
||||
|
@ -52,6 +52,6 @@ savestate .HS 00 state of the state register
|
||||
*--------------------------------------
|
||||
CCLK.LEN .EQ *-CCLK.START
|
||||
MAN
|
||||
SAVE USR/SRC/PRODOS.FX/PRODOS.S.CCLK
|
||||
LOAD USR/SRC/PRODOS.FX/PRODOS.S
|
||||
SAVE usr/src/prodos.fx/prodos.s.cclk
|
||||
LOAD usr/src/prodos.fx/prodos.s
|
||||
ASM
|
||||
|
@ -148,6 +148,12 @@ GP.MLICONT sec
|
||||
|
||||
*.3 lda p8areg restore acc
|
||||
* rti exit
|
||||
*--------------------------------------
|
||||
GP.TOOLBOX bit RRAMWRAMBNK1
|
||||
bit RRAMWRAMBNK1
|
||||
jsr XDOS.TOOLBOX
|
||||
bit RROMBNK2
|
||||
rts
|
||||
*--------------------------------------
|
||||
.LIST ON
|
||||
GP.FREE2 .EQ $BFEB-*
|
||||
@ -170,6 +176,6 @@ kversion .HS 23 represents release 2.0.3
|
||||
*--------------------------------------
|
||||
GP.LEN .EQ *-GP.START
|
||||
MAN
|
||||
SAVE USR/SRC/PRODOS.FX/PRODOS.S.GP
|
||||
LOAD USR/SRC/PRODOS.FX/PRODOS.S
|
||||
SAVE usr/src/prodos.fx/prodos.s.gp
|
||||
LOAD usr/src/prodos.fx/prodos.s
|
||||
ASM
|
||||
|
@ -15,10 +15,47 @@ ILDR.START jsr MLI check for file 'atinit'
|
||||
jsr ILDR.LoadFile
|
||||
bcc .1
|
||||
|
||||
jmp ILDR.MLIERR
|
||||
.9 jmp ILDR.MLIERR
|
||||
|
||||
.1 lda RROMBNK2 enable ROM
|
||||
jsr sysentry execute ATinit
|
||||
*--------------------------------------
|
||||
.DO READCAT=1
|
||||
|
||||
lda LDR.MLIOL.P+1 Boot unitnum
|
||||
sta ILDR.MLIRB.P+1
|
||||
|
||||
stz dst
|
||||
lda /dbuf
|
||||
ldy #$02 read directory into buffer
|
||||
ldx #0
|
||||
|
||||
.2 sta dst+1
|
||||
sta ILDR.MLIRB.P+3 Data buf HI
|
||||
sty ILDR.MLIRB.P+4 Blk Num LO
|
||||
stx ILDR.MLIRB.P+5 Blk Num HI
|
||||
|
||||
jsr MLI
|
||||
.DA #MLIREADBLOCK
|
||||
.DA ILDR.MLIRB.P
|
||||
bcs .9
|
||||
|
||||
ldy #$03 get next block# from link
|
||||
lda (dst),y
|
||||
tax
|
||||
dey
|
||||
ora (dst),y 00 00 -> Last Block
|
||||
beq .8
|
||||
|
||||
lda (dst),y
|
||||
tay
|
||||
lda dst+1
|
||||
inc
|
||||
inc add $200 to buffer pointer
|
||||
cmp /dbuf+$800 until it points past end of buffer.
|
||||
bcc .2 if ok, read next block.
|
||||
|
||||
.8 .FIN
|
||||
*--------------------------------------
|
||||
* BOOT block read 4 directory blocks at dbuf=$C00 -> $13FF
|
||||
*--------------------------------------
|
||||
@ -90,7 +127,6 @@ ILDR.ENUMPM .DO PM
|
||||
jsr setvid
|
||||
jsr setkbd
|
||||
jsr home
|
||||
|
||||
jmp sysentry go run interpreter
|
||||
|
||||
.9 jsr MLI no .SYSTEM found, so quit.
|
||||
@ -327,6 +363,13 @@ ILDR.LCBits .HS 8040201008040201
|
||||
ILDR.GFINFO .DA #10 PARAM CNT
|
||||
.DA ILDR.ATINIT
|
||||
.BS S.FI-3
|
||||
*--------------------------------------
|
||||
.DO READCAT=1
|
||||
ILDR.MLIRB.P .DA #3
|
||||
.DA #0 unit number
|
||||
.DA 0 2 byte data buffer
|
||||
.DA 0 2 byte block number
|
||||
.FIN
|
||||
*--------------------------------------
|
||||
ILDR.OPEN .DA #3 PARAM CNT
|
||||
.BS 2 Filename
|
||||
|
@ -90,6 +90,6 @@ irqv .DA * PATCHED with ROM vector by LDR
|
||||
IRQ.LEN .EQ *-IRQ
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/PRODOS.FX/PRODOS.S.IRQ
|
||||
LOAD USR/SRC/PRODOS.FX/PRODOS.S
|
||||
SAVE usr/src/prodos.fx/prodos.s.irq
|
||||
LOAD usr/src/prodos.fx/prodos.s
|
||||
ASM
|
||||
|
@ -26,20 +26,16 @@ LDR.MSG.IIgs .AT "IIgs"
|
||||
LDR.MSG.Unknown .AT "Unknown"
|
||||
LDR.MSG.CLK .AT "?Clk"
|
||||
LDR.MSG.RAM .AT "/RAM"
|
||||
LDR.MSG.ROOTERR .AT "ERR reading CATALOG"
|
||||
LDR.MSG.PFXERR .AT "ERR setting prefix"
|
||||
*--------------------------------------
|
||||
p16start inc LDR.BootFlag set = 2 for GQuit rts
|
||||
atalkset inc LDR.BootFlag set = 1 for appletalk rts
|
||||
prostart lda unitnum
|
||||
sta LDR.MLIOL.P+1
|
||||
|
||||
.DO READCAT=1
|
||||
sta LDR.MLIRB.P+1
|
||||
.FIN
|
||||
|
||||
cld
|
||||
bit RROMBNK2
|
||||
|
||||
|
||||
sta CLR80DISP
|
||||
sta CLR80STORE
|
||||
|
||||
@ -157,11 +153,6 @@ m128k sta idapple Save MACHID in temp location
|
||||
lda #$01 patch for the gs rom
|
||||
trb statereg to force off intcxrom
|
||||
|
||||
ldx #PAKME.ILDR-PAKME.Table
|
||||
ldy #ILDR.START
|
||||
lda /ILDR.START
|
||||
jsr X.Unpak.XatYA
|
||||
|
||||
ldx #PAKME.GP-PAKME.Table
|
||||
ldy #MLI
|
||||
lda /MLI
|
||||
@ -271,22 +262,47 @@ LDR.Common jsr LDR.BlkDevScan
|
||||
|
||||
jsr LDR.SetupRAM
|
||||
*--------------------------------------
|
||||
lda LDR.MLIOL.P+1 Boot unitnum
|
||||
sta DEVNUM
|
||||
|
||||
ldx DEVCNT
|
||||
|
||||
.1 lda DEVLST,x
|
||||
eor DEVNUM
|
||||
and #$f0
|
||||
beq .2
|
||||
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
brk
|
||||
|
||||
.2 lda DEVLST,x
|
||||
pha
|
||||
|
||||
.3 lda DEVLST+1,x
|
||||
sta DEVLST,x
|
||||
cpx DEVCNT
|
||||
inx
|
||||
bcc .3
|
||||
|
||||
pla
|
||||
ldx DEVCNT
|
||||
sta DEVLST,x
|
||||
|
||||
lda LDR.BootFlag get setup entry point flag
|
||||
beq LDR.ReadRoot taken if normal boot.
|
||||
beq LDR.SetPrefix taken if normal boot.
|
||||
|
||||
bit RROMBNK2
|
||||
rts return to caller at setup entry point.
|
||||
*--------------------------------------
|
||||
LDR.ReadRoot lda LDR.MLIOL.P+1 place boot devnum in globals
|
||||
sta devnum last device used
|
||||
|
||||
jsr MLI
|
||||
LDR.SetPrefix jsr MLI
|
||||
.DA #MLIONLINE
|
||||
.DA LDR.MLIOL.P
|
||||
bcs .9
|
||||
|
||||
lda pbuf+1 get volume name length.
|
||||
and #$0F strip devnum
|
||||
and #$0F strip SDDDxxxx
|
||||
beq .9
|
||||
|
||||
inc add 1 for leading '/'
|
||||
@ -299,42 +315,16 @@ LDR.ReadRoot lda LDR.MLIOL.P+1 place boot devnum in globals
|
||||
.DA LDR.MLISETP.P
|
||||
bcs .9
|
||||
|
||||
.DO READCAT=1
|
||||
stz dst
|
||||
lda /dbuf
|
||||
ldy #$02 read directory into buffer
|
||||
ldx #0
|
||||
jsr CROUT
|
||||
|
||||
.1 sta dst+1
|
||||
sta LDR.MLIRB.P+3 Data buf HI
|
||||
sty LDR.MLIRB.P+4 Blk Num LO
|
||||
stx LDR.MLIRB.P+5 Blk Num HI
|
||||
jsr MLI
|
||||
.DA #MLIREADBLOCK
|
||||
.DA LDR.MLIRB.P
|
||||
bcs .9
|
||||
|
||||
ldy #$03 get next block# from link
|
||||
lda (dst),y
|
||||
tax
|
||||
dey
|
||||
ora (dst),y 00 00 -> Last Block
|
||||
beq .8
|
||||
|
||||
lda (dst),y
|
||||
tay
|
||||
lda dst+1
|
||||
inc
|
||||
inc add $200 to buffer pointer
|
||||
cmp /dbuf+$800 until it points past end of buffer.
|
||||
bcc .1 if ok, read next block.
|
||||
.FIN
|
||||
|
||||
.8 jsr CROUT
|
||||
ldx #PAKME.ILDR-PAKME.Table
|
||||
ldy #ILDR.START
|
||||
lda /ILDR.START
|
||||
jsr X.Unpak.XatYA
|
||||
|
||||
jmp ILDR.START
|
||||
|
||||
.9 ldx #LDR.MSG.ROOTERR
|
||||
.9 ldx #LDR.MSG.PFXERR
|
||||
jsr LDR.PrintX
|
||||
bra *
|
||||
*--------------------------------------
|
||||
@ -576,16 +566,13 @@ LDR.ClkDevXCLK bit RROMBNK2
|
||||
|
||||
lda $DFFF
|
||||
cmp #$CD
|
||||
bne .9
|
||||
|
||||
lda $D8F0
|
||||
bit $F851
|
||||
cmp #$AD
|
||||
beq .1
|
||||
|
||||
.9 rts
|
||||
.9 bit $F851
|
||||
rts
|
||||
|
||||
.1 lda #'X'
|
||||
.1 bit $F851
|
||||
lda #'X'
|
||||
ldx PAKME.XCLK
|
||||
ldy PAKME.XCLK+1
|
||||
*--------------------------------------
|
||||
@ -624,14 +611,38 @@ LDR.SetupRAM lda DEVCNT
|
||||
lda /$FF00
|
||||
jsr X.Unpak.XatYA
|
||||
|
||||
lda RAMX.PAK
|
||||
bne .1
|
||||
|
||||
sta SETWRITEAUX
|
||||
|
||||
ldx #PAKME.RAMX-PAKME.Table
|
||||
ldy #$0200
|
||||
lda /$0200
|
||||
jsr X.Unpak.XatYA
|
||||
bra .7
|
||||
|
||||
.1 ldx #PAKME.RAMX-PAKME.Table
|
||||
ldy #$0800
|
||||
lda /$0800
|
||||
jsr X.Unpak.XatYA
|
||||
|
||||
sta SETWRITEAUX
|
||||
|
||||
sta CLRWRITEAUX
|
||||
ldx #$FE
|
||||
|
||||
.2 lda $900,x
|
||||
sta $300,x
|
||||
dex
|
||||
txa
|
||||
bne .2
|
||||
|
||||
.3 lda $800,x
|
||||
sta $200,x
|
||||
inx
|
||||
bne .3
|
||||
|
||||
.7 sta CLRWRITEAUX
|
||||
|
||||
lda #RAMDRV put driver address into
|
||||
sta DEVPTRS3D2
|
||||
@ -1304,13 +1315,6 @@ LDR.MLIOL.P .DA #2
|
||||
LDR.MLISETP.P .DA #1
|
||||
.DA pbuf
|
||||
|
||||
.DO READCAT=1
|
||||
LDR.MLIRB.P .DA #3
|
||||
.DA #0 unit number
|
||||
.DA 0 2 byte data buffer
|
||||
.DA 0 2 byte block number
|
||||
.FIN
|
||||
|
||||
LDR.SPStatus.P .DA #$03 # of parms
|
||||
LDR.SPStatus.U .DA #$00 unit number (code for smartport stat)
|
||||
.DA LDR.SPStatusBuf
|
||||
|
@ -3,24 +3,32 @@ NEW
|
||||
RAM.START
|
||||
RAMDRV cld no decimal.
|
||||
ldx #$0B save 13 bytes of parms
|
||||
|
||||
.1 lda A1L,x
|
||||
sta a1l1,x
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
ldx #$01
|
||||
|
||||
.2 lda passit,x save xfer vectors
|
||||
sta sp1,x
|
||||
dex
|
||||
bpl .2
|
||||
|
||||
lda A4L get command.
|
||||
beq stat 0 = status
|
||||
|
||||
cmp #$04 check for command too high.
|
||||
bcs ioerr if it is, i/o error
|
||||
|
||||
eor #$03
|
||||
sta A4L 0=format, 2=read, 1=write
|
||||
beq format
|
||||
|
||||
ldy bloknml+1 check for large block number.
|
||||
bne ioerr too big.
|
||||
|
||||
lda bloknml block #
|
||||
bmi ioerr largest block number is $7F
|
||||
|
||||
@ -31,25 +39,33 @@ RAMDRV cld no decimal.
|
||||
format lda #RAMXDRV card entry point
|
||||
sta passit
|
||||
lda /RAMXDRV
|
||||
|
||||
gocard sta passit+1 also used by 'mainwrt'
|
||||
sec direction ram -> card
|
||||
clv start with original zero page
|
||||
jmp xfer transfer control
|
||||
|
||||
ioerr lda #$27
|
||||
bne H2D41
|
||||
|
||||
lda #$2B write protect error.
|
||||
H2D41 sec flags error
|
||||
bcs H2D47
|
||||
|
||||
noerr .EQ *
|
||||
stat lda #$00
|
||||
clc
|
||||
|
||||
H2D47 php save status
|
||||
pha and error code.
|
||||
|
||||
ldx #$0B restore 13 byes of parms
|
||||
|
||||
H2D4B lda a1l1,x
|
||||
sta A1L,x
|
||||
dex
|
||||
bpl H2D4B
|
||||
|
||||
lda sp1 restore xfer parms.
|
||||
bit $6060 addr $FF58 must = rts ($60) as in ROM
|
||||
sta passit
|
||||
@ -58,23 +74,30 @@ H2D4B lda a1l1,x
|
||||
pla restore error code
|
||||
plp and status.
|
||||
rts
|
||||
|
||||
mainwrt sta SETWRITEAUX write to alt 48K
|
||||
ldy #$00
|
||||
|
||||
H2D6A lda (A1L),y pointers set in card by 'setptr'
|
||||
sta (A4L),y
|
||||
lda (A2L),y
|
||||
sta (A3L),y
|
||||
dey
|
||||
bne H2D6A
|
||||
|
||||
sta CLRWRITEAUX write to main 48K.
|
||||
lda #donewrt done writing card
|
||||
sta passit
|
||||
lda /donewrt
|
||||
jmp gocard
|
||||
sp1 .HS 0000
|
||||
a1l1 .BS 13 13 bytes of storage
|
||||
*--------------------------------------
|
||||
RAM.LEN .EQ *-RAM.START
|
||||
|
||||
.DUMMY
|
||||
sp1 .HS 0000
|
||||
a1l1 .BS 13 13 bytes of storage
|
||||
.ED
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/prodos.fx/prodos.s.ram
|
||||
LOAD usr/src/prodos.fx/prodos.s
|
||||
|
@ -338,7 +338,7 @@ R01 .HS 00 page requested
|
||||
BITMAP .HS 00FFFFFF blocks 0-7 used
|
||||
.HS FFFFFFFF
|
||||
.HS FFFFFFFF
|
||||
.HS FFFFFFFE
|
||||
.HS FFFFFFFE block 127 used (IRQV)
|
||||
VDIR .HS F3 storage type = F, name length = 3
|
||||
.AS "RAM"
|
||||
access .DA #$C3 destroy, rename, read enabled
|
||||
@ -346,7 +346,7 @@ access .DA #$C3 destroy, rename, read enabled
|
||||
.HS 0D
|
||||
.HS 0000
|
||||
.HS 0300 block 3
|
||||
.HS 7F 128 blocks
|
||||
.DA #128 128 blocks
|
||||
|
||||
exitcard lda RRAMWRAMBNK1 restore language card
|
||||
lda RRAMWRAMBNK1
|
||||
|
@ -1,58 +1,61 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
* object code = sel_1
|
||||
* Bird's Better Bye at org = dispadr
|
||||
*--------------------------------------
|
||||
SEL1.START
|
||||
birdbye cld
|
||||
lda RROMBNK2 read ROM
|
||||
SEL1.START cld
|
||||
bit RROMBNK2 read ROM
|
||||
|
||||
stz softev
|
||||
lda #$10 set reset vector to 'dispadr'
|
||||
sta softev+1
|
||||
jsr setpwrc create power-up byte
|
||||
|
||||
lda #$A0
|
||||
jsr $C300 initialize 80 column text card
|
||||
ldx #$17
|
||||
|
||||
* set up memory bitmap in global page
|
||||
|
||||
L5D16 stz MEMTABL,x P8 memory bitmap
|
||||
dex
|
||||
bpl L5D16
|
||||
inc MEMTABL+$17 protect global page
|
||||
lda #$CF protect zero page, stack and page 1
|
||||
sta MEMTABL
|
||||
ldx #0
|
||||
jsr GP.TOOLBOX reset MEMTABL
|
||||
|
||||
lda #$02
|
||||
sta smparms init set mark parms pcount.
|
||||
|
||||
*--------------------------------------
|
||||
* drive selector
|
||||
|
||||
*--------------------------------------
|
||||
ldx DEVCNT get device count and
|
||||
stx lstpntr store in zero page.
|
||||
lda devnum get last slot/drive
|
||||
bne volname
|
||||
|
||||
.1 lda DEVLST,x
|
||||
and #$F0
|
||||
cmp DEVNUM
|
||||
beq SEL1.VolName
|
||||
|
||||
dex
|
||||
bra .1
|
||||
|
||||
SEL1.NextVol ldx lstpntr get device list pointer.
|
||||
bne .1
|
||||
|
||||
ds2 ldx lstpntr get device list pointer.
|
||||
lda DEVLST,x get unit number from list.
|
||||
cpx #$01 make sure it's real.
|
||||
bcs L5D3F if so, change list pointer.
|
||||
ldx DEVCNT get device count.
|
||||
inx
|
||||
L5D3F dex decrement list pointer and restore.
|
||||
stx lstpntr
|
||||
|
||||
.1 dex
|
||||
lda DEVLST,x get unit number from list.
|
||||
|
||||
* get and store volume name
|
||||
|
||||
volname sta ol_unit store unit number for online.
|
||||
SEL1.VolName stx lstpntr
|
||||
sta ol_unit store unit number for online.
|
||||
jsr MLI
|
||||
.DA #MLIONLINE
|
||||
.DA ol_parms
|
||||
bcs ds2 error check.
|
||||
bcs SEL1.NextVol error check.
|
||||
|
||||
stz dlevel haven't read root directory yet.
|
||||
lda pbuf+1 load description byte.
|
||||
and #$0F mask for name length.
|
||||
beq ds2 if 0, then try next unit.
|
||||
beq SEL1.NextVol if 0, then try next unit.
|
||||
|
||||
adc #$02 add 2 to length.
|
||||
tax name length in x.
|
||||
|
||||
@ -64,13 +67,14 @@ vnam1 stx pbuf save the name length
|
||||
|
||||
* open and read directory
|
||||
|
||||
jsr MLI
|
||||
jsr MLI
|
||||
.DA #MLIOPEN
|
||||
.DA op_parms
|
||||
bcc L5D7F good open.
|
||||
|
||||
lda dlevel trying to open root directory ?
|
||||
beq ds2 yes, just move to next volume.
|
||||
beq SEL1.NextVol yes, just move to next volume.
|
||||
|
||||
jsr bell1 no, generate bell tone
|
||||
jsr popdir and stay at same level.
|
||||
stx pbuf
|
||||
@ -82,9 +86,9 @@ L5D7F inc dlevel
|
||||
sta rd_refn store in read
|
||||
sta sm_refn and setmark parm lists.
|
||||
lda #$2B set read parm list for
|
||||
sta dhdr_len directory header length.
|
||||
stz dhdr_len+1
|
||||
jsr doread read directory
|
||||
sta rd_reqlen directory header length.
|
||||
stz rd_reqlen+1
|
||||
jsr SEL1.ReadEntry read directory
|
||||
bcs L5DB3
|
||||
|
||||
ldx #$03
|
||||
@ -94,7 +98,7 @@ L5D9A lda sysentry+$23,x copy directory info
|
||||
dex
|
||||
bpl L5D9A
|
||||
|
||||
sta dhdr_len put entry length in read parm list.
|
||||
sta rd_reqlen put entry length in read parm list.
|
||||
lda #$01 set block file counter to 1.
|
||||
sta blkfl
|
||||
stz fpos_mid zero out msb's of file position
|
||||
@ -102,6 +106,7 @@ L5D9A lda sysentry+$23,x copy directory info
|
||||
lda filecnt any files in directory ?
|
||||
ora filecnt+1
|
||||
bne L5DB5 if so, continue
|
||||
|
||||
L5DB3 bra L5E29 else go close directory file.
|
||||
|
||||
L5DB5 bit filecnt+1 check msb of file count.
|
||||
@ -114,6 +119,7 @@ L5DB9 lda fpos_mid get mid byte of setmark file position.
|
||||
lda #$00
|
||||
cpy entblk have we read all entries in this block ?
|
||||
bcc L5DCE if not, continue.
|
||||
|
||||
tay if so, zero y-reg and
|
||||
sty blkfl reset block counter / flag
|
||||
inc fpos_mid
|
||||
@ -122,6 +128,7 @@ L5DB9 lda fpos_mid get mid byte of setmark file position.
|
||||
* if transfer to second sector, handle it.
|
||||
|
||||
L5DCC inc fpos_mid
|
||||
|
||||
L5DCE dey decrement file block counter
|
||||
clc
|
||||
bmi L5DD8
|
||||
@ -133,33 +140,38 @@ L5DCE dey decrement file block counter
|
||||
L5DD8 adc #$04 add 4 and put in
|
||||
sta fpos_lo low byte of setmark.
|
||||
jsr MLI call mli
|
||||
.DA #MLISETMARK
|
||||
.DA #smparms parameters address = $0060
|
||||
.DA #MLISETMARK
|
||||
.DA #smparms parameters address = $0060
|
||||
.HS 00
|
||||
bcs L5DB3 error
|
||||
|
||||
jsr doread
|
||||
jsr SEL1.ReadEntry
|
||||
bcs L5DB3 error.
|
||||
|
||||
inc blkfl increase count of files read.
|
||||
lda sysentry file type/length.
|
||||
and #$F0 mask off high nibble.
|
||||
beq L5DB9 deleted file, try next one.
|
||||
|
||||
dec filecnt decrement low file count.
|
||||
bne L5DF8
|
||||
|
||||
dec filecnt+1 and high if necessary.
|
||||
|
||||
L5DF8 ror sysentry+$1E check access bit.
|
||||
bcc L5DB5 if no read, try next file.
|
||||
|
||||
lda sysentry+$10 get file type.
|
||||
cmp #$0F directory file ?
|
||||
beq L5E08 then continue.
|
||||
|
||||
cmp #$FF system file ?
|
||||
bne L5DB5 no, read next file.
|
||||
|
||||
L5E08 ldx filecount get valid files read.
|
||||
cpx #$80 if greater than size of filename buffer
|
||||
bcs L5E29 then close directory
|
||||
|
||||
sta filetyps,x else store filetype in zero page
|
||||
jsr namecalc and go set up storage area.
|
||||
ldy #$0F
|
||||
@ -175,7 +187,7 @@ L5E15 lda sysentry,y get byte of filename
|
||||
inc filecount increment valid file counter
|
||||
bne L5DB5 get next file (branch always)
|
||||
|
||||
L5E26 jmp ds2 error. try next unit.
|
||||
L5E26 jmp SEL1.NextVol error. try next unit.
|
||||
|
||||
L5E29 jsr MLI close directory file
|
||||
.DA #MLICLOSE
|
||||
@ -195,6 +207,7 @@ L5E29 jsr MLI close directory file
|
||||
|
||||
L5E48 lda pbuf+1,x
|
||||
beq showfiles
|
||||
|
||||
jsr output
|
||||
inx
|
||||
bne L5E48
|
||||
@ -203,9 +216,12 @@ showfiles stz valcnt
|
||||
stz topname init top filename index.
|
||||
lda filecount # of valid files.
|
||||
beq keyloop if no files.
|
||||
|
||||
cmp #$15 more than what will fit on screen ?
|
||||
bcc L5E61 no.
|
||||
|
||||
lda #$14 limit to 20 files on the screen.
|
||||
|
||||
L5E61 sta gp_cnt
|
||||
lda #$02 set window dimensions
|
||||
sta wndtop
|
||||
@ -213,50 +229,66 @@ L5E61 sta gp_cnt
|
||||
lda #$16
|
||||
sta wndwdth
|
||||
sta wndbot
|
||||
|
||||
L5E6F jsr nameprnt output filename to screen
|
||||
inc valcnt
|
||||
dec gp_cnt file counter.
|
||||
bne L5E6F continue printing names.
|
||||
|
||||
stz valcnt
|
||||
beq L5EAA if last file, it needs to be inverse.
|
||||
|
||||
uparrow jsr nameprnt print old name in normal.
|
||||
ldx valcnt get old name number.
|
||||
beq L5EAA if already at the top name
|
||||
|
||||
dec valcnt else fix index.
|
||||
lda cv current cursor line.
|
||||
cmp #$02 at top line of window ?
|
||||
bne L5EAA no, move up normally.
|
||||
|
||||
dec topname fix offset index
|
||||
lda #$16 else sroll windows down a line.
|
||||
bne L5EA7 branch always.
|
||||
|
||||
dnarrow jsr nameprnt print old name in normal.
|
||||
ldx valcnt get old name number.
|
||||
inx add one.
|
||||
cpx filecount
|
||||
bcs L5EAA if already at last filename
|
||||
|
||||
stx valcnt else update index.
|
||||
lda cv current cursor line.
|
||||
cmp #$15 at bottom line of window ?
|
||||
bne L5EAA no, move cursor normally.
|
||||
|
||||
inc topname update offset index
|
||||
lda #$17 else scroll up a line.
|
||||
|
||||
L5EA7 jsr cout
|
||||
L5EAA jsr setinv set inverse text mode.
|
||||
jsr nameprnt output last filename.
|
||||
|
||||
keyloop lda kbd get keyboard input.
|
||||
bpl keyloop loop until key pressed.
|
||||
|
||||
sta KBDSTROBE clear strobe.
|
||||
jsr setnorm set normal text mode.
|
||||
ldx filecount are any files displayed ?
|
||||
beq L5ECB no, don't accept arrow keys or return.
|
||||
|
||||
cmp #$8D return ?
|
||||
beq L5EF4 then run selected file.
|
||||
|
||||
cmp #$8A down ?
|
||||
beq dnarrow move down a name.
|
||||
|
||||
cmp #$8B up ?
|
||||
beq uparrow move up a name.
|
||||
|
||||
L5ECB cmp #$89 tab ?
|
||||
beq L5EED new volume.
|
||||
|
||||
cmp #$9B esc ?
|
||||
bne keyloop no, try again else pop up a directory.
|
||||
|
||||
@ -279,7 +311,7 @@ L5EDD dex
|
||||
ldx pbuf
|
||||
L5EEC rts
|
||||
|
||||
L5EED jmp ds2 set up new unit number.
|
||||
L5EED jmp SEL1.NextVol set up new unit number.
|
||||
|
||||
L5EF0 inx
|
||||
|
||||
@ -287,7 +319,7 @@ L5EF1 jmp vnam1 get new directory info.
|
||||
|
||||
* run selected file
|
||||
|
||||
L5EF4 jsr MLI
|
||||
L5EF4 jsr MLI
|
||||
.DA #MLISETPREFIX
|
||||
.DA pf_parms
|
||||
bcs L5EED error.
|
||||
@ -321,10 +353,14 @@ L5F04 iny start at y = 1.
|
||||
|
||||
lda op_refn move reference number
|
||||
sta rd_refn for read.
|
||||
lda #$FF read the entire file.
|
||||
sta dhdr_len
|
||||
sta dhdr_len+1
|
||||
jsr doread read selected file.
|
||||
|
||||
* 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
|
||||
@ -337,11 +373,14 @@ L5F04 iny start at y = 1.
|
||||
* y = index to message teminated by 0.
|
||||
|
||||
sethorz sta ch
|
||||
|
||||
msgout lda dsp2msg,y
|
||||
beq L5F57
|
||||
|
||||
jsr cout
|
||||
iny
|
||||
bne msgout
|
||||
|
||||
L5F57 rts
|
||||
|
||||
* name pointer calculator for name storage area
|
||||
@ -361,6 +400,7 @@ namecalc stz fnstore+1 init high byte of 16-bit shift
|
||||
clc
|
||||
adc fnstore+1
|
||||
sta fnstore+1
|
||||
|
||||
ldy #$00
|
||||
lda (fnstore),y file name length
|
||||
sta namelen
|
||||
@ -379,6 +419,7 @@ nameprnt lda #$02
|
||||
jsr TABV set vertical position.
|
||||
lda filetyps,x get filetype (x is unchanged by tabv).
|
||||
bmi L5F99 branch if system file.
|
||||
|
||||
stz ch80col adjust cursor position.
|
||||
lda invflg ave current inverse setting
|
||||
pha
|
||||
@ -397,31 +438,39 @@ L5F9F iny y = 1 (first time).
|
||||
bcc L5F9F no.
|
||||
|
||||
outsp lda #$A0
|
||||
bne L5FB1 branch always.
|
||||
.HS 2C BIT ABS
|
||||
|
||||
homecurs lda #$99
|
||||
output ora #$80 set high bit.
|
||||
L5FB1 jmp cout output to screen.
|
||||
|
||||
doread jsr MLI mli read call
|
||||
output ora #$80 set high bit.
|
||||
jmp cout output to screen.
|
||||
|
||||
SEL1.ReadEntry jsr SEL1.Read
|
||||
bcs SEL1.Read.RTS
|
||||
|
||||
ldy #sysentry
|
||||
lda /sysentry
|
||||
ldx #2
|
||||
jmp GP.TOOLBOX
|
||||
|
||||
SEL1.Read jsr MLI mli read call
|
||||
.DA #MLIREAD
|
||||
.DA rd_parms
|
||||
rts
|
||||
|
||||
SEL1.Read.RTS rts
|
||||
*--------------------------------------
|
||||
* data area
|
||||
*--------------------------------------
|
||||
dsp2msg .AS -"RETURN: Select | TAB: Chg Vol | ESC: Back"
|
||||
.HS 00
|
||||
|
||||
dsp2msg .AS -"RETURN: Select | TAB: Chg Vol | "
|
||||
.AS -"ESC: Back"
|
||||
.DA #$00
|
||||
|
||||
fldrmsg .DA #$0F inverse control code
|
||||
fldrmsg .HS 0F inverse control code
|
||||
.HS 1B enable mousetext
|
||||
.AS -"XY" folder characters
|
||||
.HS 18 disable mousetext
|
||||
.HS 0E normal control code
|
||||
.HS 00
|
||||
|
||||
op_parms .DA #$03 3 parms
|
||||
*--------------------------------------
|
||||
op_parms .DA #3 3 parms
|
||||
.DA pbuf pathname
|
||||
.DA op_buf file buffer
|
||||
op_refn .HS 00 reference number
|
||||
@ -439,17 +488,20 @@ pf_parms .DA #01 one parm
|
||||
rd_parms .DA #04 4 parms
|
||||
rd_refn .HS 01 reference number
|
||||
.DA sysentry data buffer
|
||||
|
||||
*--------------------------------------
|
||||
.LIST ON
|
||||
SEL1.LEN .EQ *-SEL1.START
|
||||
.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
|
||||
.BS 2 requested length
|
||||
rd_reqlen .BS 2 requested length
|
||||
.BS 2 actual length
|
||||
dhdr_len .BS 1 directory header length (actually uses 2 bytes)
|
||||
.ED
|
||||
*--------------------------------------
|
||||
SEL1.LEN .EQ *-SEL1.START
|
||||
MAN
|
||||
SAVE usr/src/prodos.fx/prodos.s.sel1
|
||||
LOAD usr/src/prodos.fx/prodos.s
|
||||
|
@ -437,6 +437,6 @@ button2 .DA #$0B
|
||||
*--------------------------------------
|
||||
SEL2.LEN .EQ *-SEL2.START
|
||||
MAN
|
||||
SAVE USR/SRC/PRODOS.FX/PRODOS.S.SEL2
|
||||
LOAD USR/SRC/PRODOS.FX/PRODOS.S
|
||||
SAVE usr/src/prodos.fx/prodos.s.sel2
|
||||
LOAD usr/src/prodos.fx/prodos.s
|
||||
ASM
|
||||
|
@ -113,6 +113,6 @@ yradj .DA #$12 Monday
|
||||
TCLK.LEN .EQ *-TCLK.START
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/PRODOS.FX/PRODOS.S.TCLK
|
||||
LOAD USR/SRC/PRODOS.FX/PRODOS.S
|
||||
SAVE usr/src/prodos.fx/prodos.s.tclk
|
||||
LOAD usr/src/prodos.fx/prodos.s
|
||||
ASM
|
||||
|
@ -580,7 +580,7 @@ XDOS.Online jsr mvdbufr figure out how big buffer has to be.
|
||||
ldy #$01
|
||||
lda (A3L),y if 0 then cbytes=$100 else $010 for one
|
||||
and #$F0 device. mask out unused nibble.
|
||||
sta devnum last device used.
|
||||
sta DEVNUM last device used.
|
||||
beq .1 branch if all devices.
|
||||
|
||||
lda #$10 cbytes = $010
|
||||
@ -600,14 +600,14 @@ XDOS.Online jsr mvdbufr figure out how big buffer has to be.
|
||||
bne .3
|
||||
|
||||
sta namptr used as pointer to user buffer.
|
||||
lda devnum get device # again.
|
||||
lda DEVNUM get device # again.
|
||||
bne online1 branch if only 1 device to process.
|
||||
|
||||
jsr mvdevnums get list of currently recognized dev's.
|
||||
|
||||
.4 phx save index to last item on list
|
||||
lda loklst,x
|
||||
sta devnum save desired device to look at.
|
||||
sta DEVNUM save desired device to look at.
|
||||
jsr online1 log this volume and return it's name.
|
||||
lda namptr inc pointer for next device
|
||||
clc
|
||||
@ -693,7 +693,7 @@ online1.OK lda VCBs,x get volume name count
|
||||
bpl .1
|
||||
|
||||
svdevn ldy namptr index to 1st byte of this entry.
|
||||
lda devnum upper nibble = device# and
|
||||
lda DEVNUM upper nibble = device# and
|
||||
ora (usrbuf),y lower nibble = name length.
|
||||
sta (usrbuf),y
|
||||
|
||||
@ -714,7 +714,7 @@ tstfnf cmp #MLI.E.FNOTFND 'file not found' is ok
|
||||
cmp #$0D
|
||||
bne ctyperr report type error if not directory.
|
||||
|
||||
tstdspc lda devnum make sure destination device
|
||||
tstdspc lda DEVNUM make sure destination device
|
||||
jsr twrprot1 is not write protected.
|
||||
bcs H351D
|
||||
|
||||
@ -1010,7 +1010,7 @@ drevise1 lda bkbitflg (bit 5 = backup needed)
|
||||
tsb d_attr mark entry as backupable
|
||||
|
||||
lda d_dev get device # of directory
|
||||
sta devnum to be revised
|
||||
sta DEVNUM to be revised
|
||||
|
||||
lda d_entblk and address of directory block.
|
||||
ldx d_entblk+1
|
||||
|
@ -314,7 +314,7 @@ XDOS.FindVol jsr XDOS.FindVolInVCBOrDev
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
lda devnum setup device # for this directory
|
||||
lda DEVNUM setup device # for this directory
|
||||
sta d_dev
|
||||
jsr movhed0 setup other header info from directory
|
||||
|
||||
@ -345,7 +345,7 @@ nxtpnam1 ldy namptr inc pathname pointer to next name
|
||||
tay then prefixed directory has been moved
|
||||
bne L395F to another device. branch if not.
|
||||
|
||||
lda devnum revise devnum for prefixed directory
|
||||
lda DEVNUM revise DEVNUM for prefixed directory
|
||||
sta p_dev
|
||||
|
||||
L395F lda pathbuf,y test for end of name.
|
||||
@ -361,7 +361,7 @@ XDOS.FindVolInVCBOrDev
|
||||
tay set ptr to volume name
|
||||
|
||||
L396F sty vnptr and save.
|
||||
sta devnum zero out dev# until vcb located.
|
||||
sta DEVNUM zero out dev# until vcb located.
|
||||
|
||||
lda #VCB0
|
||||
|
||||
@ -392,7 +392,7 @@ L398A cmp pathbuf,y is it the same as requested vol name?
|
||||
plx restore pointer to matching vcb.
|
||||
stx vcbptr save it for future reference.
|
||||
lda VCBs+VCB.DEV,x get it's device #
|
||||
sta devnum and save it.
|
||||
sta DEVNUM and save it.
|
||||
|
||||
lda #$02 assume prefix is not used and
|
||||
ldx #$00 that root directory is to be used.
|
||||
@ -436,7 +436,7 @@ L39CC ldx vcbptr check if current (matched) vcb is active
|
||||
L39D4 lda vnptr make path ptr same as volume ptr
|
||||
sta namptr
|
||||
jsr mvdevnums copy all device #'s to be examined.
|
||||
lda devnum log current device 1st before searching
|
||||
lda DEVNUM log current device 1st before searching
|
||||
bne L39F1 others.
|
||||
|
||||
L39E2 ldx DEVCNT scan look list for devices we need
|
||||
@ -461,7 +461,7 @@ L39F4 cmp loklst,x of prospective devices.
|
||||
|
||||
bmi L39ED if dev was removed from devlst (/RAM).
|
||||
|
||||
L39FE sta devnum preserve device to be checked next.
|
||||
L39FE sta DEVNUM preserve device to be checked next.
|
||||
stz loklst,x mark this one as tested.
|
||||
|
||||
jsr XDOS.FindVCBForDevNum find vcb that claims this dev (if any).
|
||||
@ -501,12 +501,12 @@ L3A2D lda DEVLST,x active device list.
|
||||
rts
|
||||
*--------------------------------------
|
||||
XDOS.FindVCBForDevNum
|
||||
lda #VCB0 look for vcb for devnum
|
||||
lda #VCB0 look for vcb for DEVNUM
|
||||
ldy #$FF
|
||||
|
||||
.1 tax new index to next vcb
|
||||
lda VCBs+VCB.DEV,x check all devnums
|
||||
cmp devnum is this the vcb?
|
||||
cmp DEVNUM is this the vcb?
|
||||
beq .7
|
||||
|
||||
lda VCBs,x is this a free vcb?
|
||||
@ -623,7 +623,7 @@ L3ACE lda gbuf+4,y
|
||||
pla get length again
|
||||
sta VCBs,x and save.
|
||||
|
||||
lda devnum last device used.
|
||||
lda DEVNUM last device used.
|
||||
sta VCBs+VCB.DEV,x save device # and
|
||||
|
||||
ldy #0
|
||||
|
@ -219,10 +219,10 @@ wrtbmap lda #$02 write command.
|
||||
|
||||
sta A4L
|
||||
|
||||
lda devnum save current dev #
|
||||
lda DEVNUM save current dev #
|
||||
pha
|
||||
lda bmadev get bitmap's dev #
|
||||
sta devnum
|
||||
sta DEVNUM
|
||||
lda bmadadr and disk address
|
||||
sta bloknml
|
||||
lda bmadadr+1
|
||||
@ -233,7 +233,7 @@ wrtbmap lda #$02 write command.
|
||||
jsr XDOS.RWBlock
|
||||
|
||||
plx keep A=error code if CS
|
||||
stx devnum
|
||||
stx DEVNUM
|
||||
|
||||
L3DB6 rts
|
||||
*--------------------------------------
|
||||
@ -271,7 +271,7 @@ XDOS.RWBlock sta buf+1 buffer high.
|
||||
lda #$FF indicates reg call made to dev handler
|
||||
sta ioaccess
|
||||
|
||||
lda devnum transfer dev # for dispatcher to
|
||||
lda DEVNUM transfer dev # for dispatcher to
|
||||
sta unitnum convert to unit #.
|
||||
jmp XDOS.DevCall call the driver.
|
||||
*--------------------------------------
|
||||
@ -293,7 +293,9 @@ XDOS.CheckAndUnpackGBuf
|
||||
rts
|
||||
|
||||
XDOS.UnpackGBuf jsr XDOS.Pack.Init
|
||||
|
||||
|
||||
XDOS.UnpackZPT .EQ *
|
||||
|
||||
.1 lda (zpt)
|
||||
and #$0F
|
||||
beq .6
|
||||
@ -801,7 +803,7 @@ fileio1 lda $00,x get memory address of buffer from
|
||||
|
||||
lda #$FF also, set to indicate reg call made to
|
||||
sta ioaccess device handler.
|
||||
lda devnum transfer device # for dispatcher
|
||||
lda DEVNUM transfer device # for dispatcher
|
||||
sta unitnum to convert to unit #.
|
||||
stz p8error clear global error code.
|
||||
jmp XDOS.DevCall call the driver.
|
||||
|
@ -233,7 +233,7 @@ L47C1 pla
|
||||
XDOS.FCBDevIDSelect
|
||||
ldx fcbptr
|
||||
lda FCBs+FCB.DEVID,x
|
||||
sta devnum
|
||||
sta DEVNUM
|
||||
rts
|
||||
*--------------------------------------
|
||||
XDOS.SetFCBSType
|
||||
|
@ -24,7 +24,7 @@ L4B39 lda d_attr make sure ok to destroy file.
|
||||
lda #MLI.E.LOCKED access error
|
||||
jsr GP.P8errv
|
||||
|
||||
L4B45 lda devnum last device used.
|
||||
L4B45 lda DEVNUM last device used.
|
||||
jsr twrprot1 test for write protected hardware
|
||||
bcs L4B66 before going thru deallocation.
|
||||
|
||||
@ -789,6 +789,30 @@ XRW.DEBUG.PBYTEx
|
||||
|
||||
.FIN
|
||||
*--------------------------------------
|
||||
XDOS.TOOLBOX jmp (.1,x)
|
||||
|
||||
.1 .DA XDOS.TOOLBOX.MEMRESET
|
||||
.DA XDOS.TOOLBOX.UnpackYA
|
||||
|
||||
XDOS.TOOLBOX.MEMRESET
|
||||
ldx #$17
|
||||
|
||||
.1 stz MEMTABL,x P8 memory bitmap
|
||||
dex
|
||||
bne .1
|
||||
|
||||
inc MEMTABL+$17 protect global page
|
||||
lda #$CF protect zero page, stack and page 1
|
||||
sta MEMTABL
|
||||
rts
|
||||
|
||||
XDOS.TOOLBOX.UnpackYA
|
||||
sty zpt
|
||||
sta zpt+1
|
||||
|
||||
ldx #1
|
||||
jmp XDOS.UnpackZPT
|
||||
*--------------------------------------
|
||||
* data tables
|
||||
*--------------------------------------
|
||||
XDOS.CmdNums .HS D3D4D5D6 table of valid mli command numbers.
|
||||
@ -1009,6 +1033,6 @@ cortflag .EQ $FEFF cortland flag. 1 = Cortland system (must stay within
|
||||
*--------------------------------------
|
||||
XDOS.LEN .EQ *-XDOS
|
||||
MAN
|
||||
SAVE USR/SRC/PRODOS.FX/PRODOS.S.XDOS.F
|
||||
LOAD USR/SRC/PRODOS.FX/PRODOS.S
|
||||
SAVE usr/src/prodos.fx/prodos.s.xdos.f
|
||||
LOAD usr/src/prodos.fx/prodos.s
|
||||
ASM
|
||||
|
@ -5,7 +5,7 @@ NEW
|
||||
.OR $2000
|
||||
.TF PRODOS,TSYS
|
||||
*--------------------------------------
|
||||
READCAT .EQ 0 Boot Block read Catalog at $C00
|
||||
READCAT .EQ 1 Boot Block read Catalog at $C00
|
||||
ENHFILENAME .EQ 1
|
||||
LOWERCASE .EQ 1
|
||||
ACL .EQ 1
|
||||
|
@ -5,7 +5,7 @@ NEW
|
||||
.OR $2000
|
||||
.TF sbin/initd
|
||||
*--------------------------------------
|
||||
INITDDBG .EQ 0
|
||||
INITDDBG .EQ 1
|
||||
*--------------------------------------
|
||||
.INB inc/macros.i
|
||||
.INB inc/a2osx.i
|
||||
|
Loading…
x
Reference in New Issue
Block a user