Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-09-30 17:32:54 +02:00
parent adfbd6f74d
commit eb0182dfd9
8 changed files with 282 additions and 105 deletions

Binary file not shown.

View File

@ -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

View File

@ -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

View File

@ -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
*--------------------------------------

View File

@ -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

View File

@ -262,7 +262,7 @@ WND.Show >SYSCALL2 GetMemPtr
ldy #S.WND.TBAR.Y2
lda (ZPWNDPtr),y
clc
adc SYSFON.Hp2
adc SYSFON.H
tax
iny
@ -698,30 +698,19 @@ 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
@ -739,7 +728,7 @@ WND.PaintMBar ldy #S.WND.MBAR
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
@ -757,11 +746,74 @@ WND.PaintMBar ldy #S.WND.MBAR
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

View File

@ -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

View File

@ -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