diff --git a/.Floppies/A2OSX.BOOT.po b/.Floppies/A2OSX.BOOT.po index 88731e98..22ef0e6c 100644 Binary files a/.Floppies/A2OSX.BOOT.po and b/.Floppies/A2OSX.BOOT.po differ diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 496b82d4..3085fcf9 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index 6ea750b5..e5a0e491 100644 Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ diff --git a/INC/GUI.I.txt b/INC/GUI.I.txt index 1f156936..719a30de 100644 --- a/INC/GUI.I.txt +++ b/INC/GUI.I.txt @@ -86,11 +86,15 @@ S.MOUSE.S .EQ 8 S.MOUSE.S.UP .EQ %00000001 S.MOUSE.S.DOWN .EQ %00000010 S.MOUSE.S.MOVE .EQ %00000100 -S.MOUSE.S.DRAG .EQ %00001000 -S.MOUSE.S.CLK .EQ %00010000 -S.MOUSE.S.DCLK .EQ %00100000 +S.MOUSE.S.DRAGSTART .EQ %00001000 +S.MOUSE.S.DRAGEND .EQ %00010000 +S.MOUSE.S.CLK .EQ %00100000 +S.MOUSE.S.DCLK .EQ %01000000 +S.MOUSE.KEYMOD .EQ 9 +S.MOUSE.KEYMOD.OA .EQ %00000001 +S.MOUSE.KEYMOD.CA .EQ %00000010 * -S.MOUSE .EQ 9 +S.MOUSE .EQ 10 *-------------------------------------- S.POINT.X .EQ 0 S.POINT.Y .EQ 2 diff --git a/INC/KERNEL.I.txt b/INC/KERNEL.I.txt index 136f9016..1235204c 100644 --- a/INC/KERNEL.I.txt +++ b/INC/KERNEL.I.txt @@ -8,7 +8,7 @@ AUTO 4,1 K.ENV.SIZE .EQ 256 K.FLT.MAX .EQ 4 K.EVT.MAX .EQ 4 -K.DEV.MAX .EQ 32 +K.DEV.MAX .EQ 16 K.PS.MAX .EQ 32 *-------------------------------------- H.BIN.T .EQ 0 @@ -55,6 +55,8 @@ INDEX .EQ $5E ->$5F FORPNT .EQ $85 ->$86 FAC .EQ $9D ->$A1 FAC.SIGN .EQ $A2 +ARG .EQ $A5 -> $A9 (5 bytes) +ARG.SIGN .EQ $AA *FAC.EXTENSION .EQ $AC TXTPTR .EQ $B8 *-------------------------------------- @@ -121,6 +123,8 @@ Flt.Table .EQ $0D80 K.FLT.MAX*S.FLT.SIZE=4*32=128b *-------------------------------------- Dev.Table .EQ $0E00 K.DEV.MAX*S.DEV=32*16=512b *-------------------------------------- +K.IOBuf .EQ $0F00 +*-------------------------------------- *** Z80 Reserved $1000-10FF*** *-------------------------------------- Z80JMP .EQ $1000 (00000h) Up To $10FF diff --git a/LIB/LIBGUI.S.EVT.txt b/LIB/LIBGUI.S.EVT.txt new file mode 100644 index 00000000..8e420964 --- /dev/null +++ b/LIB/LIBGUI.S.EVT.txt @@ -0,0 +1,11 @@ +NEW +PREFIX /A2OSX.BUILD +AUTO 4,1 +*-------------------------------------- +EVT.Get + +*-------------------------------------- +MAN +SAVE /A2OSX.SRC/LIB/LIBGUI.S.EVT +LOAD /A2OSX.SRC/LIB/LIBGUI.S +ASM diff --git a/LIB/LIBGUI.S.MOU.txt b/LIB/LIBGUI.S.MOU.txt index b5d5204d..88deb1b3 100644 --- a/LIB/LIBGUI.S.MOU.txt +++ b/LIB/LIBGUI.S.MOU.txt @@ -75,7 +75,7 @@ MOU.Read >STYA ZPPtr1 >PUSHA >PUSHBI DEVMGR.READBLOCK - >PUSHWI 0 + >PUSHW ZPPtr1 >SYSCALL IOCTL bcs .9 diff --git a/LIB/LIBGUI.S.txt b/LIB/LIBGUI.S.txt index fa423ec3..3b1cf14f 100644 --- a/LIB/LIBGUI.S.txt +++ b/LIB/LIBGUI.S.txt @@ -71,7 +71,6 @@ CS.START cld .DA HideCursor .DA ShowCursor .DA UpdateCursor - .DA ReadMouse .DA GetScreenGC J.Cmds .DA DrawLine .DA DrawText @@ -151,17 +150,6 @@ CB.Get >STYA .1+1 rts *-------------------------------------- -ReadMouse >PULLYA - - ldx hDevMouse Mouse is active ? - beq .9 - - ldx #DEVMGR.READBLOCK - jmp GoDevMouse - -.9 sec - rts -*-------------------------------------- GetScreenGC >LDYA L.GC.Screen rts *-------------------------------------- diff --git a/SBIN/GUI.S.txt b/SBIN/GUI.S.txt index 4a7ce635..8442c8d3 100644 --- a/SBIN/GUI.S.txt +++ b/SBIN/GUI.S.txt @@ -80,11 +80,6 @@ CS.RUN lda A2osX.ASCREEN GUI screen active ? .2 >STA.G CUR.T >LIBCALL hLIBGUI,LIBGUI.SetCursor.A - lda MouseData+S.MOUSE.X1 - lda MouseData+S.MOUSE.X1+1 - - lda MouseData+S.MOUSE.Y1 - lda MouseData+S.MOUSE.Y1+1 jsr Destop.Paint diff --git a/SBIN/TELNETD.S.txt b/SBIN/TELNETD.S.txt index abafe713..adc7a7e3 100644 --- a/SBIN/TELNETD.S.txt +++ b/SBIN/TELNETD.S.txt @@ -25,9 +25,10 @@ CS.START cld .DA #$61 6502,Level 1 (65c02) .DA #1 BIN Layout Version 1 .DA 0 - .DA CS.END-CS.START Code Length To Relocate - .DA DS.END-DS.START Data Segment to Allocate - .DA 0 + .DA CS.END-CS.START CS + .DA DS.END-DS.START DS + .DA #64 SS + .DA #4 ZP SS .DA 0 *-------------------------------------- * Relocation Table @@ -48,7 +49,7 @@ L.MSG.BYTE .DA MSG.BYTE .DA 0 *-------------------------------------- CS.INIT >LDYA L.LIBTCPIP - >SYSCALL LoadLibYA + >SYSCALL LoadLib.YA sta hLIBTCPIP lda (pPs) @@ -72,7 +73,7 @@ CS.RUN jsr Init.Timeout >SLEEP jsr Wait.Timeout bcc .1 - >SYSCALL GetC + >SYSCALL GetChar bcs .1 cmp #$03 bne .1 @@ -249,7 +250,7 @@ CS.QUIT ldx #CONN.MAX >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.CLOSEA .3 lda hLIBTCPIP - >SYSCALL UnloadLibA + >SYSCALL UnloadLib.A clc rts *-------------------------------------- @@ -267,7 +268,7 @@ Wait.TimeOut sec *-------------------------------------- CS.END *-------------------------------------- -LIBTCPIP >PSTR "libtcpip.o" +LIBTCPIP .AZ "libtcpip.o" MSG.TCPWAIT .AZ "TELNETD:Waiting for TCP/IP initializing...\r\n" MSG.INITOK .AZ "TELNETD:Init Ok, Listening.\r\n" MSG.TCPIPERR .AZ "TELNETD:TCP/IP Not initialized properly\r\n" diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index 8f358d3d..a0bc446c 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -617,14 +617,22 @@ K.Rename jsr PFT.CheckPathSTK >MLICALL MLIRENAME rts +*-------------------------------------- +K.PrintF.PadL .BS 1 +K.PrintF.PadC .BS 1 +*-------------------------------------- +*HEXBUF .BS 4 +*BCDBUF .BS 5 5, enough to handle 10 digits (32bits) +HEXBUF .EQ FAC +BCDBUF .EQ ARG */-------------------------------------- * # SScanF * Scan a C-String (in progress) * ## In: * PUSHW PTR to target buffer -* PUSHW PSTR pattern (ex: "%d.%d.%d.%d") +* PUSHW PTR pattern (ex: "%d.%d.%d.%d") * %d : byte -* PUSHW PSTR to scan (ex: "192.168.1.5") +* PUSHW PTR to String to scan (ex: "192.168.1.5") * ## Out: *\-------------------------------------- K.SScanF jsr MEM.PullP1P2P3 @@ -762,7 +770,7 @@ K.SScanF.IncPtr1 *\-------------------------------------- K.SPrintF.YA * >STYA ZPPtr1 -* >PULLW Printf.Cout.Ptr+1 +* >PULLW STDIO.COut.Ptr+1 K.FPrintF.YA * >STYA ZPPtr1 @@ -777,9 +785,9 @@ K.PrintF.YA >STYA ZPPtr1 cmp #'%' bne .10 - stz PADLEN + stz K.PrintF.PadL lda #' ' - sta PADCHAR + sta K.PrintF.PadC .2 ldx #PrintFTBL2-PrintFTBL1-1 lda (ZPPtr1),y @@ -794,11 +802,11 @@ K.PrintF.YA >STYA ZPPtr1 cmp #'0' ...a 0...mmm... padding char? bne .4 - ldx PADLEN PADLEN is not nul, so this 0 is second digit + ldx K.PrintF.PadL K.PrintF.PadL is not nul, so this 0 is second digit bne .5 * lda #'0' - sta PADCHAR no, this is the first 0, so make it PADCHAR + sta K.PrintF.PadC no, this is the first 0, so make it K.PrintF.PadC bra .2 .4 jsr MEM.IsDigit @@ -806,16 +814,16 @@ K.PrintF.YA >STYA ZPPtr1 .5 and #$0F we have a digit pha save it... - lda PADLEN starts PADLEN * 10 + lda K.PrintF.PadL starts K.PrintF.PadL * 10 asl asl A=times 4 - adc PADLEN CC by ASL, A=times 5 + adc K.PrintF.PadL CC by ASL, A=times 5 asl times 10 - sta PADLEN + sta K.PrintF.PadL pla get back digit - adc PADLEN - sta PADLEN + adc K.PrintF.PadL + sta K.PrintF.PadL bra .2 go get next char... .8 phy @@ -843,7 +851,7 @@ K.PrintF.YA >STYA ZPPtr1 .13 lda PrintFTBL2.OUT,x -.20 jsr Printf.Cout +.20 jsr STDIO.COut bcc .1 .99 rts *-------------------------------------- @@ -877,7 +885,7 @@ PrintF.B.1 ldx #8 pha lda #'0' adc #0 add Carry - jsr Printf.Cout + jsr STDIO.COut pla bcs PrintF.BB.RTS dex @@ -918,11 +926,10 @@ PrintF.U clc unsigned long (DWORD) dey bpl .1 -PrintF.U.1 bcc .8 unsigned, nothing to check - - +PrintF.U.1 bcc PrintF.Hex2Dec unsigned, nothing to check + lda HEXBUF,x get sign - bpl .8 + bpl PrintF.Hex2Dec * sec @@ -937,8 +944,94 @@ PrintF.U.1 bcc .8 unsigned, nothing to check bpl .1 sec tell to print a "-" sign.... +*-------------------------------------- +* Convert HEXBUF to ASCBUF decimal padded with 0 +*-------------------------------------- +PrintF.Hex2Dec ror .31+1 + + ldx #4 + +.1 stz BCDBUF,x Clear all 5 bytes + dex + bpl .1 -.8 jmp HEX2DEC + sed switch to BCD mode + + ldx #32 let's roll 32 bits + +.2 asl HEXBUF + rol HEXBUF+1 + rol HEXBUF+2 + rol HEXBUF+3 + + ldy #4 + +.3 lda BCDBUF,y + adc BCDBUF,y + sta BCDBUF,y + dey + bpl .3 + + dex + bne .2 + + cld + +.31 bit #$ff SELF MODIFIED -sign to print before digits ? + bpl .9 + lda #'-' + jsr STDIO.COut + +.9 lda K.PrintF.PadL any Len format ? + beq .4 no + + lda #10 + sec yes, Print only digits starting at pos 10-K.PrintF.PadL + sbc K.PrintF.PadL + +.4 tax x=0 if no K.PrintF.PadL, or x=10-K.PrintF.PadL + +.5 txa X range 0 to 9 + lsr CS if lo nibble (1,3,5,7,9) + tay + + lda BCDBUF,y + + bcs .6 + + lsr + lsr + lsr + lsr + +.6 and #$0F + ora #$30 + cmp #$30 + + beq .7 a zero? + + inc K.PrintF.PadL found a non zero, Print all digits, even if 0, next time + ldy #'0' + sty K.PrintF.PadC + bra .8 + +.7 cpx #9 last digit ? + beq .8 Print always + + ldy K.PrintF.PadL no pad to fill, do not Print 0 + beq .10 + + lda K.PrintF.PadC fill with K.PrintF.PadC + +.8 jsr STDIO.COut + bcs .99 + +.10 inx + cpx #10 + bne .5 + + clc +.99 rts *-------------------------------------- * EXP(8) 1(s) 1significants(31) * http://apple2.org.za/gswv/a2zine/GS.WorldView/Resources/GS.TECH.INFO/AppleSoft/ @@ -958,7 +1051,7 @@ PrintF.F clc beq .8 phx - jsr Printf.Cout + jsr STDIO.COut plx inx bne .2 @@ -993,7 +1086,7 @@ PrintF.NN.2 ora #$30 cmp #$3A bcc .1 adc #6 -.1 jmp Printf.Cout +.1 jmp STDIO.COut *-------------------------------------- PrintF.S ldy #$ff CSTR .HS 2C bit abs @@ -1018,25 +1111,25 @@ PrintF.SS ldy #$00 PSTR lda (ZPPtr2),y beq .2 - jsr Printf.Cout + jsr STDIO.COut bcs .9 - lda PADLEN + lda K.PrintF.PadL beq .1 - cpy PADLEN + cpy K.PrintF.PadL bne .1 clc rts -.2 lda PADLEN +.2 lda K.PrintF.PadL beq .8 -.3 cpy PADLEN +.3 cpy K.PrintF.PadL beq .8 - lda PADCHAR - jsr Printf.Cout + lda K.PrintF.PadC + jsr STDIO.COut bcs .9 iny bne .3 @@ -1044,9 +1137,9 @@ PrintF.SS ldy #$00 PSTR .8 clc .9 rts *-------------------------------------- -Printf.Cout jmp K.PutChar.A +STDIO.COut jmp K.PutChar.A -*Printf.Cout.Ptr sta $ffff Self modified +*STDIO.COut.Ptr sta $ffff Self modified *-------------------------------------- STDIO.PullMLIPath >PULLYA @@ -1067,7 +1160,7 @@ STDIO.SetMLIPathYA >STYA K.MLI.PARAMS+1 rts *-------------------------------------- -STDIO.SetIOBUF >LDYAI 1024 get a ProDOS IOBUF +STDIO.SetIOBUF >LDYAI 1024 get a ProDOS IOBUF ldx #S.MEM.F.ALIGN+S.MEM.F.NOMOVE jsr MEM.GetMem.YAX bcs .9 @@ -1089,100 +1182,6 @@ STDIO.IOERR lda #MLI.E.IO sec rts *-------------------------------------- -PADLEN .BS 1 -PADCHAR .BS 1 -*-------------------------------------- -HEXBUF .BS 4 -BCDBUF .BS 5 5, enough to handle 10 digits (32bits) -*-------------------------------------- -* Convert HEXBUF to ASCBUF decimal padded with 0 -*-------------------------------------- -HEX2DEC ror .31+1 - - ldx #4 - -.1 stz BCDBUF,x Clear all 5 bytes - dex - bpl .1 - - sed switch to BCD mode - - ldx #32 let's roll 32 bits - -.2 asl HEXBUF - rol HEXBUF+1 - rol HEXBUF+2 - rol HEXBUF+3 - - ldy #4 - -.3 lda BCDBUF,y - adc BCDBUF,y - sta BCDBUF,y - dey - bpl .3 - - dex - bne .2 - - cld - -.31 bit #$ff SELF MODIFIED -sign to print before digits ? - bpl .9 - lda #'-' - jsr Printf.Cout - -.9 lda PADLEN any Len format ? - beq .4 no - - lda #10 - sec yes, Print only digits starting at pos 10-padlen - sbc PADLEN - -.4 tax x=0 if no padlen, or x=10-padlen - -.5 txa X range 0 to 9 - lsr CS if lo nibble (1,3,5,7,9) - tay - - lda BCDBUF,y - - bcs .6 - - lsr - lsr - lsr - lsr - -.6 and #$0F - ora #$30 - cmp #$30 - - beq .7 a zero? - - inc PADLEN found a non zero, Print all digits, even if 0, next time - ldy #'0' - sty PADCHAR - bra .8 - -.7 cpx #9 last digit ? - beq .8 Print always - - ldy PADLEN no pad to fill, do not Print 0 - beq .10 - - lda PADCHAR fill with PADCHAR - -.8 jsr Printf.Cout - bcs .99 - -.10 inx - cpx #10 - bne .5 - - clc -.99 rts -*-------------------------------------- MAN SAVE /A2OSX.SRC/SYS/KERNEL.S.STDIO LOAD /A2OSX.SRC/SYS/KERNEL.S