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
CS.INIT >SYSCALL GetArgC
sta ArgCount
.1 dec ArgCount
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
jsr GetHexFileTypeA
bcs .99
ldy #hArg1
lda (pData),y
>SYSCALL GetMemPtrA
lda ArgCount
>SYSCALL GetArgA
>STYA ZPPtr1
lda (ZPPtr1)
beq .98
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
sec
rts
.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
bne .2
ldy #0
.3 inx
iny
lda (ZPPtr1),y
sta FullPath,x
tya
cmp (ZPPtr1)
bne .3
stx FullPath
ldx OptionList
>LDYA L.FullPath
>SYSCALL PStrOutYA
.2 cmp OptionList,x
beq .3
dex
bne .2
>LDYA L.FullPath
>SYSCALL MLIGetFileInfoYA
bcs .5
>STYA ZPPtr3
bra .98
.3 ldy OptionVars-1,x
lda #$80
sta (pData),y
bra .1
>LDYA L.MSG.OK
>SYSCALL PStrOutYA
bra .8
.4 >LDYA ZPPtr1
jsr InitSrcDirYA
bcs .9
.5 >PUSHA
>LDYA L.MSG.ERR
>SYSCALL PStrOutYA
bra .1 scan for any other args
.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
CS.RUN >SYSCALL GetC
bcs .10 no char
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
cmp #$03 Ctrl-C
bne .1
beq .92 Abort....
lda #$FF
ldy #bCANCEL
sta (pData),y
bra .8
cmp #$13 Ctrl-S
bne .10
.1 cmp #$13 Ctrl-S
bne .8
ldy #bSTOP
ldy #bPause
lda (pData),y
eor #$FF
eor #$ff
sta (pData),y
bne .80
.8 clc
.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
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

@ -449,7 +449,6 @@ CS.RUN.CopyStart
jsr CS.RUN.GetFilePath
>PUSHWI UsrBuf256
>SYSCALL FOpen
bcs .99
@ -467,7 +466,6 @@ CS.RUN.CopyStart
jsr CS.RUN.GetFilePath
>PUSHWI UsrBuf256
>SYSCALL FOpen
bcs .9
@ -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

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