mirror of
https://github.com/A2osX/A2osX.git
synced 2025-04-07 09:37:34 +00:00
Kernel 0.94
This commit is contained in:
parent
3cdac2576c
commit
d215bfbafe
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -387,19 +387,25 @@ CS.RUN.LL.DISKII.V
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA.G IOCTL+S.IOCTL.BUFPTR
|
||||
|
||||
>STZ.G IOCTL+S.IOCTL.BLKNUM
|
||||
iny
|
||||
sta (pData),y
|
||||
>LDYA BlkCnt
|
||||
>STYA.G IOCTL+S.IOCTL.BLKNUM
|
||||
|
||||
stz CurTrack
|
||||
* >STZ.G IOCTL+S.IOCTL.BLKNUM
|
||||
* iny
|
||||
* sta (pData),y
|
||||
|
||||
lda TrkCnt
|
||||
sta Counter
|
||||
|
||||
dec
|
||||
sta CurTrack
|
||||
|
||||
.1 ldx #8
|
||||
|
||||
.2 phx
|
||||
|
||||
>DECW.G IOCTL+S.IOCTL.BLKNUM
|
||||
|
||||
>PUSHW L.MSG.VERIFY
|
||||
>PUSHB CurTrack
|
||||
>PUSHW.G IOCTL+S.IOCTL.BLKNUM
|
||||
@ -418,11 +424,10 @@ CS.RUN.LL.DISKII.V
|
||||
plx
|
||||
bcs .9
|
||||
|
||||
>INCW.G IOCTL+S.IOCTL.BLKNUM
|
||||
dex
|
||||
bne .2
|
||||
|
||||
inc CurTrack
|
||||
dec CurTrack
|
||||
dec Counter
|
||||
bne .1
|
||||
|
||||
|
@ -349,6 +349,6 @@ BASEH .HS 20.24.28.2C.30.34.38.3C
|
||||
.HS 23.27.2B.2F.33.37.3B.3F
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/DRV/DHGR.DRV.G
|
||||
LOAD USR/SRC/DRV/DHGR.DRV.S
|
||||
SAVE usr/src/drv/dhgr.drv.g
|
||||
LOAD usr/src/drv/dhgr.drv.s
|
||||
ASM
|
||||
|
@ -18,27 +18,34 @@ NEW
|
||||
BITBLT ldy CB.CACHE+S.CB.SrcPtr
|
||||
lda CB.CACHE+S.CB.SrcPtr+1
|
||||
bne BITBLT.1
|
||||
|
||||
sta SETREADAUX
|
||||
sta SETWRITEAUX
|
||||
|
||||
tya
|
||||
>SYSCALL2 GetMemPtr
|
||||
jsr BITBLT.1
|
||||
|
||||
sta CLRREADAUX
|
||||
sta CLRWRITEAUX
|
||||
rts
|
||||
|
||||
BITBLT.1 >STYA ZPBMDataPtr
|
||||
|
||||
ldy #S.BM-1
|
||||
|
||||
.1 lda (ZPBMDataPtr),y
|
||||
sta BM.Cache,y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
ldx #0
|
||||
lda BM.Cache+S.BM.F
|
||||
cmp #S.BM.F.BBP1
|
||||
beq .11
|
||||
|
||||
ldx #$80
|
||||
|
||||
.11 stx BLT.CMASK
|
||||
lda ZPBMDataPtr
|
||||
clc
|
||||
@ -93,11 +100,14 @@ BITBLT.1 >STYA ZPBMDataPtr
|
||||
|
||||
inc BLT.BMDataPtr+1
|
||||
clc
|
||||
|
||||
.3 pla
|
||||
adc BLT.BMMaskPtr
|
||||
sta BLT.BMMaskPtr
|
||||
bcc .4
|
||||
|
||||
inc BLT.BMMaskPtr+1
|
||||
|
||||
.4 >LDYA CB.Cache+S.CB.DstX
|
||||
jsr LBUF.SetBounds1YA
|
||||
stx BLT.SCRBitOfs
|
||||
@ -116,6 +126,7 @@ BITBLT.1 >STYA ZPBMDataPtr
|
||||
jsr LBUF.SetBounds2YA
|
||||
ldx BLT.SCRBitOfs
|
||||
beq BITBLT.LOOP0
|
||||
|
||||
ldy Shift.L.LO-1,x X = 1->6
|
||||
sty ZPScrShiftPtr
|
||||
ldy Shift.L.HI-1,x X = 1->6
|
||||
@ -285,10 +296,12 @@ BLT.Get7BMBits ldx BLT.BMBitOfsL
|
||||
|
||||
dex OFS 0->6
|
||||
beq BLT.Get7BMBits1 OFS was 1....done and go to next byte, OFS=0
|
||||
|
||||
lda Shift.R.LO-1,x X = 1->6
|
||||
sta ZPBMShiftPtr
|
||||
lda Shift.R.HI-1,x X = 1->6
|
||||
sta ZPBMShiftPtr+1
|
||||
|
||||
lda (ZPBMDataPtr)
|
||||
lsr OFS=1->7, shift one (Range 0->127)
|
||||
and Mask7BitsH,x Get only left upper X bits
|
||||
@ -297,9 +310,10 @@ BLT.Get7BMBits ldx BLT.BMBitOfsL
|
||||
pha
|
||||
inc ZPBMDataPtr Next BM data byte
|
||||
bne .1
|
||||
inc ZPBMDataPtr+1
|
||||
.1 lda (ZPBMDataPtr) get next byte
|
||||
|
||||
inc ZPBMDataPtr+1
|
||||
|
||||
.1 lda (ZPBMDataPtr) get next byte
|
||||
and Mask7BitsL,x only first Y bits 000000yy
|
||||
tay
|
||||
pla get back right part bits 000xxxxx
|
||||
@ -312,6 +326,7 @@ BLT.Get7BMBits0 lda #7
|
||||
lda (ZPBMDataPtr)
|
||||
and #%01111111 Get only 7 needed bits
|
||||
rts
|
||||
|
||||
BLT.Get7BMBits1 lda (ZPBMDataPtr)
|
||||
lsr OFS=1->7, shift one (Range 0->127)
|
||||
|
||||
@ -323,6 +338,6 @@ BLT.Get7BMBits1 lda (ZPBMDataPtr)
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/DRV/DHGR.DRV.S.RECT
|
||||
LOAD USR/SRC/DRV/DHGR.DRV.S
|
||||
SAVE usr/src/drv/dhgr.drv.s.rect
|
||||
LOAD usr/src/drv/dhgr.drv.s
|
||||
ASM
|
||||
|
@ -18,7 +18,7 @@ LBUF.SetBounds2YA
|
||||
cmp LBUF.C1 C1=C2, go combine in C1
|
||||
beq .1
|
||||
|
||||
lda C2.MASK,x
|
||||
lda C2.MASK,x
|
||||
sta LBUF.C2.MASK
|
||||
lda C2.DATA,x
|
||||
sta LBUF.C2.DATA
|
||||
@ -36,11 +36,14 @@ LBUF.DrawAtY lda BASEL,y setup line Base Ptr
|
||||
sta ZPBasePtr
|
||||
lda BASEH,y
|
||||
sta ZPBasePtr+1
|
||||
|
||||
lda CB.Cache+S.CB.OP
|
||||
bit #S.CB.OP.RESTORE
|
||||
bne .4
|
||||
|
||||
bit #S.CB.OP.SAVE
|
||||
beq .3
|
||||
|
||||
ldx LBUF.C1
|
||||
|
||||
.1 ldy COL.BANK,x
|
||||
@ -50,14 +53,18 @@ LBUF.DrawAtY lda BASEL,y setup line Base Ptr
|
||||
sta (ZPBMSavePtr)
|
||||
inc ZPBMSavePtr
|
||||
bne .2
|
||||
|
||||
inc ZPBMSavePtr+1
|
||||
|
||||
.2 cpx LBUF.C2
|
||||
inx
|
||||
bcc .1
|
||||
|
||||
lda CB.Cache+S.CB.OP
|
||||
.3 and #$F
|
||||
tax
|
||||
jmp (J.LBUF.DrawAtY,x)
|
||||
|
||||
.4 ldx LBUF.C1
|
||||
|
||||
.5 ldy COL.BANK,x
|
||||
@ -67,7 +74,9 @@ LBUF.DrawAtY lda BASEL,y setup line Base Ptr
|
||||
sta (ZPBasePtr),y
|
||||
inc ZPBMSavePtr
|
||||
bne .6
|
||||
|
||||
inc ZPBMSavePtr+1
|
||||
|
||||
.6 cpx LBUF.C2
|
||||
inx
|
||||
bcc .5
|
||||
@ -75,7 +84,7 @@ LBUF.DrawAtY lda BASEL,y setup line Base Ptr
|
||||
rts
|
||||
*--------------------------------------
|
||||
LBUF.DrawAtY.SET
|
||||
LBUF.DrawAtY.AND.SET USELESS
|
||||
LBUF.DrawAtY.AND.SET
|
||||
ldx LBUF.C1 x C1->C2
|
||||
ldy COL.BANK,x
|
||||
sta $C000,y
|
||||
@ -91,6 +100,7 @@ LBUF.DrawAtY.AND.SET USELESS
|
||||
inx
|
||||
cpx LBUF.C2
|
||||
beq .2 C1=C2, go setup C2
|
||||
|
||||
bcs .8 C1+1 > C2, we are done...
|
||||
|
||||
.1 ldy COL.BANK,x
|
||||
@ -102,6 +112,7 @@ LBUF.DrawAtY.AND.SET USELESS
|
||||
inx
|
||||
cpx LBUF.C2
|
||||
bcc .1
|
||||
|
||||
.2 ldy COL.BANK,x
|
||||
sta $C000,y
|
||||
ldy COL.OFS,x
|
||||
@ -117,7 +128,7 @@ LBUF.DrawAtY.AND.SET USELESS
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
LBUF.DrawAtY.XOR
|
||||
LBUF.DrawAtY.AND.XOR UELESS
|
||||
LBUF.DrawAtY.AND.XOR
|
||||
lda #$51 EOR (Indirect),Y
|
||||
bra LBUF.DrawAtY.XXX
|
||||
*--------------------------------------
|
||||
@ -127,13 +138,16 @@ LBUF.DrawAtY.XXX
|
||||
sta .10+1
|
||||
sta .20+1
|
||||
sta .30+1
|
||||
|
||||
ldx LBUF.C1 x C1->C2
|
||||
|
||||
ldy COL.BANK,x
|
||||
sta $C000,y
|
||||
ldy COL.OFS,x
|
||||
lda (ZPBasePtr),y Get C1
|
||||
and LBUF.C1.MASK clear ONLY bits starting at X1 mod 7
|
||||
sta ZPTmpByte
|
||||
|
||||
lda LBUF.DATA,x get DATA bits
|
||||
and LBUF.C1.DATA set ONLY bits starting at X1 mod 7
|
||||
ora ZPTmpByte
|
||||
@ -142,7 +156,9 @@ LBUF.DrawAtY.XXX
|
||||
inx
|
||||
cpx LBUF.C2
|
||||
beq .2 C1=C2, go setup C2
|
||||
|
||||
bcs .8 C1+1 > C2, we are done...
|
||||
|
||||
.1 ldy COL.BANK,x
|
||||
sta $C000,y
|
||||
ldy COL.OFS,x
|
||||
@ -153,6 +169,7 @@ LBUF.DrawAtY.XXX
|
||||
inx
|
||||
cpx LBUF.C2
|
||||
bne .1
|
||||
|
||||
.2 ldy COL.BANK,x
|
||||
sta $C000,y
|
||||
ldy COL.OFS,x
|
||||
@ -180,24 +197,27 @@ LBUF.DrawAtY.AND.ORA
|
||||
sta ZPTmpByte
|
||||
|
||||
lda LBUF.DATA,x get DATA bits
|
||||
and LBUF.C1.DATA set ONLY bits starting at X1 mod 7
|
||||
ora ZPTmpByte ora with screen bits
|
||||
and LBUF.C1.DATA set ONLY bits starting at X1 mod 7
|
||||
ora ZPTmpByte ora with screen bits
|
||||
sta (ZPBasePtr),y update screen
|
||||
inx
|
||||
cpx LBUF.C2
|
||||
beq .2 C1=C2, go setup C2
|
||||
|
||||
bcs .8 C1+1 > C2, we are done...
|
||||
|
||||
.1 ldy COL.BANK,x
|
||||
sta $C000,y
|
||||
ldy COL.OFS,x
|
||||
lda (ZPBasePtr),y
|
||||
and LBUF.MASK,x
|
||||
ora LBUF.DATA,x set all bytes between C1+1 & C2-1
|
||||
and LBUF.MASK,x
|
||||
ora LBUF.DATA,x set all bytes between C1+1 & C2-1
|
||||
sta (ZPBasePtr),y
|
||||
|
||||
inx
|
||||
cpx LBUF.C2
|
||||
bne .1
|
||||
|
||||
.2 ldy COL.BANK,x
|
||||
sta $C000,y
|
||||
ldy COL.OFS,x
|
||||
@ -205,13 +225,14 @@ LBUF.DrawAtY.AND.ORA
|
||||
ora LBUF.C2.MASK
|
||||
and (ZPBasePtr),y
|
||||
sta ZPTmpByte
|
||||
|
||||
lda LBUF.DATA,x get DATA bits
|
||||
and LBUF.C2.DATA set ONLY bits ending at X2 mod 7
|
||||
ora ZPTmpByte
|
||||
and LBUF.C2.DATA set ONLY bits ending at X2 mod 7
|
||||
ora ZPTmpByte
|
||||
sta (ZPBasePtr),y update screen
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/RV/DHGR.DRV.S.LBUF
|
||||
LOAD USR/SRC/DRV/DHGR.DRV.S
|
||||
SAVE usr/src/drv/dhgr.drv.s.lbuf
|
||||
LOAD usr/src/drv/dhgr.drv.s
|
||||
ASM
|
||||
|
@ -8,6 +8,7 @@ HLINE lda CB.Cache+S.CB.M
|
||||
|
||||
cmp #S.CB.M.MONO
|
||||
bne HLINE.C16
|
||||
|
||||
HLINE.MONO >LDYA CB.Cache+S.CB.X1
|
||||
jsr LBUF.SetBounds1YA
|
||||
>LDYA CB.Cache+S.CB.X2
|
||||
@ -15,7 +16,9 @@ HLINE.MONO >LDYA CB.Cache+S.CB.X1
|
||||
|
||||
lda CB.Cache+S.CB.COLOR
|
||||
beq .1
|
||||
|
||||
lda #%01111111
|
||||
|
||||
.1 ldx LBUF.C1
|
||||
.2 sta LBUF.DATA,x
|
||||
cpx LBUF.C2
|
||||
@ -24,6 +27,7 @@ HLINE.MONO >LDYA CB.Cache+S.CB.X1
|
||||
|
||||
ldy CB.Cache+S.CB.Y1
|
||||
jmp LBUF.DrawAtY
|
||||
|
||||
HLINE.C16 lda CB.Cache+S.CB.X1
|
||||
and #%11111100
|
||||
tay
|
||||
@ -45,10 +49,13 @@ HLINE.C16 lda CB.Cache+S.CB.X1
|
||||
lda L.Color.Pixels+1
|
||||
adc #0
|
||||
sta ZPTmpWord+1
|
||||
|
||||
ldx LBUF.C1
|
||||
|
||||
.1 txa
|
||||
and #3 Compute index in Palette (Mod 4)
|
||||
tay
|
||||
|
||||
.2 lda (ZPTmpWord),y
|
||||
sta LBUF.DATA,x
|
||||
cpx LBUF.C2
|
||||
@ -94,6 +101,7 @@ VLINE.MONO.BLACK
|
||||
cpy CB.Cache+S.CB.Y2
|
||||
iny
|
||||
bcc .1
|
||||
|
||||
rts
|
||||
|
||||
VLINE.MONO.WHITE
|
||||
@ -136,6 +144,6 @@ VLINE.C16 lda CB.Cache+S.CB.X1
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/DRV/DHGR.DRV.S.LINE
|
||||
LOAD USR/SRC/DRV/DHGR.DRV.S
|
||||
SAVE usr/src/drv/dhgr.drv.s.line
|
||||
LOAD usr/src/drv/dhgr.drv.s
|
||||
ASM
|
||||
|
@ -32,6 +32,7 @@ SETPIXEL.MONO >LDYA CB.Cache+S.CB.X1
|
||||
lda CB.Cache+S.CB.OP
|
||||
* cmp #S.CB.OP.XOR
|
||||
beq SETPIXEL.MONO.XOR
|
||||
|
||||
lda CB.Cache+S.CB.COLOR
|
||||
bne SETPIXEL.MONO.WHITE
|
||||
SETPIXEL.MONO.BLACK
|
||||
@ -97,19 +98,21 @@ SETPIXEL.C16.YX lda DIV7.0,y PixelX MOD 7 (range 0->19)
|
||||
iny
|
||||
lda Color.Masks,x
|
||||
beq .11
|
||||
|
||||
and Color.Pixels,y apply color
|
||||
sta ZPTmpByte
|
||||
sta CLRPAGE2
|
||||
|
||||
lda (ZPBasePtr)
|
||||
and Color.NMasks,x reset existing pixel,
|
||||
ora ZPTmpByte
|
||||
sta (ZPBasePtr)
|
||||
|
||||
.11 inc ZPBasePtr
|
||||
inx
|
||||
iny
|
||||
lda Color.Masks,x
|
||||
beq .12
|
||||
|
||||
and Color.Pixels,y apply color
|
||||
sta ZPTmpByte
|
||||
sta SETPAGE2
|
||||
@ -117,10 +120,12 @@ SETPIXEL.C16.YX lda DIV7.0,y PixelX MOD 7 (range 0->19)
|
||||
and Color.NMasks,x reset existing pixel,
|
||||
ora ZPTmpByte
|
||||
sta (ZPBasePtr)
|
||||
|
||||
.12 inx
|
||||
iny
|
||||
lda Color.Masks,x
|
||||
beq .13
|
||||
|
||||
and Color.Pixels,y apply color
|
||||
sta ZPTmpByte
|
||||
sta CLRPAGE2
|
||||
@ -128,6 +133,7 @@ SETPIXEL.C16.YX lda DIV7.0,y PixelX MOD 7 (range 0->19)
|
||||
and Color.NMasks,x reset existing pixel,
|
||||
ora ZPTmpByte
|
||||
sta (ZPBasePtr)
|
||||
|
||||
.13 rts
|
||||
*--------------------------------------
|
||||
* GETPIXEL
|
||||
@ -135,6 +141,6 @@ SETPIXEL.C16.YX lda DIV7.0,y PixelX MOD 7 (range 0->19)
|
||||
GETPIXEL rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/DRV/DHGR.DRV.S.PIX
|
||||
LOAD USR/SRC/DRV/DHGR.DRV.S
|
||||
SAVE usr/src/drv/dhgr.drv.s.pix
|
||||
LOAD usr/src/drv/dhgr.drv.s
|
||||
ASM
|
||||
|
@ -23,6 +23,7 @@ FILLRECT jsr HLINE
|
||||
ply
|
||||
cpy CB.Cache+S.CB.Y2
|
||||
bne .2
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
* 4 : SrcX1
|
||||
@ -52,6 +53,6 @@ GETRECTBUFSIZE >LDYA CB.Cache+S.CB.X1
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/DRV/DHGR.DRV.S.BLT
|
||||
LOAD USR/SRC/DRV/DHGR.DRV.S
|
||||
SAVE usr/src/drv/dhgr.drv.s.blt
|
||||
LOAD usr/src/drv/dhgr.drv.s
|
||||
ASM
|
||||
|
@ -5,13 +5,13 @@ NEW
|
||||
.OR $2000
|
||||
.TF drv/dhgr.drv
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/MLI.I
|
||||
.INB INC/MLI.E.I
|
||||
.INB INC/IO.I
|
||||
.INB INC/GFX.I
|
||||
.INB INC/GFX.EVE.I
|
||||
.INB inc/macros.i
|
||||
.INB inc/a2osx.i
|
||||
.INB inc/mli.i
|
||||
.INB inc/mli.e.i
|
||||
.INB inc/io.i
|
||||
.INB inc/gfx.i
|
||||
.INB inc/gfx.eve.i
|
||||
*--------------------------------------
|
||||
ZPPtr .EQ ZPBIN
|
||||
*--------------------------------------
|
||||
@ -36,6 +36,13 @@ L.MSG.DETECT.80C .DA MSG.DETECT.80C
|
||||
L.DRV.CS.START .DA DRV.CS.START
|
||||
L.FD.DEV .DA FD.DEV
|
||||
L.FD.DEV.NAME .DA FD.DEV.NAME
|
||||
*--------------------------------------
|
||||
L.SHIFT .DA SHIFT.L1
|
||||
.DA SHIFT.L2
|
||||
.DA SHIFT.L3
|
||||
.DA SHIFT.L4
|
||||
.DA SHIFT.L5
|
||||
.DA SHIFT.L6
|
||||
.DA 0 End Of Reloc Table
|
||||
*--------------------------------------
|
||||
Dev.Detect >LDYA L.MSG.DETECT
|
||||
@ -91,6 +98,7 @@ Dev.Detect >LDYA L.MSG.DETECT
|
||||
>PUSHW L.FD.DEV.NAME
|
||||
>SYSCALL MKDEV
|
||||
bcs .9
|
||||
|
||||
php
|
||||
sei
|
||||
>LDYAI $4000
|
||||
@ -106,6 +114,53 @@ Dev.Detect >LDYA L.MSG.DETECT
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
DrvReloc lda FD.DEV+S.FD.DEV.DRVPTR
|
||||
sec
|
||||
sbc #DRV.CS.START
|
||||
sta ZPPtr
|
||||
|
||||
lda FD.DEV+S.FD.DEV.DRVPTR+1
|
||||
sbc /DRV.CS.START
|
||||
sta ZPPtr+1
|
||||
|
||||
ldx #0
|
||||
ldy #0
|
||||
|
||||
.1 lda L.SHIFT,x Get relocated LO BYTE
|
||||
clc
|
||||
adc ZPPtr
|
||||
sta Shift.L.LO,y
|
||||
|
||||
inx
|
||||
|
||||
lda L.SHIFT,x Get relocated HI BYTE
|
||||
adc ZPPtr+1
|
||||
sta Shift.L.HI,y
|
||||
|
||||
inx
|
||||
iny
|
||||
cpy #6
|
||||
bne .1
|
||||
|
||||
ldx #0 SHIFT.L1 = SHIFT.R6 !!!
|
||||
ldy #5
|
||||
|
||||
.2 lda L.SHIFT,x Get relocated LO BYTE
|
||||
clc
|
||||
adc ZPPtr
|
||||
sta Shift.R.LO,y
|
||||
inx
|
||||
|
||||
lda L.SHIFT,x Get relocated HI BYTE
|
||||
adc ZPPtr+1
|
||||
sta Shift.R.HI,y
|
||||
|
||||
inx
|
||||
dey
|
||||
bpl .2
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
ClrScr ldx #0
|
||||
txa lda #0
|
||||
.1 ldy BASEL,x
|
||||
@ -205,12 +260,7 @@ J.LBUF.DrawAtY .DA LBUF.DrawAtY.XOR
|
||||
.DA LBUF.DrawAtY.AND.XOR
|
||||
.DA LBUF.DrawAtY.AND.SET
|
||||
.DA LBUF.DrawAtY.AND.ORA
|
||||
L.SHIFT .DA SHIFT.L1
|
||||
.DA SHIFT.L2
|
||||
.DA SHIFT.L3
|
||||
.DA SHIFT.L4
|
||||
.DA SHIFT.L5
|
||||
.DA SHIFT.L6
|
||||
* .DA $ffff
|
||||
L.Color.Pixels .DA Color.Pixels
|
||||
.DA 0 end or relocation
|
||||
*--------------------------------------
|
||||
@ -249,6 +299,7 @@ STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
STATUS.9 lda #MLI.E.BADCTL
|
||||
sec
|
||||
rts
|
||||
@ -260,40 +311,17 @@ OPEN tax DEV.ID in A
|
||||
bne CLOSE.IOE
|
||||
|
||||
lda A2osX.SCRNDEVS+9
|
||||
beq .20
|
||||
beq .1
|
||||
|
||||
lda #E.OOH
|
||||
sec
|
||||
rts
|
||||
|
||||
.20 stx A2osX.SCRNDEVS+9
|
||||
.1 stx A2osX.SCRNDEVS+9
|
||||
stx DCB+S.DCB.GFX.DEVID
|
||||
|
||||
lda #S.DIB.S.OPENED
|
||||
tsb DIB+S.DIB.S
|
||||
ldx #0
|
||||
ldy #0
|
||||
.1 lda L.SHIFT,x Get relocated LO BYTE
|
||||
sta Shift.L.LO,y
|
||||
inx
|
||||
|
||||
lda L.SHIFT,x Get relocated HI BYTE
|
||||
sta Shift.L.HI,y
|
||||
inx
|
||||
iny
|
||||
cpy #6
|
||||
bne .1
|
||||
ldx #0 SHIFT.L1 = SHIFT.R6 !!!
|
||||
ldy #5
|
||||
.2 lda L.SHIFT,x Get relocated LO BYTE
|
||||
sta Shift.R.LO,y
|
||||
inx
|
||||
|
||||
lda L.SHIFT,x Get relocated HI BYTE
|
||||
sta Shift.R.HI,y
|
||||
inx
|
||||
dey
|
||||
bpl .2
|
||||
*--------------------------------------
|
||||
CONTROL lda DCB+S.DCB.GFX.DEVID NON STANDARD
|
||||
cmp A2osX.ASCREEN
|
||||
@ -339,13 +367,17 @@ WRITE >STYA ZPIOCTL NON STANDARD
|
||||
|
||||
.1 tax
|
||||
ldy CB.CmdLen,x
|
||||
|
||||
.2 lda (ZPIOCTL),y
|
||||
sta CB.Cache,y
|
||||
dey
|
||||
bpl .2
|
||||
|
||||
.3 jsr .10
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.10 jmp (J.Cmds,x)
|
||||
*--------------------------------------
|
||||
* IN:
|
||||
@ -357,8 +389,10 @@ WRITE >STYA ZPIOCTL NON STANDARD
|
||||
*--------------------------------------
|
||||
DIVMOD7YA dec
|
||||
bmi .2
|
||||
|
||||
clc
|
||||
beq .1
|
||||
|
||||
lda DIV7.512,y
|
||||
adc #$49
|
||||
ldx MOD7.512,y
|
||||
@ -368,6 +402,7 @@ DIVMOD7YA dec
|
||||
adc #$24
|
||||
ldx MOD7.256,y
|
||||
rts
|
||||
|
||||
.2 lda DIV7.0,y
|
||||
ldx MOD7.0,y
|
||||
rts
|
||||
@ -385,6 +420,7 @@ YAMultX stx ZPTmpByte
|
||||
ldy #0 Result LO
|
||||
tya Result HI
|
||||
bra .3
|
||||
|
||||
.1 pha
|
||||
tya
|
||||
clc
|
||||
@ -392,22 +428,25 @@ YAMultX stx ZPTmpByte
|
||||
tay
|
||||
pla
|
||||
adc ZPTmpWord+1
|
||||
|
||||
.2 asl ZPTmpWord
|
||||
rol ZPTmpWord+1
|
||||
|
||||
.3 lsr ZPTmpByte
|
||||
bcs .1
|
||||
|
||||
bne .2
|
||||
rts
|
||||
*--------------------------------------
|
||||
.INB USR/SRC/DRV/DHGR.DRV.S.BLT
|
||||
.INB USR/SRC/DRV/DHGR.DRV.S.LBUF
|
||||
.INB USR/SRC/DRV/DHGR.DRV.S.LINE
|
||||
.INB USR/SRC/DRV/DHGR.DRV.S.PIX
|
||||
.INB USR/SRC/DRV/DHGR.DRV.S.RECT
|
||||
.INB usr/src/drv/dhgr.drv.s.blt
|
||||
.INB usr/src/drv/dhgr.drv.s.lbuf
|
||||
.INB usr/src/drv/dhgr.drv.s.line
|
||||
.INB usr/src/drv/dhgr.drv.s.pix
|
||||
.INB usr/src/drv/dhgr.drv.s.rect
|
||||
*--------------------------------------
|
||||
DRV.CS.END
|
||||
*--------------------------------------
|
||||
.INB USR/SRC/DRV/DHGR.DRV.G
|
||||
.INB usr/src/drv/dhgr.drv.g
|
||||
*--------------------------------------
|
||||
CONTROL.80C .DA #SETIOUDIS
|
||||
.DA #CLRTEXT
|
||||
@ -424,12 +463,14 @@ CONTROL.80C .DA #SETIOUDIS
|
||||
.DA #SETAN3
|
||||
|
||||
.DA #0
|
||||
|
||||
CONTROL.EVE .DA #SETIOUDIS
|
||||
.DA #CLRTEXT
|
||||
.DA #SETHIRES
|
||||
.DA #HR1.OFF
|
||||
.DA #HR2.ON
|
||||
.DA #HR3.ON
|
||||
|
||||
.DA #0
|
||||
*--------------------------------------
|
||||
Shift.L.LO .BS 6
|
||||
@ -472,5 +513,5 @@ DRV.CS.SIZE .EQ DRV.CS.END-DRV.CS.START
|
||||
DRV.SIZE .EQ DRV.END-DRV.CS.START
|
||||
.LIST OFF
|
||||
MAN
|
||||
SAVE USR/SRC/DRV/DHGR.DRV.S
|
||||
SAVE usr/src/drv/dhgr.drv.s
|
||||
ASM
|
||||
|
@ -486,26 +486,26 @@ READ php
|
||||
sta (ZPIOCTL),y
|
||||
|
||||
.15 lda #$ff SELF MODIFIED
|
||||
ldy #S.IP.PROTOCOL
|
||||
sta (ZPBufPtr),y
|
||||
* ldy #S.IP.PROTOCOL
|
||||
* sta (ZPBufPtr),y
|
||||
|
||||
ldx #3
|
||||
ldy #S.IP.SRC+3
|
||||
* ldx #3
|
||||
* ldy #S.IP.SRC+3
|
||||
|
||||
.12 lda RX.IP,x
|
||||
sta (ZPBufPtr),y
|
||||
dey
|
||||
dex
|
||||
bpl .12
|
||||
*.12 lda RX.IP,x
|
||||
* sta (ZPBufPtr),y
|
||||
* dey
|
||||
* dex
|
||||
* bpl .12
|
||||
|
||||
ldx #3
|
||||
ldy #S.IP.DST+3
|
||||
* ldx #3
|
||||
* ldy #S.IP.DST+3
|
||||
|
||||
.13 lda DCB+S.DCB.NIC.IP,x
|
||||
sta (ZPBufPtr),y
|
||||
dey
|
||||
dex
|
||||
bpl .13
|
||||
*.13 lda DCB+S.DCB.NIC.IP,x
|
||||
* sta (ZPBufPtr),y
|
||||
* dey
|
||||
* dex
|
||||
* bpl .13
|
||||
|
||||
ldy #S.IP
|
||||
|
||||
|
@ -354,7 +354,7 @@ BB.Seek lda BB.HdrTrk get track we're on
|
||||
.5 lda IO.D2.Ph0On,x
|
||||
ply
|
||||
|
||||
lda #164
|
||||
lda #184
|
||||
jsr BB.Wait100usecA
|
||||
bra .1
|
||||
|
||||
|
@ -26,21 +26,12 @@ D2Recalibrate >PULLB DrvSlt
|
||||
bcs .9
|
||||
|
||||
stz MoveTo
|
||||
lda #252
|
||||
lda #162
|
||||
sta MoveFrom
|
||||
|
||||
jsr D2MoveHead.1
|
||||
|
||||
* lda #0
|
||||
* jsr D2.PhaseOn
|
||||
|
||||
* lda #0 wait 25.6 ms
|
||||
* jsr D2.Wait100usecA
|
||||
* lda #0
|
||||
* jsr D2.PhaseOff
|
||||
|
||||
lda #0 wait 25.6 ms
|
||||
jsr D2.Wait100usecA
|
||||
jsr D2.Wait25600usec
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
@ -63,7 +54,7 @@ D2MoveHead.1 ldy #0
|
||||
sbc MoveFrom
|
||||
beq .8
|
||||
|
||||
bcc .3
|
||||
bcc .2
|
||||
|
||||
* Current < Target, must move in
|
||||
|
||||
@ -78,42 +69,45 @@ D2MoveHead.1 ldy #0
|
||||
|
||||
* Current > Target, must move out
|
||||
|
||||
.3 cmp #$FF
|
||||
.2 cmp #$FF
|
||||
beq .5 one QT remaining
|
||||
|
||||
lda MoveFrom
|
||||
bit #1 from QT1 or QT3
|
||||
bne .30
|
||||
bne .3
|
||||
|
||||
dec
|
||||
.30 dec
|
||||
.3 dec
|
||||
|
||||
.4 sta MoveFrom
|
||||
jsr D2.PhaseOn
|
||||
|
||||
lda #164
|
||||
lda #194
|
||||
jsr D2.Wait100usecA
|
||||
bra .1
|
||||
|
||||
.5 lda MoveTo
|
||||
and #6
|
||||
ora Slotn0
|
||||
tax
|
||||
inc
|
||||
inc
|
||||
and #$F7
|
||||
tay
|
||||
lda IO.D2.Ph0On,x
|
||||
lda IO.D2.Ph0On,y
|
||||
|
||||
phx
|
||||
* lda #164
|
||||
* jsr D2.Wait100usecA
|
||||
.5 bcs .6
|
||||
|
||||
lda #0 wait 25.6 ms
|
||||
jsr D2.Wait100usecA
|
||||
plx
|
||||
tya
|
||||
inc
|
||||
inc
|
||||
bra .7
|
||||
|
||||
.6 tya
|
||||
clc
|
||||
adc #6
|
||||
|
||||
.7 and #$f6
|
||||
tax
|
||||
lda IO.D2.Ph0On,x
|
||||
|
||||
phx
|
||||
lda #194
|
||||
jsr D2.Wait100usecA
|
||||
|
||||
jsr D2.Wait25600usec
|
||||
|
||||
plx
|
||||
lda IO.D2.Ph0Off,x
|
||||
lda IO.D2.Ph0Off,y
|
||||
rts
|
||||
@ -121,8 +115,7 @@ D2MoveHead.1 ldy #0
|
||||
.8 tya
|
||||
beq D2.PhaseOn.RTS
|
||||
|
||||
lda #0 wait 25.6 ms
|
||||
jsr D2.Wait100usecA
|
||||
jsr D2.Wait25600usec
|
||||
|
||||
lda IO.D2.Ph0Off,y
|
||||
rts
|
||||
@ -140,6 +133,8 @@ D2.PhaseOn and #6
|
||||
ply
|
||||
D2.PhaseOn.RTS rts
|
||||
*--------------------------------------
|
||||
D2.Wait25600usec
|
||||
lda #0
|
||||
D2.Wait100usecA sec (2)
|
||||
|
||||
.1 ldx #18 (2)
|
||||
|
@ -185,7 +185,7 @@ L53A4 dec XRW.RetryCnt one less chance.
|
||||
pha save track
|
||||
|
||||
clc
|
||||
adc #12 pretend track is 12 > curtrk
|
||||
adc #8 pretend track is 12 > curtrk
|
||||
|
||||
ldy #64
|
||||
sty XRW.RetryCnt reset retries to 64 max.
|
||||
@ -198,6 +198,29 @@ L53BE ldy XRW.AddrField.T
|
||||
cpy XRW.CurrentTrack
|
||||
beq L53D5 ok
|
||||
|
||||
tya
|
||||
pha
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
ora #$30
|
||||
sta $724
|
||||
pla
|
||||
ora #$30
|
||||
sta $725
|
||||
lda XRW.CurrentTrack
|
||||
pha
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
ora #$B0
|
||||
sta $726
|
||||
pla
|
||||
ora #$B0
|
||||
sta $727
|
||||
|
||||
* recalibrating from this track
|
||||
|
||||
lda XRW.CurrentTrack preserve destination track
|
||||
@ -211,7 +234,7 @@ L53CC ldy XRW.UnitIndex get index to drive #
|
||||
jsr XRW.Seek
|
||||
bra L539D
|
||||
|
||||
* drive is on right track, check volume mismatch
|
||||
* drive is on right track, check sector
|
||||
|
||||
L53D5 lda XRW.AddrField.S is this the right sector ?
|
||||
cmp XRW.ReqSector
|
||||
@ -363,6 +386,7 @@ L595F sta pch
|
||||
lsr or odd address. shift even/odd -> carry.
|
||||
lda (buf),y if even, then leave intact.
|
||||
bcc L596D branch if odd.
|
||||
|
||||
iny if even, then pre-xor with byte 1.
|
||||
eor (buf),y
|
||||
L596D sta A1L save result for write routine.
|
||||
@ -755,12 +779,12 @@ XRW.Seek ldx XRW.UnitIndex
|
||||
|
||||
ldy #0
|
||||
|
||||
.2 lda XRW.TargetQTrack
|
||||
.1 lda XRW.TargetQTrack
|
||||
sec
|
||||
sbc XRW.CurrentQTrack
|
||||
beq .8
|
||||
|
||||
bcc .3
|
||||
bcc .2
|
||||
|
||||
* Current < Target, must move in
|
||||
|
||||
@ -775,40 +799,46 @@ XRW.Seek ldx XRW.UnitIndex
|
||||
|
||||
* Current > Target, must move out
|
||||
|
||||
.3 cmp #$FF
|
||||
.2 cmp #$FF
|
||||
beq .5 one QT remaining
|
||||
|
||||
lda XRW.CurrentQTrack
|
||||
bit #1 from QT1 or QT3
|
||||
bne .30
|
||||
bne .3
|
||||
|
||||
dec
|
||||
.30 dec
|
||||
.3 dec
|
||||
|
||||
.4 sta XRW.CurrentQTrack
|
||||
jsr XRW.PhaseOn
|
||||
|
||||
lda #164
|
||||
lda #194
|
||||
jsr XRW.Wait100usecA
|
||||
bra .2
|
||||
bra .1
|
||||
|
||||
.5 lda XRW.TargetQTrack
|
||||
and #6
|
||||
ora A2L
|
||||
tax
|
||||
.5 bcs .6
|
||||
|
||||
tya
|
||||
inc
|
||||
inc
|
||||
and #$F7
|
||||
tay
|
||||
lda IO.D2.Ph0On,x
|
||||
lda IO.D2.Ph0On,y
|
||||
bra .7
|
||||
|
||||
phx
|
||||
.6 tya
|
||||
clc
|
||||
adc #6
|
||||
|
||||
.7 and #$f6
|
||||
tax
|
||||
lda IO.D2.Ph0On,x
|
||||
|
||||
phx
|
||||
lda #194
|
||||
jsr XRW.Wait100usecA
|
||||
|
||||
lda #0 wait 25.6 ms
|
||||
jsr XRW.Wait100usecA
|
||||
|
||||
plx
|
||||
|
||||
lda IO.D2.Ph0Off,x
|
||||
lda IO.D2.Ph0Off,y
|
||||
rts
|
||||
|
@ -75,6 +75,7 @@ L.MSG.INITOK .DA MSG.INITOK
|
||||
L.MSG.SKTERR .DA MSG.SKTERR
|
||||
L.MSG.INCOMING .DA MSG.INCOMING
|
||||
L.MSG.REQ .DA MSG.REQ
|
||||
L.MSG.FILE .DA MSG.FILE
|
||||
L.MSG.SKTCLOSE .DA MSG.SKTCLOSE
|
||||
L.KEYWORDS.REQ .DA KEYWORDS.REQ
|
||||
J.KEYWORDS.REQ .DA CS.RUN.REQ.GET
|
||||
@ -361,7 +362,7 @@ CS.RUN.CLIENT >LDYAI 1024
|
||||
|
||||
tay
|
||||
beq .1
|
||||
jmp .90
|
||||
jmp .99
|
||||
|
||||
.2 jsr CS.RUN.REQ.GetReq
|
||||
|
||||
@ -377,36 +378,39 @@ CS.RUN.CLIENT >LDYAI 1024
|
||||
|
||||
jsr CS.RUN.REQ.JMP
|
||||
bcc .3
|
||||
bcs .9
|
||||
bcs .98
|
||||
|
||||
.4 >LDA.G REQ.FullPath
|
||||
.4 >LDA.G REQ.hReq
|
||||
>SYSCALL FreeMem
|
||||
|
||||
>STZ.G REQ.hReq
|
||||
|
||||
>LDA.G REQ.FullPath
|
||||
beq .9
|
||||
|
||||
jsr CS.RUN.OpenFile
|
||||
bcs .9
|
||||
|
||||
jsr CS.RUN.SendFile
|
||||
bcs .5
|
||||
bcs .99
|
||||
|
||||
bcc .6
|
||||
bra .8
|
||||
|
||||
.9 >PUSHWI HTTP.404.len
|
||||
>PUSHW L.HTTP.404
|
||||
>LDA.G CLN.hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
|
||||
|
||||
.5 >STZ.G REQ.KeepAlive
|
||||
|
||||
.6 >LDA.G REQ.hReq
|
||||
beq .8
|
||||
.8 >LDA.G REQ.KeepAlive
|
||||
beq .99
|
||||
jmp .10
|
||||
|
||||
.98 >LDA.G REQ.hReq
|
||||
beq .99
|
||||
|
||||
>SYSCALL FreeMem
|
||||
|
||||
.8 >LDA.G REQ.KeepAlive
|
||||
beq .90
|
||||
jmp .10
|
||||
|
||||
.90 >LDA.G REP.hBuf
|
||||
.99 >LDA.G REP.hBuf
|
||||
>SYSCALL freemem
|
||||
|
||||
>PUSHW L.MSG.SKTCLOSE
|
||||
@ -493,9 +497,12 @@ CS.RUN.REQ.GetLine
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.OpenFile >LEA.G REQ.FullPath
|
||||
>SYSCALL puts
|
||||
|
||||
CS.RUN.OpenFile >PUSHW L.MSG.FILE
|
||||
>PUSHB.G CLN.hSocket
|
||||
>PUSHEA.G REQ.FullPath
|
||||
>PUSHBI 3
|
||||
>SYSCALL printf
|
||||
|
||||
>PUSHEA.G REQ.FullPath
|
||||
>PUSHBI O.RDONLY
|
||||
>PUSHBI 0 type
|
||||
@ -743,6 +750,7 @@ MSG.INITOK .AZ "HTTPD:Listening on port %D, root dir: %s.\r\n"
|
||||
MSG.SKTERR .AZ "HTTPD:Skt Bind Error."
|
||||
MSG.INCOMING .AZ "HTTPD:Skt $%h Opened From %d.%d.%d.%d\r\n"
|
||||
MSG.REQ .AZ "HTTPD:Req $%h From Skt $%h\r\n"
|
||||
MSG.FILE .AZ "HTTPD:Skt $%h File %s\r\n"
|
||||
MSG.SKTCLOSE .AZ "HTTPD:Skt $%h Close\r\n"
|
||||
*--------------------------------------
|
||||
KEYWORDS.REQ .AS "GET "
|
||||
|
@ -6,14 +6,15 @@ NEW
|
||||
.TF sbin/networkd
|
||||
*--------------------------------------
|
||||
LIB.MAX .EQ 4
|
||||
DBG .EQ 1
|
||||
*--------------------------------------
|
||||
.INB INC/MACROS.I
|
||||
.INB INC/A2OSX.I
|
||||
.INB INC/MLI.I
|
||||
.INB INC/MLI.E.I
|
||||
.INB INC/NIC.I
|
||||
.INB INC/ETH.I
|
||||
.INB INC/LIB.NET.I
|
||||
.INB inc/macros.i
|
||||
.INB inc/a2osx.i
|
||||
.INB inc/mli.i
|
||||
.INB inc/mli.e.i
|
||||
.INB inc/nic.i
|
||||
.INB inc/eth.i
|
||||
.INB inc/lib.net.i
|
||||
*--------------------------------------
|
||||
* Zero Page Segment, up to 32 bytes
|
||||
*--------------------------------------
|
||||
@ -37,7 +38,11 @@ CS.START cld
|
||||
.DA #0
|
||||
.DA CS.END-CS.START Code Size (without Constants)
|
||||
.DA DS.END-DS.START Data SegmentSize
|
||||
.DO DBG=1
|
||||
.DA #128 Stack Size
|
||||
.ELSE
|
||||
.DA #64 Stack Size
|
||||
.FIN
|
||||
.DA #ZS.END-ZS.START Zero Page Size
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
@ -56,6 +61,9 @@ L.DEVNAME .DA DEVNAME
|
||||
L.IOCTL .DA IOCTL
|
||||
L.DCB.NIC .DA DCB.NIC
|
||||
L.ETCNETWORK .DA ETCNETWORK
|
||||
.DO DBG=1
|
||||
L.MSG.DBG .DA MSG.DBG
|
||||
.FIN
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT lda DevID
|
||||
@ -235,6 +243,23 @@ CS.RUN >PUSHB DevID
|
||||
bcs .8 No Frame
|
||||
|
||||
sta hFrameIn
|
||||
|
||||
.DO DBG=1
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA pBuf
|
||||
|
||||
>PUSHW L.MSG.DBG
|
||||
|
||||
ldy #0
|
||||
|
||||
.22 >PUSHB (pBuf),y
|
||||
iny
|
||||
cpy #36
|
||||
bne .22
|
||||
|
||||
>PUSHBI 36
|
||||
>SYSCALL printf
|
||||
.FIN
|
||||
|
||||
ldx #0
|
||||
|
||||
@ -309,6 +334,10 @@ MSG.DEV.OK .AZ "NETWORKD:Bound To Device : %s\r\n"
|
||||
MSG.LIB .AZ "NETWORKD:Loading %s ...\r\n"
|
||||
MSG.EXEC .AZ "NETWORKD:Running %s ...\r\n"
|
||||
ETCNETWORK .AZ "${BOOT}etc/network"
|
||||
.DO DBG=1
|
||||
MSG.DBG .AS "FRM %h%h%h%h%h%h.%h%h%h%h%h%h.%h%h\r\n"
|
||||
.AZ " %h%h.%h%h%h%h.%h%h%h%h.%h%h%h%h.%h%h%h%h.%h%h%h%h\r\n"
|
||||
.FIN
|
||||
*--------------------------------------
|
||||
DevID .BS 1
|
||||
LibCnt .BS 1
|
||||
@ -323,5 +352,5 @@ DS.START
|
||||
DS.END .ED
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SBIN/NETWORKD.S
|
||||
SAVE usr/src/sbin/networkd.s
|
||||
ASM
|
||||
|
@ -84,8 +84,19 @@ PS.Exec jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
|
||||
* ## RETURN VALUE
|
||||
* A = Child PSID
|
||||
*\--------------------------------------
|
||||
K.Fork clc
|
||||
rts
|
||||
K.Fork jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
|
||||
bcs .9
|
||||
sta .8+1
|
||||
|
||||
ldy #S.PS.S
|
||||
lda #S.PS.S.RUN
|
||||
sta (PS.NewPSPtr),y
|
||||
|
||||
|
||||
|
||||
.8 lda #$ff SELF MODIFIED
|
||||
* clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* PS.CreateChild
|
||||
* in :
|
||||
@ -94,22 +105,29 @@ K.Fork clc
|
||||
*--------------------------------------
|
||||
PS.CreateChild ldx #0
|
||||
bra .2 Skip PS0
|
||||
|
||||
.1 lda PS.Table.PID,x
|
||||
beq .4 Found an empty slot
|
||||
|
||||
.2 inx
|
||||
cpx CORE.PSCount
|
||||
bne .1
|
||||
|
||||
cpx #K.PS.MAX
|
||||
bne .3
|
||||
|
||||
lda #E.OOH
|
||||
sec
|
||||
rts
|
||||
|
||||
.99 plx
|
||||
rts
|
||||
|
||||
.3 inc CORE.PSCount
|
||||
|
||||
.4 inc CORE.LastPSID Get a PSID not already running
|
||||
beq .4 not = 0
|
||||
|
||||
lda CORE.LastPSID
|
||||
jsr CORE.GetPS Y=PS Index, X,A unmodified
|
||||
bcc .4 running...loop
|
||||
@ -120,6 +138,7 @@ PS.CreateChild ldx #0
|
||||
>LDYAI S.PS
|
||||
jsr K.GetMem0 Blank Everything in this S.PS
|
||||
bcs .99
|
||||
|
||||
>STYA PS.NewPSPtr
|
||||
txa
|
||||
plx
|
||||
@ -136,10 +155,13 @@ PS.CreateChild ldx #0
|
||||
lda #S.PS.F.NOHUP
|
||||
bit PS.Flags
|
||||
beq .5
|
||||
|
||||
lda PS.Table.hPS Select PS0
|
||||
jsr K.GetMemPtr
|
||||
bra .6
|
||||
|
||||
.5 >LDYA pPs
|
||||
|
||||
.6 >STYA ZPPtr1
|
||||
ldy #S.PS.PID
|
||||
lda (ZPPtr1),y
|
||||
@ -152,6 +174,7 @@ PS.CreateChild ldx #0
|
||||
|
||||
jsr K.StrDup
|
||||
bcs .9
|
||||
|
||||
jsr Mem.SetOwner Set Ownership
|
||||
|
||||
txa
|
||||
@ -200,6 +223,7 @@ PS.CreateChild ldx #0
|
||||
lda CORE.LastPSID Exit with A=PSID
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 pha
|
||||
>PUSHBI 2
|
||||
lda CORE.LastPSID
|
||||
|
Loading…
x
Reference in New Issue
Block a user