Kernel version 0.9 : Adding MAKEBOOT Script to generate A2OSX.BOOT media

many bugfixes in LS,CAT, FILEENUM....moved UsrBuf256 off $200 (now $C00)
getting corrupted by ProDOS/regular Clock Drivers (not KM.*)
CHTYP in progress mainly for : CHTYP /A2OSX.BOOT/A2OSX.SYSTEM SYS
(S-CMASM 2.0 is unable to generate .SYS files)
This commit is contained in:
Rémy GIBERT 2017-04-03 17:35:03 +02:00
parent 957066af35
commit e274c5593b
10 changed files with 196 additions and 225 deletions

View File

@ -187,7 +187,7 @@ CS.RUN.PRINT sty BytesRead Y,A = Bytes read
.12 ldy #bSuppress
lda (pData),y
bpl .8
bpl .13
ldy #bPrintedBlankLine
lda (pData),y
@ -197,7 +197,9 @@ CS.RUN.PRINT sty BytesRead Y,A = Bytes read
.11 lda #$ff
sta (pData),y
bra .8
bne .1
.13 clc
rts
.1 ldy #bPrintedBlankLine
lda #0
@ -212,7 +214,7 @@ CS.RUN.PRINT sty BytesRead Y,A = Bytes read
bcs .6
cmp #13 Allow printing of CR even if not bPrintAll
beq .6
beq .4
ldy #bPrintAll
lda (pData),y
@ -242,6 +244,11 @@ CS.RUN.PRINT sty BytesRead Y,A = Bytes read
bra .7
.4 lda #13
>SYSCALL PutCA
bcs .9
lda #10
.6 >SYSCALL PutCA
bcs .9

View File

@ -8,12 +8,16 @@ AUTO 6
.OR $2000
.TF /A2OSX.BUILD/BIN/CHTYP
*--------------------------------------
.INB INC/MACROS.I
.INB INC/A2OSX.I
.INB /A2OSX.BUILD/INC/MACROS.I
.INB /A2OSX.BUILD/INC/A2OSX.I
*--------------------------------------
X.COPY.TO.DEST .EQ 0
X.DELETE.SOURCE .EQ 0
*--------------------------------------
ZPPtr1 .EQ ZPBIN
ZPPtr2 .EQ ZPBIN+2
ZPPtr3 .EQ ZPBIN+4
ZPFileName .EQ ZPBIN+4
ZPFileStat .EQ ZPBIN+6
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
@ -36,214 +40,143 @@ CS.START cld
L.MSG.USAGE .DA MSG.USAGE
L.MSG.OK .DA MSG.OK
L.MSG.ERR .DA MSG.ERR
L.FullPath .DA FullPath
L.STAT .DA STAT
L.PRODOS.FT.TXT .DA PRODOS.FT.TXT-1
.DA 0
*--------------------------------------
CS.INIT ldy #S.PS.hARGS
lda (pPs),y
beq .98
>PUSHA
>PUSHBI $20 Push SEP=' '
>PUSHBI 0 Push 0 for getting CMD & ARGS
>SYSCALL PStrGetTkn
bcs .99
ldy #hArg1
sta (pData),y
txa
beq .98
ldy #hArg2
sta (pData),y
CS.INIT >SYSCALL GetArgC
sta ArgCount
jsr GetHexFileTypeA
bcs .99
ldy #hArg1
lda (pData),y
>SYSCALL GetMemPtrA
>STYA ZPPtr1
lda (ZPPtr1)
.1 dec ArgCount
beq .98
lda ArgCount
>SYSCALL GetArgA
>STYA ZPPtr1
lda (ZPPtr1)
cmp #2
bne .4
ldy #1
lda (ZPPtr1),y
cmp #'/'
bne .10
cmp #'-'
bne .4
ldy #S.PS.hARGS
lda (pPs),y
bra .3
.10 ldy #S.PS.hARGS
lda (pPs),y
>PUSHA
ldy #S.PS.hPREFIX
lda (pPs),y
>PUSHA
>SYSCALL PStrCat
sta hDIRPATH
.3 >SYSCALL GetMemPtrA
>SYSCALL ListDirInitYA
bcs .99
ldy #hS.LISTDIR
sta (pData),y
lda (pPs)
ora #S.PS.F.EVENT Now accept events
sta (pPs)
clc
rts
.98 >LDYA L.MSG.USAGE
>SYSCALL PStrOutYA
.99 lda #SYSMGR.ERRSYN
sec
rts
*--------------------------------------
CS.RUN ldy #bCANCEL
lda (pData),y
beq .10
iny
lda (ZPPtr1),y
sec
rts
ldx OptionList
.10 ldy #bSTOP
lda (pData),y
beq .1
clc
.99 rts
.1 ldy #hS.LISTDIR
lda (pData),y
>SYSCALL ListDirNextA
bcs .99
pha
>SYSCALL GetMemPtrA
>STYA ZPPtr1
lda (ZPPtr1)
pha
and #$0F
sta (ZPPtr1) Adjust Filename len
pla
and #$F0
bne .8 skip VOLHeader ($f),DIRHeader ($e),DIR ($d)
ldy #hS.LISTDIR
lda (pData),y
>SYSCALL GetMemPtrA
>STYA ZPPtr2
ldy #S.LISTDIR.hPATH
lda (ZPPtr2),y
>SYSCALL GetMemPtrA
>STYA ZPPtr2
lda (ZPPtr2)
tax
tay
.2 lda (ZPPtr2),y
sta FullPath,y
dey
.2 cmp OptionList,x
beq .3
dex
bne .2
ldy #0
.3 inx
iny
lda (ZPPtr1),y
sta FullPath,x
tya
cmp (ZPPtr1)
bne .3
bra .98
stx FullPath
.3 ldy OptionVars-1,x
lda #$80
sta (pData),y
bra .1
>LDYA L.FullPath
>SYSCALL PStrOutYA
.4 >LDYA ZPPtr1
jsr InitSrcDirYA
bcs .9
>LDYA L.FullPath
>SYSCALL MLIGetFileInfoYA
bcs .5
>STYA ZPPtr3
bra .1 scan for any other args
>LDYA L.MSG.OK
>SYSCALL PStrOutYA
bra .8
.5 >PUSHA
>LDYA L.MSG.ERR
>SYSCALL PStrOutYA
.8 pla
>SYSCALL FreeMemA
clc
rts
.98 >LDYA L.MSG.USAGE
>SYSCALL PPrintFYA
.99 lda #SYSMGR.ERRSYN
sec
.9 rts
*--------------------------------------
CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
lda (pEvent),y
ldy #S.PS.hStdIn
cmp (pPs),y
bne .9
lda (pEvent)
and #S.EVT.F.KEY is it a KEY event?
beq .9
ldy #S.EVT.DATAHI is it an O or SAPPLE key ?
lda (pEvent),y
bne .9
ldy #S.EVT.DATALO
lda (pEvent),y
CS.RUN >SYSCALL GetC
bcs .10 no char
cmp #$03 Ctrl-C
bne .1
beq .92 Abort....
cmp #$13 Ctrl-S
bne .10
lda #$FF
ldy #bCANCEL
sta (pData),y
bra .8
.1 cmp #$13 Ctrl-S
bne .8
ldy #bSTOP
ldy #bPause
lda (pData),y
eor #$FF
eor #$ff
sta (pData),y
bne .80
.10 ldy #bPause
lda (pData),y
bne .80 Pause...
jsr GetEntry
bcs .9
ldy #hFilter
lda (pData),y
beq .4 No filter....
>SYSCALL GetMemPtrA
>PUSHYA
>PUSHW ZPFileName
>SYSCALL PStrMatch
bcs .8 no match, skip....
.4 ldy #S.STAT.P.DRIVE
lda (ZPFileStat),y ProDOS Device ?
bne .5
ldy #S.STAT.P.TYPE
lda (ZPFileStat),y
cmp #$0F Directory ?
bne .6
.8 clc
jmp CS.RUN.DIR
.5 jmp CS.RUN.DEV
.6 jmp CS.RUN.FILE
.9 jsr LeaveSubDir
bcs .92
jsr BasePath..
.8 jsr GetNextEntry
.80 clc
rts
.9 sec
.92 lda #0
sec
.99 rts
*--------------------------------------
CS.RUN.DEV
.8 jsr GetNextEntry
clc
.9 rts
*--------------------------------------
CS.RUN.DIR
.8 jsr GetNextEntry
clc
.9 rts
*--------------------------------------
CS.RUN.FILE
.8 jsr GetNextEntry
clc
.9 rts
*--------------------------------------
CS.DOEVENT sec
rts
*--------------------------------------
CS.QUIT ldy #hS.LISTDIR
lda (pData),y
beq .1
>SYSCALL ListDirCloseA
CS.QUIT jsr LeaveSubDir
bcc CS.QUIT
.1 ldy #hDIRPATH
lda (pData),y
beq .2
>SYSCALL FreeMemA
.2 ldy #hArg2
ldy #hFilter
lda (pData),y
beq .3
>SYSCALL FreeMemA
.3 ldy #hArg1
lda (pData),y
beq .8
>SYSCALL FreeMemA
.8 clc
.3 clc
rts
*--------------------------------------
GetHexFileTypeA >SYSCALL GetMemPtrA
@ -254,7 +187,7 @@ GetHexFileTypeA >SYSCALL GetMemPtrA
ldy #1
lda (ZPPtr1),y
cmp #'$'
cmp #'%'
bne .1
iny
@ -317,12 +250,19 @@ GetHexFileTypeA >SYSCALL GetMemPtrA
.9 sec
rts
*--------------------------------------
.INB /A2OSX.SRC/BIN/X.FILEENUM.S
*--------------------------------------
CS.END
MSG.USAGE >PSTR "Usage : CHTYP [File *,? wildcards allowed] [File type : $xx or SYS,TXT....]\n"
*--------------------------------------
OptionList >PSTR "R"
OptionVars .DA #bRecurse
*--------------------------------------
MSG.USAGE >PSTR "Usage : CHTYP <-R> [File *,? wildcards allowed] [File type : %HH, SYS,TXT....]\n"
MSG.OK >PSTR " [Ok]\n"
MSG.ERR >PSTR " [%h]\n"
FullPath .BS 64
STAT .BS S.STAT
ArgCount .BS 1
Tmp .BS 1
*--------------------------------------
PRODOS.FT.COUNT .EQ 7
@ -338,12 +278,14 @@ PRODOS.FT.TXT .AS "TXT"
.DUMMY
.OR 0
DS.START
hDIRPATH .BS 1
hS.LISTDIR .BS 1
hArg1 .BS 1
hArg2 .BS 1
bSTOP .BS 1
bCANCEL .BS 1
Index .BS 1
hDIRs .BS X.MAX.RECURSE
hDIRENTs .BS X.MAX.RECURSE
oDIRENTs .BS X.MAX.RECURSE*2
hSrcBasePath .BS 1
hFilter .BS 1
bPause .BS 1
bRecurse .BS 1
HexFileType .BS 1
DS.END
.ED

View File

@ -126,11 +126,11 @@ CS.RUN >SYSCALL GetC
lda (pData),y
eor #$ff
sta (pData),y
bne .8
bne .80
.10 ldy #bPause
lda (pData),y
bne .8 Pause...
bne .80 Pause...
jsr GetEntry
bcs .9
@ -171,7 +171,7 @@ CS.RUN >SYSCALL GetC
jsr BasePath..
.8 jsr GetNextEntry
clc
.80 clc
rts
.92 lda #0

View File

@ -447,12 +447,11 @@ CS.RUN.CopyStart
>PUSHBI SYS.FOpen.R
ldy #hSrcBasePath
jsr CS.RUN.GetFilePath
>PUSHWI UsrBuf256
>SYSCALL FOpen
bcs .99
ldy #hSrcFile
sta (pData),y
@ -467,7 +466,6 @@ CS.RUN.CopyStart
jsr CS.RUN.GetFilePath
>PUSHWI UsrBuf256
>SYSCALL FOpen
bcs .9
@ -523,7 +521,7 @@ CS.RUN.Copy stz .90+1
lda #'.'
>SYSCALL PutCA
rts
.9 ldy #CopyRC
sta (pData),y
@ -628,10 +626,12 @@ CS.QUIT jsr LeaveSubDir
.2 ldy #hFilter
lda (pData),y
beq .8
>SYSCALL FreeMemA
* >SYSCALL FreeMemA
.8 clc
rts
*--------------------------------------
MAN
SAVE /A2OSX.SRC/BIN/X.CPMVRM.S
LOAD /A2OSX.SRC/BIN/CP.S
ASM

View File

@ -270,8 +270,8 @@ GetEntry ldy #index
lda (ZPFileName) Empty !!!
bne .8
txa
>SYSCALL FreeMemA
* txa
* >SYSCALL FreeMemA
sec
rts

Binary file not shown.

Binary file not shown.

View File

@ -50,8 +50,6 @@ A2osX.SaveSX .EQ $101 Aux
* Aux $200 -> 3FD : /RAM Driver
* Aux $3FE -> 3FF : IRQ Vector
*--------------------------------------
UsrBuf256 .EQ $0200 Main
*--------------------------------------
*D.STACK.BASE .EQ $0300 $03EF...
D.STACK.TOP .EQ $03F0 ...Down to $0300
*--------------------------------------
@ -60,9 +58,9 @@ D.STACK.TOP .EQ $03F0 ...Down to $0300
* Main/Aux $400 -> $7FF : Console Screen
* Main/Aux $800 -> $BFF : System Screen
*--------------------------------------
KrnBuf256 .EQ $0C00 Main
UsrBuf256 .EQ $0C00 Main
*--------------------------------------
* .EQ $0D00
KrnBuf256 .EQ $0D00 Main
*--------------------------------------
K.MLI.PARAMS .EQ $0E00 Main, 18 bytes min for GetFileInfo
K.MLI.PATH .EQ K.MLI.PARAMS+18

View File

@ -46,6 +46,7 @@ K.FOpen jsr PFT.CheckPathSTK
sta K.MLI.PARAMS+7
ldx #3
.1 lda DATELO,x
sta K.MLI.PARAMS+8,x
dex
@ -111,7 +112,7 @@ K.FOpen.10 >PUSHWI S.NODE.REG
lda hFILE
clc
rts CC
.98 pha save MLI error
lda hFILE
jsr K.FCloseA.1
@ -134,18 +135,18 @@ K.FCloseA jsr PFT.CheckNodeA
sta K.FCloseA.2+1
jsr K.GetMemPtrA
>STYA ZPPtr1
K.FCloseA.1 ldy #S.NODE.REG.REF
lda (ZPPtr1),y
beq .1
sta K.MLI.PARAMS+1
>MLICALL MLICLOSE
.1 ldy #S.NODE.REG.IOBUF
lda (ZPPtr1),y
beq K.FCloseA.2
jsr K.FreeMemA
K.FCloseA.2 lda #$ff Self Modified
jmp K.FreeMemA
*/--------------------------------------
@ -239,28 +240,28 @@ K.FSeek jsr PFT.CheckNodeSTK
>PULLB K.FSeek.FROM
>PULLW K.FSeek.OFFSET
>PULLW K.FSeek.OFFSET+2
lda K.FSeek.FROM
* cmp #SYS.FSeek.SET =0
bne .1
stz K.MLI.PARAMS+2
stz K.MLI.PARAMS+3
stz K.MLI.PARAMS+4
bra .8
.1 cmp #SYS.FSeek.CUR
bne .2
>MLICALL MLIGETMARK
bcc .8
rts
.2 cmp #SYS.FSeek.END
bne .98
>MLICALL MLIGETEOF
bcs .9
.8 lda K.MLI.PARAMS+2
adc K.FSeek.OFFSET
sta K.MLI.PARAMS+2
@ -271,7 +272,7 @@ K.FSeek jsr PFT.CheckNodeSTK
adc K.FSeek.OFFSET+2
sta K.MLI.PARAMS+4
bcs .99 Offset out of range!
>MLICALL MLISETMARK
.9 rts
@ -314,10 +315,10 @@ K.FEOFA jsr PFT.CheckNodeA
bcs .9
>STYA K.FEOFA.MARK
stx K.FEOFA.MARK+2
>MLICALL MLIGETEOF
bcs .9
sec
lda K.MLI.PARAMS+2
sbc K.FEOFA.MARK
@ -371,7 +372,7 @@ FILE.SetIOBUF >PUSHWI 1024 get a ProDOS IOBUF
>PUSHBI S.MEM.F.ALIGN+S.MEM.F.NOMOVE
jsr K.GetMem
bcs .9
>STYA K.MLI.PARAMS+3 Save Ptr to IOBUF for MLIOPEN call
txa
ldy #S.NODE.REG.IOBUF
@ -388,20 +389,20 @@ FILE.SetupPrt1A jsr K.GetMemPtrA
FILE.MLI2STAT lda K.MLI.PARAMS+S.FILEINFO.ACCESS
cmp #S.FILEINFO.ACCESS.FULL
bne .1
lda #S.STAT.MODE.XO+S.STAT.MODE.WO+S.STAT.MODE.RO
bra .2
.1 and #S.FILEINFO.ACCESS.R
beq .2
lda #S.STAT.MODE.XO+S.STAT.MODE.RO
.2 ldy #S.STAT.MODE
sta (ZPPtr2),y
ldx #2
ldy #S.STAT.P.TYPE+2
.3 lda K.MLI.PARAMS+S.FILEINFO.TYPE,x
sta (ZPPtr2),y
dey

23
_MAKEBOOT.txt Normal file
View File

@ -0,0 +1,23 @@
PR#3
NEW
INC 1
AUTO 6
PREFIX /A2OSX.BUILD
echo \fBuilding A2OSX.BOOT Media...
format S6D1 A2OSX.BOOT
cp PRODOS /A2OSX.BOOT
cp -R SYS /A2OSX.BOOT
cp -R DRV /A2OSX.BOOT
cp -R LIB /A2OSX.BOOT
cp -R SBIN /A2OSX.BOOT
md /A2OSX.BOOT/BIN
cp BIN/* /A2OSX.BOOT/BIN
md /A2OSX.BOOT/ETC
md /A2OSX.BOOT/SRV
md /A2OSX.BOOT/USR
cp A2OSX.SYSTEM /A2OSX.BOOT
cp A2OSX.STARTUP /A2OSX.BOOT
MAN
TEXT MAKEBOOT