From b70f92a87166b6d5b4a1ba8405e5a6c96abdc09b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Thu, 1 Oct 2020 17:30:25 +0200 Subject: [PATCH] Kernel 0.94 --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes DRV/GRAPPLER.DRV.S.txt | 310 +++++++++++++++++++++++++++++++++++++++ DRV/PIC.DRV.S.txt | 2 +- INC/LIBGUI.I.txt | 22 +-- LIB/LIBGUI.S.CLIP.txt | 10 +- LIB/LIBGUI.S.DRAW.txt | 41 +++--- LIB/LIBGUI.S.WND.txt | 133 +++++++++++++---- LIB/LIBGUI.S.txt | 17 +-- SBIN/GUI.S.txt | 4 +- 9 files changed, 455 insertions(+), 84 deletions(-) create mode 100644 DRV/GRAPPLER.DRV.S.txt diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 6de429268d4826712b4d9ddd7dbc741d517eef87..4ce033327ffaf8a6af0a53c8fd9853f35b529ee0 100644 GIT binary patch delta 35486 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 delta 37917 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 diff --git a/DRV/GRAPPLER.DRV.S.txt b/DRV/GRAPPLER.DRV.S.txt new file mode 100644 index 00000000..91ab8fdb --- /dev/null +++ b/DRV/GRAPPLER.DRV.S.txt @@ -0,0 +1,310 @@ +NEW + AUTO 3,1 + .LIST OFF + .OP 65C02 + .OR $2000 + .TF drv/grappler.drv +*-------------------------------------- + .INB inc/macros.i + .INB inc/a2osx.i + .INB inc/mli.e.i + .INB inc/com.i +*-------------------------------------- +ZPTmpPtr1 .EQ ZPDRV +*-------------------------------------- +* File Header (16 Bytes) +*-------------------------------------- +CS.START cld + jmp Dev.Detect cld,jmp abs=DRV + .DA #$61 6502,Level 1 (65c02) + .DA #1 DRV Layout Version 1 + .DA 0 + .DA CS.END-CS.START Code Length + .DA 0 + .DA #32 SS + .DA #2 ZP + .DA 0 +*-------------------------------------- +* Relocation Table +*-------------------------------------- +L.MSG.DETECT .DA MSG.DETECT +L.MSG.DETECT.OK .DA MSG.DETECT.OK +L.MSG.DETECT.KO .DA MSG.DETECT.KO +L.DRV.CS.START .DA DRV.CS.START +L.FD.DEV .DA FD.DEV +L.FD.DEV.NAME .DA FD.DEV.NAME + .DA 0 End Of Reloc Table +*-------------------------------------- +Dev.Detect >STYA ARGS + + >LDYA L.MSG.DETECT + >SYSCALL PutS + + stz ZPTmpPtr1 + lda #$C1 + sta ZPTmpPtr1+1 + +.1 and #$0f + tay + lda A2osX.S,y + bne .3 + + ldx #DEVSIG.Length-1 + +.2 ldy DEVSIG.Offset,x + lda (ZPTmpPtr1),y + cmp DEVSIG.Value,x + bne .3 + + dex + bpl .2 + + bra .4 + +.3 inc FD.DEV.NAME+3 + inc ZPTmpPtr1+1 no match, try next slot.... + lda ZPTmpPtr1+1 + cmp #$C8 + bne .1 + + >LDYA L.MSG.DETECT.KO + >SYSCALL PutS + + lda #MLI.E.NODEV Not Found in any slot, exiting + sec + rts + +.4 lda ZPTmpPtr1+1 + and #$0F + pha + tay + lda #A2osX.S.COM + sta A2osX.S,y + pla + asl + asl + asl + asl + sta DEVSLOTn0 + +.8 >PUSHW L.MSG.DETECT.OK + >PUSHW L.FD.DEV.NAME + >PUSHBI 2 + >SYSCALL PrintF + + >PUSHWI DRV.END + >PUSHWI DRV.CS.END-DRV.CS.START + >PUSHWI DRV.CS.START + >LDYA L.DRV.CS.START + >SYSCALL InsDrv + bcs .9 + + >STYA FD.DEV+S.FD.DEV.DRVPTR + + >PUSHW L.FD.DEV + >PUSHW L.FD.DEV.NAME + >SYSCALL MKDev + +.9 rts +*-------------------------------------- +CS.END +DEVSIG.Offset .HS 05070B0C +DEVSIG.Value .HS 38180114 +DEVSIG.Length .EQ DEVSIG.Value-DEVSIG.Offset +MSG.DETECT .AZ "Orange Grappler Series // Boards" +MSG.DETECT.OK .AZ "Installed As Device : %s\r\n" +MSG.DETECT.KO .AZ "No HW Found." +ARGS .BS 2 +*-------------------------------------- +FD.DEV .DA #S.FD.T.CDEV + .DA #0 HANDLER + .DA #0 BUSID + .DA #0 DEVID + .DA 0 BUSPTR + .BS 2 DRVPTR + .DA 0 DCBPTR + .DA 0 BUFPTR +FD.DEV.NAME .AZ "lpt1" +*-------------------------------------- +* Driver Code +*-------------------------------------- +GRAPPLER.STATUS .EQ $C081 +GRAPPLER.STATUS.BUSY .EQ %00001000 +GRAPPLER.STATUS.NOPAPER .EQ %00000100 +GRAPPLER.STATUS.SELECT .EQ %00000010 + +GRAPPLER.WDATA .EQ $C081 +GRAPPLER.STRBL .EQ $C082 +GRAPPLER.STRBH .EQ $C084 +*-------------------------------------- +ZPIOCTL .EQ ZPDRV +ZPBufPtr .EQ ZPDRV+2 +ZPCount .EQ ZPDRV+4 +*-------------------------------------- +DRV.CS.START cld + jmp (.1,x) +.1 .DA STATUS + .DA A2osX.BADCALL + .DA A2osX.BADCALL + .DA A2osX.BADCALL + .DA CONTROL + .DA A2osX.BADCALL + .DA OPEN + .DA CLOSE + .DA READ + .DA WRITE + .DA 0 end or relocation +*-------------------------------------- +STATUS jsr STATUS.CONTROL.Init + ldy #S.IOCTL.STATCODE + lda (ZPIOCTL),y + beq .1 + cmp #S.IOCTL.STATCODE.GETDIB + bne STATUS.DCB + ldy #S.DIB-1 + .HS 2C bit abs +.1 ldy #3 + +.2 lda DIB,y + sta (ZPBufPtr),y + dey + bpl .2 + clc + rts + +STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB + bne .3 + + ldy #S.DCB.COM-1 +.2 lda DCB,y + sta (ZPBufPtr),y + dey + bpl .2 + + clc + rts +.3 cmp #S.IOCTL.STATCODE.EOF + bne STATUS.9 + + lda DIB+S.DIB.S + and #S.DIB.S.OPENED + beq OPEN.E + +.8 clc + rts + +STATUS.9 lda #MLI.E.BADCTL + sec + rts +*-------------------------------------- +CONTROL jsr STATUS.CONTROL.Init + + ldy #S.IOCTL.CTRLCODE + lda (ZPIOCTL),y + cmp #S.IOCTL.CTRLCODE.SETDCB + bne STATUS.9 + ldy #S.DCB.COM-1 +.2 lda (ZPBufPtr),y + sta DCB,y + dey + bpl .2 +*-------------------------------------- +OPEN lda DIB+S.DIB.S + bit #S.DIB.S.OPENED + beq OPEN.1 + +OPEN.E lda #MLI.E.OPEN + sec + rts + +OPEN.1 lda #S.DIB.S.OPENED + tsb DIB+S.DIB.S + + clc + rts +*-------------------------------------- +CLOSE lda #S.DIB.S.OPENED + trb DIB+S.DIB.S + + clc + rts +*-------------------------------------- +READ jsr READ.WRITE.Init + + clc + rts +*-------------------------------------- +WRITE jsr READ.WRITE.Init + +.1 inc ZPCount + bne .2 + inc ZPCount+1 + beq .8 + +.2 lda (ZPBufPtr) + inc ZPBufPtr + bne .3 + + inc ZPBufPtr+1 + +.3 sta GRAPPLER.WDATA,x + nop + sta GRAPPLER.STRBL,x + nop + nop + sta GRAPPLER.STRBH,x + bra .1 + +.8 clc + rts +*-------------------------------------- +READ.WRITE.Init ldx DEVSLOTn0 + +STATUS.CONTROL.Init + >STYA ZPIOCTL + + ldy #S.IOCTL.BUFPTR + lda (ZPIOCTL),y + sta ZPBufPtr + + iny + + lda (ZPIOCTL),y + sta ZPBufPtr+1 + iny #S.IOCTL.BYTECNT + + lda (ZPIOCTL),y + eor #$ff + sta ZPCount + + iny + + lda (ZPIOCTL),y + eor #$ff + sta ZPCount+1 + rts +*-------------------------------------- +DRV.CS.END +*DEVSLOT0n .BS 1 +*DEVSLOTCn .BS 1 +DEVSLOTn0 .BS 1 +*-------------------------------------- +DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ + .DA #0,#0,#0 + >PSTR "Grappler // Card" + .DA #S.DIB.T.CHAR + .DA #0 + .DA K.VER +*-------------------------------------- +DCB .DA #S.DCB.T.COM + .DA #0 FLAGS + .DA 0 + .DA #0 + .DA #0 + .DA #0 + .DA #0 +*-------------------------------------- +DRV.END +MAN +SAVE usr/src/drv/grappler.drv.s +ASM diff --git a/DRV/PIC.DRV.S.txt b/DRV/PIC.DRV.S.txt index 0d9c347b..8c0c33d9 100644 --- a/DRV/PIC.DRV.S.txt +++ b/DRV/PIC.DRV.S.txt @@ -113,7 +113,7 @@ DEVSIG.Value .HS 4848 DEVSIG.Length .EQ DEVSIG.Value-DEVSIG.Offset MSG.DETECT .AZ "Apple PIC (Parallel Interface Card)" MSG.DETECT.OK .AZ "PIC Installed As Device : %s\r\n" -MSG.DETECT.KO .AZ "No PIC Found.\r\n" +MSG.DETECT.KO .AZ "No PIC Found." ARGS .BS 2 *-------------------------------------- FD.DEV .DA #S.FD.T.CDEV diff --git a/INC/LIBGUI.I.txt b/INC/LIBGUI.I.txt index 53780c4e..65381233 100644 --- a/INC/LIBGUI.I.txt +++ b/INC/LIBGUI.I.txt @@ -1,18 +1,19 @@ NEW AUTO 3,1 *-------------------------------------- -LIBGUI.Draw .EQ 4 -LIBGUI.SetCursor .EQ 6 -LIBGUI.SetCursorPos .EQ 8 -LIBGUI.HideCursor .EQ 10 -LIBGUI.ShowCursor .EQ 12 -LIBGUI.UpdateCursor .EQ 14 -LIBGUI.ReadMouse .EQ 16 -LIBGUI.GetScreenGC .EQ 18 -LIBGUI.WND.Create .EQ 20 +LIBGUI.SetCursor .EQ 4 +LIBGUI.SetCursorPos .EQ 6 +LIBGUI.HideCursor .EQ 8 +LIBGUI.ShowCursor .EQ 10 +LIBGUI.UpdateCursor .EQ 12 +LIBGUI.ReadMouse .EQ 14 +LIBGUI.GetScreenGC .EQ 16 +LIBGUI.WND.New .EQ 18 +LIBJUI.WND.Destroy .EQ 20 LIBGUI.WND.SetProp .EQ 22 LIBGUI.WND.GetProp .EQ 24 LIBGUI.WND.Show .EQ 26 +LIBGUI.WND.Paint .EQ 28 *-------------------------------------- C.BLACK .EQ 0 C16.D.BLUE .EQ 1 @@ -132,8 +133,9 @@ S.WND.DocW .EQ S.OBJ+32 S.WND.DocH .EQ S.OBJ+34 S.WND.DocX .EQ S.OBJ+36 S.WND.DocY .EQ S.OBJ+38 +S.WND.fPaint .EQ S.OBJ+40 * -S.WND .EQ S.OBJ+40 +S.WND .EQ S.OBJ+42 *-------------------------------------- S.MBAR.NEXT .EQ 0 S.MBAR.S .EQ 1 diff --git a/LIB/LIBGUI.S.CLIP.txt b/LIB/LIBGUI.S.CLIP.txt index 06f30083..6f17159b 100644 --- a/LIB/LIBGUI.S.CLIP.txt +++ b/LIB/LIBGUI.S.CLIP.txt @@ -11,14 +11,10 @@ NEW *-------------------------------------- CLIP.YA jsr CB.Get Put CB in cache -CLIP.CB.Cache ldx CB.Cache+S.CB.CMD - bpl CLIP.X - - txa - and #$7F +CLIP.CB.Cache lda CB.Cache+S.CB.CMD + and #$7F remove S.CB.CMD.OSD tax - -CLIP.X jmp (J.CLIP-2,x) + jmp (J.CLIP-2,x) *-------------------------------------- CLIP.Point clc diff --git a/LIB/LIBGUI.S.DRAW.txt b/LIB/LIBGUI.S.DRAW.txt index 13b64ebd..f991f436 100644 --- a/LIB/LIBGUI.S.DRAW.txt +++ b/LIB/LIBGUI.S.DRAW.txt @@ -1,32 +1,38 @@ NEW AUTO 3,1 *-------------------------------------- -Draw >PULLW ZPCBPtr Get CB - >PULLYA Get GC - -DrawToYA jsr OBJ.Get +DrawCBCacheToYA ldx L.CB.Cache + stx ZPCBPtr + ldx L.CB.Cache+1 + stx ZPCBPtr+1 + +DrawCBPtrToYA jsr OBJ.Get .1 lda (ZPCBPtr) beq .8 >LDYA ZPCBPtr - jsr CB.Get - - cmp #S.CB.CMD.DRAWTEXT2 - bne .77 - >DEBUG -.77 - jsr CLIP.CB.Cache + jsr CB.Get A = CB.CMD + + cmp #S.CB.CMD.DRAWTEXT2 + bne .2 + + lda #S.CB.CMD.DRAWTEXT+S.CB.CMD.OSD + sta CB.Cache+S.CB.CMD + jsr GFXWrite.CB + bcs .9 + +.2 jsr CLIP.CB.Cache bcs .7 ldx CB.Cache+S.CB.CMD cpx #S.CB.CMD.DRAWLINE - bcc .2 Native DRV Cmd + bcc .6 Native DRV Cmd jsr Draw.Jmp bra .7 -.2 jsr GFXWrite.CB +.6 jsr GFXWrite.CB .7 lda (ZPCBPtr) Get Cmd lsr @@ -276,14 +282,7 @@ DrawLine.IncX lda DX bra .1 .8 rts *-------------------------------------- -DrawText2 lda #S.CB.CMD.DRAWTEXT+S.CB.CMD.OSD - - sta CB.Cache+S.CB.CMD - - jsr GFXWrite.CB - bcs .9 - - jsr GFXWrite.CB +DrawText2 jsr GFXWrite.CB lda CB.Cache+S.CB.SrcPtr >SYSCALL2 FreeStkObj diff --git a/LIB/LIBGUI.S.WND.txt b/LIB/LIBGUI.S.WND.txt index 0027f6b8..6a250ebc 100644 --- a/LIB/LIBGUI.S.WND.txt +++ b/LIB/LIBGUI.S.WND.txt @@ -72,20 +72,20 @@ WND.Quit lda WND.Screen+S.OBJ.hPARENT >SYSCALL2 IOCTL .8 clc - rts +WND.Quit.RTS rts *-------------------------------------- * F8, X116, Y116, W16, H16 *-------------------------------------- -WND.Create ldy WND.Stack.Top - cpy #WND.MAX - bcs .90 - - >LDYAI S.WND +WND.New >LDYAI S.WND >SYSCALL2 getmem - bcs .9 + bcs WND.Quit.RTS >STYA ZPWNDPtr + ldy WND.Stack.Top + cpy #WND.MAX + bcs .90 + lda #S.OBJ.T.WND sta (ZPWNDPtr) S.OBJ.T @@ -96,6 +96,13 @@ WND.Create ldy WND.Stack.Top dey bne .1 + ldy #S.WND.fPaint + lda L.WND.fPaint + sta (ZPWNDPtr),y + iny + lda L.WND.fPaint+1 + sta (ZPWNDPtr),y + >PULLA ldy #S.OBJ.H sta (ZPWNDPtr),y @@ -146,6 +153,9 @@ WND.Create ldy WND.Stack.Top .90 lda #E.OOH .9 >RET 9 *-------------------------------------- +WND.Destroy clc + rts +*-------------------------------------- * hWND8, Prop8, Value16 *-------------------------------------- WND.SetProp ldy #3 @@ -198,6 +208,9 @@ WND.Show >SYSCALL2 GetMemPtr jsr GetCBBuf bcs WND.GetProp.RTS + lda #S.WND.S.ACTIVE + jsr WND.SetStatus + ldy #S.OBJ.Y1 lda (ZPWNDPtr),y tax @@ -297,20 +310,83 @@ WND.Show >SYSCALL2 GetMemPtr jsr PutA2CBBuf >LDYA L.WND.Screen - jsr DrawToYA + jsr DrawCBPtrToYA lda hCBBuf >SYSCALL FreeMem + +* clc - clc .9 rts *-------------------------------------- -WND.New clc - rts -*-------------------------------------- -WND.Paint >STYA ZPWNDPtr +WND.Paint pha hWND - clc + >SYSCALL2 GetMemPtr + >STYA ZPWNDPtr + + ldy #S.WND.fPaint + lda (ZPWNDPtr),y + sta ZPPtr1 + iny + lda (ZPWNDPtr),y + sta ZPPtr1+1 + + pla + + jmp (ZPPtr1) +*-------------------------------------- +WND.fPaint +* >SYSCALL2 GetMemPtr done by WND.Paint +* >STYA ZPWNDPtr + + ldy #S.WND.BGBM+1 + lda (ZPWNDPtr),y + bne .1 + + lda #S.CB.CMD.FILLRECT + sta CB.Cache+S.CB.COLOR + + lda #S.CB.OP.SET + sta CB.Cache+S.CB.OP + + ldy #S.WND.BGCOLOR + lda (ZPWNDPtr),y + sta CB.Cache+S.CB.COLOR + + ldy #S.OBJ.X1 + lda (ZPWNDPtr),y + sta CB.Cache+S.CB.X1 + iny + lda (ZPWNDPtr),y + sta CB.Cache+S.CB.X1+1 + + ldy #S.WND.MBAR.Y2 + lda (ZPWNDPtr),y + sta CB.Cache+S.CB.Y1 + iny + lda (ZPWNDPtr),y + sta CB.Cache+S.CB.Y1+1 + + ldy #S.OBJ.X2 + lda (ZPWNDPtr),y + sta CB.Cache+S.CB.X2 + iny + lda (ZPWNDPtr),y + sta CB.Cache+S.CB.X2+1 + + ldy #S.WND.SBAR.Y1 + lda (ZPWNDPtr),y + sta CB.Cache+S.CB.Y1 + iny + lda (ZPWNDPtr),y + sta CB.Cache+S.CB.Y1+1 + + stz S.CB.Y2+2 Ending 0 + + >LDYA L.WND.Screen + jmp DrawCBCacheToYA + +.1 clc rts *-------------------------------------- WND.PaintBorders @@ -636,24 +712,22 @@ WND.PaintTopBarBMAtAX WND.PaintTopBarTitle jsr CB.Clear - lda #S.CB.CMD.DRAWTEXT+S.CB.CMD.OSD + ldy #S.WND.TITLE + lda (ZPWNDPtr),y + pha + iny + lda (ZPWNDPtr),y + ply + + ldx hSYSFONB + jsr FON.GetTextSize + + lda #S.CB.CMD.DRAWTEXT2 sta CB.Cache+S.CB.CMD lda #S.CB.OP.SET+S.CB.OP.INVERSE sta CB.Cache+S.CB.OP lda #S.CB.M.MONO sta CB.Cache+S.CB.M - lda hSYSFONB - sta CB.Cache+S.CB.hFont - - ldy #S.WND.TITLE - lda (ZPWNDPtr),y - sta CB.Cache+S.CB.TxtPtr - iny - lda (ZPWNDPtr),y - sta CB.Cache+S.CB.TxtPtr+1 - - jsr GFXWrite.CB - bcs .9 ldy #S.OBJ.W lda (ZPWNDPtr),y @@ -696,7 +770,7 @@ WND.PaintTopBarTitle clc -.9 rts + rts *-------------------------------------- WND.PaintMBar jsr CB.Clear @@ -939,9 +1013,6 @@ WND.SetStatus ldy #S.OBJ.S sta (ZPWNDPtr),y rts *-------------------------------------- -WND.Close clc - rts -*-------------------------------------- MAN SAVE usr/src/lib/libgui.s.wnd LOAD usr/src/lib/libgui.s diff --git a/LIB/LIBGUI.S.txt b/LIB/LIBGUI.S.txt index e9f1e6fc..28d569d6 100644 --- a/LIB/LIBGUI.S.txt +++ b/LIB/LIBGUI.S.txt @@ -113,7 +113,6 @@ CS.START cld *-------------------------------------- .1 .DA LIB.LOAD .DA LIB.UNLOAD - .DA Draw .DA SetCursor .DA SetCursorPos .DA HideCursor @@ -121,25 +120,17 @@ CS.START cld .DA UpdateCursor .DA MOU.ReadMouse .DA GetScreenGC - .DA WND.Create + .DA WND.New + .DA WND.Destroy .DA WND.SetProp .DA WND.GetProp .DA WND.Show + .DA WND.Paint +L.WND.fPaint .DA WND.fPaint *-------------------------------------- J.Cmds .DA DrawLine .DA DrawText2 *-------------------------------------- -J.OBJ .DA J.WND - .DA J.MBAR - .DA J.MENU - .DA J.MENUITEM - .DA J.BUT - .DA J.TEXT -*-------------------------------------- -J.WND .DA WND.New - .DA WND.Paint - .DA WND.Close -*-------------------------------------- J.MBAR .DA MBAR.New .DA MBAR.Paint .DA MBAR.Close diff --git a/SBIN/GUI.S.txt b/SBIN/GUI.S.txt index a62097ff..884a439a 100644 --- a/SBIN/GUI.S.txt +++ b/SBIN/GUI.S.txt @@ -117,7 +117,7 @@ WND.Test >PUSHBI S.WND.F.RESIZE+S.WND.F.MOVE+S.WND.F.CLOSE+S.WND.F.MAX+S.WND.F. >PUSHW MouseData+S.MOUSE.Y1 >PUSHWI 280 >PUSHWI 90 - >LIBCALL hLIBGUI,LIBGUI.WND.Create + >LIBCALL hLIBGUI,LIBGUI.WND.New bcs CS.QUIT.RTS sta hWND @@ -139,6 +139,8 @@ WND.Test >PUSHBI S.WND.F.RESIZE+S.WND.F.MOVE+S.WND.F.CLOSE+S.WND.F.MAX+S.WND.F. >LIBCALL hLIBGUI,LIBGUI.HideCursor lda hWND >LIBCALL hLIBGUI,LIBGUI.WND.Show +* lda hWND +* >LIBCALL hLIBGUI,LIBGUI.WND.Paint >LIBCALL hLIBGUI,LIBGUI.ShowCursor clc