mirror of
https://github.com/A2osX/A2osX.git
synced 2024-08-10 16:29:28 +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.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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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,8 +10,7 @@ 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
|
||||||
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user