mirror of
https://github.com/A2osX/A2osX.git
synced 2024-10-21 05:24:15 +00:00
Kernel 0.93+
This commit is contained in:
parent
a81b81a13c
commit
5d9d5ea789
Binary file not shown.
@ -1,6 +1,5 @@
|
|||||||
NEW
|
NEW
|
||||||
PREFIX
|
AUTO 3,1
|
||||||
AUTO 4,1
|
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Mask7BitsH .DA #%01111111 Useless
|
Mask7BitsH .DA #%01111111 Useless
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
NEW
|
NEW
|
||||||
PREFIX
|
AUTO 3,1
|
||||||
AUTO 4,1
|
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* BitBlt
|
* BitBlt
|
||||||
@ -24,8 +23,7 @@ BITBLT ldy CB.CACHE+S.CB.SrcPtr
|
|||||||
sta SETWRITEAUX
|
sta SETWRITEAUX
|
||||||
|
|
||||||
tya
|
tya
|
||||||
ldx #SYS.GetMemPtr
|
>SYSCALL2 GetMemPtr
|
||||||
jsr Kernel.JMP
|
|
||||||
|
|
||||||
jsr BITBLT.1
|
jsr BITBLT.1
|
||||||
|
|
||||||
@ -399,8 +397,6 @@ BLT.Get7BMBits1 lda (ZPBMDataPtr)
|
|||||||
inc ZPBMDataPtr+1
|
inc ZPBMDataPtr+1
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Kernel.JMP jmp (SYS.Kernel.JMP,x)
|
|
||||||
*--------------------------------------
|
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/DRV/DHGR.DRV.S.RECT
|
SAVE USR/SRC/DRV/DHGR.DRV.S.RECT
|
||||||
LOAD USR/SRC/DRV/DHGR.DRV.S
|
LOAD USR/SRC/DRV/DHGR.DRV.S
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
NEW
|
NEW
|
||||||
PREFIX
|
AUTO 3,1
|
||||||
AUTO 4,1
|
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LBUF.SetBounds1YA
|
LBUF.SetBounds1YA
|
||||||
@ -88,57 +87,8 @@ LBUF.DrawAtY lda BASEL,y setup line Base Ptr
|
|||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LBUF.DrawAtY.XOR
|
|
||||||
LBUF.DrawAtY.AND.XOR
|
|
||||||
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
|
|
||||||
eor (ZPBasePtr),y
|
|
||||||
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 LBUF.DATA,x
|
|
||||||
eor (ZPBasePtr),y
|
|
||||||
sta (ZPBasePtr),y
|
|
||||||
|
|
||||||
inx
|
|
||||||
cpx LBUF.C2
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
.2 ldy COL.BANK,x
|
|
||||||
sta $C000,y
|
|
||||||
ldy COL.OFS,x
|
|
||||||
|
|
||||||
lda (ZPBasePtr),y Get C2
|
|
||||||
and LBUF.C2.MASK clear ONLY bits ending at X2 mod 7
|
|
||||||
sta ZPTmpByte
|
|
||||||
lda LBUF.DATA,x get DATA bits
|
|
||||||
and LBUF.C2.DATA set ONLY bits ending at X2 mod 7
|
|
||||||
ora ZPTmpByte
|
|
||||||
eor (ZPBasePtr),y
|
|
||||||
sta (ZPBasePtr),y update screen
|
|
||||||
|
|
||||||
.8 rts
|
|
||||||
*--------------------------------------
|
|
||||||
LBUF.DrawAtY.SET
|
LBUF.DrawAtY.SET
|
||||||
LBUF.DrawAtY.AND.SET
|
LBUF.DrawAtY.AND.SET USELESS
|
||||||
ldx LBUF.C1 x C1->C2
|
ldx LBUF.C1 x C1->C2
|
||||||
|
|
||||||
ldy COL.BANK,x
|
ldy COL.BANK,x
|
||||||
@ -156,46 +106,21 @@ LBUF.DrawAtY.AND.SET
|
|||||||
|
|
||||||
inx
|
inx
|
||||||
cpx LBUF.C2
|
cpx LBUF.C2
|
||||||
beq .7 C1=C2, go setup C2
|
beq .2 C1=C2, go setup C2
|
||||||
bcs .8 C1+1 > C2, we are done...
|
bcs .8 C1+1 > C2, we are done...
|
||||||
|
|
||||||
phx
|
.1 ldy COL.BANK,x
|
||||||
|
|
||||||
ldy COL.BANK,x C1+1,3,5,7.....
|
|
||||||
sta $C000,y
|
sta $C000,y
|
||||||
ldy COL.OFS,x
|
ldy COL.OFS,x
|
||||||
|
|
||||||
.1 lda LBUF.DATA,x set all bytes between C1+1 & C2-1
|
lda LBUF.DATA,x set all bytes between C1+1 & C2-1
|
||||||
sta (ZPBasePtr),y
|
sta (ZPBasePtr),y
|
||||||
iny
|
|
||||||
|
|
||||||
inx
|
|
||||||
inx
|
inx
|
||||||
cpx LBUF.C2
|
cpx LBUF.C2
|
||||||
bcc .1
|
bcc .1
|
||||||
|
|
||||||
plx
|
.2 ldy COL.BANK,x
|
||||||
|
|
||||||
inx
|
|
||||||
cpx LBUF.C2
|
|
||||||
beq .7
|
|
||||||
|
|
||||||
ldy COL.BANK,x C1+2,4,6,8....
|
|
||||||
sta $C000,y
|
|
||||||
ldy COL.OFS,x
|
|
||||||
|
|
||||||
.2 lda LBUF.DATA,x set all bytes between C1+1 & C2-1
|
|
||||||
sta (ZPBasePtr),y
|
|
||||||
iny
|
|
||||||
|
|
||||||
inx
|
|
||||||
inx
|
|
||||||
cpx LBUF.C2
|
|
||||||
bcc .2
|
|
||||||
|
|
||||||
ldx LBUF.C2
|
|
||||||
|
|
||||||
.7 ldy COL.BANK,x
|
|
||||||
sta $C000,y
|
sta $C000,y
|
||||||
ldy COL.OFS,x
|
ldy COL.OFS,x
|
||||||
|
|
||||||
@ -206,11 +131,23 @@ LBUF.DrawAtY.AND.SET
|
|||||||
lda LBUF.DATA,x get DATA bits
|
lda LBUF.DATA,x get DATA bits
|
||||||
and LBUF.C2.DATA set ONLY bits ending at X2 mod 7
|
and LBUF.C2.DATA set ONLY bits ending at X2 mod 7
|
||||||
ora ZPTmpByte
|
ora ZPTmpByte
|
||||||
|
|
||||||
sta (ZPBasePtr),y update screen
|
sta (ZPBasePtr),y update screen
|
||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
LBUF.DrawAtY.XOR
|
||||||
|
LBUF.DrawAtY.AND.XOR UELESS
|
||||||
|
lda #$51 EOR (Indirect),Y
|
||||||
|
bra LBUF.DrawAtY.XXX
|
||||||
|
*--------------------------------------
|
||||||
LBUF.DrawAtY.ORA
|
LBUF.DrawAtY.ORA
|
||||||
|
lda #$11 ORA (Indirect),Y
|
||||||
|
LBUF.DrawAtY.XXX
|
||||||
|
sta .10+1
|
||||||
|
sta .20+1
|
||||||
|
sta .30+1
|
||||||
|
|
||||||
ldx LBUF.C1 x C1->C2
|
ldx LBUF.C1 x C1->C2
|
||||||
|
|
||||||
ldy COL.BANK,x
|
ldy COL.BANK,x
|
||||||
@ -224,7 +161,7 @@ LBUF.DrawAtY.ORA
|
|||||||
lda LBUF.DATA,x get DATA bits
|
lda LBUF.DATA,x get DATA bits
|
||||||
and LBUF.C1.DATA set ONLY bits starting at X1 mod 7
|
and LBUF.C1.DATA set ONLY bits starting at X1 mod 7
|
||||||
ora ZPTmpByte
|
ora ZPTmpByte
|
||||||
ora (ZPBasePtr),y
|
.10 ora (ZPBasePtr),y
|
||||||
sta (ZPBasePtr),y update screen
|
sta (ZPBasePtr),y update screen
|
||||||
|
|
||||||
inx
|
inx
|
||||||
@ -237,7 +174,7 @@ LBUF.DrawAtY.ORA
|
|||||||
ldy COL.OFS,x
|
ldy COL.OFS,x
|
||||||
|
|
||||||
lda LBUF.DATA,x set all bytes between C1+1 & C2-1
|
lda LBUF.DATA,x set all bytes between C1+1 & C2-1
|
||||||
ora (ZPBasePtr),y
|
.20 ora (ZPBasePtr),y
|
||||||
sta (ZPBasePtr),y
|
sta (ZPBasePtr),y
|
||||||
|
|
||||||
inx
|
inx
|
||||||
@ -248,14 +185,14 @@ LBUF.DrawAtY.ORA
|
|||||||
sta $C000,y
|
sta $C000,y
|
||||||
ldy COL.OFS,x
|
ldy COL.OFS,x
|
||||||
|
|
||||||
lda LBUF.MASK,x get MASK bits
|
lda (ZPBasePtr),y Get C2
|
||||||
ora LBUF.C2.MASK
|
and LBUF.C2.MASK clear ONLY bits ending at X2 mod 7
|
||||||
and (ZPBasePtr),y
|
|
||||||
sta ZPTmpByte
|
sta ZPTmpByte
|
||||||
|
|
||||||
lda LBUF.DATA,x get DATA bits
|
lda LBUF.DATA,x get DATA bits
|
||||||
and LBUF.C2.DATA set ONLY bits ending at X2 mod 7
|
and LBUF.C2.DATA set ONLY bits ending at X2 mod 7
|
||||||
ora ZPTmpByte
|
ora ZPTmpByte
|
||||||
|
.30 ora (ZPBasePtr),y
|
||||||
sta (ZPBasePtr),y update screen
|
sta (ZPBasePtr),y update screen
|
||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
NEW
|
NEW
|
||||||
PREFIX
|
AUTO 3,1
|
||||||
AUTO 4,1
|
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* HLINE X1,X2 at Y1 (XOR,SET,ORA)
|
* HLINE X1,X2 at Y1 (XOR,SET,ORA)
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
NEW
|
NEW
|
||||||
PREFIX
|
AUTO 3,1
|
||||||
AUTO 4,1
|
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* SETPIXEL
|
* SETPIXEL
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
NEW
|
NEW
|
||||||
PREFIX
|
AUTO 3,1
|
||||||
AUTO 4,1
|
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* FILLRECT
|
* FILLRECT
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
NEW
|
NEW
|
||||||
PREFIX
|
AUTO 3,1
|
||||||
AUTO 4,1
|
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
|
@ -47,7 +47,6 @@ FIO.bTXT .BS 1
|
|||||||
FIO.hFILE .BS 1
|
FIO.hFILE .BS 1
|
||||||
FIO.MemPtr .BS 2
|
FIO.MemPtr .BS 2
|
||||||
FIO.hMem .BS 1
|
FIO.hMem .BS 1
|
||||||
FIO.BytesRead .BS 2
|
|
||||||
.ED
|
.ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.LoadTxtFile sec
|
K.LoadTxtFile sec
|
||||||
@ -121,7 +120,8 @@ K.LoadFile clc
|
|||||||
sec
|
sec
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
.2 >STYA FIO.BytesRead
|
.2 sty .7+1
|
||||||
|
sta .8+1
|
||||||
|
|
||||||
bit FIO.bTXT
|
bit FIO.bTXT
|
||||||
bpl .5
|
bpl .5
|
||||||
@ -142,7 +142,8 @@ K.LoadFile clc
|
|||||||
|
|
||||||
.5 jsr .99 close file
|
.5 jsr .99 close file
|
||||||
|
|
||||||
>LDYA FIO.BytesRead
|
.7 ldy #$ff SELFMODIFIED
|
||||||
|
.8 lda #$ff SELFMODIFIED
|
||||||
ldx FIO.hMem
|
ldx FIO.hMem
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
@ -64,8 +64,7 @@ IO.Open.I ldx #5 /DEV/
|
|||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
lda Nod.Table.hFD-2,x return hFD
|
lda Nod.Table.hFD-2,x return hFD
|
||||||
sta IO.hFD
|
jsr IO.GetPFD
|
||||||
jsr K.GetMemPtr
|
|
||||||
|
|
||||||
bra .71
|
bra .71
|
||||||
|
|
||||||
@ -78,9 +77,9 @@ IO.Open.I ldx #5 /DEV/
|
|||||||
rts no OF found
|
rts no OF found
|
||||||
|
|
||||||
.7 stx IO.hDev
|
.7 stx IO.hDev
|
||||||
.71 >STYA pFD
|
>STYA pFD
|
||||||
|
|
||||||
lda (pFD) #S.FD.T
|
.71 lda (pFD) #S.FD.T
|
||||||
tax
|
tax
|
||||||
jmp (.8,x)
|
jmp (.8,x)
|
||||||
|
|
||||||
@ -206,9 +205,7 @@ IO.MLI.CREATE sta K.MLI.PARAMS+7 Storage Type
|
|||||||
* `lda fd`
|
* `lda fd`
|
||||||
* `>SYSCALL close`
|
* `>SYSCALL close`
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.Close sta IO.hFD
|
K.Close jsr IO.GetPFD
|
||||||
jsr K.GetMemPtr
|
|
||||||
>STYA pFD
|
|
||||||
|
|
||||||
IO.Close.I lda (pFD) #S.FD.T
|
IO.Close.I lda (pFD) #S.FD.T
|
||||||
tax
|
tax
|
||||||
@ -320,9 +317,7 @@ IO.CLOSE.NOD ldx #2
|
|||||||
* CC: Y,A = bytes read
|
* CC: Y,A = bytes read
|
||||||
* CS: A = EC
|
* CS: A = EC
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.Read sta IO.hFD
|
K.Read jsr IO.GetPFD
|
||||||
jsr K.GetMemPtr
|
|
||||||
>STYA pFD
|
|
||||||
|
|
||||||
IO.Read.I lda (pFD) #S.FD.T
|
IO.Read.I lda (pFD) #S.FD.T
|
||||||
tax
|
tax
|
||||||
@ -350,9 +345,7 @@ IO.Read.I lda (pFD) #S.FD.T
|
|||||||
* CC: Y,A = bytes written
|
* CC: Y,A = bytes written
|
||||||
* CS: A = EC
|
* CS: A = EC
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.Write sta IO.hFD
|
K.Write jsr IO.GetPFD
|
||||||
jsr K.GetMemPtr
|
|
||||||
>STYA pFD
|
|
||||||
|
|
||||||
IO.Write.I lda (pFD) #S.FD.T
|
IO.Write.I lda (pFD) #S.FD.T
|
||||||
tax
|
tax
|
||||||
@ -825,6 +818,11 @@ IO.EOF.FALSE lda #0
|
|||||||
* clc
|
* clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
IO.GetPFD sta IO.hFD
|
||||||
|
jsr K.GetMemPtr
|
||||||
|
>STYA pFD
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
* X = 0 > REG
|
* X = 0 > REG
|
||||||
* X = 1 > DIR
|
* X = 1 > DIR
|
||||||
* X = 2 > PIPE
|
* X = 2 > PIPE
|
||||||
|
@ -48,7 +48,7 @@ K.GetMemStat >STYA ZPPtr1
|
|||||||
* only 777-555
|
* only 777-555
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.ChMod jsr PFT.CheckPathYA
|
K.ChMod jsr PFT.CheckPathYA
|
||||||
bcs .99
|
bcs K.FStat.9
|
||||||
|
|
||||||
>PULLW K.S.STAT+S.STAT.MODE
|
>PULLW K.S.STAT+S.STAT.MODE
|
||||||
|
|
||||||
@ -103,7 +103,7 @@ K.ChMod jsr PFT.CheckPathYA
|
|||||||
sec
|
sec
|
||||||
.90 rts
|
.90 rts
|
||||||
|
|
||||||
.99 >RET 2
|
K.FStat.9 >RET 2 discard statbuf
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* # FStat
|
* # FStat
|
||||||
* Return information about a hFILE
|
* Return information about a hFILE
|
||||||
@ -152,8 +152,6 @@ K.FStat jsr PFT.CheckNodeA
|
|||||||
|
|
||||||
* clc
|
* clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
K.FStat.9 >RET 2 discard statbuf
|
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # Stat
|
* # Stat
|
||||||
* Return information about a file
|
* Return information about a file
|
||||||
|
@ -108,14 +108,14 @@ K.PutS >STYA ZPPtr2
|
|||||||
ldy #S.PS.hStdOut
|
ldy #S.PS.hStdOut
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
jsr K.FPutS
|
jsr K.FPutS
|
||||||
bcc .99
|
bcc K.PutS.RTS
|
||||||
tay
|
tay
|
||||||
bne .99 0 = BLOCKING
|
bne K.PutS.RTS 0 = BLOCKING
|
||||||
|
|
||||||
inc pStack pop K.IOBuf
|
|
||||||
inc pStack
|
|
||||||
* sec
|
* sec
|
||||||
.99 rts
|
|
||||||
|
K.PutS.RET2 >POP 2 pop K.IOBuf
|
||||||
|
K.PutS.RTS rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # fputs (BLOCKING)
|
* # fputs (BLOCKING)
|
||||||
* Write Str to hFILE
|
* Write Str to hFILE
|
||||||
@ -130,7 +130,7 @@ K.PutS >STYA ZPPtr2
|
|||||||
* CC = success
|
* CC = success
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.FPutS jsr PFT.CheckNodeA set IO.hFD
|
K.FPutS jsr PFT.CheckNodeA set IO.hFD
|
||||||
bcs .9
|
bcs K.PutS.RET2
|
||||||
|
|
||||||
lda (pStack)
|
lda (pStack)
|
||||||
sta ZPPtr2 Get String
|
sta ZPPtr2 Get String
|
||||||
@ -159,15 +159,13 @@ K.FPutS jsr PFT.CheckNodeA set IO.hFD
|
|||||||
>PUSHW ZPPtr2
|
>PUSHW ZPPtr2
|
||||||
|
|
||||||
jsr IO.Write.I
|
jsr IO.Write.I
|
||||||
bcc .9
|
bcc K.PutS.RET2
|
||||||
tay
|
tay
|
||||||
bpl .9 IO Erorr
|
bpl K.PutS.RET2 IO Erorr
|
||||||
|
|
||||||
inc 0 = BLOCKING
|
inc 0 = BLOCKING
|
||||||
|
* sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 >RET 2 pop str
|
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # PrintF (BLOCKING)
|
* # PrintF (BLOCKING)
|
||||||
* # FPrintF (BLOCKING)
|
* # FPrintF (BLOCKING)
|
||||||
@ -1037,8 +1035,6 @@ K.FClose jsr PFT.CheckNodeA
|
|||||||
|
|
||||||
stz OF.Table.hPath-1,x
|
stz OF.Table.hPath-1,x
|
||||||
jmp K.FreeMem discard filename
|
jmp K.FreeMem discard filename
|
||||||
|
|
||||||
K.FClose.RTS rts
|
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # FRead (BLOCKING)
|
* # FRead (BLOCKING)
|
||||||
* Read bytes from file
|
* Read bytes from file
|
||||||
@ -1059,7 +1055,7 @@ K.FRead jsr PFT.CheckNodeA
|
|||||||
jsr IO.Read.I
|
jsr IO.Read.I
|
||||||
bcs K.FWrite.9
|
bcs K.FWrite.9
|
||||||
|
|
||||||
rts
|
K.FClose.RTS rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # FWrite (BLOCKING)
|
* # FWrite (BLOCKING)
|
||||||
* Write bytes to file
|
* Write bytes to file
|
||||||
@ -1181,7 +1177,7 @@ K.FSeek jsr PFT.CheckNodeA
|
|||||||
.98 lda #E.BADARG
|
.98 lda #E.BADARG
|
||||||
.HS 2C bit abs
|
.HS 2C bit abs
|
||||||
.99 lda #E.FTB
|
.99 lda #E.FTB
|
||||||
sec
|
* sec
|
||||||
K.FSeek.RTS
|
K.FSeek.RTS
|
||||||
rts
|
rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user