mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-18 00:30:40 +00:00
Kernel 0.94
This commit is contained in:
parent
67878e93ce
commit
f8d5dc8deb
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -193,12 +193,13 @@ CS.RUN.Format jsr CS.RUN.GetDevStatus
|
|||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr CS.RUN.WriteCat
|
jsr CS.RUN.WriteCat
|
||||||
|
|
||||||
.99 bcs .9
|
.99 bcs .9
|
||||||
|
|
||||||
>LDYA L.MSG.OK
|
>LDYA L.MSG.OK
|
||||||
>SYSCALL PutS
|
>SYSCALL PutS
|
||||||
bcs .9
|
bcs .9
|
||||||
|
>DEBUG
|
||||||
.8 >PUSHB DSSS0000
|
.8 >PUSHB DSSS0000
|
||||||
>PUSHW pData
|
>PUSHW pData
|
||||||
>SYSCALL Online
|
>SYSCALL Online
|
||||||
@ -381,18 +382,19 @@ CS.RUN.LL.DISKII
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.8 >PUSHW L.MSG.CRLF
|
.8 ldx #0
|
||||||
|
jsr CS.RUN.SeekToX
|
||||||
|
|
||||||
|
>PUSHW L.MSG.CRLF
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
>SYSCALL PrintF
|
>SYSCALL PrintF
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldx #0
|
|
||||||
jsr CS.RUN.SeekToX
|
|
||||||
|
|
||||||
bit bVerify
|
bit bVerify
|
||||||
bpl .80
|
bpl .80
|
||||||
|
|
||||||
jsr CS.RUN.LL.DISKII.V
|
jsr CS.RUN.LL.DISKII.V
|
||||||
|
>DEBUG
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
.80 jmp CS.RUN.MotorOff
|
.80 jmp CS.RUN.MotorOff
|
||||||
@ -400,9 +402,11 @@ CS.RUN.LL.DISKII
|
|||||||
CS.RUN.LL.DISKII.V
|
CS.RUN.LL.DISKII.V
|
||||||
lda hTrackBuf
|
lda hTrackBuf
|
||||||
bne .10
|
bne .10
|
||||||
|
|
||||||
>LDYAI 512
|
>LDYAI 512
|
||||||
>SYSCALL GetMem
|
>SYSCALL GetMem
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
stx hTrackBuf
|
stx hTrackBuf
|
||||||
bra .11
|
bra .11
|
||||||
|
|
||||||
|
@ -58,9 +58,13 @@ KW.Lookup >LDYA L.KEYWORDS
|
|||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.DUP lda pStack
|
KW.DUP lda pStack
|
||||||
sec
|
beq .9
|
||||||
sbc #2
|
|
||||||
bcc .9
|
cmp #$FF
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
cmp #1
|
||||||
|
bcc .99
|
||||||
|
|
||||||
lda (pStack)
|
lda (pStack)
|
||||||
tax
|
tax
|
||||||
@ -72,9 +76,13 @@ KW.DUP lda pStack
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #E.STKOVERFLOW
|
.9 lda #E.STACKERROR
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
.99 lda #E.STKOVERFLOW
|
||||||
|
sec
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.DROP lda pStack
|
KW.DROP lda pStack
|
||||||
beq .9
|
beq .9
|
||||||
@ -187,7 +195,40 @@ KW.Sub jsr CheckStackPop4
|
|||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.Mul
|
KW.Mul jsr CheckStackPop4
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>PULLW ZPPtr1
|
||||||
|
>PULLW ZPPtr2
|
||||||
|
|
||||||
|
stz ZPPtr3
|
||||||
|
stz ZPPtr3+1
|
||||||
|
|
||||||
|
ldx #16
|
||||||
|
|
||||||
|
.1 lsr ZPPtr2+1
|
||||||
|
ror ZPPtr2
|
||||||
|
bcc .2
|
||||||
|
|
||||||
|
clc
|
||||||
|
lda ZPPtr1
|
||||||
|
adc ZPPtr3
|
||||||
|
sta ZPPtr3
|
||||||
|
|
||||||
|
lda ZPPtr1+1
|
||||||
|
adc ZPPtr3+1
|
||||||
|
sta ZPPtr3+1
|
||||||
|
|
||||||
|
.2 asl ZPPtr1
|
||||||
|
rol ZPPtr1+1
|
||||||
|
|
||||||
|
dex
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
>PUSHW ZPPtr3
|
||||||
|
|
||||||
|
clc
|
||||||
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.Div
|
KW.Div
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -197,7 +238,9 @@ KW.DivMod
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.MulDivMod
|
KW.MulDivMod
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.MulDiv
|
KW.MulDiv
|
||||||
|
clc
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.MAX jsr CheckStackPop4
|
KW.MAX jsr CheckStackPop4
|
||||||
bcs .9
|
bcs .9
|
||||||
@ -355,11 +398,11 @@ KW.LWR jsr CheckStackPop4
|
|||||||
sbc (pStack),y
|
sbc (pStack),y
|
||||||
inc pStack
|
inc pStack
|
||||||
|
|
||||||
inc pStack
|
ror
|
||||||
|
lda #0
|
||||||
rol
|
|
||||||
sta (pStack)
|
sta (pStack)
|
||||||
|
ldy #1
|
||||||
|
sta (pStack),y
|
||||||
clc
|
clc
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
@ -376,11 +419,12 @@ KW.GTR jsr CheckStackPop4
|
|||||||
sbc (pStack),y
|
sbc (pStack),y
|
||||||
inc pStack
|
inc pStack
|
||||||
|
|
||||||
inc pStack
|
lda #0
|
||||||
|
ror
|
||||||
rol
|
|
||||||
eor #$80
|
eor #$80
|
||||||
sta (pStack)
|
sta (pStack)
|
||||||
|
ldy #1
|
||||||
|
sta (pStack),y
|
||||||
|
|
||||||
clc
|
clc
|
||||||
|
|
||||||
@ -400,8 +444,6 @@ KW.EQ jsr CheckStackPop4
|
|||||||
sbc (pStack),y
|
sbc (pStack),y
|
||||||
inc pStack
|
inc pStack
|
||||||
|
|
||||||
inc pStack
|
|
||||||
|
|
||||||
bcc .1
|
bcc .1
|
||||||
|
|
||||||
txa
|
txa
|
||||||
@ -410,38 +452,41 @@ KW.EQ jsr CheckStackPop4
|
|||||||
sec
|
sec
|
||||||
.HS 90 BCC
|
.HS 90 BCC
|
||||||
.1 clc
|
.1 clc
|
||||||
|
|
||||||
|
lda #0
|
||||||
ror
|
ror
|
||||||
sta (pStack)
|
sta (pStack)
|
||||||
|
ldy #1
|
||||||
|
sta (pStack),y
|
||||||
|
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.NEGATIVE >PULLA
|
KW.NEGATIVE ldy #1
|
||||||
>PULLA
|
lda (pStack),y
|
||||||
bpl .9
|
|
||||||
|
|
||||||
sec
|
asl
|
||||||
.HS 90 BCC
|
|
||||||
.9 clc
|
lda #0
|
||||||
ror
|
ror
|
||||||
sta (pStack)
|
sta (pStack)
|
||||||
|
sta (pStack),y
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.ZERO >PULLA
|
KW.ZERO clc
|
||||||
tax
|
ldy #1
|
||||||
>PULLA
|
lda (pStack),y
|
||||||
bne .9
|
ora (pStack)
|
||||||
|
|
||||||
txa
|
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
sec
|
sec
|
||||||
.HS 90 BCC
|
|
||||||
.9 clc
|
.9 lda #0
|
||||||
ror
|
ror
|
||||||
sta (pStack)
|
sta (pStack)
|
||||||
|
sta (pStack),y
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
@ -549,7 +594,7 @@ KW.KEY >SYSCALL GetChar
|
|||||||
|
|
||||||
>PUSHA
|
>PUSHA
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.EMIT >PULLA
|
KW.EMIT >PULLA
|
||||||
>SYSCALL PutChar
|
>SYSCALL PutChar
|
||||||
@ -658,11 +703,11 @@ KW.FILL2 tax
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.HERE >PUSHW ZPUsrBufPtr
|
KW.HERE >PUSHW ZPDataPtr
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.PAD >PUSHW ZPPadBuf
|
KW.PAD >PUSHW ZPOutputPtr
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -679,17 +724,10 @@ KW.VLIST
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.BCOLON
|
KW.BCOLON bit bCompile
|
||||||
|
bmi KW.COLON.SYN
|
||||||
|
|
||||||
clc
|
>PUSHB.G hSList
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
KW.ECOLON
|
|
||||||
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
KW.VARIABLE >PUSHB.G hSList
|
|
||||||
>PUSHW ZPCLBufPtr
|
>PUSHW ZPCLBufPtr
|
||||||
|
|
||||||
>SYSCALL SListNewKey
|
>SYSCALL SListNewKey
|
||||||
@ -700,54 +738,243 @@ KW.VARIABLE >PUSHB.G hSList
|
|||||||
txa
|
txa
|
||||||
jsr NextKW
|
jsr NextKW
|
||||||
|
|
||||||
>LDYA L.PUSHADDR
|
lda #SYM.T.CODE
|
||||||
>STYA ZPUsrCodePtr
|
sta ZPType
|
||||||
|
|
||||||
|
>LDYA ZPCodePtr
|
||||||
|
>STYA ZPAddrPtr
|
||||||
|
|
||||||
>PUSHB.G hSList
|
>PUSHB.G hSList
|
||||||
>PUSHW ZPKeyID
|
>PUSHW ZPKeyID
|
||||||
>PUSHWI ZPUsrBufPtr
|
>PUSHWI ZPType
|
||||||
>PUSHWI 4 BufPtr+CodePtr
|
>PUSHWI 4
|
||||||
|
>SYSCALL SListAddData
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
sec
|
||||||
|
ror bCompile
|
||||||
|
|
||||||
|
clc
|
||||||
|
.9 rts
|
||||||
|
|
||||||
|
|
||||||
|
KW.COLON.SYN lda #E.SYN
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
KW.ECOLON bit bCompile
|
||||||
|
bpl KW.COLON.SYN
|
||||||
|
|
||||||
|
lda #$60
|
||||||
|
jsr EmitByte
|
||||||
|
|
||||||
|
stz bCompile
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
KW.VARIABLE lda pStack
|
||||||
|
cmp #$FE
|
||||||
|
bcc .99
|
||||||
|
|
||||||
|
>PUSHB.G hSList
|
||||||
|
>PUSHW ZPCLBufPtr
|
||||||
|
|
||||||
|
>SYSCALL SListNewKey
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>STYA ZPKeyID
|
||||||
|
|
||||||
|
txa
|
||||||
|
jsr NextKW
|
||||||
|
|
||||||
|
lda #SYM.T.VAR
|
||||||
|
sta ZPType
|
||||||
|
|
||||||
|
>LDYA ZPDataPtr
|
||||||
|
>STYA ZPAddrPtr
|
||||||
|
|
||||||
|
>PUSHB.G hSList
|
||||||
|
>PUSHW ZPKeyID
|
||||||
|
>PUSHWI ZPType
|
||||||
|
>PUSHWI 4
|
||||||
>SYSCALL SListAddData
|
>SYSCALL SListAddData
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>PULLA
|
>PULLA
|
||||||
sta (ZPUsrBufPtr)
|
sta (ZPDataPtr)
|
||||||
>PULLA
|
>PULLA
|
||||||
ldy #1
|
ldy #1
|
||||||
sta (ZPUsrBufPtr),y
|
sta (ZPDataPtr),y
|
||||||
|
|
||||||
lda ZPUsrBufPtr
|
lda ZPDataPtr
|
||||||
clc
|
clc
|
||||||
adc #2
|
adc #2
|
||||||
sta ZPUsrBufPtr
|
sta ZPDataPtr
|
||||||
bcc .9
|
bcc .9
|
||||||
|
|
||||||
inc ZPUsrBufPtr+1
|
inc ZPDataPtr+1
|
||||||
|
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
|
.99 lda #E.STACKERROR
|
||||||
|
sec
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.CONSTANT
|
KW.CONSTANT
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.ACODE
|
KW.ACODE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.FCODE
|
KW.FCODE
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.DO
|
KW.DO tsx
|
||||||
|
|
||||||
|
lda $101,x
|
||||||
|
clc
|
||||||
|
adc #0
|
||||||
|
pha
|
||||||
|
|
||||||
|
lda $102,x
|
||||||
|
adc #0
|
||||||
|
|
||||||
|
ldy RP
|
||||||
|
sta (pData),y
|
||||||
|
dey
|
||||||
|
|
||||||
|
pla
|
||||||
|
sta (pData),y
|
||||||
|
dey
|
||||||
|
|
||||||
|
>PULLA start
|
||||||
|
tax
|
||||||
|
|
||||||
|
>PULLA
|
||||||
|
sta (pData),y
|
||||||
|
dey
|
||||||
|
|
||||||
|
txa
|
||||||
|
sta (pData),y
|
||||||
|
dey
|
||||||
|
|
||||||
|
>PULLA end+1
|
||||||
|
tax
|
||||||
|
|
||||||
|
>PULLA
|
||||||
|
sta (pData),y
|
||||||
|
dey
|
||||||
|
|
||||||
|
txa
|
||||||
|
sta (pData),y
|
||||||
|
dey
|
||||||
|
|
||||||
|
sty RP
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.LOOP
|
KW.LOOP lda #1
|
||||||
|
ldx #0
|
||||||
|
|
||||||
|
KW.LOOPax ldy RP
|
||||||
|
|
||||||
|
iny end+1
|
||||||
|
|
||||||
|
iny
|
||||||
|
iny start
|
||||||
|
|
||||||
|
clc
|
||||||
|
adc (pData),y
|
||||||
|
sta (pData),y
|
||||||
|
|
||||||
|
pha
|
||||||
|
|
||||||
|
iny
|
||||||
|
txa
|
||||||
|
adc (pData),y
|
||||||
|
sta (pData),y
|
||||||
|
|
||||||
|
tax
|
||||||
|
|
||||||
|
pla
|
||||||
|
|
||||||
|
ldy RP
|
||||||
|
iny end+1
|
||||||
|
|
||||||
|
cmp (pData),y
|
||||||
|
txa
|
||||||
|
iny
|
||||||
|
sbc (pData),y
|
||||||
|
bcs .8
|
||||||
|
|
||||||
|
lda RP
|
||||||
|
clc
|
||||||
|
adc #5
|
||||||
|
tay
|
||||||
|
lda (pData),y
|
||||||
|
sta ZPPtr1
|
||||||
|
iny
|
||||||
|
lda (pData),y
|
||||||
|
sta ZPPtr1+1
|
||||||
|
|
||||||
|
pla
|
||||||
|
pla
|
||||||
|
|
||||||
|
jmp (ZPPtr1)
|
||||||
|
|
||||||
|
.8 lda RP
|
||||||
|
clc
|
||||||
|
adc #6
|
||||||
|
sta RP
|
||||||
|
|
||||||
|
* clc
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PW.pLOOP
|
PW.pLOOP >PULLA
|
||||||
|
tax
|
||||||
|
>PULLA
|
||||||
|
|
||||||
|
bra KW.LOOPax
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.I
|
KW.I ldy RP
|
||||||
|
|
||||||
|
iny end+1
|
||||||
|
|
||||||
|
iny
|
||||||
|
iny start
|
||||||
|
|
||||||
|
lda (pData),y
|
||||||
|
tax
|
||||||
|
iny
|
||||||
|
|
||||||
|
lda (pData),y
|
||||||
|
>PUSHA
|
||||||
|
|
||||||
|
txa
|
||||||
|
>PUSHA
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.LEAVE
|
KW.LEAVE
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.IF
|
KW.IF
|
||||||
|
clc
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.ELSE
|
KW.ELSE
|
||||||
|
clc
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.ENDIF
|
KW.ENDIF
|
||||||
|
clc
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.BEGIN
|
KW.BEGIN
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
454
BIN/FORTH.S.txt
454
BIN/FORTH.S.txt
@ -10,39 +10,45 @@ NEW
|
|||||||
.INB inc/mli.i
|
.INB inc/mli.i
|
||||||
.INB inc/mli.e.i
|
.INB inc/mli.e.i
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
USERSPACE.SIZE .EQ 4096
|
CODE.SIZE .EQ 2048
|
||||||
SCRATCH.SIZE .EQ 256
|
DATA.SIZE .EQ 2048
|
||||||
|
INPUT.SIZE .EQ 256
|
||||||
|
OUTPUT.SIZE .EQ 256
|
||||||
|
CL.SIZE .EQ 256
|
||||||
|
*--------------------------------------
|
||||||
|
SYM.T.CONST .EQ 0
|
||||||
|
SYM.T.VAR .EQ 64
|
||||||
|
SYM.T.CODE .EQ 128
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR ZPBIN
|
.OR ZPBIN
|
||||||
ZS.START
|
ZS.START
|
||||||
ZPCLBuf .BS 2
|
|
||||||
ZPCLBufPtr .BS 2
|
|
||||||
ZPFileBuf .BS 2
|
|
||||||
ZPFileBufPtr .BS 2
|
|
||||||
|
|
||||||
ZPPadBuf .BS 2
|
|
||||||
ZPKeyID .BS 2
|
|
||||||
|
|
||||||
ZPUsrBufPtr .BS 2
|
|
||||||
ZPUsrCodePtr .BS 2
|
|
||||||
|
|
||||||
ZPAddrPtr .BS 2
|
|
||||||
ZPCodePtr .BS 2
|
ZPCodePtr .BS 2
|
||||||
|
ZPDataPtr .BS 2
|
||||||
|
ZPInputPtr .BS 2
|
||||||
|
ZPOutputPtr .BS 2
|
||||||
|
|
||||||
|
ZPKeyID .BS 2
|
||||||
|
ZPType .BS 1
|
||||||
|
.BS 1
|
||||||
|
ZPAddrPtr .BS 2
|
||||||
|
|
||||||
ZPPtr1 .BS 2
|
ZPPtr1 .BS 2
|
||||||
ZPPtr2 .BS 2
|
ZPPtr2 .BS 2
|
||||||
|
|
||||||
ZPPtr3 .BS 2
|
ZPPtr3 .BS 2
|
||||||
|
|
||||||
|
ZPCLBuf .BS 2
|
||||||
|
ZPCLBufPtr .BS 2
|
||||||
|
|
||||||
CL.Ptr .BS 1
|
CL.Ptr .BS 1
|
||||||
CL.Len .BS 1
|
CL.Len .BS 1
|
||||||
CL.bReady .BS 1
|
CL.bReady .BS 1
|
||||||
CL.bEscMode .BS 1
|
CL.bEscMode .BS 1
|
||||||
CL.MaxCnt .BS 1
|
CL.MaxCnt .BS 1
|
||||||
|
|
||||||
bCompile .EQ *
|
ArgIndex .EQ *
|
||||||
ArgIndex .BS 1
|
bCompile .BS 1
|
||||||
|
RP .BS 1
|
||||||
|
|
||||||
ZS.END .ED
|
ZS.END .ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -81,7 +87,6 @@ J.ESC .DA CL.BS left arrow
|
|||||||
* .DA HIS.GetNext
|
* .DA HIS.GetNext
|
||||||
* .DA HIS.GetPrev
|
* .DA HIS.GetPrev
|
||||||
.DA CL.NAK right arrow
|
.DA CL.NAK right arrow
|
||||||
L.PUSHADDR .DA PUSHADDR
|
|
||||||
L.KEYWORDS .DA KEYWORDS
|
L.KEYWORDS .DA KEYWORDS
|
||||||
J.KEYWORDS .DA KW.DUP
|
J.KEYWORDS .DA KW.DUP
|
||||||
.DA KW.DROP
|
.DA KW.DROP
|
||||||
@ -196,39 +201,58 @@ CS.RUN >PUSHW L.MSG.GREETINGS
|
|||||||
jsr CS.RUN.ARGS
|
jsr CS.RUN.ARGS
|
||||||
bcs CS.INIT.RTS
|
bcs CS.INIT.RTS
|
||||||
|
|
||||||
>LDYAI 256
|
>LDYAI CODE.SIZE
|
||||||
>SYSCALL GetMem
|
>SYSCALL GetMem
|
||||||
bcs CS.INIT.RTS
|
bcs CS.INIT.RTS
|
||||||
|
|
||||||
|
>STYA ZPCodePtr
|
||||||
|
>STYA.G CodeBuf
|
||||||
|
txa
|
||||||
|
>STA.G hCodeBuf
|
||||||
|
|
||||||
|
>LDYAI DATA.SIZE
|
||||||
|
>SYSCALL GetMem
|
||||||
|
.9 bcs CS.INIT.RTS
|
||||||
|
|
||||||
|
>STYA ZPDataPtr
|
||||||
|
>STYA.G DataBuf
|
||||||
|
txa
|
||||||
|
>STA.G hDataBuf
|
||||||
|
|
||||||
|
>LDYAI INPUT.SIZE
|
||||||
|
>SYSCALL GetMem
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>STYA.G InputBuf
|
||||||
|
txa
|
||||||
|
>STA.G hInputBuf
|
||||||
|
|
||||||
|
>LDYAI OUTPUT.SIZE
|
||||||
|
>SYSCALL GetMem
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>STYA.G OutputBuf
|
||||||
|
txa
|
||||||
|
>STA.G hOutputBuf
|
||||||
|
|
||||||
|
>LDYAI CL.SIZE
|
||||||
|
>SYSCALL GetMem
|
||||||
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPCLBuf
|
>STYA ZPCLBuf
|
||||||
txa
|
txa
|
||||||
>STA.G hCLBuf
|
>STA.G hCLBuf
|
||||||
|
|
||||||
>LDYAI 256
|
|
||||||
>SYSCALL GetMem
|
|
||||||
bcs CS.INIT.RTS
|
|
||||||
|
|
||||||
>STYA ZPPadBuf
|
|
||||||
txa
|
|
||||||
>STA.G hPadBuf
|
|
||||||
|
|
||||||
>LDYAI USERSPACE.SIZE
|
|
||||||
>SYSCALL GetMem
|
|
||||||
bcs CS.INIT.RTS
|
|
||||||
|
|
||||||
>STYA ZPUsrBufPtr
|
|
||||||
>STYA.G UsrBuf
|
|
||||||
txa
|
|
||||||
>STA.G hUsrBuf
|
|
||||||
|
|
||||||
>SYSCALL SListNew
|
>SYSCALL SListNew
|
||||||
bcs CS.INIT.RTS
|
bcs .9
|
||||||
|
|
||||||
>STA.G hSList
|
>STA.G hSList
|
||||||
|
|
||||||
stz bCompile
|
stz bCompile
|
||||||
|
lda #127
|
||||||
|
sta RP
|
||||||
|
|
||||||
.1 >SLEEP
|
CS.RUN.LOOP >SLEEP
|
||||||
|
|
||||||
>LDA.G bDebug
|
>LDA.G bDebug
|
||||||
bpl .2
|
bpl .2
|
||||||
@ -238,11 +262,11 @@ CS.RUN >PUSHW L.MSG.GREETINGS
|
|||||||
.2 >LDA.G bTrace
|
.2 >LDA.G bTrace
|
||||||
bpl .3
|
bpl .3
|
||||||
|
|
||||||
>LDYA ZPFileBufPtr
|
>LDYA ZPCLBuf
|
||||||
jsr PrintTraceMsg
|
jsr PrintTraceMsg
|
||||||
|
|
||||||
.3 jsr CS.FORTH.Run
|
.3 jsr CS.FORTH.Run
|
||||||
bcc .1
|
bcc CS.RUN.LOOP
|
||||||
|
|
||||||
cmp #MLI.E.EOF
|
cmp #MLI.E.EOF
|
||||||
beq .8
|
beq .8
|
||||||
@ -260,7 +284,7 @@ CS.RUN >PUSHW L.MSG.GREETINGS
|
|||||||
>SYSCALL GetErrorMessage
|
>SYSCALL GetErrorMessage
|
||||||
>LDYA ZPCLBuf
|
>LDYA ZPCLBuf
|
||||||
>SYSCALL PutS
|
>SYSCALL PutS
|
||||||
bra .1
|
bra CS.RUN.LOOP
|
||||||
|
|
||||||
* jsr PrintErrMsg
|
* jsr PrintErrMsg
|
||||||
|
|
||||||
@ -301,14 +325,14 @@ CS.RUN.ARGS inc ArgIndex
|
|||||||
sta (pData),y
|
sta (pData),y
|
||||||
bra CS.RUN.ARGS
|
bra CS.RUN.ARGS
|
||||||
|
|
||||||
.4 >LDA.G hFileBuf
|
.4 >LDA.G hFile
|
||||||
bne .90
|
bne .90
|
||||||
|
|
||||||
>LDYA ZPPtr1
|
>LDYA ZPPtr1
|
||||||
jsr CS.RUN.LoadFile
|
jsr CS.RUN.FOpen
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STA.G hFileBuf
|
>STA.G hFile
|
||||||
bra CS.RUN.ARGS
|
bra CS.RUN.ARGS
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
@ -322,10 +346,10 @@ CS.RUN.ARGS inc ArgIndex
|
|||||||
sec QUIT Process
|
sec QUIT Process
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.FORTH.Run >LDA.G hFileBuf
|
CS.FORTH.Run jsr CL.Reset
|
||||||
bne CS.FORTH.Run.File
|
|
||||||
|
|
||||||
jsr CL.Reset
|
>LDA.G hFile
|
||||||
|
bne CS.FORTH.Run.File
|
||||||
|
|
||||||
lda #80
|
lda #80
|
||||||
sta CL.MaxCnt
|
sta CL.MaxCnt
|
||||||
@ -351,49 +375,32 @@ CS.FORTH.Run >LDA.G hFileBuf
|
|||||||
jmp CS.RUN.EXEC
|
jmp CS.RUN.EXEC
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
CS.FORTH.Run.File
|
CS.FORTH.Run.File
|
||||||
lda (ZPFileBufPtr)
|
>PUSHWI 256
|
||||||
|
>PUSHW ZPCLBuf
|
||||||
|
|
||||||
|
>LDA.G hFile
|
||||||
|
>SYSCALL fgets
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
lda (ZPCLBuf)
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
ldy #$ff
|
|
||||||
|
|
||||||
.3 iny
|
|
||||||
lda (ZPFileBufPtr),y
|
|
||||||
sta (ZPCLBuf),y
|
|
||||||
beq .4
|
|
||||||
|
|
||||||
eor #C.CR
|
|
||||||
bne .3
|
|
||||||
|
|
||||||
sta (ZPCLBuf),y
|
|
||||||
|
|
||||||
iny
|
|
||||||
|
|
||||||
.4 tya
|
|
||||||
|
|
||||||
clc
|
|
||||||
adc ZPFileBufPtr
|
|
||||||
sta ZPFileBufPtr
|
|
||||||
bcc .5
|
|
||||||
|
|
||||||
inc ZPFileBufPtr+1
|
|
||||||
|
|
||||||
.5 lda (ZPCLBuf)
|
|
||||||
beq CS.FORTH.Run.File
|
|
||||||
|
|
||||||
cmp #'#'
|
cmp #'#'
|
||||||
beq CS.FORTH.Run.File
|
bne .1
|
||||||
|
|
||||||
>LDYA ZPCLBuf
|
|
||||||
>STYA ZPCLBufPtr
|
|
||||||
|
|
||||||
jmp CS.RUN.EXEC
|
ldy #1
|
||||||
|
lda (ZPCLBuf),y
|
||||||
.8 lda #MLI.E.EOF
|
beq .1
|
||||||
|
|
||||||
sec
|
cmp #'!'
|
||||||
rts
|
beq .8
|
||||||
|
|
||||||
|
.1 jmp CS.RUN.EXEC
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.EXEC lda (ZPCLBufPtr)
|
CS.RUN.EXEC lda (ZPCLBufPtr)
|
||||||
beq .8
|
beq .8
|
||||||
@ -409,28 +416,106 @@ CS.RUN.EXEC lda (ZPCLBufPtr)
|
|||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.2 >PUSHB.G hSList
|
.2 jsr CS.RUN.GetSymbol
|
||||||
>PUSHW ZPCLBufPtr
|
|
||||||
>SYSCALL SListLookup
|
|
||||||
bcs .5
|
bcs .5
|
||||||
|
|
||||||
|
bit ZPType
|
||||||
|
bmi .4
|
||||||
|
|
||||||
|
bvc .3
|
||||||
|
|
||||||
|
>PUSHW ZPAddrPtr
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
.3 ldy #1
|
||||||
|
>PUSHB (ZPAddrPtr),y
|
||||||
|
>PUSHB (ZPAddrPtr)
|
||||||
|
rts
|
||||||
|
|
||||||
|
.4 bit bCompile
|
||||||
|
bmi .40
|
||||||
|
|
||||||
|
jsr .80
|
||||||
|
bcc CS.RUN.EXEC
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
.40 >LDYA ZPAddrPtr
|
||||||
|
jsr EmitJsrYA
|
||||||
|
bra CS.RUN.EXEC
|
||||||
|
|
||||||
|
.5 jsr CS.RUN.GetNum
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
.6 jsr NextChar Skip SPACE if any
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
.9 rts
|
||||||
|
|
||||||
|
.7 txa
|
||||||
|
asl
|
||||||
|
tax
|
||||||
|
|
||||||
|
cpx #$A2 ; ECOLON always EXECUTE
|
||||||
|
beq .71
|
||||||
|
|
||||||
|
bit bCompile
|
||||||
|
bmi .72
|
||||||
|
|
||||||
|
.70 bcs .99 cannot exec compil only
|
||||||
|
|
||||||
|
.71 jmp (J.KEYWORDS,x)
|
||||||
|
|
||||||
|
.72 jmp CP.RUN
|
||||||
|
|
||||||
|
.80 jmp (ZPAddrPtr)
|
||||||
|
|
||||||
|
.99 lda #E.SYN
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.FOpen >PUSHYA
|
||||||
|
>PUSHBI O.RDONLY
|
||||||
|
>PUSHBI S.FI.T.TXT
|
||||||
|
>PUSHWZ Aux type
|
||||||
|
>SYSCALL FOpen
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>STA.G hFile
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.GetSymbol
|
||||||
|
>PUSHB.G hSList
|
||||||
|
>PUSHW ZPCLBufPtr
|
||||||
|
>SYSCALL SListLookup
|
||||||
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPKeyID
|
>STYA ZPKeyID
|
||||||
|
|
||||||
|
txa
|
||||||
|
jsr NextKW
|
||||||
|
|
||||||
>PUSHB.G hSList
|
>PUSHB.G hSList
|
||||||
>PUSHW ZPKeyID
|
>PUSHW ZPKeyID
|
||||||
>PUSHWI ZPAddrPtr
|
>PUSHWI ZPType
|
||||||
>PUSHWI 4 4 bytes
|
>PUSHWI 4 4 bytes
|
||||||
>PUSHWZ From Start
|
>PUSHWZ From Start
|
||||||
|
|
||||||
>SYSCALL SListGetData
|
>SYSCALL SListGetData
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jmp (ZPCodePtr)
|
|
||||||
|
|
||||||
.8 clc
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
.5 >PUSHW ZPCLBufPtr
|
CS.RUN.GetNum >PUSHW ZPCLBufPtr
|
||||||
>PUSHWI ZPCLBufPtr
|
>PUSHWI ZPCLBufPtr
|
||||||
>PUSHBI 10
|
>PUSHBI 10
|
||||||
>SYSCALL StrToL
|
>SYSCALL StrToL
|
||||||
@ -447,31 +532,16 @@ CS.RUN.EXEC lda (ZPCLBufPtr)
|
|||||||
|
|
||||||
inc pStack
|
inc pStack
|
||||||
|
|
||||||
.6 jsr NextChar Skip SPACE if any
|
bit bCompile
|
||||||
beq .8
|
bmi .1
|
||||||
|
|
||||||
jmp .1
|
|
||||||
|
|
||||||
.7 txa
|
|
||||||
asl
|
|
||||||
tax
|
|
||||||
|
|
||||||
jmp (J.KEYWORDS,x)
|
|
||||||
*--------------------------------------
|
|
||||||
CS.RUN.LoadFile >PUSHYA
|
|
||||||
>PUSHBI O.RDONLY
|
|
||||||
>PUSHBI S.FI.T.TXT
|
|
||||||
>PUSHWZ Aux type
|
|
||||||
>SYSCALL LoadTxtFile
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
phx
|
* clc
|
||||||
txa
|
rts
|
||||||
>SYSCALL GetMemPtr
|
|
||||||
>STYA ZPFileBuf
|
|
||||||
>STYA ZPFileBufPtr
|
|
||||||
pla
|
|
||||||
|
|
||||||
|
.1 >PULLYA
|
||||||
|
jsr EmitPushYA
|
||||||
|
|
||||||
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.DOEVENT sec
|
CS.DOEVENT sec
|
||||||
@ -483,10 +553,21 @@ CS.QUIT >LDA.G hSList
|
|||||||
>PUSHA
|
>PUSHA
|
||||||
>SYSCALL SListFree
|
>SYSCALL SListFree
|
||||||
|
|
||||||
.1 ldy #hFileBuf
|
.1 >LDA.G hFile
|
||||||
|
beq .2
|
||||||
|
|
||||||
|
>SYSCALL FClose
|
||||||
|
|
||||||
|
.2 ldy #hCodeBuf
|
||||||
jsr .7
|
jsr .7
|
||||||
|
|
||||||
ldy #hUsrBuf
|
ldy #hDataBuf
|
||||||
|
jsr .7
|
||||||
|
|
||||||
|
ldy #hInputBuf
|
||||||
|
jsr .7
|
||||||
|
|
||||||
|
ldy #hOutputBuf
|
||||||
jsr .7
|
jsr .7
|
||||||
|
|
||||||
ldy #hCLBuf
|
ldy #hCLBuf
|
||||||
@ -504,63 +585,10 @@ PrintPrompt >PUSHW L.MSG.PROMPT
|
|||||||
>SYSCALL PrintF
|
>SYSCALL PrintF
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PrintErrMsg >LDYA ZPFileBuf
|
PrintErrMsg >LDYA.G ZPCLBuf
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
|
||||||
stz ZPPtr2
|
clc
|
||||||
stz ZPPtr2+1 Line counter
|
|
||||||
|
|
||||||
.1 inc ZPPtr2
|
|
||||||
bne .2
|
|
||||||
inc ZPPtr2+1
|
|
||||||
|
|
||||||
.2 >LDYA ZPPtr1
|
|
||||||
>STYA ZPPtr3 save line start
|
|
||||||
|
|
||||||
.20 lda (ZPPtr1)
|
|
||||||
beq .4 EoF
|
|
||||||
|
|
||||||
inc ZPPtr1
|
|
||||||
bne .3
|
|
||||||
inc ZPPtr1+1
|
|
||||||
.3 cmp #C.CR
|
|
||||||
bne .20 Scan until EoL
|
|
||||||
|
|
||||||
ldx ZPPtr1
|
|
||||||
cpx ZPFileBufPtr
|
|
||||||
lda ZPPtr1+1
|
|
||||||
sbc ZPFileBufPtr+1
|
|
||||||
bcc .1 not this line....
|
|
||||||
|
|
||||||
.4 >LDA.G bTrace
|
|
||||||
bmi .5
|
|
||||||
|
|
||||||
jsr PrintTraceMsg.3
|
|
||||||
|
|
||||||
.5 lda ZPPtr3
|
|
||||||
cmp ZPFileBufPtr
|
|
||||||
bne .6
|
|
||||||
|
|
||||||
lda ZPPtr3+1
|
|
||||||
cmp ZPFileBufPtr+1
|
|
||||||
beq .8
|
|
||||||
|
|
||||||
.6 >PUSHBI '-'
|
|
||||||
ldy #S.PS.hStdErr
|
|
||||||
lda (pPS),y
|
|
||||||
>SYSCALL FPutC
|
|
||||||
inc ZPPtr3
|
|
||||||
bne .5
|
|
||||||
inc ZPPtr3+1
|
|
||||||
bra .5
|
|
||||||
|
|
||||||
.8 ldy #S.PS.hStdErr
|
|
||||||
lda (pPS),y
|
|
||||||
>PUSHA
|
|
||||||
>PUSHW L.MSG.ERR
|
|
||||||
>PUSHW ZPPtr2 Line counter
|
|
||||||
>PUSHBI 2
|
|
||||||
>SYSCALL FPrintF
|
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -670,12 +698,6 @@ IsSpaceOrCR cmp #C.SPACE
|
|||||||
IsEndKW.8 clc
|
IsEndKW.8 clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PUSHADDR lda ZPAddrPtr+1
|
|
||||||
>PUSHA
|
|
||||||
lda ZPAddrPtr
|
|
||||||
>PUSHA
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CheckStackPop4 lda pStack
|
CheckStackPop4 lda pStack
|
||||||
sec
|
sec
|
||||||
sbc #4
|
sbc #4
|
||||||
@ -687,8 +709,59 @@ CheckStackPop4 lda pStack
|
|||||||
.9 lda #E.STACKERROR
|
.9 lda #E.STACKERROR
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
EmitPullA lda #$B2 lda (zp)
|
||||||
|
jsr EmitByte
|
||||||
|
|
||||||
|
lda #pStack
|
||||||
|
jsr EmitByte
|
||||||
|
|
||||||
|
lda #$E6 inc zp
|
||||||
|
|
||||||
|
lda #pStack
|
||||||
|
bra EmitByte
|
||||||
|
*--------------------------------------
|
||||||
|
EmitPushYA pha
|
||||||
|
tya
|
||||||
|
|
||||||
|
jsr EmitPushA
|
||||||
|
|
||||||
|
pla
|
||||||
|
|
||||||
|
EmitPushA pha
|
||||||
|
lda #$A9 LDA imm
|
||||||
|
jsr EmitByte
|
||||||
|
|
||||||
|
pla
|
||||||
|
jsr EmitByte
|
||||||
|
|
||||||
|
lda #$C6 DEC zp
|
||||||
|
jsr EmitByte
|
||||||
|
|
||||||
|
lda #pStack
|
||||||
|
jsr EmitByte
|
||||||
|
|
||||||
|
lda #$92 STA (zp)
|
||||||
|
jsr EmitByte
|
||||||
|
|
||||||
|
lda #pStack
|
||||||
|
bra EmitByte
|
||||||
|
*--------------------------------------
|
||||||
|
EmitJsrYA pha
|
||||||
|
lda #$20
|
||||||
|
jsr EmitByte
|
||||||
|
tya
|
||||||
|
jsr EmitByte
|
||||||
|
pla
|
||||||
|
*--------------------------------------
|
||||||
|
EmitByte sta (ZPCodePtr)
|
||||||
|
inc ZPCodePtr
|
||||||
|
bne .8
|
||||||
|
inc ZPCodePtr+1
|
||||||
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB usr/src/bin/forth.s.cl
|
.INB usr/src/bin/forth.s.cl
|
||||||
|
.INB usr/src/bin/forth.s.cp
|
||||||
.INB usr/src/bin/forth.s.kw
|
.INB usr/src/bin/forth.s.kw
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
@ -798,9 +871,7 @@ KEYWORDS .AT "DUP" ( n - n n ) Duplicate top of stack.
|
|||||||
.AT ":" ( - ) Begin a colon definition.
|
.AT ":" ( - ) Begin a colon definition.
|
||||||
.AT ";" ( - ) End of a colon definition.
|
.AT ";" ( - ) End of a colon definition.
|
||||||
.AT "VARIABLE" ( n - ) Create a variable with initial value n.
|
.AT "VARIABLE" ( n - ) Create a variable with initial value n.
|
||||||
* ( - addr ) Return address when executed.
|
|
||||||
.AT "CONSTANT" ( n - ) Create a constant with value n.
|
.AT "CONSTANT" ( n - ) Create a constant with value n.
|
||||||
* ( - n ) Return the value n when executed.
|
|
||||||
.AT "CODE" ( - ) Create assembly-language definition.
|
.AT "CODE" ( - ) Create assembly-language definition.
|
||||||
.AT ";CODE" ( - ) Create a new defining word, with runtime code routine in high-level Forth.
|
.AT ";CODE" ( - ) Create a new defining word, with runtime code routine in high-level Forth.
|
||||||
.AT "DO" ( end+1 start - ) Set up loop, given index range.
|
.AT "DO" ( end+1 start - ) Set up loop, given index range.
|
||||||
@ -822,15 +893,26 @@ KEYWORDS .AT "DUP" ( n - n n ) Duplicate top of stack.
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR 0
|
.OR 0
|
||||||
DS.START
|
DS.START .BS 128 RETURN STACK
|
||||||
|
|
||||||
bDebug .BS 1
|
bDebug .BS 1
|
||||||
bTrace .BS 1
|
bTrace .BS 1
|
||||||
bExitOnEOF .BS 1
|
bExitOnEOF .BS 1
|
||||||
|
|
||||||
|
hCodeBuf .BS 1
|
||||||
|
CodeBuf .BS 2
|
||||||
|
|
||||||
|
hDataBuf .BS 1
|
||||||
|
DataBuf .BS 2
|
||||||
|
|
||||||
|
hInputBuf .BS 1
|
||||||
|
InputBuf .BS 2
|
||||||
|
|
||||||
|
hOutputBuf .BS 1
|
||||||
|
OutputBuf .BS 2
|
||||||
|
|
||||||
hCLBuf .BS 1
|
hCLBuf .BS 1
|
||||||
hPadBuf .BS 1
|
hFile .BS 1
|
||||||
hUsrBuf .BS 1
|
|
||||||
UsrBuf .BS 2
|
|
||||||
hFileBuf .BS 1
|
|
||||||
hSList .BS 1
|
hSList .BS 1
|
||||||
|
|
||||||
DS.END .ED
|
DS.END .ED
|
||||||
|
@ -2,9 +2,9 @@ NEW
|
|||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.D2.SeekTimeR .EQ 140 LIBBLKDEV Recalibration
|
IO.D2.SeekTimeR .EQ 140 LIBBLKDEV Recalibration
|
||||||
IO.D2.SeekTimeF .EQ 68 LIBBLKDEV Track Formatter
|
IO.D2.SeekTimeF .EQ 70 LIBBLKDEV Track Formatter
|
||||||
IO.D2.SeekTimeB .EQ 68 LIBBLKDEV Boot Block
|
IO.D2.SeekTimeB .EQ 70 LIBBLKDEV Boot Block
|
||||||
IO.D2.SeekTimeP .EQ 68 ProDOS.FX initial
|
IO.D2.SeekTimeP .EQ 70 ProDOS.FX initial
|
||||||
IO.D2.SeekTimeI .EQ 10 ProDOS.FX increment -> until > 128
|
IO.D2.SeekTimeI .EQ 10 ProDOS.FX increment -> until > 128
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.D2.Ph0Off .EQ $C080
|
IO.D2.Ph0Off .EQ $C080
|
||||||
|
@ -88,12 +88,10 @@ D2MoveHead >PULLB MoveTo
|
|||||||
sta .7+1
|
sta .7+1
|
||||||
stz .6+1
|
stz .6+1
|
||||||
|
|
||||||
lda IO.D2.Ph0On,x
|
bit IO.D2.Ph0On,x
|
||||||
nop
|
nop
|
||||||
nop
|
nop
|
||||||
* lda #IO.D2.SeekTimeF
|
|
||||||
* jsr D2.Wait100usecA
|
|
||||||
|
|
||||||
pla
|
pla
|
||||||
|
|
||||||
.1 bcc .2
|
.1 bcc .2
|
||||||
@ -134,9 +132,10 @@ D2MoveHead >PULLB MoveTo
|
|||||||
|
|
||||||
sta .7+1
|
sta .7+1
|
||||||
|
|
||||||
.5 sta $C000
|
.5 bit $C000
|
||||||
nop
|
nop
|
||||||
nop
|
nop
|
||||||
|
|
||||||
lda #IO.D2.SeekTimeF
|
lda #IO.D2.SeekTimeF
|
||||||
jsr D2.Wait100usecA
|
jsr D2.Wait100usecA
|
||||||
|
|
||||||
@ -146,10 +145,11 @@ D2MoveHead >PULLB MoveTo
|
|||||||
|
|
||||||
jsr D2.Wait25600usec
|
jsr D2.Wait25600usec
|
||||||
|
|
||||||
.6 sta $C000
|
.6 bit $C000
|
||||||
nop
|
nop
|
||||||
nop
|
nop
|
||||||
.7 sta $C000
|
|
||||||
|
.7 bit $C000
|
||||||
nop
|
nop
|
||||||
nop
|
nop
|
||||||
|
|
||||||
@ -162,9 +162,10 @@ D2.Wait25600usec
|
|||||||
lda #0
|
lda #0
|
||||||
|
|
||||||
D2.Wait100usecA
|
D2.Wait100usecA
|
||||||
.1 ldx #20 (2)
|
.1 ldx #11 (2)
|
||||||
|
|
||||||
.2 dex (2)
|
.2 bit $C0EC
|
||||||
|
dex (2)
|
||||||
bne .2 (3)
|
bne .2 (3)
|
||||||
|
|
||||||
dec (2)
|
dec (2)
|
||||||
|
@ -380,11 +380,15 @@ L596F ldy #$FF index to last byte of data to write.
|
|||||||
* if no error, acc=uncertain, x=unchanged, y=0, carry clear.
|
* if no error, acc=uncertain, x=unchanged, y=0, carry clear.
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.LIST ON
|
.LIST ON
|
||||||
XRW.Write lda IO.D2.ReadProt,x PREWRITE MODE
|
XRW.Write sec
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
|
lda IO.D2.ReadProt,x PREWRITE MODE
|
||||||
lda IO.D2.ReadMode,x
|
lda IO.D2.ReadMode,x
|
||||||
|
bpl .1
|
||||||
lda nbuf2
|
|
||||||
|
jmp XRW.ReadMode
|
||||||
|
|
||||||
|
.1 lda nbuf2
|
||||||
sta pcl
|
sta pcl
|
||||||
|
|
||||||
lda #$FF Self Sync Byte
|
lda #$FF Self Sync Byte
|
||||||
@ -550,9 +554,11 @@ XRW.WaitSeekTime
|
|||||||
XRW.Wait25600usec
|
XRW.Wait25600usec
|
||||||
lda #0
|
lda #0
|
||||||
XRW.Wait100usecA
|
XRW.Wait100usecA
|
||||||
.1 ldx #18 (2)
|
phx
|
||||||
|
.1 ldx #10 (2)
|
||||||
|
|
||||||
.2 dex (2)
|
.2 bit $C0EC (4)
|
||||||
|
dex (2)
|
||||||
bne .2 (3)
|
bne .2 (3)
|
||||||
|
|
||||||
inc XRW.montimel (6)
|
inc XRW.montimel (6)
|
||||||
@ -563,6 +569,7 @@ XRW.Wait100usecA
|
|||||||
.3 dec (2)
|
.3 dec (2)
|
||||||
bne .1 (3)
|
bne .1 (3)
|
||||||
|
|
||||||
|
plx
|
||||||
rts (6)
|
rts (6)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* read subroutine (16-sector format)
|
* read subroutine (16-sector format)
|
||||||
@ -720,11 +727,9 @@ XRW.Read.RTS rts
|
|||||||
* A = target track
|
* A = target track
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
XRW.Seek ldx XRW.UnitIndex
|
XRW.Seek ldx XRW.UnitIndex
|
||||||
cmp XRW.D2Trk-1,x
|
|
||||||
beq XRW.Read.RTS
|
|
||||||
|
|
||||||
pha save target track
|
pha save target track
|
||||||
|
|
||||||
jsr XRW.Trk2Qtrk
|
jsr XRW.Trk2Qtrk
|
||||||
sta XRW.TargetQTrack
|
sta XRW.TargetQTrack
|
||||||
|
|
||||||
@ -736,86 +741,85 @@ XRW.Seek ldx XRW.UnitIndex
|
|||||||
pla
|
pla
|
||||||
sta XRW.D2Trk-1,x will be current track at the end
|
sta XRW.D2Trk-1,x will be current track at the end
|
||||||
|
|
||||||
lda XRW.CurrentQTrack
|
ldx A2L
|
||||||
|
ldy A2L
|
||||||
|
|
||||||
|
.1 lda XRW.CurrentQTrack
|
||||||
cmp XRW.TargetQTrack
|
cmp XRW.TargetQTrack
|
||||||
|
beq .7
|
||||||
|
|
||||||
pha
|
jsr .8
|
||||||
|
|
||||||
bcs .10
|
bcs .2
|
||||||
|
|
||||||
|
* Current < Target, must move in
|
||||||
|
|
||||||
inc
|
inc
|
||||||
|
|
||||||
.10 and #6
|
.HS B0 BCS
|
||||||
ora A2L
|
|
||||||
tax
|
|
||||||
|
|
||||||
ora #$80
|
|
||||||
sta .7+1
|
|
||||||
stz .6+1
|
|
||||||
|
|
||||||
lda IO.D2.Ph0On,x
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
* jsr XRW.WaitSeekTime
|
|
||||||
|
|
||||||
pla
|
|
||||||
|
|
||||||
.1 bcc .2
|
|
||||||
|
|
||||||
* Current > Target, must move out
|
* Current > Target, must move out
|
||||||
|
|
||||||
dec
|
.2 dec
|
||||||
|
|
||||||
.HS 90 BCC
|
|
||||||
|
|
||||||
* Current < Target, must move in
|
|
||||||
|
|
||||||
.2 inc
|
|
||||||
|
|
||||||
sta XRW.CurrentQTrack
|
sta XRW.CurrentQTrack
|
||||||
|
|
||||||
and #7
|
pha
|
||||||
tay
|
|
||||||
|
|
||||||
bcs .3
|
and #6
|
||||||
|
ora A2L
|
||||||
|
tax
|
||||||
|
|
||||||
lda XRW.PhIn,y
|
pla
|
||||||
|
|
||||||
|
bcs .3
|
||||||
|
|
||||||
|
* Current < Target, must move in
|
||||||
|
|
||||||
|
inc
|
||||||
|
|
||||||
|
.HS B0 BCS
|
||||||
|
|
||||||
|
* Current > Target, must move out
|
||||||
|
|
||||||
|
.3 dec
|
||||||
|
|
||||||
|
and #6
|
||||||
|
ora A2L
|
||||||
|
|
||||||
bcc .4
|
bcc .4
|
||||||
|
|
||||||
|
* move out : invert 2 phases
|
||||||
|
|
||||||
.3 lda XRW.PhOut,y
|
phx
|
||||||
|
tax
|
||||||
.4 ora A2L
|
pla
|
||||||
sta .5+1
|
|
||||||
|
.4 tay
|
||||||
lsr
|
|
||||||
bcc .5
|
lda IO.D2.Ph0On,x
|
||||||
|
|
||||||
asl
|
|
||||||
|
|
||||||
ldx .7+1
|
|
||||||
stx .6+1
|
|
||||||
|
|
||||||
sta .7+1
|
|
||||||
|
|
||||||
.5 sta $C000 SELF MODIFIED
|
|
||||||
nop
|
nop
|
||||||
nop
|
nop
|
||||||
|
|
||||||
|
lda IO.D2.Ph0On,y
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
|
||||||
jsr XRW.WaitSeekTime
|
jsr XRW.WaitSeekTime
|
||||||
|
|
||||||
|
bra .1
|
||||||
|
|
||||||
lda XRW.CurrentQTrack
|
.7 jsr XRW.Wait25600usec
|
||||||
cmp XRW.TargetQTrack
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
jsr XRW.Wait25600usec
|
.8 bit IO.D2.Ph0Off,x
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
|
||||||
.6 sta $C000 SELF MODIFIED
|
ldx IO.D2.Ph0Off,y
|
||||||
nop
|
nop
|
||||||
nop
|
nop
|
||||||
.7 sta $C000 SELF MODIFIED
|
|
||||||
nop
|
rts
|
||||||
nop
|
|
||||||
.8 rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
XRW.Reset ldx A2L
|
XRW.Reset ldx A2L
|
||||||
|
|
||||||
@ -948,24 +952,6 @@ XRW.TestWP ldx A2L
|
|||||||
rol write protect-->carry-->bit 0=1
|
rol write protect-->carry-->bit 0=1
|
||||||
lda IO.D2.RData,x keep in read mode
|
lda IO.D2.RData,x keep in read mode
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
|
||||||
XRW.PhIn .DA #IO.D2.Ph3Off 7->0
|
|
||||||
.DA #IO.D2.Ph1On 0->1
|
|
||||||
.DA #IO.D2.Ph0Off 1->2
|
|
||||||
.DA #IO.D2.Ph2On 2->3
|
|
||||||
.DA #IO.D2.Ph1Off 3->4
|
|
||||||
.DA #IO.D2.Ph3On 4->5
|
|
||||||
.DA #IO.D2.Ph2Off 5->6
|
|
||||||
.DA #IO.D2.Ph0On 6->7
|
|
||||||
|
|
||||||
XRW.PhOut .DA #IO.D2.Ph1Off 1->0
|
|
||||||
.DA #IO.D2.Ph0on 2->1
|
|
||||||
.DA #IO.D2.Ph2off 3->2
|
|
||||||
.DA #IO.D2.Ph1On 4->3
|
|
||||||
.DA #IO.D2.Ph3Off 5->4
|
|
||||||
.DA #IO.D2.Ph2On 6->5
|
|
||||||
.DA #IO.D2.Ph0Off 7->6
|
|
||||||
.DA #IO.D2.Ph3On 0->7
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.LIST ON
|
.LIST ON
|
||||||
XRW.FREE .EQ $D540-*
|
XRW.FREE .EQ $D540-*
|
||||||
|
@ -525,19 +525,16 @@ CPU.Init2c sta CLRIOUDIS
|
|||||||
|
|
||||||
bit IO.IIC.CLRVBLIRQ clear //c IRQ
|
bit IO.IIC.CLRVBLIRQ clear //c IRQ
|
||||||
|
|
||||||
.3 pha (3)
|
.3 lda #20
|
||||||
pla (4)
|
|
||||||
pha (3)
|
.4 pha (3)
|
||||||
pla (4)
|
|
||||||
pha (3)
|
|
||||||
pla (4)
|
|
||||||
pha (3)
|
|
||||||
pla (4)
|
|
||||||
pha (3)
|
|
||||||
pla (4)
|
pla (4)
|
||||||
pha (3)
|
pha (3)
|
||||||
pla (4)
|
pla (4)
|
||||||
|
|
||||||
|
dec
|
||||||
|
bne .4
|
||||||
|
|
||||||
iny
|
iny
|
||||||
cpy #100
|
cpy #100
|
||||||
bne .5
|
bne .5
|
||||||
@ -569,7 +566,6 @@ CPU.InitOk plp
|
|||||||
>PUSHA push CPU speed LO
|
>PUSHA push CPU speed LO
|
||||||
>PUSHBI 2
|
>PUSHBI 2
|
||||||
>SYSCALL2 printf
|
>SYSCALL2 printf
|
||||||
>DEBUGOA
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CPU.Init.Z80 >PUSHWI MSG.Z80
|
CPU.Init.Z80 >PUSHWI MSG.Z80
|
||||||
@ -876,6 +872,7 @@ IrqMgrInit >LDYAI MSG.IRQ
|
|||||||
>LDYAI MSG.IRQ.POLL
|
>LDYAI MSG.IRQ.POLL
|
||||||
|
|
||||||
.8 >SYSCALL2 puts
|
.8 >SYSCALL2 puts
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -895,7 +892,7 @@ IrqMgrInit.TClock
|
|||||||
cmp TClock.SIG,x
|
cmp TClock.SIG,x
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
dey
|
dex
|
||||||
bpl .2
|
bpl .2
|
||||||
|
|
||||||
bra .4
|
bra .4
|
||||||
@ -904,6 +901,7 @@ IrqMgrInit.TClock
|
|||||||
lda ZPPtr1+1
|
lda ZPPtr1+1
|
||||||
cmp #$C8
|
cmp #$C8
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@ -921,6 +919,7 @@ IrqMgrInit.TClock
|
|||||||
|
|
||||||
php
|
php
|
||||||
sei
|
sei
|
||||||
|
|
||||||
lda #$40+$20 Enable interrupt + 64Hz
|
lda #$40+$20 Enable interrupt + 64Hz
|
||||||
sta $c080,y
|
sta $c080,y
|
||||||
|
|
||||||
@ -937,6 +936,7 @@ IrqMgrInit.TClock
|
|||||||
sta CORE.TickPer10t
|
sta CORE.TickPer10t
|
||||||
sta CORE.Tick10t
|
sta CORE.Tick10t
|
||||||
dec A2osX.IRQMode
|
dec A2osX.IRQMode
|
||||||
|
|
||||||
plp
|
plp
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
@ -1167,7 +1167,7 @@ Z80Code.Size .EQ *-Z80Code.Start
|
|||||||
Mouse.OFS .HS 05070B0CFB
|
Mouse.OFS .HS 05070B0CFB
|
||||||
Mouse.SIG .HS 38180120D6
|
Mouse.SIG .HS 38180120D6
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TClock.OFS .HS 01030507
|
TClock.OFS .HS 00020406
|
||||||
TClock.SIG .HS 08285870
|
TClock.SIG .HS 08285870
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SmartPort.OFS .HS 010305
|
SmartPort.OFS .HS 010305
|
||||||
|
@ -250,6 +250,29 @@ MATH32.DIVMOD jsr MATH32.TMP32ZERO
|
|||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
*uint32_t lcg_parkmiller(uint32_t *state)
|
||||||
|
*{
|
||||||
|
* // Precomputed parameters for Schrage's method
|
||||||
|
* const uint32_t M = 0x7fffffff;
|
||||||
|
* const uint32_t A = 48271;
|
||||||
|
* const uint32_t Q = M / A; // 44488
|
||||||
|
* const uint32_t R = M % A; // 3399
|
||||||
|
*
|
||||||
|
* uint32_t div = *state / Q; // max: M / Q = A = 48,271
|
||||||
|
* uint32_t rem = *state % Q; // max: Q - 1 = 44,487
|
||||||
|
*
|
||||||
|
* int32_t s = rem * A; // max: 44,487 * 48,271 = 2,147,431,977 = 0x7fff3629
|
||||||
|
* int32_t t = div * R; // max: 48,271 * 3,399 = 164,073,129
|
||||||
|
* int32_t result = s - t;
|
||||||
|
*
|
||||||
|
* if (result < 0)
|
||||||
|
* result += M;
|
||||||
|
*
|
||||||
|
* return *state = result;
|
||||||
|
*}
|
||||||
|
*--------------------------------------
|
||||||
|
* MATH32.RND TODO
|
||||||
|
*--------------------------------------
|
||||||
MATH32.A2STR10NP ldx #3 3 digit max
|
MATH32.A2STR10NP ldx #3 3 digit max
|
||||||
ldy #0 Disable Padding
|
ldy #0 Disable Padding
|
||||||
MATH32.A2STR10 jsr MATH32.A2ACC32
|
MATH32.A2STR10 jsr MATH32.A2ACC32
|
||||||
|
Loading…
x
Reference in New Issue
Block a user