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