diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 3c75fa08..d5fffda6 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/DRV/PIC.DRV.S.txt b/DRV/PIC.DRV.S.txt index f99bf2dc..0d9c347b 100644 --- a/DRV/PIC.DRV.S.txt +++ b/DRV/PIC.DRV.S.txt @@ -8,6 +8,7 @@ NEW .INB inc/macros.i .INB inc/a2osx.i .INB inc/mli.e.i + .INB inc/com.i *-------------------------------------- ZPTmpPtr1 .EQ ZPDRV *-------------------------------------- @@ -110,8 +111,8 @@ CS.END DEVSIG.Offset .HS 0507 DEVSIG.Value .HS 4848 DEVSIG.Length .EQ DEVSIG.Value-DEVSIG.Offset -MSG.DETECT .AZ "Apple PIC (Parallel Interface Card).\r\n" -MSG.DETECT.OK .AZ "PIC Installed As Device : %S\r\n" +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" ARGS .BS 2 *-------------------------------------- @@ -127,6 +128,18 @@ FD.DEV.NAME .AZ "lpt1" *-------------------------------------- * Driver Code *-------------------------------------- +PIC.WDATA .EQ $C080 +PIC.WSTROBE .EQ $C082 +PIC.RCTRL .EQ $C083 +PIC.RACK .EQ $C084 +PIC.STROBE500 .EQ $C085 pin 13 ???? +PIC.IRQEN .EQ $C086 +PIC.IRQDIS .EQ $C087 Reset ACK, DIS AutoStrobe +*-------------------------------------- +ZPIOCTL .EQ ZPDRV +ZPBufPtr .EQ ZPDRV+2 +ZPCount .EQ ZPDRV+4 +*-------------------------------------- DRV.CS.START cld jmp (.1,x) .1 .DA STATUS @@ -137,47 +150,146 @@ DRV.CS.START cld .DA A2osX.BADCALL .DA OPEN .DA CLOSE - .DA A2osX.BADCALL + .DA READ .DA WRITE -L.STAT .DA STAT .DA 0 end or relocation *-------------------------------------- -STATUS >LDYA L.STAT +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 ldx DEVSLOTn0 + stz PIC.IRQDIS,x + + lda #S.DIB.S.OPENED + tsb DIB+S.DIB.S + clc rts *-------------------------------------- -CONTROL +CLOSE lda #S.DIB.S.OPENED + trb DIB+S.DIB.S + clc rts *-------------------------------------- -OPEN +READ jsr READ.WRITE.Init + clc rts *-------------------------------------- -CLOSE - clc +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 PIC.WDATA,x +* sta PIC.WSTROBE,x + bra .1 + +.8 clc rts *-------------------------------------- -WRITE - clc +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 +*DEVSLOT0n .BS 1 +*DEVSLOTCn .BS 1 DEVSLOTn0 .BS 1 *-------------------------------------- -STAT .DA #S.DIB.S.WRITE +DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ .DA #0,#0,#0 - >PSTR "Parallel Card" - .DA #0,#0,#0 - .DA #S.DIB.T.CHAR - .DA #0 - .DA $0900 -*-------------------------------------- -DIB .DA #S.DIB.S.WRITE - .DA #0,#0,#0 - >PSTR "Serial Card/Port" + >PSTR "Apple // Int Crd" .DA #S.DIB.T.CHAR .DA #0 .DA K.VER diff --git a/INC/LIBGUI.I.txt b/INC/LIBGUI.I.txt index 57af569e..53780c4e 100644 --- a/INC/LIBGUI.I.txt +++ b/INC/LIBGUI.I.txt @@ -123,6 +123,7 @@ S.WND.hCUR .EQ S.OBJ+16 S.WND.TitleX1 .EQ S.OBJ+18 S.WND.TitleX2 .EQ S.OBJ+20 S.WND.TBAR.Y2 .EQ S.OBJ+22 +S.WND.MBAR.Y1 .EQ S.OBJ+22 S.WND.MBAR.Y2 .EQ S.OBJ+24 S.WND.SBAR.Y1 .EQ S.OBJ+26 S.WND.InnerW .EQ S.OBJ+28 diff --git a/LIB/LIBGUI.S.DRAW.txt b/LIB/LIBGUI.S.DRAW.txt index 30415849..5c648e0f 100644 --- a/LIB/LIBGUI.S.DRAW.txt +++ b/LIB/LIBGUI.S.DRAW.txt @@ -39,7 +39,7 @@ DrawToYA jsr OBJ.Get .8 clc .9 rts -Draw.Jmp jmp (J.Cmds-S.CB.CMD.DRAWLINE-2,x) +Draw.Jmp jmp (J.Cmds-S.CB.CMD.DRAWLINE,x) *-------------------------------------- * In: Control Block in CB.Cache * CMD @@ -271,11 +271,17 @@ DrawLine.IncX lda DX bra .1 .8 rts *-------------------------------------- -DrawText2 jsr GFXWrite.CB +DrawText2 lda #S.CB.CMD.DRAWTEXT+S.CB.CMD.OSD + + sta CB.Cache+S.CB.CMD + + jsr GFXWrite.CB bcs .9 + jsr GFXWrite.CB lda CB.Cache+S.CB.SrcPtr >SYSCALL2 FreeStkObj + .9 rts *-------------------------------------- diff --git a/LIB/LIBGUI.S.MENU.txt b/LIB/LIBGUI.S.MENU.txt index 18937320..b7187653 100644 --- a/LIB/LIBGUI.S.MENU.txt +++ b/LIB/LIBGUI.S.MENU.txt @@ -16,7 +16,12 @@ MENU.New >STYA ZPPtr1 MENU.Paint MENU.Close *-------------------------------------- -MENU.MBarInit >STYA ZPPtr1 +MENU.MBarInit >STYA ZPMENUPtr + >STYA ZPPtr1 + + ldy #S.MBAR.S + lda (ZPPtr1),y + bmi .80 stz DX stz DX+1 @@ -24,12 +29,12 @@ MENU.MBarInit >STYA ZPPtr1 .1 lda (ZPPtr1) beq .8 - ldy #S.MBAR.TEXT - lda (ZPPtr1),y - pha - iny - lda (ZPPtr1),y - ply + lda #S.MBAR.TEXT + clc + adc ZPPtr1 + tay + lda ZPPtr1+1 + adc #0 ldx hSYSFONB jsr FON.GetTextSize @@ -85,7 +90,7 @@ MENU.MBarInit >STYA ZPPtr1 sta (ZPPtr1),y lda (ZPPtr1) - sec + clc adc ZPPtr1 sta ZPPtr1 bcc .1 @@ -95,9 +100,9 @@ MENU.MBarInit >STYA ZPPtr1 .8 lda #$80 ldy #S.MBAR.S - sta (ZPMENUPtr),y + sta (ZPPtr1),y - clc +.80 clc rts *-------------------------------------- MBAR.New diff --git a/LIB/LIBGUI.S.WND.txt b/LIB/LIBGUI.S.WND.txt index 66499d4a..e145b410 100644 --- a/LIB/LIBGUI.S.WND.txt +++ b/LIB/LIBGUI.S.WND.txt @@ -203,7 +203,7 @@ WND.Show >SYSCALL2 GetMemPtr tax iny lda (ZPWNDPtr),y - + ldy #S.WND.TBAR.Y2+1 sta (ZPWNDPtr),y txa @@ -253,18 +253,18 @@ WND.Show >SYSCALL2 GetMemPtr .3 ldy #S.WND.MBAR+1 lda (ZPWNDPtr),y beq .7 - + lda Counter+1 clc adc SYSFON.Hp2 sta Counter+1 - + ldy #S.WND.TBAR.Y2 lda (ZPWNDPtr),y clc - adc SYSFON.Hp2 + adc SYSFON.H tax - + iny lda (ZPWNDPtr),y adc #0 @@ -273,24 +273,24 @@ WND.Show >SYSCALL2 GetMemPtr txa dey sta (ZPWNDPtr),y - + lda #S.WND.S.HASMBAR jsr WND.SetStatus - + jsr WND.PaintMBar .7 ldy #S.WND.STATUS+1 lda (ZPWNDPtr),y beq .8 - + lda Counter+1 clc adc SYSFON.Hp2 sta Counter+1 - + lda #S.WND.S.HASSBAR jsr WND.SetStatus - + jsr WND.PaintSBar .8 lda #0 @@ -413,17 +413,17 @@ WND.PaintTopBar lda #S.CB.CMD.FILLRECT jsr PutA2CBBuf lda #S.CB.M.C16 jsr PutA2CBBuf - + ldx PREFS.TBARCOLORI - + ldy #S.OBJ.S lda (ZPWNDPtr),y and #S.WND.S.ACTIVE beq .10 - + ldx PREFS.TBARCOLORA - -.10 txa + +.10 txa jsr PutA2CBBuf ldy #S.OBJ.X1 @@ -487,7 +487,7 @@ WND.PaintTopBar lda #S.CB.CMD.FILLRECT beq .3 pha - + lda L.BM.Close ldx L.BM.Close+1 sta ZPObjPtr @@ -501,19 +501,19 @@ WND.PaintTopBar lda #S.CB.CMD.FILLRECT iny lda (ZPWNDPtr),y sbc #0 - + tax pla jsr WND.PaintTopBarBMAtAX pla - + .3 bit #S.WND.F.MIN beq .4 - + pha - + lda L.BM.Min ldx L.BM.Min+1 sta ZPObjPtr @@ -527,17 +527,17 @@ WND.PaintTopBar lda #S.CB.CMD.FILLRECT iny lda (ZPWNDPtr),y sbc #0 - + tax pla jsr WND.PaintTopBarBMAtAX pla - + .4 bit #S.WND.F.MAX beq .8 - + lda L.BM.Max ldx L.BM.Max+1 sta ZPObjPtr @@ -551,7 +551,7 @@ WND.PaintTopBar lda #S.CB.CMD.FILLRECT iny lda (ZPWNDPtr),y sbc #0 - + tax pla @@ -630,7 +630,7 @@ WND.PaintTopBarBMAtAX lda #0 S.CB.DstPtr jsr PutA2CBBuf jsr PutA2CBBuf - + rts *-------------------------------------- WND.PaintTopBarTitle @@ -659,9 +659,9 @@ WND.PaintTopBarTitle lda (ZPWNDPtr),y sec sbc CB.Cache+S.CB.SrcW - + sta DX - + iny lda (ZPWNDPtr),y sbc CB.Cache+S.CB.SrcW+1 @@ -669,7 +669,7 @@ WND.PaintTopBarTitle lsr ror DX sta DX+1 - + ldy #S.OBJ.X1 lda (ZPWNDPtr),y clc @@ -681,7 +681,7 @@ WND.PaintTopBarTitle lda (ZPWNDPtr),y adc DX+1 sta CB.Cache+S.CB.X1+1 - + ldy #S.OBJ.Y1 lda (ZPWNDPtr),y clc @@ -698,51 +698,40 @@ WND.PaintTopBarTitle .9 rts *-------------------------------------- -WND.PaintMBar ldy #S.WND.MBAR - lda (ZPWNDPtr),y - sta ZPMENUPtr - iny - lda (ZPWNDPtr),y - sta ZPMENUPtr+1 - - ldy #S.MBAR.S - lda (ZPMENUPtr),y - bmi .1 - - >LDYA ZPMENUPtr - jsr MENU.MBarInit - -.1 jsr CB.Clear +WND.PaintMBar jsr CB.Clear lda #S.CB.CMD.FILLRECT sta CB.Cache+S.CB.CMD + lda #S.CB.OP.SET sta CB.Cache+S.CB.OP + lda #S.CB.M.MONO sta CB.Cache+S.CB.M + lda PREFS.MBARCOLOR - sta CB.Cache+S.CB.OP.COLOR - + 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.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.TBAR.Y2 + ldy #S.WND.MBAR.Y1 lda (ZPWNDPtr),y sta CB.Cache+S.CB.Y1 - + iny lda (ZPWNDPtr),y sta CB.Cache+S.CB.Y1+1 @@ -750,18 +739,81 @@ WND.PaintMBar ldy #S.WND.MBAR iny #S.WND.MBAR.Y2 lda (ZPWNDPtr),y sta CB.Cache+S.CB.Y2 - + iny lda (ZPWNDPtr),y sta CB.Cache+S.CB.Y2+1 jsr PutCBCache2CBBuf + ldy #S.WND.MBAR + lda (ZPWNDPtr),y + pha + iny + lda (ZPWNDPtr),y + ply + + jsr MENU.MBarInit + +.1 lda (ZPMENUPtr) + beq .8 + + jsr CB.Clear + + 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.MBAR.XT + lda (ZPMENUPtr),y + clc + ldy #S.OBJ.X1 + adc (ZPWNDPtr),y + sta CB.CACHE+S.CB.X1 + ldy #S.MBAR.XT+1 + lda (ZPMENUPtr),y + ldy #S.OBJ.X1+1 + adc (ZPWNDPtr),y + sta CB.CACHE+S.CB.X1+1 + + ldy #S.WND.MBAR.Y1 + lda (ZPWNDPtr),y + sta CB.CACHE+S.CB.Y1 + iny + lda (ZPWNDPtr),y + sta CB.CACHE+S.CB.Y1+1 + + lda #S.MBAR.TEXT + clc + adc ZPMENUPtr + sta CB.CACHE+S.CB.TxtPtr + + lda #0 + adc ZPMENUPtr+1 + sta CB.CACHE+S.CB.TxtPtr+1 + + jsr PutCBCache2CBBuf + + lda (ZPMENUPtr) + clc + adc ZPMENUPtr + sta ZPMENUPtr + bcc .1 + inc ZPMENUPtr+1 + bra .1 .8 clc - -.9 rts + + rts *-------------------------------------- WND.PaintSBar lda #S.CB.CMD.HLINE jsr WND.PaintBorders.H @@ -772,7 +824,7 @@ WND.PaintSBar lda #S.CB.CMD.HLINE iny lda (ZPWNDPtr),y jsr PutA2CBBuf - + ldy #S.OBJ.Y2 lda (ZPWNDPtr),y sec @@ -782,7 +834,7 @@ WND.PaintSBar lda #S.CB.CMD.HLINE lda (ZPWNDPtr),y sbc #0 jsr PutA2CBBuf - + ldy #S.OBJ.X2 lda (ZPWNDPtr),y jsr PutA2CBBuf @@ -843,16 +895,16 @@ WND.PaintSBar lda #S.CB.CMD.HLINE sta CB.Cache+S.CB.M lda PREFS.SBARCOLOR sta CB.Cache+S.CB.OP.COLOR - + lda CB.Cache+S.CB.X1 clc adc CB.Cache+S.CB.SrcW sta CB.Cache+S.CB.X1 - + lda CB.Cache+S.CB.X1+1 adc CB.Cache+S.CB.SrcW+1 sta CB.Cache+S.CB.X1+1 - + ldy #S.OBJ.X2 lda (ZPWNDPtr),y sta CB.Cache+S.CB.X2 diff --git a/LIB/LIBGUI.S.txt b/LIB/LIBGUI.S.txt index 1f8b30bf..e9f1e6fc 100644 --- a/LIB/LIBGUI.S.txt +++ b/LIB/LIBGUI.S.txt @@ -194,13 +194,15 @@ L.Cursors .DA CUR.Arrow .DA CUR.Wait6 J.Clip .DA CLIP.Point SETPIXEL .DA CLIP.Point GETPIXEL - .DA CLIP.HLine - .DA CLIP.VLine + .DA CLIP.HLine HLINE + .DA CLIP.VLine VLINE .DA CLIP.Rect FILLRECT - .DA CLIP.BitBlt + .DA CLIP.BitBlt BITBLT .DA CLIP.Rect GETRECTBUFSIZE - .DA CLIP.Line - .DA CLIP.Text + .DA CLIP.Text DRAWTEXT + .DA CLIP.Text GETTEXTSIZE + .DA CLIP.Line DRAWLINE + .DA CLIP.BitBlt DRAWTEXT2 .DA 0 *-------------------------------------- LIB.LOAD lda LibCount @@ -318,13 +320,14 @@ CB.Get >STYA .1+1 rts *-------------------------------------- -GetCBBuf >LDYAI 256 +GetCBBuf >LDYAI 512 >SYSCALL GetMem bcs .9 stx hCBBuf >STYA ZPCBPtr >STYA ZPCBBufPtr + .9 rts *-------------------------------------- PutCBCache2CBBuf @@ -457,7 +460,7 @@ MENU.Sys .DA #2 ID .DA #0 *-------------------------------------- PREFS.BESTVIEWEDX .DA #$FC -PREFS.MBARXMARGIN .DA #10 +PREFS.MBARXMARGIN .DA #5 PREFS.BORDERCOLOR .DA #C.BLACK PREFS.TBARCOLORA .DA #C16.D.BLUE PREFS.TBARCOLORI .DA #C16.L.BLUE diff --git a/SBIN/GUI.S.txt b/SBIN/GUI.S.txt index a1b45366..a62097ff 100644 --- a/SBIN/GUI.S.txt +++ b/SBIN/GUI.S.txt @@ -126,14 +126,12 @@ WND.Test >PUSHBI S.WND.F.RESIZE+S.WND.F.MOVE+S.WND.F.CLOSE+S.WND.F.MAX+S.WND.F. >PUSHW L.WND.TITLE >LIBCALL hLIBGUI,LIBGUI.WND.SetProp - lda hWND - >PUSHA + >PUSHB hWND >PUSHBI S.WND.MBAR >PUSHW L.WND.MBAR >LIBCALL hLIBGUI,LIBGUI.WND.SetProp - lda hWND - >PUSHA + >PUSHB hWND >PUSHBI S.WND.STATUS >PUSHW L.WND.STATUS >LIBCALL hLIBGUI,LIBGUI.WND.SetProp