Kernel 0.94++

This commit is contained in:
Rémy GIBERT 2021-06-05 17:48:54 +02:00
parent 70ec292f4a
commit a4f22f87d3
23 changed files with 308 additions and 196 deletions

View File

@ -147,7 +147,7 @@ The definitions are listed in ASCII alphabetical order in several groups con
| EXIT | | C | | When compiled within a colon-definition, terminate execution of that definition, at that point. May not be used within a DO...LOOP. | | | EXIT | | C | | When compiled within a colon-definition, terminate execution of that definition, at that point. May not be used within a DO...LOOP. | |
| EXPECT | addr n -- | | | Transfer characters from the terminal beginning at addr, upward, until a "return" or the count of n has been received. Take no action for n less than or equal to zero. One or two nulls are added at the end of text. | | | EXPECT | addr n -- | | | Transfer characters from the terminal beginning at addr, upward, until a "return" or the count of n has been received. Take no action for n less than or equal to zero. One or two nulls are added at the end of text. | |
| FILL | addr n byte -- | I,C | Working | Fill memory starting at addr with n copies of byte | | | FILL | addr n byte -- | I,C | Working | Fill memory starting at addr with n copies of byte | |
| FIND | -- addr ||| Leave the compilation address of the next word name, which is accepted from the input stream. If that word cannot be found in the dictionary after a search of CONTEXT and FORTH leave zero. | | | FIND | -- addr | | | Leave the compilation address of the next word name, which is accepted from the input stream. If that word cannot be found in the dictionary after a search of CONTEXT and FORTH leave zero. | |
| FORGET | -- | | | Execute in the form: <br>FORGET **name** <br>Delete from the dictionary **name** (which is in the CURRENT vocabulary) and all words added to the dictionary after **name**, regardless of their vocabulary. Failure to find **name** in CURRENT or FORTH is an error condition. | | | FORGET | -- | | | Execute in the form: <br>FORGET **name** <br>Delete from the dictionary **name** (which is in the CURRENT vocabulary) and all words added to the dictionary after **name**, regardless of their vocabulary. Failure to find **name** in CURRENT or FORTH is an error condition. | |
| FORTH | -- | I | | The name of the primary vocabulary. Execution makes FORTH the CONTEXT vocabulary. New definitions become a part of the FORTH until a differing CURRENT vocabulary is established. User vocabularies conclude by 'chaining' to FORTH, so it should be considered that FORTH is 'contained' within each user's vocabulary.y | | | FORTH | -- | I | | The name of the primary vocabulary. Execution makes FORTH the CONTEXT vocabulary. New definitions become a part of the FORTH until a differing CURRENT vocabulary is established. User vocabularies conclude by 'chaining' to FORTH, so it should be considered that FORTH is 'contained' within each user's vocabulary.y | |
| HERE | -- addr | | Working | Return address of next available dictionary location.| | | HERE | -- addr | | Working | Return address of next available dictionary location.| |

Binary file not shown.

Binary file not shown.

View File

@ -1,6 +1,11 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
CL.PrintPrompt >PUSHW L.MSG.PROMPT
>PUSHBI 0
>SYSCALL PrintF
rts
*--------------------------------------
CL.READN0A tax CL.READN0A tax
CL.READN0X >PUSHW ZPCLBuf CL.READN0X >PUSHW ZPCLBuf
>PUSHW L.FMT.Byte >PUSHW L.FMT.Byte
@ -120,7 +125,12 @@ CL.CHARIN.CTRL cpx #C.CR
cpx #3 Ctrl-C cpx #3 Ctrl-C
beq CL.CLR beq CL.CLR
cpx #26 Ctrl-Z cpx #C.TAB
bne .1
jmp HIS.Select
.1 cpx #26 Ctrl-Z
bne .8 bne .8
jmp CL.SUPPR jmp CL.SUPPR
@ -156,7 +166,7 @@ CL.CLR lda (ZPCLBuf)
lda (ZPCLBuf),y lda (ZPCLBuf),y
bne .3 bne .3
jsr CL.PrintCLBuf jsr CL.Print
*-------------------------------------- *--------------------------------------
CL.Reset lda #0 CL.Reset lda #0
sta (ZPCLBuf) sta (ZPCLBuf)
@ -249,7 +259,7 @@ CL.PrintEOL lda CL.Ptr
CL.PrintEOL.8 clc CL.PrintEOL.8 clc
rts rts
*-------------------------------------- *--------------------------------------
CL.PrintCLBuf ldy #S.PS.hStdOut CL.Print ldy #S.PS.hStdOut
lda (pPS),y lda (pPS),y
>PUSHA >PUSHA
>PUSHW ZPCLBuf >PUSHW ZPCLBuf

View File

@ -8,17 +8,7 @@ GFX.Open >PUSHW L.DEV.GFX
>STA.G hDevGFX >STA.G hDevGFX
rts bra GFX.TEXT
ldy #S.PS.hStdIn
lda (pPS),y
bit #1
beq .9
>PUSHA
>PUSHBI IOCTL.CONTROL
>PUSHWI 0
>SYSCALL IOCTL
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
@ -29,6 +19,29 @@ GFX.Close >LDA.G hDevGFX
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
GFX.TEXT ldy #S.PS.hStdIn
lda (pPS),y
bit #1
bne GFX.IOCTL
GFX.TEXT.RTS clc
rts
*--------------------------------------
GFX.GR ldy #S.PS.hStdIn
lda (pPS),y
bit #1
beq GFX.TEXT.RTS
>LDA.G hDevGFX
beq GFX.TEXT.RTS
GFX.IOCTL >PUSHA
>PUSHBI IOCTL.CONTROL
>PUSHWI 0
>SYSCALL IOCTL
rts
*--------------------------------------
* (Y X C) * (Y X C)
*-------------------------------------- *--------------------------------------
GFX.PLOT ldx #S.CB.CMD.SETPIXEL GFX.PLOT ldx #S.CB.CMD.SETPIXEL

View File

@ -2,77 +2,138 @@ NEW
AUTO 3,1 AUTO 3,1
.LIST OFF .LIST OFF
*-------------------------------------- *--------------------------------------
HIS.Init clc HIS.Init >LDYAI HISTORY.MAX Get a buffer for History
rts
>LDYAI HISTORY.MAX Get a buffer for History
>SYSCALL StrVNew >SYSCALL StrVNew
bcs .9 bcs .9
txa
>STA.G HIS.hBuf >STA.G HIS.hBuf
>STZ.G HIS.Count * >STZ.G HIS.Count
>STA.G HIS.Index * >STA.G HIS.Index
* >STA.G HIS.LRU
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
HIS.Add >LDA.G HIS.hBuf HIS.Add >LDA.G HIS.hBuf
beq .9 beq .9
>LDA.G HIS.Count
cmp #HIS.MAX
bcc .2
>LDA.G HIS.LRU
cmp #HIS.MAX
bne .1
lda #0
.1 inc
>STA.G HIS.LRU
bra .7
.2 inc
>STA.G HIS.Count
.7 tax
>PUSHB.G HIS.hBuf
>PUSHBI 0
txa
>PUSHA >PUSHA
>PUSHW ZPCLBuf >PUSHW ZPCLBuf
>SYSCALL StrVSet >SYSCALL StrVSet
bcc .1
>PUSHB.G HIS.hBuf
>PUSHWZ
>SYSCALL StrVSet
>DEC.G HIS.Count
bra HIS.Add
.1 >STZ.G HIS.Index Reset Index
>INC.G HIS.Count
.9
HIS.Add.RTS rts
*--------------------------------------
HIS.GetPrev >LDA.G HIS.hBuf
beq HIS.Add.RTS
>LDA.G HIS.Count >STZ.G HIS.Index Reset Index
beq HIS.Add.RTS empty history,nothing to do .9 rts
*--------------------------------------
HIS.Select >LDA.G HIS.Count
bne .10
clc
.99 rts
.10 jsr CL.Reset
>STZ.G HIS.Index
.1 >INC.G HIS.Index
jsr HIS.GetIndex
bcs .99
>PUSHW L.MSG.HIS
>LDA.G HIS.Index
dec
>PUSHA
>PUSHW ZPCLBuf
>PUSHBI 3
>SYSCALL PrintF
bcs .9
>LDA.G HIS.Index
>CMP.G HIS.Count
bne .1
>PUSHW L.MSG.HISPROMPT
>PUSHBI 0
>SYSCALL PrintF
>STZ.G HIS.Index
lda #0
sta (ZPCLBuf)
>SYSCALL GetChar
bcs HIS.Select.RTS
cmp #'0'
bcc .7
cmp #'9'+1
bcs .7
and #$f
inc
>STA.G HIS.Index
.7 >PUSHW L.MSG.HISROMPTCLR
>PUSHBI 0
>SYSCALL PrintF
jsr CL.PrintPrompt
bcc HIS.GetToCL1
.9
HIS.Select.RTS rts
*--------------------------------------
HIS.GetPrev >LDA.G HIS.Count
beq HIS.Select.RTS empty history,nothing to do
>LDA.G HIS.Index >LDA.G HIS.Index
bne .1 bne .1
>LDA.G HIS.Count >LDA.G HIS.Count
bra HIS.GetToCL
.1 dec .1 dec
bra HIS.GetToCl bra HIS.GetToCl
*-------------------------------------- *--------------------------------------
HIS.GetNext >LDA.G HIS.hBuf HIS.GetNext >LDA.G HIS.Count
beq HIS.Add.RTS beq HIS.Select.RTS empty history,nothing to do
>LDA.G HIS.Count >EOR.G HIS.Index
beq HIS.Add.RTS empty history,nothing to do beq HIS.GetToCL
>LDA.G HIS.Index >LDA.G HIS.Index
inc inc
>CMP.G HIS.Count
bne HIS.GetToCl
lda #0
>STA.G HIS.Index
jmp CL.CLR
*-------------------------------------- *--------------------------------------
HIS.GetToCl >STA.G HIS.Index HIS.GetToCl >STA.G HIS.Index
jsr CL.CLR jsr CL.CLR
>PUSHB.G HIS.hBuf HIS.GetToCL1 >LDA.G HIS.Index
>PUSHBI 0 beq .9
>PUSHB.G HIS.Index
>PUSHW ZPCLBuf
>SYSCALL StrVGet jsr HIS.GetIndex
bcs .9
ldy #$ff ldy #$ff
@ -84,7 +145,16 @@ HIS.GetToCl >STA.G HIS.Index
sta CL.Ptr sta CL.Ptr
sta CL.Len sta CL.Len
jmp CL.PrintCLBuf jmp CL.Print
.9 rts
*--------------------------------------
HIS.GetIndex >PUSHB.G HIS.hBuf
>PUSHBI 0
>PUSHB.G HIS.Index
>PUSHW ZPCLBuf
>SYSCALL StrVGet
rts
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE usr/src/bin/forth.s.his SAVE usr/src/bin/forth.s.his

View File

@ -463,7 +463,7 @@ KW.AND jsr CheckStackPop4
sta (pStack),y sta (pStack),y
inc pStack inc pStack
clc * clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
@ -481,7 +481,7 @@ KW.OR jsr CheckStackPop4
sta (pStack),y sta (pStack),y
inc pStack inc pStack
clc * clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
@ -499,7 +499,7 @@ KW.XOR jsr CheckStackPop4
sta (pStack),y sta (pStack),y
inc pStack inc pStack
clc * clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
@ -519,9 +519,11 @@ KW.LWR jsr CheckStackPop4
lda #0 lda #0
ror ror
eor #$80
sta (pStack) sta (pStack)
clc * clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
@ -541,10 +543,10 @@ KW.GTR jsr CheckStackPop4
lda #0 lda #0
ror ror
eor #$80
sta (pStack) sta (pStack)
clc * clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
@ -558,27 +560,26 @@ KW.EQ jsr CheckStackPop4
ldy #2 ldy #2
lda (pStack),y lda (pStack),y
eor (pStack) eor (pStack)
tax
inc pStack inc pStack
tax
bne .1
lda (pStack),y lda (pStack),y
eor (pStack) eor (pStack)
inc pStack
tay
bne .1 bne .1
txa
bne .1
sec sec
.1 inc pStack .1 lda #0
ror
inc pStack
inc pStack
sta (pStack) sta (pStack)
clc * clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
KW.NEGATIVE inc pStack KW.NEGATIVE inc pStack

View File

@ -5,7 +5,8 @@ NEW
.OR $2000 .OR $2000
.TF bin/forth .TF bin/forth
*-------------------------------------- *--------------------------------------
HISTORY.MAX .EQ 256 HIS.MAX .EQ 10
HISTORY.MAX .EQ 512
*-------------------------------------- *--------------------------------------
.INB inc/macros.i .INB inc/macros.i
.INB inc/a2osx.i .INB inc/a2osx.i
@ -79,6 +80,9 @@ CS.START cld
.DA CS.QUIT .DA CS.QUIT
L.DEV.GFX .DA DEV.GFX L.DEV.GFX .DA DEV.GFX
L.MSG.GREETINGS .DA MSG.GREETINGS L.MSG.GREETINGS .DA MSG.GREETINGS
L.MSG.HIS .DA MSG.HIS
L.MSG.HISPROMPT .DA MSG.HISPROMPT
L.MSG.HISROMPTCLR .DA MSG.HISROMPTCLR
L.MSG.USAGE .DA MSG.USAGE L.MSG.USAGE .DA MSG.USAGE
L.MSG.ECHOCRLF .DA MSG.ECHOCRLF L.MSG.ECHOCRLF .DA MSG.ECHOCRLF
L.MSG.DEBUG .DA MSG.DEBUG L.MSG.DEBUG .DA MSG.DEBUG
@ -99,7 +103,9 @@ J.ESC .DA CL.BS left arrow
.DA HIS.GetPrev .DA HIS.GetPrev
.DA CL.NAK right arrow .DA CL.NAK right arrow
L.KEYWORDS .DA KEYWORDS L.KEYWORDS .DA KEYWORDS
I.KEYWORDS .DA GFX.PLOT I.KEYWORDS .DA GFX.TEXT
.DA GFX.GR
.DA GFX.PLOT
.DA GFX.RECT .DA GFX.RECT
.DA KW.DUP .DA KW.DUP
.DA KW.DROP .DA KW.DROP
@ -206,7 +212,9 @@ KW.IF.ID .EQ *-I.KEYWORDS
.DA KW.Rg .DA KW.Rg
.DA KW.R .DA KW.R
*-------------------------------------- *--------------------------------------
C.KEYWORDS .DA CP.JSRX GFX.PLOT C.KEYWORDS .DA CP.JSRX GFX.TEXT
.DA CP.JSRX GFX.GR
.DA CP.JSRX GFX.PLOT
.DA CP.JSRX GFX.RECT .DA CP.JSRX GFX.RECT
.DA CP.JSRX KW.DUP .DA CP.JSRX KW.DUP
.DA CP.JSRX KW.DROP .DA CP.JSRX KW.DROP
@ -446,7 +454,7 @@ CS.FORTH.Run jsr CL.Reset
lda #80 lda #80
sta CL.MaxCnt sta CL.MaxCnt
jsr PrintPrompt jsr CL.PrintPrompt
bcs .9 bcs .9
.1 >SYSCALL GetChar .1 >SYSCALL GetChar
@ -734,11 +742,6 @@ CS.QUIT jsr GFX.Close
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
PrintPrompt >PUSHW L.MSG.PROMPT
>PUSHBI 0
>SYSCALL PrintF
rts
*--------------------------------------
PrintDebugMsg lda pStack+1 PrintDebugMsg lda pStack+1
ldy pStack ldy pStack
bne .1 bne .1
@ -907,6 +910,9 @@ CS.END
*-------------------------------------- *--------------------------------------
DEV.GFX .AZ "/dev/gfx" DEV.GFX .AZ "/dev/gfx"
MSG.GREETINGS .AZ "\e[?7h\r\nA2osX-FORTH %d.%d (FORTH-79)\r\n" MSG.GREETINGS .AZ "\e[?7h\r\nA2osX-FORTH %d.%d (FORTH-79)\r\n"
MSG.HIS .AZ "\r\n%3d : %s"
MSG.HISPROMPT .AZ "\r\n\r\n? "
MSG.HISROMPTCLR .DA #C.BS,#C.BS,#0
MSG.USAGE .AS "Usage : FORTH <option> file\r\n" MSG.USAGE .AS "Usage : FORTH <option> file\r\n"
.AS " -D : Debug Mode\r\n" .AS " -D : Debug Mode\r\n"
.AS " -T : Trace On" .AS " -T : Trace On"
@ -932,7 +938,9 @@ EscChars .AS 'DBAC'
EscChars.Cnt .EQ *-EscChars EscChars.Cnt .EQ *-EscChars
EscChars.Remap .DA #C.BS,#C.VT,#C.LF,#C.FS EscChars.Remap .DA #C.BS,#C.VT,#C.LF,#C.FS
*-------------------------------------- *--------------------------------------
KEYWORDS .AT "PLOT" KEYWORDS .AT "TEXT"
.AT "GR"
.AT "PLOT"
.AT "RECT" .AT "RECT"
*-------------------------------------- *--------------------------------------
.AT "DUP" ( n - n n ) Duplicate top of stack. .AT "DUP" ( n - n n ) Duplicate top of stack.
@ -1170,6 +1178,7 @@ hCLBuf .BS 1
HIS.hBuf .BS 1 HIS.hBuf .BS 1
HIS.Count .BS 1 HIS.Count .BS 1
HIS.Index .BS 1 HIS.Index .BS 1
HIS.LRU .BS 1
hFile .BS 1 hFile .BS 1
LineCounter .BS 2 LineCounter .BS 2

View File

@ -217,7 +217,7 @@ CS.RUN.LOGO.SHOW
inc inc
sta CB.LOGO+S.CB.Y1 sta CB.LOGO+S.CB.Y1
cmp #151 cmp #144
bne .1 bne .1
.7 lda yDir .7 lda yDir

View File

@ -19,13 +19,17 @@ BITBLT >LDYA CB.Cache+S.CB.X1
lda CB.Cache+S.CB.X1 lda CB.Cache+S.CB.X1
clc clc
adc CB.Cache+S.CB.SrcW adc CB.Cache+S.CB.SrcW
tay pha
lda CB.Cache+S.CB.X1+1 lda CB.Cache+S.CB.X1+1
adc CB.Cache+S.CB.SrcW+1 adc CB.Cache+S.CB.SrcW+1
cpy #1
bcs .0 ply
bne .10
dec dec
.0 dey
.10 dey
jsr LBUF.SetBounds2YA jsr LBUF.SetBounds2YA
@ -58,13 +62,7 @@ BITBLT >LDYA CB.Cache+S.CB.X1
ldx LBUF.C1 ldx LBUF.C1
.3 txa .3 >X2PageY
and #1
tay
sta CLRPAGE2,y
txa
lsr
tay
lda (ZPBMSavePtr) lda (ZPBMSavePtr)
sta (ZPBasePtr),y sta (ZPBasePtr),y
@ -110,13 +108,7 @@ BITBLT.0 bit #S.CB.OP.SAVE
ldx LBUF.C1 ldx LBUF.C1
.3 txa .3 >X2PageY
and #1
tay
sta CLRPAGE2,y
txa
lsr
tay
lda (ZPBasePtr),y lda (ZPBasePtr),y
sta (ZPBMSavePtr) sta (ZPBMSavePtr)
@ -178,6 +170,7 @@ BITBLT.2 ldy #S.BM-1
adc #S.BM adc #S.BM
sta ZPBMDataPtr sta ZPBMDataPtr
bcc .2 bcc .2
inc ZPBMDataPtr+1 inc ZPBMDataPtr+1
.2 >LDYA CB.Cache+S.CB.SrcY .2 >LDYA CB.Cache+S.CB.SrcY

View File

@ -45,13 +45,7 @@ LBUF.DrawAtY.SET
LBUF.DrawAtY.AND.SET LBUF.DrawAtY.AND.SET
ldx LBUF.C1 x C1->C2 ldx LBUF.C1 x C1->C2
txa >X2PageY
and #1
tay
sta CLRPAGE2,y
txa
lsr
tay
lda (ZPBasePtr),y Clear screen at C1 lda (ZPBasePtr),y Clear screen at C1
and LBUF.C1.MASK with MASK bits and LBUF.C1.MASK with MASK bits
@ -68,13 +62,7 @@ LBUF.DrawAtY.AND.SET
bcs .8 C1+1 > C2, we are done... bcs .8 C1+1 > C2, we are done...
.1 txa .1 >X2PageY
and #1
tay
sta CLRPAGE2,y
txa
lsr
tay
lda LBUF.DATA,x set all bytes between C1+1 & C2-1 lda LBUF.DATA,x set all bytes between C1+1 & C2-1
sta (ZPBasePtr),y sta (ZPBasePtr),y
@ -83,13 +71,7 @@ LBUF.DrawAtY.AND.SET
cpx LBUF.C2 cpx LBUF.C2
bcc .1 bcc .1
.2 txa .2 >X2PageY
and #1
tay
sta CLRPAGE2,y
txa
lsr
tay
lda (ZPBasePtr),y Get C2 lda (ZPBasePtr),y Get C2
and LBUF.C2.MASK clear ONLY bits ending at X2 mod 7 and LBUF.C2.MASK clear ONLY bits ending at X2 mod 7
@ -116,13 +98,7 @@ LBUF.DrawAtY.XXX
ldx LBUF.C1 x C1->C2 ldx LBUF.C1 x C1->C2
txa >X2PageY
and #1
tay
sta CLRPAGE2,y
txa
lsr
tay
lda (ZPBasePtr),y Get C1 lda (ZPBasePtr),y Get C1
and LBUF.C1.MASK clear ONLY bits starting at X1 mod 7 and LBUF.C1.MASK clear ONLY bits starting at X1 mod 7
@ -139,13 +115,7 @@ LBUF.DrawAtY.XXX
bcs .8 C1+1 > C2, we are done... bcs .8 C1+1 > C2, we are done...
.1 txa .1 >X2PageY
and #1
tay
sta CLRPAGE2,y
txa
lsr
tay
lda LBUF.DATA,x set all bytes between C1+1 & C2-1 lda LBUF.DATA,x set all bytes between C1+1 & C2-1
.20 ora (ZPBasePtr),y .20 ora (ZPBasePtr),y
@ -155,13 +125,7 @@ LBUF.DrawAtY.XXX
cpx LBUF.C2 cpx LBUF.C2
bne .1 bne .1
.2 txa .2 >X2PageY
and #1
tay
sta CLRPAGE2,y
txa
lsr
tay
lda (ZPBasePtr),y Get C2 lda (ZPBasePtr),y Get C2
and LBUF.C2.MASK clear ONLY bits ending at X2 mod 7 and LBUF.C2.MASK clear ONLY bits ending at X2 mod 7
@ -178,13 +142,7 @@ LBUF.DrawAtY.XXX
LBUF.DrawAtY.AND.ORA LBUF.DrawAtY.AND.ORA
ldx LBUF.C1 x C1->C2 ldx LBUF.C1 x C1->C2
txa >X2PageY
and #1
tay
sta CLRPAGE2,y
txa
lsr
tay
lda LBUF.MASK,x get MASK bits lda LBUF.MASK,x get MASK bits
ora LBUF.C1.MASK clear ONLY bits starting at X1 mod 7 ora LBUF.C1.MASK clear ONLY bits starting at X1 mod 7
@ -212,13 +170,7 @@ LBUF.DrawAtY.AND.ORA
bra .3 bra .3
.2 txa .2 >X2PageY
and #1
tay
sta CLRPAGE2,y
txa
lsr
tay
lda (ZPBasePtr),y lda (ZPBasePtr),y
and LBUF.MASK,x and LBUF.MASK,x
@ -230,13 +182,7 @@ LBUF.DrawAtY.AND.ORA
cpx LBUF.C2 cpx LBUF.C2
bne .2 bne .2
txa >X2PageY
and #1
tay
sta CLRPAGE2,y
txa
lsr
tay
lda LBUF.MASK,x get MASK bits lda LBUF.MASK,x get MASK bits
ora LBUF.C2.MASK ora LBUF.C2.MASK

View File

@ -77,16 +77,20 @@ VLINE.MONO >LDYA CB.Cache+S.CB.X1
lsr lsr
sta ZPTmpByte Save COL (DIV) sta ZPTmpByte Save COL (DIV)
lda #0 ldy #SETPAGE2
rol bcc .1
tay
sta CLRPAGE2,y Select proper BANK dey CLRPAGE2
.1 sta $C000,y Select proper BANK
ldy CB.Cache+S.CB.Y1 ldy CB.Cache+S.CB.Y1
clc clc
lda CB.Cache+S.CB.OP lda CB.Cache+S.CB.OP
* cmp #S.CB.OP.XOR * cmp #S.CB.OP.XOR
beq VLINE.MONO.XOR beq VLINE.MONO.XOR
lda CB.Cache+S.CB.COLOR lda CB.Cache+S.CB.COLOR
bne VLINE.MONO.WHITE bne VLINE.MONO.WHITE
@ -94,12 +98,15 @@ VLINE.MONO.BLACK
.1 lda BASEL,y .1 lda BASEL,y
adc ZPTmpByte adc ZPTmpByte
sta ZPBasePtr sta ZPBasePtr
lda BASEH,y lda BASEH,y
sta ZPBasePtr+1 sta ZPBasePtr+1
lda (ZPBasePtr) lda (ZPBasePtr)
and Mono.NMasks,x and Mono.NMasks,x
sta (ZPBasePtr) sta (ZPBasePtr)
cpy CB.Cache+S.CB.Y2 cpy CB.Cache+S.CB.Y2
iny iny
bcc .1 bcc .1
@ -115,14 +122,18 @@ VLINE.MONO.XOR
.1 lda BASEL,y .1 lda BASEL,y
adc ZPTmpByte adc ZPTmpByte
sta ZPBasePtr sta ZPBasePtr
lda BASEH,y lda BASEH,y
sta ZPBasePtr+1 sta ZPBasePtr+1
lda (ZPBasePtr) lda (ZPBasePtr)
.2 eor Mono.Masks,x SELF MODIFIED .2 eor Mono.Masks,x SELF MODIFIED
sta (ZPBasePtr) sta (ZPBasePtr)
cpy CB.Cache+S.CB.Y2 cpy CB.Cache+S.CB.Y2
iny iny
bcc .1 bcc .1
rts rts
VLINE.C16 lda CB.Cache+S.CB.X1 VLINE.C16 lda CB.Cache+S.CB.X1
@ -143,6 +154,7 @@ VLINE.C16 lda CB.Cache+S.CB.X1
cpy CB.Cache+S.CB.Y2 cpy CB.Cache+S.CB.Y2
iny iny
bcc .1 bcc .1
rts rts
*-------------------------------------- *--------------------------------------
MAN MAN

View File

@ -17,17 +17,22 @@ SETPIXEL.MONO >LDYA CB.Cache+S.CB.X1
jsr DIVMOD7YA jsr DIVMOD7YA
lsr lsr
php php
ldy CB.Cache+S.CB.Y1 ldy CB.Cache+S.CB.Y1
clc clc
adc BASEL,y adc BASEL,y
sta ZPBasePtr sta ZPBasePtr
lda BASEH,y lda BASEH,y
sta ZPBasePtr+1 sta ZPBasePtr+1
plp plp
lda #0 ldy #0
rol bcs .1
tay
sta CLRPAGE2,y Select proper BANK iny
.1 sta CLRPAGE2,y Select proper BANK
lda CB.Cache+S.CB.OP lda CB.Cache+S.CB.OP
* cmp #S.CB.OP.XOR * cmp #S.CB.OP.XOR
beq SETPIXEL.MONO.XOR beq SETPIXEL.MONO.XOR

View File

@ -12,6 +12,19 @@ NEW
.INB inc/io.i .INB inc/io.i
.INB inc/gfx.i .INB inc/gfx.i
.INB inc/gfx.eve.i .INB inc/gfx.eve.i
*--------------------------------------
.MA X2PageY
txa
lsr
ldy #SETPAGE2 col 0,2,4...in AUX mem
bcc :1 col 1,3,5...in MAIN mem
dey CLRPAGE2
:1 sta $C000,y
tay
.EM
*-------------------------------------- *--------------------------------------
ZPPtr1 .EQ ZPBIN ZPPtr1 .EQ ZPBIN
ZPPtr2 .EQ ZPBIN+2 ZPPtr2 .EQ ZPBIN+2

View File

@ -36,13 +36,17 @@ NEW
Y @ X @ 4 * COLOR @ PLOT ; Y @ X @ 4 * COLOR @ PLOT ;
: MANDELBROT : MANDELBROT
." Press a key to start..."
KEY GR
MAXY 0 DO MAXY 0 DO
I Y ! I Y !
MAXX 0 DO MAXX 0 DO
I X ! I X !
CELL CELL
LOOP LOOP
LOOP ; LOOP
TEXT
." All done." ;
MANDELBROT MANDELBROT
MAN MAN

View File

@ -4,7 +4,7 @@ NEW
IO.D2.SeekTimeR .EQ 58 LIBBLKDEV Recalibration IO.D2.SeekTimeR .EQ 58 LIBBLKDEV Recalibration
IO.D2.SeekTimeF .EQ 58 LIBBLKDEV Track Formatter IO.D2.SeekTimeF .EQ 58 LIBBLKDEV Track Formatter
IO.D2.SeekTimeB .EQ 58 LIBBLKDEV Boot Block IO.D2.SeekTimeB .EQ 58 LIBBLKDEV Boot Block
IO.D2.SeekTimeP .EQ 38 ProDOS.FX initial IO.D2.SeekTimeP .EQ 48 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

View File

@ -14,6 +14,7 @@ S.SMB.H.CMD.TRANS2 .EQ $32
S.SMB.H.CMD.NEGOTIATE .EQ $72 S.SMB.H.CMD.NEGOTIATE .EQ $72
S.SMB.H.CMD.SESSION.SETUP.ANDX .EQ $73 S.SMB.H.CMD.SESSION.SETUP.ANDX .EQ $73
S.SMB.H.CMD.TREE.CONNECT.ANDX .EQ $75 S.SMB.H.CMD.TREE.CONNECT.ANDX .EQ $75
S.SMB.H.CMD.NT.CREATE.ANDX .EQ $A0
S.SMB.H.STATUS .EQ 5 S.SMB.H.STATUS .EQ 5
S.SMB.H.FLAGS .EQ 9 S.SMB.H.FLAGS .EQ 9
S.SMB.H.FLAGS.LOCKANDREADOK .EQ 1 S.SMB.H.FLAGS.LOCKANDREADOK .EQ 1

View File

@ -392,12 +392,12 @@ BB.Seek lda BB.HdrTrk get track we're on
lda IO.D2.Ph0Off,y lda IO.D2.Ph0Off,y
ldy #0 ldy BB.Slotn0
lda IO.D2.DrvOn,y
.10 dey
bne .10
lda IO.D2.Ph0Off,x lda IO.D2.Ph0Off,x
lda IO.D2.DrvOn,y
*-------------------------------------- *--------------------------------------
BB.Read ldx BB.Slotn0 BB.Read ldx BB.Slotn0

View File

@ -137,13 +137,13 @@ D2.MoveHead.SEI lda D2.CurrentQTrack
lda IO.D2.Ph0Off,y lda IO.D2.Ph0Off,y
ldy #0 ldy D2.Slotn0
lda IO.D2.DrvOn,y
.10 dey
bne .10
lda IO.D2.Ph0Off,x lda IO.D2.Ph0Off,x
lda IO.D2.DrvOn,y
rts rts
D2.SeekPhOnY and #6 D2.SeekPhOnY and #6

View File

@ -533,6 +533,13 @@ CIFS2.ChOwn
lda #MLI.E.BADCALL lda #MLI.E.BADCALL
sec sec
rts rts
*--------------------------------------
*CIFS.FOpen >STYA pPath resolved path
* ldx #S.SMB.H.CMD.NT.CREATE.ANDX
*-------------------------------------- *--------------------------------------
CIFS.FOpen jsr MakeTrans2Req CIFS.FOpen jsr MakeTrans2Req
@ -565,6 +572,10 @@ CIFS.FOpen jsr MakeTrans2Req
ldy #S.NETBIOS+S.SMB.H+SMB.Trans2.H.Len+9 AccessMode ldy #S.NETBIOS+S.SMB.H+SMB.Trans2.H.Len+9 AccessMode
sta (ZPReqPtr),y sta (ZPReqPtr),y
lda #$52
iny
sta (ZPReqPtr),y
ldy #S.NETBIOS+S.SMB.H+SMB.Trans2.H.Len+19 OpenMode ldy #S.NETBIOS+S.SMB.H+SMB.Trans2.H.Len+19 OpenMode
pla pla
@ -576,13 +587,17 @@ CIFS.FOpen jsr MakeTrans2Req
sta (ZPReqPtr),y sta (ZPReqPtr),y
.2 pla .2 pla
and #O.APPEND * and #O.APPEND
beq .3 * beq .3
lda (ZPReqPtr),y lda (ZPReqPtr),y
ora #1 ora #1
* sta (ZPReqPtr),y * sta (ZPReqPtr),y
ldy #S.NETBIOS+S.SMB.H.FLAGS2+1
lda #$40
sta (ZPReqPtr),y
.3 ply .3 ply
jsr AppendPath jsr AppendPath

View File

@ -981,6 +981,30 @@ SMB.TreeConnect.H.Len .EQ *-SMB.TreeConnect.H
SMB.TreeConnect.T SMB.TreeConnect.T
.AZ "A:" Disk Share .AZ "A:" Disk Share
SMB.TreeConnect.T.Len .EQ *-SMB.TreeConnect.T SMB.TreeConnect.T.Len .EQ *-SMB.TreeConnect.T
*-------------------------------------- #$04
SMB.ComCreate.H .DA #18 WORD COUNT
.HS FF000000 NO MORE CMD
.HS 00 Reserved
.BS 2 NameLength
.HS 00000000 Flags
.BS 4 RootDirectoryFID
.BS 4 DesiredAccess
.HS 0000000000000000 AllocationSize
.HS 00000000 ExtFileAttributes
.HS 00000000 ShareAccess
.BS 4 CreateDisposition
.HS 00000000 CreateOptions
.HS 00000000 ImpersonationLevel
.HS 00 SecurityFlags
.HS 00 SMB_Data
SMB.ComCreate.H.Len .EQ *-SMB.ComCreate.H
* .AZ "path\file"
*-------------------------------------- #$04
SMB.ComClose.H .DA #3 WORD COUNT
.BS 2 FID
.HS 00000000 LastTimeModified
.HS 0000 ByteCount
SMB.ComClose.H.Len .EQ *-SMB.ComClose.H
*-------------------------------------- #$2E *-------------------------------------- #$2E
SMB.ComRead.H .DA #10 WORD COUNT SMB.ComRead.H .DA #10 WORD COUNT
.HS FF000000 NO MORE CMD .HS FF000000 NO MORE CMD
@ -1008,12 +1032,6 @@ SMB.ComWrite.H.Len .EQ *-SMB.ComWrite.H
SMB.ComWrite.T SMB.ComWrite.T
* DATA..... * DATA.....
SMB.ComWrite.T.Len .EQ *-SMB.ComWrite.T SMB.ComWrite.T.Len .EQ *-SMB.ComWrite.T
*-------------------------------------- #$04
SMB.ComClose.H .DA #3 WORD COUNT
.BS 2 FID
.HS 00000000 LastTimeModified
.HS 0000 ByteCount
SMB.ComClose.H.Len .EQ *-SMB.ComClose.H
*-------------------------------------- *--------------------------------------
SMB.Trans2.H .DA #15 WORD COUNT SMB.Trans2.H .DA #15 WORD COUNT
.BS 2 TotalParamCount .BS 2 TotalParamCount
@ -1042,7 +1060,7 @@ SMB.Open2 .DA 0 TRANS2_OPEN2
.BS 2 FileAttributes .BS 2 FileAttributes
.HS 00000000 CreationTime .HS 00000000 CreationTime
.BS 2 OpenMode .BS 2 OpenMode
.HS 00020000 AllocationSize .HS 00000000 AllocationSize
.HS 00000000000000000000 Reserved .HS 00000000000000000000 Reserved
* .AZ "filename" * .AZ "filename"
SMB.Open2.Len .EQ *-SMB.Open2 SMB.Open2.Len .EQ *-SMB.Open2

View File

@ -91,7 +91,7 @@ WND.Setup
sta RECT.SysClk+S.RECT.X1+1 sta RECT.SysClk+S.RECT.X1+1
lda DCB.GFX+S.DCB.GFX.W lda DCB.GFX+S.DCB.GFX.W
sec clc
sbc #0 sbc #0
sta RECT.SysClk+S.RECT.X2 sta RECT.SysClk+S.RECT.X2
lda DCB.GFX+S.DCB.GFX.W lda DCB.GFX+S.DCB.GFX.W

View File

@ -395,10 +395,12 @@ XRW.TestWP ldx A2L
.LIST ON .LIST ON
XRW.Write bit IO.D2.ReadProt,x (4) PREWRITE MODE XRW.Write bit IO.D2.ReadProt,x (4) PREWRITE MODE
.LIST OFF .LIST OFF
bit IO.D2.ReadMode,x (4) * bit IO.D2.ReadMode,x (4)
lda #$FF (2) lda #$FF (2)
nop (2)
sta IO.D2.WriteMode,x (5) goto write mode sta IO.D2.WriteMode,x (5) goto write mode
ora IO.D2.WShift,x (4) ora IO.D2.WShift,x (4)
@ -835,12 +837,12 @@ XRW.SeekYA sta XRW.D2Trk-1,x will be current track at the end
lda IO.D2.Ph0Off,y lda IO.D2.Ph0Off,y
ldy #0 ldy A2L
lda IO.D2.DrvOn,y
.10 dey
bne .10
lda IO.D2.Ph0Off,x lda IO.D2.Ph0Off,x
lda IO.D2.DrvOn,y
clc Exit wit CC (recalibrate) clc Exit wit CC (recalibrate)
rts rts
*-------------------------------------- *--------------------------------------