mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-11 15:31:09 +00:00
Kernel 0.93+
This commit is contained in:
parent
e868aa8f5b
commit
64e8b83244
Binary file not shown.
Binary file not shown.
@ -23,13 +23,9 @@ CSH.CmdSave .BS 1
|
||||
CSH.ACCT .BS 1
|
||||
CSH.ACC .BS 5
|
||||
|
||||
CSH.EXPBOP1 .BS 1
|
||||
|
||||
CSH.ARGT .BS 1
|
||||
CSH.ARG .BS 5
|
||||
|
||||
CSH.EXPBOP2 .BS 1
|
||||
|
||||
CSH.LookupOpt .BS 1
|
||||
*--------------------------------------
|
||||
MAN
|
||||
|
@ -2,12 +2,25 @@ NEW
|
||||
AUTO 3,1
|
||||
.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.Cnt .EQ *-CSH.OPChars
|
||||
*--------------------------------------
|
||||
* Pre Operators: + - ! ~ ++ --
|
||||
*--------------------------------------
|
||||
CSH.PREOOPS >PSTR "+"
|
||||
CSH.PREOPS >PSTR "+"
|
||||
>PSTR "-"
|
||||
>PSTR "!"
|
||||
>PSTR "~"
|
||||
@ -32,7 +45,7 @@ CSH.AOPS >PSTR "="
|
||||
>PSTR "^="
|
||||
>PSTR "!="
|
||||
.HS 00
|
||||
*-- Binary ---- H to L prececence -----
|
||||
*-- Binary ---- H to L precedence -----
|
||||
* Arithmetic Operators: * / %
|
||||
* Arithmetic Operators: + -
|
||||
* Shift Operators: << >>
|
||||
@ -77,23 +90,19 @@ CSH.KW >PSTR "if"
|
||||
CSH.STYPES >PSTR "char"
|
||||
>PSTR "int"
|
||||
>PSTR "long"
|
||||
.HS 00
|
||||
* .HS 00
|
||||
CSH.TSIZE .HS 0001020401020405 00,CHAR,INT,LONG,UCHAR,UINT,ULONG,FLOAT....
|
||||
*--------------------------------------
|
||||
* int printf ( const char * format, ... );
|
||||
CSH.FN >PSTR "printf"
|
||||
.DA #CSH.T.INT returned value
|
||||
.DA #CSH.Q.CONST
|
||||
.DA #CSH.T.CHAR
|
||||
.DA #CSH.Q.POINTER
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.CHAR
|
||||
.DA #CSH.T.VARIADIC
|
||||
.DA #0
|
||||
* int puts ( const char * str );
|
||||
>PSTR "puts"
|
||||
.DA #CSH.T.INT returned value
|
||||
.DA #CSH.Q.CONST
|
||||
.DA #CSH.T.CHAR
|
||||
.DA #CSH.Q.POINTER
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.CHAR
|
||||
.DA #0
|
||||
* float cos ( float x );
|
||||
>PSTR "cos"
|
||||
@ -104,6 +113,8 @@ CSH.FN >PSTR "printf"
|
||||
>PSTR "getchar"
|
||||
.DA #CSH.T.INT returned value
|
||||
.DA #0
|
||||
|
||||
.DA #0
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/BIN/CSH.I
|
||||
|
@ -47,6 +47,11 @@ J.CSH.KW.START .DA CSH.IF.START
|
||||
J.CSH.KW.END .DA CSH.IF.END
|
||||
.DA CSH.WHILE.END
|
||||
*--------------------------------------
|
||||
J.CSH.EXEC .DA EXEC.printf
|
||||
.DA EXEC.puts
|
||||
.DA EXEC.cos
|
||||
.DA EXEC.getchar
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/BIN/CSH.R
|
||||
LOAD USR/SRC/BIN/CSH.S
|
||||
|
@ -2,22 +2,8 @@ NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
CSH.Q.CONST .EQ %10000000
|
||||
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
|
||||
CSH.Init >SYSCALL SListNew
|
||||
bcs .9
|
||||
>STYA ZPCSHSymbols
|
||||
txa
|
||||
>STA.G CSH.hSymbols
|
||||
|
||||
>LDYAI 256
|
||||
@ -27,13 +13,6 @@ CSH.Init >LDYAI 256
|
||||
txa
|
||||
>STA.G CSH.hConst
|
||||
|
||||
>LDYAI 256
|
||||
>SYSCALL GetMem
|
||||
bcs .9
|
||||
>STYA ZPCSHData
|
||||
txa
|
||||
>STA.G CSH.hData
|
||||
|
||||
>LDYAI 256
|
||||
>SYSCALL GetMem
|
||||
bcs .9
|
||||
@ -42,33 +21,28 @@ CSH.Init >LDYAI 256
|
||||
>STA.G CSH.hStack
|
||||
|
||||
lda #$0
|
||||
>STA.G CSH.SymbolsPtr
|
||||
>STA.G CSH.ConstPtr
|
||||
>STA.G CSH.DataPtr
|
||||
>STA.G CSH.StackPtr
|
||||
|
||||
sta (ZPCSHSymbols)
|
||||
sta (ZPCSHConst)
|
||||
sta (ZPCSHData)
|
||||
sta (ZPCSHStack)
|
||||
|
||||
* clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CSH.Quit >LDA.G hFileBuf
|
||||
beq .1
|
||||
>SYSCALL FreeMem
|
||||
CSH.Quit >LDA.G CSH.hSymbols
|
||||
>SYSCALL SListFree
|
||||
|
||||
.1 >LDA.G CSH.hStack
|
||||
beq .2
|
||||
>SYSCALL FreeMem
|
||||
>LDA.G hFileBuf
|
||||
jsr .7
|
||||
|
||||
>LDA.G CSH.hStack
|
||||
jsr .7
|
||||
|
||||
.2 >LDA.G CSH.hData
|
||||
beq .3
|
||||
>SYSCALL FreeMem
|
||||
>LDA.G CSH.hConst
|
||||
jsr .7
|
||||
|
||||
.3 >LDA.G CSH.hSymbols
|
||||
beq CSH.Quit.RTS
|
||||
.7 beq CSH.Quit.RTS
|
||||
>SYSCALL FreeMem
|
||||
|
||||
CSH.Quit.RTS rts
|
||||
@ -86,7 +60,7 @@ CSH.Run jsr CSH.GetCharNB
|
||||
tax
|
||||
jmp (J.CSH.KW.END,x)
|
||||
|
||||
.1 cmp #$0D
|
||||
.1 cmp #C.CR
|
||||
bne .2
|
||||
|
||||
jmp CSH.GetNextCharNB Skip CR and exit
|
||||
@ -112,7 +86,7 @@ CSH.Run jsr CSH.GetCharNB
|
||||
|
||||
jmp (J.CSH.KW,x)
|
||||
|
||||
.4 jsr CSH.GetVar
|
||||
.4 jsr CSH.GetVarValue
|
||||
bcs .5
|
||||
|
||||
jsr CSH.GetCharNB
|
||||
@ -135,14 +109,10 @@ CSH.Run jsr CSH.GetCharNB
|
||||
|
||||
jmp CSH.GetNextCharNB Skip ;
|
||||
|
||||
.5 >LDYA L.CSH.FN
|
||||
jsr CSH.LookupFn
|
||||
bcs .99
|
||||
|
||||
>STZ.G CSH.ACCT no retrun value type check required
|
||||
|
||||
jsr CSH.FnEval
|
||||
.5 lda #0 no return value type check required
|
||||
jsr CSH.FnEval X = function index
|
||||
bcs .9
|
||||
|
||||
jmp CSH.GetNextCharNB Skip ;
|
||||
|
||||
.99 lda #CSH.E.SYNTAX
|
||||
@ -159,6 +129,8 @@ CSH.Run jsr CSH.GetCharNB
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
* Built in Keywords
|
||||
*--------------------------------------
|
||||
CSH.WHILE
|
||||
CSH.IF jsr CSH.GetCharNB
|
||||
bcs .9
|
||||
@ -259,9 +231,11 @@ CSH.CONTINUE
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
* Built in Types
|
||||
*--------------------------------------
|
||||
CSH.SIGNED jsr CSH.GetChar
|
||||
bcs .9
|
||||
cmp #' '
|
||||
cmp #C.SPACE
|
||||
bne .9
|
||||
|
||||
jsr CSH.GetNextCharNB
|
||||
@ -280,7 +254,7 @@ CSH.SIGNED jsr CSH.GetChar
|
||||
*--------------------------------------
|
||||
CSH.UNSIGNED jsr CSH.GetChar
|
||||
bcs .9
|
||||
cmp #' '
|
||||
cmp #C.SPACE
|
||||
bne .9
|
||||
|
||||
jsr CSH.GetNextCharNB
|
||||
@ -297,25 +271,27 @@ CSH.UNSIGNED jsr CSH.GetChar
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CSH.CHAR lda #CSH.T.CHAR
|
||||
CSH.CHAR ldx #CSH.T.CHAR
|
||||
bra CSH.TYPE
|
||||
CSH.UCHAR lda #CSH.T.UCHAR
|
||||
CSH.UCHAR ldx #CSH.T.UCHAR
|
||||
bra CSH.TYPE
|
||||
CSH.INT lda #CSH.T.INT
|
||||
CSH.INT ldx #CSH.T.INT
|
||||
bra CSH.TYPE
|
||||
CSH.UINT lda #CSH.T.UINT
|
||||
CSH.UINT ldx #CSH.T.UINT
|
||||
bra CSH.TYPE
|
||||
CSH.LONG lda #CSH.T.LONG
|
||||
CSH.LONG ldx #CSH.T.LONG
|
||||
bra CSH.TYPE
|
||||
CSH.ULONG lda #CSH.T.ULONG
|
||||
CSH.ULONG ldx #CSH.T.ULONG
|
||||
bra CSH.TYPE
|
||||
|
||||
CSH.FLOAT lda #CSH.T.FLOAT
|
||||
CSH.FLOAT ldx #CSH.T.FLOAT
|
||||
|
||||
CSH.TYPE >STA.G CSH.ACCT
|
||||
CSH.TYPE stx ZPVarType
|
||||
|
||||
jsr CSH.GetChar
|
||||
bcs .9
|
||||
cmp #' '
|
||||
|
||||
cmp #C.SPACE
|
||||
bne .9
|
||||
|
||||
jsr CSH.GetNextCharNB
|
||||
@ -324,11 +300,11 @@ CSH.TYPE >STA.G CSH.ACCT
|
||||
jsr CSH.IsLetter
|
||||
bcs .9
|
||||
|
||||
jsr CSH.GetVar Already exists ?
|
||||
bcc .90
|
||||
txa VAR TYPE
|
||||
jsr CSH.AddVar add with undefined value...
|
||||
bcs .99 OOM or DUP
|
||||
|
||||
jsr CSH.AddVar No, add with undefined value...
|
||||
bcs .99
|
||||
>STYA ZPVarID
|
||||
|
||||
jsr CSH.GetCharNB
|
||||
bcs .9
|
||||
@ -341,6 +317,7 @@ CSH.TYPE >STA.G CSH.ACCT
|
||||
jsr CSH.GetNextCharNB
|
||||
bcs .9
|
||||
|
||||
lda ZPVarType
|
||||
jsr CSH.ExpEval
|
||||
|
||||
bcs .99
|
||||
@ -364,29 +341,134 @@ CSH.TYPE >STA.G CSH.ACCT
|
||||
sec
|
||||
.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
|
||||
>STA.G CSH.EXPBOP1 Reset BOP1
|
||||
sta ZPPtr2+1 Reset BOP1
|
||||
|
||||
jsr CSH.GetCharNB
|
||||
bcs .9
|
||||
|
||||
jsr CSH.IsLetter Fnc or Var ?
|
||||
.20 jsr CSH.IsLetter Fnc or Var ?
|
||||
bcs .2
|
||||
|
||||
jsr CSH.GetVar
|
||||
jsr CSH.GetVarValue
|
||||
bcs .1
|
||||
|
||||
jsr CSH.LoadACCFromVar
|
||||
bcs .9
|
||||
bra .11
|
||||
|
||||
.1 >LDYA L.CSH.FN
|
||||
jsr CSH.LookupFn
|
||||
bcs .9
|
||||
|
||||
jsr CSH.FnEval
|
||||
.1 jsr CSH.FnEval X = function index
|
||||
bcs .99
|
||||
bra .11
|
||||
|
||||
@ -399,6 +481,8 @@ CSH.ExpEval jsr CSH.ZeroACC
|
||||
.11 jsr CSH.GetCharNB
|
||||
bcs .9
|
||||
|
||||
cmp #','
|
||||
beq .8
|
||||
cmp #')'
|
||||
beq .8
|
||||
cmp #';'
|
||||
@ -411,19 +495,17 @@ CSH.ExpEval jsr CSH.ZeroACC
|
||||
jsr CSH.LookupOP
|
||||
bcs .9
|
||||
|
||||
>LDA.G CSH.EXPBOP1 previous OP...
|
||||
lda ZPPtr2+1 previous OP...
|
||||
bpl .5 go check precedence
|
||||
|
||||
txa
|
||||
>STA.G CSH.EXPBOP1
|
||||
stx ZPPtr2+1
|
||||
|
||||
jsr CSH.ACC2ARG
|
||||
jsr CSH.GetCharNB
|
||||
bcc .10 go check for an ARG
|
||||
bcc .20 go check for an ARG
|
||||
bra .9
|
||||
|
||||
.3 >DEBUG
|
||||
|
||||
cmp #'"' String litteral
|
||||
.3 cmp #'"' String literal
|
||||
bne .9
|
||||
|
||||
|
||||
@ -434,13 +516,16 @@ CSH.ExpEval jsr CSH.ZeroACC
|
||||
jmp .11
|
||||
|
||||
|
||||
.9 lda #CSH.E.SYNTAX
|
||||
.9 plx
|
||||
stx ZPPtr2+1
|
||||
plx
|
||||
stx ZPPtr2
|
||||
|
||||
lda #CSH.E.SYNTAX
|
||||
sec
|
||||
.99 rts
|
||||
|
||||
.5 txa
|
||||
>STA.G CSH.EXPBOP2
|
||||
>CMP.G CSH.EXPBOP1
|
||||
.5 cpx ZPPtr2+1
|
||||
bcs .6
|
||||
|
||||
* new OP has precedence, stack ACC
|
||||
@ -450,7 +535,7 @@ CSH.ExpEval jsr CSH.ZeroACC
|
||||
jmp .10
|
||||
|
||||
* Old OP has precedence, compute ACC=ARG <BOP> ACC
|
||||
.6 >LDA.G CSH.EXPBOP1
|
||||
.6 lda ZPPtr2+1
|
||||
jsr CSH.Compute
|
||||
bcs .9
|
||||
|
||||
@ -458,12 +543,17 @@ CSH.ExpEval jsr CSH.ZeroACC
|
||||
bcs .9
|
||||
jmp .10
|
||||
|
||||
.8 >LDA.G CSH.EXPBOP1
|
||||
.8 lda ZPPtr2+1
|
||||
bmi .80
|
||||
|
||||
jmp CSH.Compute
|
||||
|
||||
.80 clc
|
||||
.80 plx
|
||||
stx ZPPtr2+1
|
||||
plx
|
||||
stx ZPPtr2
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CSH.AddContCharP
|
||||
@ -483,12 +573,15 @@ CSH.AddContCharP
|
||||
.2 lda #0
|
||||
sta (ZPCSHConst),y
|
||||
|
||||
lda ZPCSHConst
|
||||
pha
|
||||
lda ZPCSHConst+1
|
||||
pha
|
||||
phy
|
||||
|
||||
tya
|
||||
lda #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.CHAR
|
||||
>STA.G CSH.ACCT
|
||||
|
||||
>LDYA ZPCSHConst
|
||||
>STYA.G CSH.ACC
|
||||
|
||||
pla
|
||||
sec
|
||||
adc ZPCSHConst
|
||||
sta ZPCSHConst
|
||||
@ -496,8 +589,8 @@ CSH.AddContCharP
|
||||
|
||||
inc ZPCSHConst+1
|
||||
|
||||
.3 pla
|
||||
ply
|
||||
.3 jsr CSH.GetNextCharNB Skip "
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
@ -505,77 +598,6 @@ CSH.AddContCharP
|
||||
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
|
||||
rts
|
||||
|
||||
.9 lda #CSH.E.SYNTAX
|
||||
sec
|
||||
.90 rts
|
||||
|
||||
.99 lda #CSH.E.TMISMATCH
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CSH.SavePtr >LDYA ZPFileBufPtr
|
||||
>STYA.G CSH.BufPtrSave
|
||||
rts
|
||||
@ -632,25 +654,20 @@ CSH.Lookup phy Y = len
|
||||
.31 lda ZPPtr1
|
||||
sec
|
||||
adc (ZPPtr1)
|
||||
sta ZPFnDefPtr
|
||||
tay
|
||||
lda ZPPtr1+1
|
||||
adc #0
|
||||
inc ZPFnDefPtr+1
|
||||
|
||||
clc
|
||||
clc Y,A = F() def, X = F() index
|
||||
.8 rts
|
||||
|
||||
.4 inx
|
||||
inx
|
||||
|
||||
lda ZPPtr1
|
||||
sec
|
||||
adc (ZPPtr1)
|
||||
sta ZPPtr1
|
||||
bcc .5
|
||||
inc ZPPtr1+1
|
||||
lda (ZPPtr1)
|
||||
jsr CSH.ZPPtr1AddAp1
|
||||
|
||||
.5 >LDA.G CSH.LookupOpt
|
||||
>LDA.G CSH.LookupOpt
|
||||
bpl .1
|
||||
|
||||
ldy #$ff
|
||||
@ -659,11 +676,7 @@ CSH.Lookup phy Y = len
|
||||
bne .6
|
||||
|
||||
tya
|
||||
sec
|
||||
adc ZPPtr1
|
||||
sta ZPPtr1
|
||||
bcc .1
|
||||
inc ZPPtr1+1
|
||||
jsr CSH.ZPPtr1AddAp1
|
||||
bra .1
|
||||
|
||||
.9 pla
|
||||
@ -686,7 +699,7 @@ CSH.GetNumInACC >LDA.G CSH.ACCT
|
||||
>LDYA ZPFileBufPtr
|
||||
|
||||
>SYSCALL StrToF
|
||||
bcs .9
|
||||
* bcs .9
|
||||
>PULLF.G CSH.ACC
|
||||
clc
|
||||
rts
|
||||
@ -728,162 +741,76 @@ CSH.ACC2ARG >LEA.G CSH.ACCT
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
* Vars...
|
||||
* Input : ZPFileBufPtr, A = Var Type, Value on Stack
|
||||
* Output : Y,A = ZPVarID
|
||||
*--------------------------------------
|
||||
CSH.AddVar jsr CSH.GetIDLen
|
||||
|
||||
sec
|
||||
>ADC.G CSH.SymbolsPtr Enough room to store this symbol ?
|
||||
|
||||
bcs .99
|
||||
|
||||
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
|
||||
CSH.AddVar sta ZPVarType
|
||||
|
||||
>LDA.G CSH.SymbolsPtr
|
||||
pha
|
||||
|
||||
jsr CSH.GetIDLen
|
||||
>PUSHW ZPFileBufPtr
|
||||
>LDA.G CSH.hSymbols
|
||||
>SYSCALL SListNewKey
|
||||
bcs .9
|
||||
|
||||
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)
|
||||
>STYA ZPVarID
|
||||
txa
|
||||
* 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
|
||||
sta ZPFileBufPtr
|
||||
bcc .8
|
||||
bcc .1
|
||||
|
||||
inc ZPFileBufPtr+1
|
||||
|
||||
.1 ldy #2
|
||||
|
||||
clc
|
||||
.8 rts
|
||||
|
||||
.3 lda (ZPPtr1)
|
||||
sec
|
||||
adc ZPPtr1
|
||||
sta ZPPtr1
|
||||
bcc .4
|
||||
inc ZPPtr1+1
|
||||
|
||||
.4 inc ZPPtr1 Skip Pointer to TYPE/DATA
|
||||
bne .1
|
||||
inc ZPPtr1+1
|
||||
bra .1
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CSH.LoadACCFromVar
|
||||
>LDA.G CSH.ACCT
|
||||
cmp (ZPCSHValue)
|
||||
bne .9
|
||||
lda ZPVarType
|
||||
>PUSHA Push Var Type On stack...
|
||||
|
||||
and #CSH.Q.PPPOINTER
|
||||
bne .2 Pointer, always 2 bytes
|
||||
|
||||
lda ZPVarType
|
||||
and #$1f
|
||||
tax
|
||||
lda CSH.TSIZE,x
|
||||
tax Byte count to transfer
|
||||
|
||||
>LEA.G CSH.ACC
|
||||
>STYA ZPPtr1
|
||||
|
||||
ldy #1
|
||||
ldy CSH.TSIZE,x
|
||||
|
||||
.1 lda (ZPCSHValue),y
|
||||
sta (ZPPtr1)
|
||||
inc ZPPtr1
|
||||
bne .2
|
||||
inc ZPPtr1+1
|
||||
.2 iny +1 for Type
|
||||
lda #0
|
||||
|
||||
.2 iny
|
||||
dex
|
||||
bne .1
|
||||
>PUSHYA DataLen
|
||||
>PUSHW pStack
|
||||
>PUSHW ZPVarID
|
||||
>LDA.G CSH.hSymbols
|
||||
>SYSCALL SListAddData
|
||||
bcs .9
|
||||
|
||||
clc
|
||||
rts
|
||||
>LDYA ZPVarType
|
||||
|
||||
.9 lda #CSH.E.TMISMATCH
|
||||
sec
|
||||
rts
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* Input : ZPFileBufPtr, A = Var Type
|
||||
* Output : Value on Stack
|
||||
*--------------------------------------
|
||||
CSH.GetVarValue
|
||||
sta ZPVarType
|
||||
|
||||
>PUSHW ZPFileBufPtr
|
||||
>LDA.G CSH.hSymbols
|
||||
>SYSCALL SListLookup
|
||||
bcs .9
|
||||
|
||||
>STYA ZPVarID
|
||||
|
||||
txa
|
||||
* clc
|
||||
adc ZPFileBufPtr
|
||||
sta ZPFileBufPtr
|
||||
bcc .1
|
||||
|
||||
inc ZPFileBufPtr+1
|
||||
|
||||
.1
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CSH.StoreACCToVar
|
||||
>LDA.G CSH.ACCT
|
||||
@ -944,7 +871,6 @@ CSH.IsACC0 >LDA.G CSH.ACCT
|
||||
rts
|
||||
*--------------------------------------
|
||||
CSH.Compute tax
|
||||
|
||||
jmp (J.CSH.BOPS,x)
|
||||
*--------------------------------------
|
||||
CSH.BOPS.ADD
|
||||
@ -964,7 +890,7 @@ CSH.BOPS.SUB >LDA.G CSH.ACCT
|
||||
|
||||
.8 >PUSHF.G CSH.ACC
|
||||
>PUSHF.G CSH.ARG
|
||||
>SYSCALL FSUB
|
||||
>FPU FSUB
|
||||
bcs .9
|
||||
|
||||
>PULLF.G CSH.ACC
|
||||
@ -983,11 +909,11 @@ CSH.BOPS.DIV >LDA.G CSH.ACCT
|
||||
clc
|
||||
rts
|
||||
|
||||
.8 >PUSHEA.G CSH.ACC
|
||||
>PUSHEA.G CSH.ARG
|
||||
>LEA.G CSH.ACC
|
||||
>SYSCALL FDIV
|
||||
|
||||
.8 >PUSHF.G CSH.ACC
|
||||
>PUSHF.G CSH.ARG
|
||||
>FPU FDIV
|
||||
>PULLF.G CSH.ACC
|
||||
clc
|
||||
rts
|
||||
CSH.BOPS.MOD
|
||||
CSH.BOPS.SHL
|
||||
@ -1010,9 +936,6 @@ CSH.BOPS.LOR
|
||||
*--------------------------------------
|
||||
* Stack
|
||||
*--------------------------------------
|
||||
CSH.PushACCT
|
||||
|
||||
|
||||
CSH.Push pha
|
||||
>LDA.G CSH.StackPtr
|
||||
inc
|
||||
@ -1169,6 +1092,32 @@ CSH.IsDigit10 cmp #'0'
|
||||
.9 sec
|
||||
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
|
||||
SAVE USR/SRC/BIN/CSH.S.CORE
|
||||
LOAD USR/SRC/BIN/CSH.S
|
||||
|
@ -17,18 +17,19 @@ NEW
|
||||
.DUMMY
|
||||
.OR ZPBIN
|
||||
ZS.START
|
||||
ZPFileBuf .BS 2
|
||||
ZPFileBufPtr .BS 2
|
||||
ZPCSHConst .BS 2
|
||||
ZPCSHStack .BS 2
|
||||
|
||||
ZPPtr1 .BS 2
|
||||
ZPPtr2 .BS 2
|
||||
ZPPtr3 .BS 2
|
||||
ZPFileBuf .BS 2
|
||||
ZPFileBufPtr .BS 2
|
||||
ZPFnDefPtr .BS 2
|
||||
|
||||
ZPCSHSymbols .BS 2
|
||||
ZPCSHConst .BS 2
|
||||
ZPCSHData .BS 2
|
||||
ZPCSHValue .BS 2
|
||||
ZPCSHStack .BS 2
|
||||
ZPVarID .BS 2
|
||||
ZPVarType .BS 1
|
||||
|
||||
|
||||
ZS.END .ED
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
@ -142,6 +143,7 @@ PrintErrMsg >LDYA ZPFileBuf
|
||||
|
||||
.2 lda (ZPPtr1)
|
||||
beq .6 EoF
|
||||
|
||||
inc ZPPtr1
|
||||
bne .3
|
||||
inc ZPPtr1+1
|
||||
@ -208,6 +210,7 @@ CS.END
|
||||
MSG.Greetings .AZ "\r\nCSH-Shell %d.%d\r\n\r\n"
|
||||
MSG.ECHOCRLF .AZ "\r\n"
|
||||
MSG.ERR .AZ "^\r\nLine #%D:"
|
||||
*--------------------------------------
|
||||
.INB USR/SRC/BIN/CSH.I
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
|
@ -42,16 +42,14 @@ Prompt.Editor cmp #C.DEL
|
||||
bcs .9
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
.9 rts
|
||||
|
||||
.3 asl
|
||||
tax
|
||||
jmp (J.CTRL,x)
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
Ctrl.DEL jsr BUF.ComputeCOffset
|
||||
|
||||
|
||||
lda BUF.COffset
|
||||
ora BUF.COffset+1 No Backspace possible
|
||||
beq .8
|
||||
@ -520,23 +518,21 @@ Ctrl.Z jsr BUF.ComputeCOffset
|
||||
bcc Ctrl.Z.1
|
||||
|
||||
clc
|
||||
rts
|
||||
Ctrl.Z.RTS rts
|
||||
|
||||
Ctrl.Z.1 jsr BUF.DelCharAtCursor
|
||||
bcs .9
|
||||
bcs Ctrl.Z.RTS
|
||||
|
||||
cmp #C.CR did we DEL a CR ?
|
||||
bne .1
|
||||
|
||||
jsr SCRN.UpdateMain
|
||||
bcs .9
|
||||
bcs Ctrl.Z.RTS
|
||||
jmp SCRN.UpdateStatusBar
|
||||
|
||||
.1 jsr SCRN.UpdateCurrentLine
|
||||
bcs .9
|
||||
bcs Ctrl.Z.RTS
|
||||
jmp SCRN.UpdateStatusBar
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
Prompt.Help >STZ.G PromptMode
|
||||
|
||||
|
@ -137,7 +137,7 @@ SCRN.UpdateLineAtALenY
|
||||
ldx #0
|
||||
tay
|
||||
jsr GotoXY
|
||||
bcs .9
|
||||
bcs SCRN.UpdateMain.9
|
||||
|
||||
>LDYA LineBufPtr
|
||||
>STYA ZPPTR1
|
||||
@ -179,13 +179,19 @@ SCRN.UpdateLineAtALenY
|
||||
jsr SCRN.ToggleSel
|
||||
|
||||
.5 lda (BufPtr)
|
||||
jsr SCRN.ToLineBuf
|
||||
cmp #'\'
|
||||
beq .50
|
||||
cmp #'%'
|
||||
bne .51
|
||||
|
||||
.50 pha
|
||||
lda #'\'
|
||||
jsr SCRN.ToLineBuf
|
||||
pla
|
||||
|
||||
.51 inc BufPtr
|
||||
.51 jsr SCRN.ToLineBuf
|
||||
|
||||
inc BufPtr
|
||||
bne .6
|
||||
inc BufPtr+1
|
||||
|
||||
|
107
BIN/FORMAT.S.txt
107
BIN/FORMAT.S.txt
@ -8,7 +8,8 @@ AUTO 4,1
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/KERNEL.I
|
||||
.INB INC/MLI.E.I
|
||||
.INB INC/KERNEL.I
|
||||
.INB INC/LIBBLKDEV.I
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
@ -36,16 +37,18 @@ CS.START cld
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
* Relocation Table
|
||||
*--------------------------------------
|
||||
*--------------------------------------
|
||||
.1 .DA CS.INIT
|
||||
.DA CS.RUN
|
||||
.DA CS.DOEVENT
|
||||
.DA CS.DOEVENT
|
||||
.DA CS.QUIT
|
||||
L.LIBBLKDEV .DA LIBBLKDEV
|
||||
L.MSG.USAGE .DA MSG.USAGE
|
||||
L.MSG.INIT .DA MSG.INIT
|
||||
L.MSG.OK .DA MSG.OK
|
||||
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
|
||||
*--------------------------------------
|
||||
CS.INIT ldy #S.PS.ARGC
|
||||
@ -165,49 +168,13 @@ CS.RUN.InitCat >LDA.G CatSize
|
||||
.1 >LDA.G VolName
|
||||
bne .8 Volume name ok
|
||||
|
||||
ldx #$ff
|
||||
ldy #VolName-1
|
||||
|
||||
.2 inx
|
||||
iny
|
||||
lda BLANK,x
|
||||
sta (pData),y
|
||||
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
|
||||
>PUSHW A2osX.TIMER16
|
||||
>PUSHW A2osX.RANDOM16
|
||||
>PUSHBI 4
|
||||
>PUSHW L.FMT.BLANK
|
||||
>LEA.G VolName
|
||||
>SYSCALL sprintf
|
||||
rts
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
@ -217,8 +184,21 @@ CS.RUN.BuildCat >PUSHEA.G DIB
|
||||
|
||||
>SYSCALL GetDevStatus
|
||||
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 ZPPtrDevName
|
||||
@ -298,39 +278,22 @@ CS.QUIT >LDA.G hBuf
|
||||
.8 clc
|
||||
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
|
||||
*--------------------------------------
|
||||
OptionList >PSTR "Ll"
|
||||
OptionVars .DA #bLL,#bLL
|
||||
LIBBLKDEV .AZ "libblkdev"
|
||||
hLIBBLKDEV .BS 1
|
||||
*--------------------------------------
|
||||
MSG.USAGE .AS "Usage : FORMAT <BLOCKDEV> [VOLUME.NAME]\r\n"
|
||||
.AS " -L : Low-Level Format\r\n"
|
||||
.AZ " -1-9 : Catalog Size (Blocks)\r\n"
|
||||
MSG.OK .AZ "[OK]"
|
||||
MSG.ERR .AZ "[%h]\r\n"
|
||||
MSG.NOSIZE .AZ "Unable to get media size."
|
||||
MSG.INIT .AZ "Formatting %s (%D Blks),Volname:%s..."
|
||||
FMT.BLANK .AZ "BLANK%H%H"
|
||||
*--------------------------------------
|
||||
LIBBLKDEV .AZ "libblkdev"
|
||||
BLANK .AZ "BLANK"
|
||||
hLIBBLKDEV .BS 1
|
||||
OptionList >PSTR "Ll"
|
||||
OptionVars .DA #bLL,#bLL
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR 0
|
||||
|
@ -176,7 +176,10 @@ CS.RUN.DEV lda #E.BADPATH
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.DIR lda (ZPFileName)
|
||||
CS.RUN.DIR >LDA.G bRecurse
|
||||
bpl .8
|
||||
|
||||
lda (ZPFileName)
|
||||
cmp #'.'
|
||||
beq .8
|
||||
|
||||
@ -191,12 +194,8 @@ CS.RUN.DIR lda (ZPFileName)
|
||||
|
||||
jsr CS.RUN.CheckErr
|
||||
|
||||
>LDA.G bRecurse
|
||||
bpl .8
|
||||
|
||||
>LDYA ZPFileName
|
||||
jsr EnterSubDirYA
|
||||
rts
|
||||
jmp EnterSubDirYA
|
||||
|
||||
.8 clc
|
||||
.9 rts
|
||||
|
@ -46,8 +46,7 @@ Dev.Detect >LDYA L.MSG.DETECT
|
||||
cmp #MACHID.T.IIc
|
||||
bne .1
|
||||
|
||||
lda #$80
|
||||
sta DCB+S.DCB.GFX.S $80=//c
|
||||
* stz DCB+S.DCB.GFX.S //c : 80c Mode
|
||||
|
||||
>LDYA L.MSG.DETECT.IIC
|
||||
|
||||
@ -82,6 +81,8 @@ Dev.Detect >LDYA L.MSG.DETECT
|
||||
sta CLRPAGE2
|
||||
sty $400 Set back Main $400
|
||||
|
||||
sta TXT16.OFF
|
||||
|
||||
plp
|
||||
|
||||
>LDYA L.MSG.DETECT.EVE
|
||||
@ -124,7 +125,7 @@ Dev.Detect >LDYA L.MSG.DETECT
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
ClrScr ldx #0
|
||||
lda #0
|
||||
txa lda #0
|
||||
|
||||
.1 ldy BASEL,x
|
||||
sty ZPPtr
|
||||
@ -155,9 +156,9 @@ ClrScr ldx #0
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
MSG.DETECT .AZ "Apple IIe/IIc DHGR Driver."
|
||||
MSG.DETECT.IIC .AZ "Apple //c detected, Assuming 'Le Chat Mauve' Mode."
|
||||
MSG.DETECT.EVE .AZ "'Le Chat Mauve EVE' Board Detected."
|
||||
MSG.DETECT.80C .AZ "No Specific H/W Found, Assuming 80c Mode."
|
||||
MSG.DETECT.IIC .AZ "Apple //c : 'LCM Feline/80c' Mode."
|
||||
MSG.DETECT.EVE .AZ "Apple //e : 'LCM Eve' Board Detected."
|
||||
MSG.DETECT.80C .AZ "No Specific H/W Found, 'Video7 80c' Mode."
|
||||
*--------------------------------------
|
||||
* Device Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
@ -343,14 +344,14 @@ CONTROL lda DCB+S.DCB.GFX.DEVID NON STANDARD
|
||||
sta A2osX.ASCREEN
|
||||
|
||||
ldy #0
|
||||
|
||||
|
||||
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
|
||||
bmi .8 Ending $ff
|
||||
.1 ldx CONTROL.80C,y
|
||||
beq .8 Ending 0
|
||||
|
||||
sta $C000,x
|
||||
|
||||
@ -474,76 +475,34 @@ DRV.CS.END
|
||||
*--------------------------------------
|
||||
.INB USR/SRC/DRV/DHGR.DRV.G
|
||||
*--------------------------------------
|
||||
CONTROL.SWTCHES
|
||||
* 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
|
||||
|
||||
CONTROL.80C .DA #SETIOUDIS
|
||||
.DA #CLRTEXT
|
||||
* .DA #CLRMIXED
|
||||
.DA #SETHIRES
|
||||
* .DA #CLR80STORE
|
||||
* .DA #CLRPAGE2
|
||||
.DA #SETIOUDIS
|
||||
|
||||
.DA #CLR80DISP
|
||||
.DA #SETDHIRES
|
||||
.DA #CLRDHIRES
|
||||
.DA #SETDHIRES
|
||||
.DA #CLRDHIRES
|
||||
.DA #SET80DISP
|
||||
.DA #SETDHIRES
|
||||
.DA #CLRDHIRES
|
||||
.DA #SETDHIRES
|
||||
.DA #$FF
|
||||
|
||||
CONTROL.LCM
|
||||
* sta CLRTEXT
|
||||
* sta CLRPAGE2
|
||||
* sta CLRMIXED
|
||||
* sta SETHIRES
|
||||
* sta CLRAN2
|
||||
* sta CLR80DISP
|
||||
* sta SETDHIRES
|
||||
* sta CLRDHIRES
|
||||
* sta SET80DISP
|
||||
* sta SETDHIRES
|
||||
* sta CLRDHIRES
|
||||
* sta SETDHIRES
|
||||
|
||||
.DA #CLRTEXT
|
||||
* .DA #CLRMIXED
|
||||
.DA #SETHIRES
|
||||
* .DA #CLR80STORE
|
||||
* .DA #CLRPAGE2
|
||||
.DA #SETIOUDIS
|
||||
|
||||
.DA #CLRAN2
|
||||
.DA #CLR80DISP
|
||||
.DA #SETDHIRES
|
||||
.DA #CLRDHIRES
|
||||
|
||||
.DA #SETAN3
|
||||
.DA #CLRAN3
|
||||
.DA #SETAN3
|
||||
.DA #CLRAN3
|
||||
|
||||
.DA #SET80DISP
|
||||
.DA #SETDHIRES
|
||||
.DA #CLRDHIRES
|
||||
.DA #SETDHIRES
|
||||
.DA #$ff
|
||||
|
||||
.DA #SETAN3
|
||||
.DA #CLRAN3
|
||||
.DA #SETAN3
|
||||
|
||||
.DA #0
|
||||
|
||||
CONTROL.EVE .DA #SETIOUDIS
|
||||
.DA #CLRTEXT
|
||||
.DA #SETHIRES
|
||||
|
||||
.DA #HR1.OFF
|
||||
.DA #HR2.ON
|
||||
.DA #HR3.ON
|
||||
|
||||
.DA #0
|
||||
*--------------------------------------
|
||||
Shift.L.LO .BS 6
|
||||
Shift.L.HI .BS 6
|
||||
@ -574,7 +533,7 @@ DIB .DA #0
|
||||
*--------------------------------------
|
||||
DCB .DA #S.DCB.T.GFX
|
||||
.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 560 W
|
||||
.DA 192 H
|
||||
|
@ -41,6 +41,7 @@ RD80DISP .EQ $C01F R
|
||||
*TAPEOUT .EQ $C020 W
|
||||
SPEAKER .EQ $C030 W, toggle speaker diaphragm
|
||||
*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
|
||||
|
||||
@ -58,10 +59,11 @@ SETHIRES .EQ $C057 W
|
||||
*SETAN1 .EQ $C05A W, Set annunciator-1 output to 0
|
||||
*CLRAN1 .EQ $C05B W, Set annunciator-1 output to 1
|
||||
*SETAN2 .EQ $C05C W, Set annunciator-2 output to 0
|
||||
CLRAN2 .EQ $C05D W, Set annunciator-2 output to 1
|
||||
*SETAN3 .EQ $C05E W, Set annunciator-3 output to 0
|
||||
*CLRAN3 .EQ $C05F W, Set annunciator-3 output to 1
|
||||
*CLRAN2 .EQ $C05D W, Set annunciator-2 output to 1
|
||||
SETAN3 .EQ $C05E W, Set annunciator-3 output to 0
|
||||
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)
|
||||
SETDHIRES .EQ $C05E W, if IOUDIS Set, turn on double-hires
|
||||
CLRDHIRES .EQ $C05F W, if IOUDIS Set, turn off double-hires
|
||||
|
@ -1,6 +1,5 @@
|
||||
NEW
|
||||
PREFIX
|
||||
AUTO 4,1
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
.OR $2000
|
||||
@ -11,16 +10,15 @@ AUTO 4,1
|
||||
.INB INC/MLI.I
|
||||
.INB INC/LIBBLKDEV.I
|
||||
*--------------------------------------
|
||||
* NIBBLE track len = $1A00 (6656) bytes:
|
||||
*
|
||||
* NIBBLE track len = $1A00 (6656) bytes
|
||||
*--------------------------------------
|
||||
GAP1 .EQ 48
|
||||
GAP2 .EQ 6
|
||||
GAP3 .EQ 27
|
||||
*--------------------------------------
|
||||
Status.PrvDrvOff .EQ $80 Waiting old drive stop spining
|
||||
Status.DrvOn .EQ $81 Waiting target drive spin
|
||||
Status.seek .EQ $82 target drive seeking
|
||||
Status.PrvDrvOff .EQ $80 Waiting old drive stop spining
|
||||
Status.DrvOn .EQ $81 Waiting target drive spin
|
||||
Status.seek .EQ $82 target drive seeking
|
||||
*--------------------------------------
|
||||
D2Ph0Off .EQ $C080
|
||||
D2Ph0On .EQ $C081
|
||||
@ -32,6 +30,7 @@ D2Ph3Off .EQ $C086
|
||||
D2Ph3On .EQ $C087
|
||||
D2DrvOff .EQ $C088
|
||||
D2DrvOn .EQ $C089
|
||||
|
||||
D2DrvSel1 .EQ $C08A
|
||||
D2DrvSel2 .EQ $C08B
|
||||
|
||||
|
@ -67,6 +67,10 @@ K.GetDevStatus tax
|
||||
K.GetDevStatus.I
|
||||
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
|
||||
|
||||
>LDYAI K.S.IOCTL
|
||||
|
Loading…
x
Reference in New Issue
Block a user