Kernel 0.93+

This commit is contained in:
Rémy GIBERT 2019-08-26 08:29:18 +02:00
parent e868aa8f5b
commit 64e8b83244
15 changed files with 423 additions and 531 deletions

Binary file not shown.

Binary file not shown.

View File

@ -23,13 +23,9 @@ CSH.CmdSave .BS 1
CSH.ACCT .BS 1 CSH.ACCT .BS 1
CSH.ACC .BS 5 CSH.ACC .BS 5
CSH.EXPBOP1 .BS 1
CSH.ARGT .BS 1 CSH.ARGT .BS 1
CSH.ARG .BS 5 CSH.ARG .BS 5
CSH.EXPBOP2 .BS 1
CSH.LookupOpt .BS 1 CSH.LookupOpt .BS 1
*-------------------------------------- *--------------------------------------
MAN MAN

View File

@ -2,12 +2,25 @@ NEW
AUTO 3,1 AUTO 3,1
.LIST OFF .LIST OFF
*-------------------------------------- *--------------------------------------
CSH.Q.CONST .EQ %10000000
CSH.Q.POINTER .EQ %00100000
CSH.Q.PPOINTER .EQ %01000000
CSH.Q.PPPOINTER .EQ %01100000
CSH.T.CHAR .EQ 1
CSH.T.INT .EQ 2
CSH.T.LONG .EQ 3
CSH.T.UCHAR .EQ 4
CSH.T.UINT .EQ 5
CSH.T.ULONG .EQ 6
CSH.T.FLOAT .EQ 7
CSH.T.VARIADIC .EQ $1F
*--------------------------------------
CSH.OPChars .AS "!~+-*/%=&|^&<>" CSH.OPChars .AS "!~+-*/%=&|^&<>"
CSH.OPChars.Cnt .EQ *-CSH.OPChars CSH.OPChars.Cnt .EQ *-CSH.OPChars
*-------------------------------------- *--------------------------------------
* Pre Operators: + - ! ~ ++ -- * Pre Operators: + - ! ~ ++ --
*-------------------------------------- *--------------------------------------
CSH.PREOOPS >PSTR "+" CSH.PREOPS >PSTR "+"
>PSTR "-" >PSTR "-"
>PSTR "!" >PSTR "!"
>PSTR "~" >PSTR "~"
@ -32,7 +45,7 @@ CSH.AOPS >PSTR "="
>PSTR "^=" >PSTR "^="
>PSTR "!=" >PSTR "!="
.HS 00 .HS 00
*-- Binary ---- H to L prececence ----- *-- Binary ---- H to L precedence -----
* Arithmetic Operators: * / % * Arithmetic Operators: * / %
* Arithmetic Operators: + - * Arithmetic Operators: + -
* Shift Operators: << >> * Shift Operators: << >>
@ -77,23 +90,19 @@ CSH.KW >PSTR "if"
CSH.STYPES >PSTR "char" CSH.STYPES >PSTR "char"
>PSTR "int" >PSTR "int"
>PSTR "long" >PSTR "long"
.HS 00 * .HS 00
CSH.TSIZE .HS 0001020401020405 00,CHAR,INT,LONG,UCHAR,UINT,ULONG,FLOAT.... CSH.TSIZE .HS 0001020401020405 00,CHAR,INT,LONG,UCHAR,UINT,ULONG,FLOAT....
*-------------------------------------- *--------------------------------------
* int printf ( const char * format, ... ); * int printf ( const char * format, ... );
CSH.FN >PSTR "printf" CSH.FN >PSTR "printf"
.DA #CSH.T.INT returned value .DA #CSH.T.INT returned value
.DA #CSH.Q.CONST .DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.CHAR
.DA #CSH.T.CHAR
.DA #CSH.Q.POINTER
.DA #CSH.T.VARIADIC .DA #CSH.T.VARIADIC
.DA #0 .DA #0
* int puts ( const char * str ); * int puts ( const char * str );
>PSTR "puts" >PSTR "puts"
.DA #CSH.T.INT returned value .DA #CSH.T.INT returned value
.DA #CSH.Q.CONST .DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.CHAR
.DA #CSH.T.CHAR
.DA #CSH.Q.POINTER
.DA #0 .DA #0
* float cos ( float x ); * float cos ( float x );
>PSTR "cos" >PSTR "cos"
@ -104,6 +113,8 @@ CSH.FN >PSTR "printf"
>PSTR "getchar" >PSTR "getchar"
.DA #CSH.T.INT returned value .DA #CSH.T.INT returned value
.DA #0 .DA #0
.DA #0
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE USR/SRC/BIN/CSH.I SAVE USR/SRC/BIN/CSH.I

View File

@ -47,6 +47,11 @@ J.CSH.KW.START .DA CSH.IF.START
J.CSH.KW.END .DA CSH.IF.END J.CSH.KW.END .DA CSH.IF.END
.DA CSH.WHILE.END .DA CSH.WHILE.END
*-------------------------------------- *--------------------------------------
J.CSH.EXEC .DA EXEC.printf
.DA EXEC.puts
.DA EXEC.cos
.DA EXEC.getchar
*--------------------------------------
MAN MAN
SAVE USR/SRC/BIN/CSH.R SAVE USR/SRC/BIN/CSH.R
LOAD USR/SRC/BIN/CSH.S LOAD USR/SRC/BIN/CSH.S

View File

@ -2,22 +2,8 @@ NEW
AUTO 3,1 AUTO 3,1
.LIST OFF .LIST OFF
*-------------------------------------- *--------------------------------------
CSH.Q.CONST .EQ %10000000 CSH.Init >SYSCALL SListNew
CSH.Q.POINTER .EQ %10000001
CSH.T.CHAR .EQ 1
CSH.T.INT .EQ 2
CSH.T.LONG .EQ 3
CSH.T.UCHAR .EQ 4
CSH.T.UINT .EQ 5
CSH.T.ULONG .EQ 6
CSH.T.FLOAT .EQ 7
CSH.T.VARIADIC .EQ $F
*--------------------------------------
CSH.Init >LDYAI 256
>SYSCALL GetMem0
bcs .9 bcs .9
>STYA ZPCSHSymbols
txa
>STA.G CSH.hSymbols >STA.G CSH.hSymbols
>LDYAI 256 >LDYAI 256
@ -27,13 +13,6 @@ CSH.Init >LDYAI 256
txa txa
>STA.G CSH.hConst >STA.G CSH.hConst
>LDYAI 256
>SYSCALL GetMem
bcs .9
>STYA ZPCSHData
txa
>STA.G CSH.hData
>LDYAI 256 >LDYAI 256
>SYSCALL GetMem >SYSCALL GetMem
bcs .9 bcs .9
@ -42,33 +21,28 @@ CSH.Init >LDYAI 256
>STA.G CSH.hStack >STA.G CSH.hStack
lda #$0 lda #$0
>STA.G CSH.SymbolsPtr
>STA.G CSH.ConstPtr >STA.G CSH.ConstPtr
>STA.G CSH.DataPtr
>STA.G CSH.StackPtr >STA.G CSH.StackPtr
sta (ZPCSHSymbols)
sta (ZPCSHConst) sta (ZPCSHConst)
sta (ZPCSHData)
sta (ZPCSHStack) sta (ZPCSHStack)
* clc * clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CSH.Quit >LDA.G hFileBuf CSH.Quit >LDA.G CSH.hSymbols
beq .1 >SYSCALL SListFree
>SYSCALL FreeMem
.1 >LDA.G CSH.hStack >LDA.G hFileBuf
beq .2 jsr .7
>SYSCALL FreeMem
.2 >LDA.G CSH.hData >LDA.G CSH.hStack
beq .3 jsr .7
>SYSCALL FreeMem
.3 >LDA.G CSH.hSymbols >LDA.G CSH.hConst
beq CSH.Quit.RTS jsr .7
.7 beq CSH.Quit.RTS
>SYSCALL FreeMem >SYSCALL FreeMem
CSH.Quit.RTS rts CSH.Quit.RTS rts
@ -86,7 +60,7 @@ CSH.Run jsr CSH.GetCharNB
tax tax
jmp (J.CSH.KW.END,x) jmp (J.CSH.KW.END,x)
.1 cmp #$0D .1 cmp #C.CR
bne .2 bne .2
jmp CSH.GetNextCharNB Skip CR and exit jmp CSH.GetNextCharNB Skip CR and exit
@ -112,7 +86,7 @@ CSH.Run jsr CSH.GetCharNB
jmp (J.CSH.KW,x) jmp (J.CSH.KW,x)
.4 jsr CSH.GetVar .4 jsr CSH.GetVarValue
bcs .5 bcs .5
jsr CSH.GetCharNB jsr CSH.GetCharNB
@ -135,14 +109,10 @@ CSH.Run jsr CSH.GetCharNB
jmp CSH.GetNextCharNB Skip ; jmp CSH.GetNextCharNB Skip ;
.5 >LDYA L.CSH.FN .5 lda #0 no return value type check required
jsr CSH.LookupFn jsr CSH.FnEval X = function index
bcs .99
>STZ.G CSH.ACCT no retrun value type check required
jsr CSH.FnEval
bcs .9 bcs .9
jmp CSH.GetNextCharNB Skip ; jmp CSH.GetNextCharNB Skip ;
.99 lda #CSH.E.SYNTAX .99 lda #CSH.E.SYNTAX
@ -159,6 +129,8 @@ CSH.Run jsr CSH.GetCharNB
clc clc
rts rts
*-------------------------------------- *--------------------------------------
* Built in Keywords
*--------------------------------------
CSH.WHILE CSH.WHILE
CSH.IF jsr CSH.GetCharNB CSH.IF jsr CSH.GetCharNB
bcs .9 bcs .9
@ -259,9 +231,11 @@ CSH.CONTINUE
sec sec
rts rts
*-------------------------------------- *--------------------------------------
* Built in Types
*--------------------------------------
CSH.SIGNED jsr CSH.GetChar CSH.SIGNED jsr CSH.GetChar
bcs .9 bcs .9
cmp #' ' cmp #C.SPACE
bne .9 bne .9
jsr CSH.GetNextCharNB jsr CSH.GetNextCharNB
@ -280,7 +254,7 @@ CSH.SIGNED jsr CSH.GetChar
*-------------------------------------- *--------------------------------------
CSH.UNSIGNED jsr CSH.GetChar CSH.UNSIGNED jsr CSH.GetChar
bcs .9 bcs .9
cmp #' ' cmp #C.SPACE
bne .9 bne .9
jsr CSH.GetNextCharNB jsr CSH.GetNextCharNB
@ -297,25 +271,27 @@ CSH.UNSIGNED jsr CSH.GetChar
sec sec
rts rts
*-------------------------------------- *--------------------------------------
CSH.CHAR lda #CSH.T.CHAR CSH.CHAR ldx #CSH.T.CHAR
bra CSH.TYPE bra CSH.TYPE
CSH.UCHAR lda #CSH.T.UCHAR CSH.UCHAR ldx #CSH.T.UCHAR
bra CSH.TYPE bra CSH.TYPE
CSH.INT lda #CSH.T.INT CSH.INT ldx #CSH.T.INT
bra CSH.TYPE bra CSH.TYPE
CSH.UINT lda #CSH.T.UINT CSH.UINT ldx #CSH.T.UINT
bra CSH.TYPE bra CSH.TYPE
CSH.LONG lda #CSH.T.LONG CSH.LONG ldx #CSH.T.LONG
bra CSH.TYPE bra CSH.TYPE
CSH.ULONG lda #CSH.T.ULONG CSH.ULONG ldx #CSH.T.ULONG
bra CSH.TYPE bra CSH.TYPE
CSH.FLOAT lda #CSH.T.FLOAT CSH.FLOAT ldx #CSH.T.FLOAT
CSH.TYPE stx ZPVarType
CSH.TYPE >STA.G CSH.ACCT
jsr CSH.GetChar jsr CSH.GetChar
bcs .9 bcs .9
cmp #' '
cmp #C.SPACE
bne .9 bne .9
jsr CSH.GetNextCharNB jsr CSH.GetNextCharNB
@ -324,11 +300,11 @@ CSH.TYPE >STA.G CSH.ACCT
jsr CSH.IsLetter jsr CSH.IsLetter
bcs .9 bcs .9
jsr CSH.GetVar Already exists ? txa VAR TYPE
bcc .90 jsr CSH.AddVar add with undefined value...
bcs .99 OOM or DUP
jsr CSH.AddVar No, add with undefined value... >STYA ZPVarID
bcs .99
jsr CSH.GetCharNB jsr CSH.GetCharNB
bcs .9 bcs .9
@ -341,6 +317,7 @@ CSH.TYPE >STA.G CSH.ACCT
jsr CSH.GetNextCharNB jsr CSH.GetNextCharNB
bcs .9 bcs .9
lda ZPVarType
jsr CSH.ExpEval jsr CSH.ExpEval
bcs .99 bcs .99
@ -364,29 +341,134 @@ CSH.TYPE >STA.G CSH.ACCT
sec sec
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
CSH.ExpEval jsr CSH.ZeroACC * Input:
* ZPFileBufPtr, A = Expected type
* Output:
* CS, A = EC
* CC, A, Y,A or x bytes on Stack
*--------------------------------------
CSH.FnEval ldx ZPPtr1
phx
ldx ZPPtr1+1
phx
ldx ZPPtr2
phx
sta ZPPtr2 save Type
>LDYA L.CSH.FN
jsr CSH.LookupFn
phx X = function index
bcs .90
>STYA ZPPtr1 f() definition, starting at returned type
jsr CSH.GetCharNB
bcs .90
cmp #'('
bne .90
jsr CSH.GetNextCharNB skip '('
bcs .90
lda ZPPtr2 Expected type in 0, ignore
beq .1
cmp (ZPPtr1) Get Return value Type
bne .91
.1 inc ZPPtr1 advance to arg list type
bne .2
inc ZPPtr1+1
.2 lda (ZPPtr1) get type of next arg
beq .7 end of list, go check ending ')'
.3 eor #CSH.T.VARIADIC if VARIADIC, don't advance to next arg and assume type = 0
beq .4
lda (ZPPtr1) get type again...
inc ZPPtr1
bne .4
inc ZPPtr1+1
.4 jsr CSH.ExpEval
bcs .9
lda (ZPPtr1) no more arg in fn definition
beq .7
.5 jsr CSH.GetCharNB
bcs .9
cmp #','
bne .90
jsr CSH.GetNextCharNB Skip ,
lda (ZPPtr1)
bne .3 Another ARG....
bra .9
.7 jsr CSH.GetCharNB
bcs .90
cmp #')'
bne .90
jsr CSH.GetNextCharNB Skip )
jsr .9
jmp (J.CSH.EXEC,x)
.90 lda #CSH.E.SYNTAX
.HS 2C BIT ABS
.91 lda #CSH.E.TMISMATCH
sec
.9 plx
stx ZPPtr2
plx
stx ZPPtr1+1
plx
stx ZPPtr1
plx
.99 rts
*--------------------------------------
* Input:
* ZPFileBufPtr, A = Expected type
* Output:
* CS, A = EC
* CC, A, Y,A or x bytes on Stack
*--------------------------------------
CSH.ExpEval ldx ZPPtr2
phx
ldx ZPPtr2+1 One local : BOP1
phx
sta ZPPtr2 save Type
jsr CSH.ZeroACC
.10 lda #$ff .10 lda #$ff
>STA.G CSH.EXPBOP1 Reset BOP1 sta ZPPtr2+1 Reset BOP1
jsr CSH.GetCharNB jsr CSH.GetCharNB
bcs .9 bcs .9
jsr CSH.IsLetter Fnc or Var ? .20 jsr CSH.IsLetter Fnc or Var ?
bcs .2 bcs .2
jsr CSH.GetVar jsr CSH.GetVarValue
bcs .1 bcs .1
jsr CSH.LoadACCFromVar
bcs .9
bra .11 bra .11
.1 >LDYA L.CSH.FN .1 jsr CSH.FnEval X = function index
jsr CSH.LookupFn
bcs .9
jsr CSH.FnEval
bcs .99 bcs .99
bra .11 bra .11
@ -399,6 +481,8 @@ CSH.ExpEval jsr CSH.ZeroACC
.11 jsr CSH.GetCharNB .11 jsr CSH.GetCharNB
bcs .9 bcs .9
cmp #','
beq .8
cmp #')' cmp #')'
beq .8 beq .8
cmp #';' cmp #';'
@ -411,19 +495,17 @@ CSH.ExpEval jsr CSH.ZeroACC
jsr CSH.LookupOP jsr CSH.LookupOP
bcs .9 bcs .9
>LDA.G CSH.EXPBOP1 previous OP... lda ZPPtr2+1 previous OP...
bpl .5 go check precedence bpl .5 go check precedence
txa stx ZPPtr2+1
>STA.G CSH.EXPBOP1
jsr CSH.ACC2ARG jsr CSH.ACC2ARG
jsr CSH.GetCharNB jsr CSH.GetCharNB
bcc .10 go check for an ARG bcc .20 go check for an ARG
bra .9 bra .9
.3 >DEBUG .3 cmp #'"' String literal
cmp #'"' String litteral
bne .9 bne .9
@ -434,13 +516,16 @@ CSH.ExpEval jsr CSH.ZeroACC
jmp .11 jmp .11
.9 lda #CSH.E.SYNTAX .9 plx
stx ZPPtr2+1
plx
stx ZPPtr2
lda #CSH.E.SYNTAX
sec sec
.99 rts .99 rts
.5 txa .5 cpx ZPPtr2+1
>STA.G CSH.EXPBOP2
>CMP.G CSH.EXPBOP1
bcs .6 bcs .6
* new OP has precedence, stack ACC * new OP has precedence, stack ACC
@ -450,7 +535,7 @@ CSH.ExpEval jsr CSH.ZeroACC
jmp .10 jmp .10
* Old OP has precedence, compute ACC=ARG <BOP> ACC * Old OP has precedence, compute ACC=ARG <BOP> ACC
.6 >LDA.G CSH.EXPBOP1 .6 lda ZPPtr2+1
jsr CSH.Compute jsr CSH.Compute
bcs .9 bcs .9
@ -458,12 +543,17 @@ CSH.ExpEval jsr CSH.ZeroACC
bcs .9 bcs .9
jmp .10 jmp .10
.8 >LDA.G CSH.EXPBOP1 .8 lda ZPPtr2+1
bmi .80 bmi .80
jmp CSH.Compute jmp CSH.Compute
.80 clc .80 plx
stx ZPPtr2+1
plx
stx ZPPtr2
clc
rts rts
*-------------------------------------- *--------------------------------------
CSH.AddContCharP CSH.AddContCharP
@ -483,12 +573,15 @@ CSH.AddContCharP
.2 lda #0 .2 lda #0
sta (ZPCSHConst),y sta (ZPCSHConst),y
lda ZPCSHConst phy
pha
lda ZPCSHConst+1
pha
tya lda #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.CHAR
>STA.G CSH.ACCT
>LDYA ZPCSHConst
>STYA.G CSH.ACC
pla
sec sec
adc ZPCSHConst adc ZPCSHConst
sta ZPCSHConst sta ZPCSHConst
@ -496,84 +589,13 @@ CSH.AddContCharP
inc ZPCSHConst+1 inc ZPCSHConst+1
.3 pla .3 jsr CSH.GetNextCharNB Skip "
ply
clc
rts
.9 lda #CSH.E.SYNTAX
sec
rts
*--------------------------------------
CSH.FnEval jsr CSH.GetCharNB
bcs .9
cmp #'('
bne .9
>LDA.G CSH.ACCT Match with ACC ?
beq .10 ACC is VOID
cmp (ZPFnDefPtr) Get Return value Type
bne .99
.10 jsr CSH.GetNextCharNB skip '('
bcs .9
jsr CSH.PushACCT Save Acc & T on stack
.1 inc ZPFnDefPtr advance to arg list type
bne .2
inc ZPFnDefPtr+1
.2 lda (ZPFnDefPtr)
beq .7 end of list, go check no more
.20 jsr CSH.ExpEval
bcs .90
lda (ZPFnDefPtr)
cmp #CSH.T.VARIADIC
bne .3
bra *
.3 >CMP.G CSH.ACCT Match with ACC ?
bne .99
inc ZPFnDefPtr advance to next arg
bne .4
inc ZPFnDefPtr+1
.4 lda (ZPFnDefPtr) no more arg in fn definition
beq .7
jsr CSH.GetNextCharNB
bcs .9
cmp #','
bne .9
jsr CSH.GetNextCharNB
bra .20
.7 jsr CSH.GetCharNB
bcs .9
cmp #')'
bne .9
jsr CSH.GetNextCharNB Skip )
* TO DO : Execute
clc clc
rts rts
.9 lda #CSH.E.SYNTAX .9 lda #CSH.E.SYNTAX
sec sec
.90 rts
.99 lda #CSH.E.TMISMATCH
sec
rts rts
*-------------------------------------- *--------------------------------------
CSH.SavePtr >LDYA ZPFileBufPtr CSH.SavePtr >LDYA ZPFileBufPtr
@ -632,25 +654,20 @@ CSH.Lookup phy Y = len
.31 lda ZPPtr1 .31 lda ZPPtr1
sec sec
adc (ZPPtr1) adc (ZPPtr1)
sta ZPFnDefPtr tay
lda ZPPtr1+1 lda ZPPtr1+1
adc #0 adc #0
inc ZPFnDefPtr+1
clc clc Y,A = F() def, X = F() index
.8 rts .8 rts
.4 inx .4 inx
inx inx
lda ZPPtr1 lda (ZPPtr1)
sec jsr CSH.ZPPtr1AddAp1
adc (ZPPtr1)
sta ZPPtr1
bcc .5
inc ZPPtr1+1
.5 >LDA.G CSH.LookupOpt >LDA.G CSH.LookupOpt
bpl .1 bpl .1
ldy #$ff ldy #$ff
@ -659,11 +676,7 @@ CSH.Lookup phy Y = len
bne .6 bne .6
tya tya
sec jsr CSH.ZPPtr1AddAp1
adc ZPPtr1
sta ZPPtr1
bcc .1
inc ZPPtr1+1
bra .1 bra .1
.9 pla .9 pla
@ -686,7 +699,7 @@ CSH.GetNumInACC >LDA.G CSH.ACCT
>LDYA ZPFileBufPtr >LDYA ZPFileBufPtr
>SYSCALL StrToF >SYSCALL StrToF
bcs .9 * bcs .9
>PULLF.G CSH.ACC >PULLF.G CSH.ACC
clc clc
rts rts
@ -728,162 +741,76 @@ CSH.ACC2ARG >LEA.G CSH.ACCT
rts rts
*-------------------------------------- *--------------------------------------
* Vars... * Input : ZPFileBufPtr, A = Var Type, Value on Stack
* Output : Y,A = ZPVarID
*-------------------------------------- *--------------------------------------
CSH.AddVar jsr CSH.GetIDLen CSH.AddVar sta ZPVarType
sec >PUSHW ZPFileBufPtr
>ADC.G CSH.SymbolsPtr Enough room to store this symbol ? >LDA.G CSH.hSymbols
>SYSCALL SListNewKey
bcs .9
bcs .99 >STYA ZPVarID
txa
adc #1 Add One Byte for storing Ptr to DATA
bcs .99 Out of Symbols space
>LDA.G CSH.DataPtr
pha
>LDA.G CSH.ACCT
tax
sec +1 for Type
adc CSH.TSIZE,x
bcs .98 Out of Data Space
>LDA.G CSH.SymbolsPtr
pha
jsr CSH.GetIDLen
ply
sta (ZPCSHSymbols),y
iny
jsr CSH.GetChar
.1 sta (ZPCSHSymbols),y Store this symbol....
iny
jsr CSH.GetNextChar
jsr CSH.IsLetterOrDigit
bcc .1
pla Get Back Data Ptr
pha
sta (ZPCSHSymbols),y
iny
tya
>STA.G CSH.SymbolsPtr Mark new end of Symbols
pla Get again Data Ptr
clc
adc ZPCSHData
sta ZPCSHValue
lda #0
adc ZPCSHData+1
sta ZPCSHValue+1
>LDA.G CSH.ACCT
sta (ZPCSHValue)
* clc * clc
rts
.98 pla
.99 lda #CSH.E.OOM
sec
rts
*--------------------------------------
CSH.GetVar >LDYA ZPCSHSymbols
>STYA ZPPtr1
jsr CSH.GetIDLen
tax Save len
.1 lda (ZPPtr1)
beq .9
txa Get back len
cmp (ZPPtr1)
bne .3
tay
.2 lda (ZPPtr1),y
dey
cmp (ZPFileBufPtr),y
bne .3
tya
bne .2
lda (ZPPtr1)
inc
tay
lda (ZPPtr1),y Get Ptr to DATA
clc
adc ZPCSHData
sta ZPCSHValue
lda #0
adc ZPCSHData+1
sta ZPCSHValue+1
txa Get back len
clc
adc ZPFileBufPtr adc ZPFileBufPtr
sta ZPFileBufPtr sta ZPFileBufPtr
bcc .8 bcc .1
inc ZPFileBufPtr+1 inc ZPFileBufPtr+1
clc .1 ldy #2
.8 rts
.3 lda (ZPPtr1) lda ZPVarType
sec >PUSHA Push Var Type On stack...
adc ZPPtr1
sta ZPPtr1
bcc .4
inc ZPPtr1+1
.4 inc ZPPtr1 Skip Pointer to TYPE/DATA and #CSH.Q.PPPOINTER
bne .1 bne .2 Pointer, always 2 bytes
inc ZPPtr1+1
bra .1
.9 sec
rts
*--------------------------------------
CSH.LoadACCFromVar
>LDA.G CSH.ACCT
cmp (ZPCSHValue)
bne .9
lda ZPVarType
and #$1f
tax tax
lda CSH.TSIZE,x ldy CSH.TSIZE,x
tax Byte count to transfer
>LEA.G CSH.ACC .2 iny +1 for Type
>STYA ZPPtr1 lda #0
ldy #1 >PUSHYA DataLen
>PUSHW pStack
>PUSHW ZPVarID
>LDA.G CSH.hSymbols
>SYSCALL SListAddData
bcs .9
.1 lda (ZPCSHValue),y >LDYA ZPVarType
sta (ZPPtr1)
inc ZPPtr1
bne .2
inc ZPPtr1+1
.2 iny .9 rts
dex *--------------------------------------
bne .1 * Input : ZPFileBufPtr, A = Var Type
* Output : Value on Stack
*--------------------------------------
CSH.GetVarValue
sta ZPVarType
clc >PUSHW ZPFileBufPtr
rts >LDA.G CSH.hSymbols
>SYSCALL SListLookup
bcs .9
.9 lda #CSH.E.TMISMATCH >STYA ZPVarID
sec
rts txa
* clc
adc ZPFileBufPtr
sta ZPFileBufPtr
bcc .1
inc ZPFileBufPtr+1
.1
.9 rts
*-------------------------------------- *--------------------------------------
CSH.StoreACCToVar CSH.StoreACCToVar
>LDA.G CSH.ACCT >LDA.G CSH.ACCT
@ -944,7 +871,6 @@ CSH.IsACC0 >LDA.G CSH.ACCT
rts rts
*-------------------------------------- *--------------------------------------
CSH.Compute tax CSH.Compute tax
jmp (J.CSH.BOPS,x) jmp (J.CSH.BOPS,x)
*-------------------------------------- *--------------------------------------
CSH.BOPS.ADD CSH.BOPS.ADD
@ -964,7 +890,7 @@ CSH.BOPS.SUB >LDA.G CSH.ACCT
.8 >PUSHF.G CSH.ACC .8 >PUSHF.G CSH.ACC
>PUSHF.G CSH.ARG >PUSHF.G CSH.ARG
>SYSCALL FSUB >FPU FSUB
bcs .9 bcs .9
>PULLF.G CSH.ACC >PULLF.G CSH.ACC
@ -983,11 +909,11 @@ CSH.BOPS.DIV >LDA.G CSH.ACCT
clc clc
rts rts
.8 >PUSHEA.G CSH.ACC .8 >PUSHF.G CSH.ACC
>PUSHEA.G CSH.ARG >PUSHF.G CSH.ARG
>LEA.G CSH.ACC >FPU FDIV
>SYSCALL FDIV >PULLF.G CSH.ACC
clc
rts rts
CSH.BOPS.MOD CSH.BOPS.MOD
CSH.BOPS.SHL CSH.BOPS.SHL
@ -1010,9 +936,6 @@ CSH.BOPS.LOR
*-------------------------------------- *--------------------------------------
* Stack * Stack
*-------------------------------------- *--------------------------------------
CSH.PushACCT
CSH.Push pha CSH.Push pha
>LDA.G CSH.StackPtr >LDA.G CSH.StackPtr
inc inc
@ -1169,6 +1092,32 @@ CSH.IsDigit10 cmp #'0'
.9 sec .9 sec
rts rts
*-------------------------------------- *--------------------------------------
* EXEC
*--------------------------------------
EXEC.printf >LDYA.G CSH.ACC
>SYSCALL printf
bcs .9
>STYA.G CSH.ACC
.9 rts
*--------------------------------------
EXEC.puts >LDYA.G CSH.ACC
>SYSCALL puts
bcs .9
>STYA.G CSH.ACC
.9 rts
*--------------------------------------
EXEC.cos >FPU COS
>PULLF.G CSH.ACC
rts
*--------------------------------------
EXEC.getchar >SYSCALL getchar
>STA.G CSH.ACC
rts
*--------------------------------------
MAN MAN
SAVE USR/SRC/BIN/CSH.S.CORE SAVE USR/SRC/BIN/CSH.S.CORE
LOAD USR/SRC/BIN/CSH.S LOAD USR/SRC/BIN/CSH.S

View File

@ -17,18 +17,19 @@ NEW
.DUMMY .DUMMY
.OR ZPBIN .OR ZPBIN
ZS.START ZS.START
ZPFileBuf .BS 2
ZPFileBufPtr .BS 2
ZPCSHConst .BS 2
ZPCSHStack .BS 2
ZPPtr1 .BS 2 ZPPtr1 .BS 2
ZPPtr2 .BS 2 ZPPtr2 .BS 2
ZPPtr3 .BS 2 ZPPtr3 .BS 2
ZPFileBuf .BS 2
ZPFileBufPtr .BS 2
ZPFnDefPtr .BS 2
ZPCSHSymbols .BS 2 ZPVarID .BS 2
ZPCSHConst .BS 2 ZPVarType .BS 1
ZPCSHData .BS 2
ZPCSHValue .BS 2
ZPCSHStack .BS 2
ZS.END .ED ZS.END .ED
*-------------------------------------- *--------------------------------------
* File Header (16 Bytes) * File Header (16 Bytes)
@ -142,6 +143,7 @@ PrintErrMsg >LDYA ZPFileBuf
.2 lda (ZPPtr1) .2 lda (ZPPtr1)
beq .6 EoF beq .6 EoF
inc ZPPtr1 inc ZPPtr1
bne .3 bne .3
inc ZPPtr1+1 inc ZPPtr1+1
@ -208,6 +210,7 @@ CS.END
MSG.Greetings .AZ "\r\nCSH-Shell %d.%d\r\n\r\n" MSG.Greetings .AZ "\r\nCSH-Shell %d.%d\r\n\r\n"
MSG.ECHOCRLF .AZ "\r\n" MSG.ECHOCRLF .AZ "\r\n"
MSG.ERR .AZ "^\r\nLine #%D:" MSG.ERR .AZ "^\r\nLine #%D:"
*--------------------------------------
.INB USR/SRC/BIN/CSH.I .INB USR/SRC/BIN/CSH.I
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY

View File

@ -42,13 +42,11 @@ Prompt.Editor cmp #C.DEL
bcs .9 bcs .9
.8 clc .8 clc
rts .9 rts
.3 asl .3 asl
tax tax
jmp (J.CTRL,x) jmp (J.CTRL,x)
.9 rts
*-------------------------------------- *--------------------------------------
Ctrl.DEL jsr BUF.ComputeCOffset Ctrl.DEL jsr BUF.ComputeCOffset
@ -520,23 +518,21 @@ Ctrl.Z jsr BUF.ComputeCOffset
bcc Ctrl.Z.1 bcc Ctrl.Z.1
clc clc
rts Ctrl.Z.RTS rts
Ctrl.Z.1 jsr BUF.DelCharAtCursor Ctrl.Z.1 jsr BUF.DelCharAtCursor
bcs .9 bcs Ctrl.Z.RTS
cmp #C.CR did we DEL a CR ? cmp #C.CR did we DEL a CR ?
bne .1 bne .1
jsr SCRN.UpdateMain jsr SCRN.UpdateMain
bcs .9 bcs Ctrl.Z.RTS
jmp SCRN.UpdateStatusBar jmp SCRN.UpdateStatusBar
.1 jsr SCRN.UpdateCurrentLine .1 jsr SCRN.UpdateCurrentLine
bcs .9 bcs Ctrl.Z.RTS
jmp SCRN.UpdateStatusBar jmp SCRN.UpdateStatusBar
.9 rts
*-------------------------------------- *--------------------------------------
Prompt.Help >STZ.G PromptMode Prompt.Help >STZ.G PromptMode

View File

@ -137,7 +137,7 @@ SCRN.UpdateLineAtALenY
ldx #0 ldx #0
tay tay
jsr GotoXY jsr GotoXY
bcs .9 bcs SCRN.UpdateMain.9
>LDYA LineBufPtr >LDYA LineBufPtr
>STYA ZPPTR1 >STYA ZPPTR1
@ -179,13 +179,19 @@ SCRN.UpdateLineAtALenY
jsr SCRN.ToggleSel jsr SCRN.ToggleSel
.5 lda (BufPtr) .5 lda (BufPtr)
jsr SCRN.ToLineBuf
cmp #'\' cmp #'\'
beq .50
cmp #'%'
bne .51 bne .51
.50 pha
lda #'\'
jsr SCRN.ToLineBuf jsr SCRN.ToLineBuf
pla
.51 inc BufPtr .51 jsr SCRN.ToLineBuf
inc BufPtr
bne .6 bne .6
inc BufPtr+1 inc BufPtr+1

View File

@ -8,6 +8,7 @@ AUTO 4,1
*-------------------------------------- *--------------------------------------
.INB INC/MACROS.I .INB INC/MACROS.I
.INB INC/A2OSX.I .INB INC/A2OSX.I
.INB INC/MLI.E.I
.INB INC/KERNEL.I .INB INC/KERNEL.I
.INB INC/LIBBLKDEV.I .INB INC/LIBBLKDEV.I
*-------------------------------------- *--------------------------------------
@ -43,9 +44,11 @@ CS.START cld
.DA CS.QUIT .DA CS.QUIT
L.LIBBLKDEV .DA LIBBLKDEV L.LIBBLKDEV .DA LIBBLKDEV
L.MSG.USAGE .DA MSG.USAGE L.MSG.USAGE .DA MSG.USAGE
L.MSG.INIT .DA MSG.INIT
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.MSG.NOSIZE .DA MSG.NOSIZE
L.MSG.INIT .DA MSG.INIT
L.FMT.BLANK .DA FMT.BLANK
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT ldy #S.PS.ARGC CS.INIT ldy #S.PS.ARGC
@ -165,49 +168,13 @@ CS.RUN.InitCat >LDA.G CatSize
.1 >LDA.G VolName .1 >LDA.G VolName
bne .8 Volume name ok bne .8 Volume name ok
ldx #$ff >PUSHW A2osX.TIMER16
ldy #VolName-1 >PUSHW A2osX.RANDOM16
>PUSHBI 4
.2 inx >PUSHW L.FMT.BLANK
iny >LEA.G VolName
lda BLANK,x >SYSCALL sprintf
sta (pData),y rts
bne .2
lda A2osX.TIMER16
jsr A2CharAX
sta (pData),y
iny
txa
sta (pData),y
iny
lda A2osX.TIMER16+1
jsr A2CharAX
sta (pData),y
iny
txa
sta (pData),y
iny
lda A2osX.RANDOM16
jsr A2CharAX
sta (pData),y
iny
txa
sta (pData),y
iny
lda A2osX.RANDOM16+1
jsr A2CharAX
sta (pData),y
iny
txa
sta (pData),y
iny
lda #0
sta (pData),y
.8 clc .8 clc
rts rts
@ -218,7 +185,20 @@ CS.RUN.BuildCat >PUSHEA.G DIB
>SYSCALL GetDevStatus >SYSCALL GetDevStatus
bcs .99 bcs .99
>PUSHEA.G VolName >LDA.G DIB+S.DIB.SIZE
iny
ora (pData),y
bne .1
>PUSHBI 0
>LDYA L.MSG.NOSIZE
>SYSCALL printf
lda #MLI.E.IO
sec
rts
.1 >PUSHEA.G VolName
>PUSHW.G DIB+S.DIB.SIZE >PUSHW.G DIB+S.DIB.SIZE
>PUSHW ZPPtrDevName >PUSHW ZPPtrDevName
@ -298,39 +278,22 @@ CS.QUIT >LDA.G hBuf
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
A2CharAX pha
lsr
lsr
lsr
lsr
ora #$30
cmp #'9'+1
bcc .1
adc #6
.1 tax
pla
and #$0F
ora #$30
cmp #'9'+1
bcc .8
adc #6
.8 rts
*--------------------------------------
CS.END CS.END
*-------------------------------------- *--------------------------------------
OptionList >PSTR "Ll" LIBBLKDEV .AZ "libblkdev"
OptionVars .DA #bLL,#bLL hLIBBLKDEV .BS 1
*-------------------------------------- *--------------------------------------
MSG.USAGE .AS "Usage : FORMAT <BLOCKDEV> [VOLUME.NAME]\r\n" MSG.USAGE .AS "Usage : FORMAT <BLOCKDEV> [VOLUME.NAME]\r\n"
.AS " -L : Low-Level Format\r\n" .AS " -L : Low-Level Format\r\n"
.AZ " -1-9 : Catalog Size (Blocks)\r\n" .AZ " -1-9 : Catalog Size (Blocks)\r\n"
MSG.OK .AZ "[OK]" MSG.OK .AZ "[OK]"
MSG.ERR .AZ "[%h]\r\n" MSG.ERR .AZ "[%h]\r\n"
MSG.NOSIZE .AZ "Unable to get media size."
MSG.INIT .AZ "Formatting %s (%D Blks),Volname:%s..." MSG.INIT .AZ "Formatting %s (%D Blks),Volname:%s..."
FMT.BLANK .AZ "BLANK%H%H"
*-------------------------------------- *--------------------------------------
LIBBLKDEV .AZ "libblkdev" OptionList >PSTR "Ll"
BLANK .AZ "BLANK" OptionVars .DA #bLL,#bLL
hLIBBLKDEV .BS 1
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY
.OR 0 .OR 0

View File

@ -176,7 +176,10 @@ CS.RUN.DEV lda #E.BADPATH
sec sec
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.DIR lda (ZPFileName) CS.RUN.DIR >LDA.G bRecurse
bpl .8
lda (ZPFileName)
cmp #'.' cmp #'.'
beq .8 beq .8
@ -191,12 +194,8 @@ CS.RUN.DIR lda (ZPFileName)
jsr CS.RUN.CheckErr jsr CS.RUN.CheckErr
>LDA.G bRecurse
bpl .8
>LDYA ZPFileName >LDYA ZPFileName
jsr EnterSubDirYA jmp EnterSubDirYA
rts
.8 clc .8 clc
.9 rts .9 rts

View File

@ -46,8 +46,7 @@ Dev.Detect >LDYA L.MSG.DETECT
cmp #MACHID.T.IIc cmp #MACHID.T.IIc
bne .1 bne .1
lda #$80 * stz DCB+S.DCB.GFX.S //c : 80c Mode
sta DCB+S.DCB.GFX.S $80=//c
>LDYA L.MSG.DETECT.IIC >LDYA L.MSG.DETECT.IIC
@ -82,6 +81,8 @@ Dev.Detect >LDYA L.MSG.DETECT
sta CLRPAGE2 sta CLRPAGE2
sty $400 Set back Main $400 sty $400 Set back Main $400
sta TXT16.OFF
plp plp
>LDYA L.MSG.DETECT.EVE >LDYA L.MSG.DETECT.EVE
@ -124,7 +125,7 @@ Dev.Detect >LDYA L.MSG.DETECT
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
ClrScr ldx #0 ClrScr ldx #0
lda #0 txa lda #0
.1 ldy BASEL,x .1 ldy BASEL,x
sty ZPPtr sty ZPPtr
@ -155,9 +156,9 @@ ClrScr ldx #0
*-------------------------------------- *--------------------------------------
CS.END CS.END
MSG.DETECT .AZ "Apple IIe/IIc DHGR Driver." MSG.DETECT .AZ "Apple IIe/IIc DHGR Driver."
MSG.DETECT.IIC .AZ "Apple //c detected, Assuming 'Le Chat Mauve' Mode." MSG.DETECT.IIC .AZ "Apple //c : 'LCM Feline/80c' Mode."
MSG.DETECT.EVE .AZ "'Le Chat Mauve EVE' Board Detected." MSG.DETECT.EVE .AZ "Apple //e : 'LCM Eve' Board Detected."
MSG.DETECT.80C .AZ "No Specific H/W Found, Assuming 80c Mode." MSG.DETECT.80C .AZ "No Specific H/W Found, 'Video7 80c' Mode."
*-------------------------------------- *--------------------------------------
* Device Header (16 Bytes) * Device Header (16 Bytes)
*-------------------------------------- *--------------------------------------
@ -345,12 +346,12 @@ CONTROL lda DCB+S.DCB.GFX.DEVID NON STANDARD
ldy #0 ldy #0
bit DCB+S.DCB.GFX.S bit DCB+S.DCB.GFX.S
bmi .1 //c,EVE mode bpl .1 //c,EVE mode
ldy #CONTROL.LCM-CONTROL.80C ldy #CONTROL.EVE-CONTROL.80C
.1 ldx CONTROL.SWTCHES,y .1 ldx CONTROL.80C,y
bmi .8 Ending $ff beq .8 Ending 0
sta $C000,x sta $C000,x
@ -474,76 +475,34 @@ DRV.CS.END
*-------------------------------------- *--------------------------------------
.INB USR/SRC/DRV/DHGR.DRV.G .INB USR/SRC/DRV/DHGR.DRV.G
*-------------------------------------- *--------------------------------------
CONTROL.SWTCHES CONTROL.80C .DA #SETIOUDIS
* sta CLRTEXT
* sta CLRMIXED
* sta SETHIRES
* sta CLR80STORE
* sta CLRPAGE2
* sta SETIOUDIS
CONTROL.80C
* sta CLRMIXED STA $CO52 ;Full Screen
* sta SETHIRES STA $C057 ;HIRES
* sta CLRTEXT STA $C050 ;Graphics
* sta CLR80DISP STA $C00C ;80 Columns OFF
* sta SETDHIRES STA $C05E ;AN3 OFF
* sta CLRDHIRES STA $C05F ;AN3 ON
* sta SETDHIRES STA $C05E ;AN3 OFF
* sta CLRDHIRES STA $C05F ;AN3 ON
* sta SET80DISP STA $C00D ;80 Columns ON
* sta SETDHIRES STA $C05E ;AN3 OFF
* sta CLRDHIRES STA $C05F ;AN3 ON
* sta SETDHIRES STA $C05E ;AN3 OFF
.DA #CLRTEXT .DA #CLRTEXT
* .DA #CLRMIXED
.DA #SETHIRES .DA #SETHIRES
* .DA #CLR80STORE
* .DA #CLRPAGE2
.DA #SETIOUDIS
.DA #CLR80DISP .DA #CLR80DISP
.DA #SETDHIRES
.DA #CLRDHIRES .DA #SETAN3
.DA #SETDHIRES .DA #CLRAN3
.DA #CLRDHIRES .DA #SETAN3
.DA #CLRAN3
.DA #SET80DISP .DA #SET80DISP
.DA #SETDHIRES
.DA #CLRDHIRES
.DA #SETDHIRES
.DA #$FF
CONTROL.LCM .DA #SETAN3
* sta CLRTEXT .DA #CLRAN3
* sta CLRPAGE2 .DA #SETAN3
* sta CLRMIXED
* sta SETHIRES
* sta CLRAN2
* sta CLR80DISP
* sta SETDHIRES
* sta CLRDHIRES
* sta SET80DISP
* sta SETDHIRES
* sta CLRDHIRES
* sta SETDHIRES
.DA #0
CONTROL.EVE .DA #SETIOUDIS
.DA #CLRTEXT .DA #CLRTEXT
* .DA #CLRMIXED
.DA #SETHIRES .DA #SETHIRES
* .DA #CLR80STORE
* .DA #CLRPAGE2
.DA #SETIOUDIS
.DA #CLRAN2 .DA #HR1.OFF
.DA #CLR80DISP .DA #HR2.ON
.DA #SETDHIRES .DA #HR3.ON
.DA #CLRDHIRES
.DA #SET80DISP .DA #0
.DA #SETDHIRES
.DA #CLRDHIRES
.DA #SETDHIRES
.DA #$ff
*-------------------------------------- *--------------------------------------
Shift.L.LO .BS 6 Shift.L.LO .BS 6
Shift.L.HI .BS 6 Shift.L.HI .BS 6
@ -574,7 +533,7 @@ DIB .DA #0
*-------------------------------------- *--------------------------------------
DCB .DA #S.DCB.T.GFX DCB .DA #S.DCB.T.GFX
.BS 1 DEV.ID .BS 1 DEV.ID
.BS 1 STATUS .DA #0 S.DCB.GFX.S default to 0
.DA #S.CB.M.MONO+S.CB.M.C16 F .DA #S.CB.M.MONO+S.CB.M.C16 F
.DA 560 W .DA 560 W
.DA 192 H .DA 192 H

View File

@ -41,6 +41,7 @@ RD80DISP .EQ $C01F R
*TAPEOUT .EQ $C020 W *TAPEOUT .EQ $C020 W
SPEAKER .EQ $C030 W, toggle speaker diaphragm SPEAKER .EQ $C030 W, toggle speaker diaphragm
*STROBE .EQ $C040 R, generate .5 uS low pulse @ Game pin 5 *STROBE .EQ $C040 R, generate .5 uS low pulse @ Game pin 5
*RDVBLIIC .EQ $C05A R, VBL switch Status (IIc)
*EMUBYTE .EQ $C04F WRR, Write once then Read EMUL, Read Version *EMUBYTE .EQ $C04F WRR, Write once then Read EMUL, Read Version
@ -58,10 +59,11 @@ SETHIRES .EQ $C057 W
*SETAN1 .EQ $C05A W, Set annunciator-1 output to 0 *SETAN1 .EQ $C05A W, Set annunciator-1 output to 0
*CLRAN1 .EQ $C05B W, Set annunciator-1 output to 1 *CLRAN1 .EQ $C05B W, Set annunciator-1 output to 1
*SETAN2 .EQ $C05C W, Set annunciator-2 output to 0 *SETAN2 .EQ $C05C W, Set annunciator-2 output to 0
CLRAN2 .EQ $C05D W, Set annunciator-2 output to 1 *CLRAN2 .EQ $C05D W, Set annunciator-2 output to 1
*SETAN3 .EQ $C05E W, Set annunciator-3 output to 0 SETAN3 .EQ $C05E W, Set annunciator-3 output to 0
*CLRAN3 .EQ $C05F W, Set annunciator-3 output to 1 CLRAN3 .EQ $C05F W, Set annunciator-3 output to 1
*DISVBLIIC .EQ $C05A W, Disable VBL switch (IIc)
*ENBVBLIIC .EQ $C05B W, Enable VBL switch (IIc) *ENBVBLIIC .EQ $C05B W, Enable VBL switch (IIc)
SETDHIRES .EQ $C05E W, if IOUDIS Set, turn on double-hires SETDHIRES .EQ $C05E W, if IOUDIS Set, turn on double-hires
CLRDHIRES .EQ $C05F W, if IOUDIS Set, turn off double-hires CLRDHIRES .EQ $C05F W, if IOUDIS Set, turn off double-hires

View File

@ -1,6 +1,5 @@
NEW NEW
PREFIX AUTO 3,1
AUTO 4,1
.LIST OFF .LIST OFF
.OP 65C02 .OP 65C02
.OR $2000 .OR $2000
@ -11,16 +10,15 @@ AUTO 4,1
.INB INC/MLI.I .INB INC/MLI.I
.INB INC/LIBBLKDEV.I .INB INC/LIBBLKDEV.I
*-------------------------------------- *--------------------------------------
* NIBBLE track len = $1A00 (6656) bytes: * NIBBLE track len = $1A00 (6656) bytes
*
*-------------------------------------- *--------------------------------------
GAP1 .EQ 48 GAP1 .EQ 48
GAP2 .EQ 6 GAP2 .EQ 6
GAP3 .EQ 27 GAP3 .EQ 27
*-------------------------------------- *--------------------------------------
Status.PrvDrvOff .EQ $80 Waiting old drive stop spining Status.PrvDrvOff .EQ $80 Waiting old drive stop spining
Status.DrvOn .EQ $81 Waiting target drive spin Status.DrvOn .EQ $81 Waiting target drive spin
Status.seek .EQ $82 target drive seeking Status.seek .EQ $82 target drive seeking
*-------------------------------------- *--------------------------------------
D2Ph0Off .EQ $C080 D2Ph0Off .EQ $C080
D2Ph0On .EQ $C081 D2Ph0On .EQ $C081
@ -32,6 +30,7 @@ D2Ph3Off .EQ $C086
D2Ph3On .EQ $C087 D2Ph3On .EQ $C087
D2DrvOff .EQ $C088 D2DrvOff .EQ $C088
D2DrvOn .EQ $C089 D2DrvOn .EQ $C089
D2DrvSel1 .EQ $C08A D2DrvSel1 .EQ $C08A
D2DrvSel2 .EQ $C08B D2DrvSel2 .EQ $C08B

View File

@ -67,6 +67,10 @@ K.GetDevStatus tax
K.GetDevStatus.I K.GetDevStatus.I
sta K.S.IOCTL+S.IOCTL.STATCODE sta K.S.IOCTL+S.IOCTL.STATCODE
ldy #S.FD.DEV.DEVID
lda (pFD),y
sta K.S.IOCTL+S.IOCTL.UNITNUM
jsr K.IOCTL.GetPDrv jsr K.IOCTL.GetPDrv
>LDYAI K.S.IOCTL >LDYAI K.S.IOCTL