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

View File

@ -8,12 +8,16 @@ AUTO 6
.OR $2000 .OR $2000
.TF /A2OSX.BUILD/BIN/CHTYP .TF /A2OSX.BUILD/BIN/CHTYP
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB /A2OSX.BUILD/INC/MACROS.I
.INB INC/A2OSX.I .INB /A2OSX.BUILD/INC/A2OSX.I
*--------------------------------------
X.COPY.TO.DEST .EQ 0
X.DELETE.SOURCE .EQ 0
*-------------------------------------- *--------------------------------------
ZPPtr1 .EQ ZPBIN ZPPtr1 .EQ ZPBIN
ZPPtr2 .EQ ZPBIN+2 ZPPtr2 .EQ ZPBIN+2
ZPPtr3 .EQ ZPBIN+4 ZPFileName .EQ ZPBIN+4
ZPFileStat .EQ ZPBIN+6
*-------------------------------------- *--------------------------------------
* File Header (16 Bytes) * File Header (16 Bytes)
*-------------------------------------- *--------------------------------------
@ -36,214 +40,143 @@ CS.START cld
L.MSG.USAGE .DA MSG.USAGE L.MSG.USAGE .DA MSG.USAGE
L.MSG.OK .DA MSG.OK L.MSG.OK .DA MSG.OK
L.MSG.ERR .DA MSG.ERR L.MSG.ERR .DA MSG.ERR
L.FullPath .DA FullPath L.STAT .DA STAT
L.PRODOS.FT.TXT .DA PRODOS.FT.TXT-1 L.PRODOS.FT.TXT .DA PRODOS.FT.TXT-1
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT ldy #S.PS.hARGS CS.INIT >SYSCALL GetArgC
lda (pPs),y sta ArgCount
.1 dec ArgCount
beq .98 beq .98
>PUSHA lda ArgCount
>PUSHBI $20 Push SEP=' ' >SYSCALL GetArgA
>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
>STYA ZPPtr1 >STYA ZPPtr1
lda (ZPPtr1) lda (ZPPtr1)
beq .98 cmp #2
bne .4
ldy #1 ldy #1
lda (ZPPtr1),y lda (ZPPtr1),y
cmp #'/' cmp #'-'
bne .10 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 iny
lda (ZPPtr1),y lda (ZPPtr1),y
sta FullPath,x
tya
cmp (ZPPtr1)
bne .3
stx FullPath ldx OptionList
>LDYA L.FullPath .2 cmp OptionList,x
>SYSCALL PStrOutYA beq .3
dex
bne .2
>LDYA L.FullPath bra .98
>SYSCALL MLIGetFileInfoYA
bcs .5
>STYA ZPPtr3
.3 ldy OptionVars-1,x
lda #$80
sta (pData),y
bra .1
>LDYA L.MSG.OK .4 >LDYA ZPPtr1
>SYSCALL PStrOutYA jsr InitSrcDirYA
bra .8 bcs .9
.5 >PUSHA bra .1 scan for any other args
>LDYA L.MSG.ERR
>SYSCALL PStrOutYA
.8 pla .98 >LDYA L.MSG.USAGE
>SYSCALL FreeMemA >SYSCALL PPrintFYA
clc .99 lda #SYSMGR.ERRSYN
rts sec
.9 rts
*-------------------------------------- *--------------------------------------
CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device? CS.RUN >SYSCALL GetC
lda (pEvent),y bcs .10 no char
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
cmp #$03 Ctrl-C cmp #$03 Ctrl-C
bne .1 beq .92 Abort....
lda #$FF cmp #$13 Ctrl-S
ldy #bCANCEL bne .10
sta (pData),y
bra .8
.1 cmp #$13 Ctrl-S ldy #bPause
bne .8
ldy #bSTOP
lda (pData),y lda (pData),y
eor #$FF eor #$ff
sta (pData),y 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 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 rts
*-------------------------------------- *--------------------------------------
CS.QUIT ldy #hS.LISTDIR CS.QUIT jsr LeaveSubDir
lda (pData),y bcc CS.QUIT
beq .1
>SYSCALL ListDirCloseA
.1 ldy #hDIRPATH ldy #hFilter
lda (pData),y
beq .2
>SYSCALL FreeMemA
.2 ldy #hArg2
lda (pData),y lda (pData),y
beq .3 beq .3
>SYSCALL FreeMemA >SYSCALL FreeMemA
.3 ldy #hArg1 .3 clc
lda (pData),y
beq .8
>SYSCALL FreeMemA
.8 clc
rts rts
*-------------------------------------- *--------------------------------------
GetHexFileTypeA >SYSCALL GetMemPtrA GetHexFileTypeA >SYSCALL GetMemPtrA
@ -254,7 +187,7 @@ GetHexFileTypeA >SYSCALL GetMemPtrA
ldy #1 ldy #1
lda (ZPPtr1),y lda (ZPPtr1),y
cmp #'$' cmp #'%'
bne .1 bne .1
iny iny
@ -317,12 +250,19 @@ GetHexFileTypeA >SYSCALL GetMemPtrA
.9 sec .9 sec
rts rts
*--------------------------------------
.INB /A2OSX.SRC/BIN/X.FILEENUM.S
*-------------------------------------- *--------------------------------------
CS.END 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.OK >PSTR " [Ok]\n"
MSG.ERR >PSTR " [%h]\n" MSG.ERR >PSTR " [%h]\n"
FullPath .BS 64 STAT .BS S.STAT
ArgCount .BS 1
Tmp .BS 1 Tmp .BS 1
*-------------------------------------- *--------------------------------------
PRODOS.FT.COUNT .EQ 7 PRODOS.FT.COUNT .EQ 7
@ -338,12 +278,14 @@ PRODOS.FT.TXT .AS "TXT"
.DUMMY .DUMMY
.OR 0 .OR 0
DS.START DS.START
hDIRPATH .BS 1 Index .BS 1
hS.LISTDIR .BS 1 hDIRs .BS X.MAX.RECURSE
hArg1 .BS 1 hDIRENTs .BS X.MAX.RECURSE
hArg2 .BS 1 oDIRENTs .BS X.MAX.RECURSE*2
bSTOP .BS 1 hSrcBasePath .BS 1
bCANCEL .BS 1 hFilter .BS 1
bPause .BS 1
bRecurse .BS 1
HexFileType .BS 1 HexFileType .BS 1
DS.END DS.END
.ED .ED

View File

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

View File

@ -449,7 +449,6 @@ CS.RUN.CopyStart
jsr CS.RUN.GetFilePath jsr CS.RUN.GetFilePath
>PUSHWI UsrBuf256 >PUSHWI UsrBuf256
>SYSCALL FOpen >SYSCALL FOpen
bcs .99 bcs .99
@ -467,7 +466,6 @@ CS.RUN.CopyStart
jsr CS.RUN.GetFilePath jsr CS.RUN.GetFilePath
>PUSHWI UsrBuf256 >PUSHWI UsrBuf256
>SYSCALL FOpen >SYSCALL FOpen
bcs .9 bcs .9
@ -628,10 +626,12 @@ CS.QUIT jsr LeaveSubDir
.2 ldy #hFilter .2 ldy #hFilter
lda (pData),y lda (pData),y
beq .8 beq .8
>SYSCALL FreeMemA * >SYSCALL FreeMemA
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE /A2OSX.SRC/BIN/X.CPMVRM.S 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 !!! lda (ZPFileName) Empty !!!
bne .8 bne .8
txa * txa
>SYSCALL FreeMemA * >SYSCALL FreeMemA
sec sec
rts 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 $200 -> 3FD : /RAM Driver
* Aux $3FE -> 3FF : IRQ Vector * Aux $3FE -> 3FF : IRQ Vector
*-------------------------------------- *--------------------------------------
UsrBuf256 .EQ $0200 Main
*--------------------------------------
*D.STACK.BASE .EQ $0300 $03EF... *D.STACK.BASE .EQ $0300 $03EF...
D.STACK.TOP .EQ $03F0 ...Down to $0300 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 $400 -> $7FF : Console Screen
* Main/Aux $800 -> $BFF : System 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.PARAMS .EQ $0E00 Main, 18 bytes min for GetFileInfo
K.MLI.PATH .EQ K.MLI.PARAMS+18 K.MLI.PATH .EQ K.MLI.PARAMS+18

View File

@ -46,6 +46,7 @@ K.FOpen jsr PFT.CheckPathSTK
sta K.MLI.PARAMS+7 sta K.MLI.PARAMS+7
ldx #3 ldx #3
.1 lda DATELO,x .1 lda DATELO,x
sta K.MLI.PARAMS+8,x sta K.MLI.PARAMS+8,x
dex 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