mirror of
https://github.com/A2osX/A2osX.git
synced 2024-10-01 22:57:43 +00:00
Kernel 0.92
This commit is contained in:
parent
c760a752ce
commit
2d5d819354
Binary file not shown.
@ -112,7 +112,7 @@ Cmd.INT.PUSHD >LDA.G PUSHD.STACK
|
|||||||
ldy #S.PS.hPREFIX
|
ldy #S.PS.hPREFIX
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
>SYSCALL NewStr
|
>SYSCALL strdup
|
||||||
bcs Cmd.INT.POPD.CSYN
|
bcs Cmd.INT.POPD.CSYN
|
||||||
|
|
||||||
>INC.G PUSHD.STACK
|
>INC.G PUSHD.STACK
|
||||||
@ -210,7 +210,7 @@ Cmd.INT.CD.1 >STYA ZPPtr1
|
|||||||
sta (ZPPtr1),y
|
sta (ZPPtr1),y
|
||||||
|
|
||||||
.8 >LDYA ZPPtr1
|
.8 >LDYA ZPPtr1
|
||||||
>SYSCALL NewStr
|
>SYSCALL strdup
|
||||||
bcs .90
|
bcs .90
|
||||||
txa
|
txa
|
||||||
|
|
||||||
@ -510,7 +510,7 @@ Cmd.INT.READ lda #1
|
|||||||
bcs .99
|
bcs .99
|
||||||
bra .7
|
bra .7
|
||||||
|
|
||||||
.4 >SYSCALL newstr
|
.4 >SYSCALL strdup
|
||||||
txa
|
txa
|
||||||
>STA.G hVarName
|
>STA.G hVarName
|
||||||
|
|
||||||
|
@ -152,7 +152,7 @@ InitSrcDirYA >SYSCALL RealPath
|
|||||||
adc #0
|
adc #0
|
||||||
sta ZPPtr2+1
|
sta ZPPtr2+1
|
||||||
|
|
||||||
>SYSCALL Newstr
|
>SYSCALL strdup
|
||||||
bcs .9
|
bcs .9
|
||||||
txa
|
txa
|
||||||
>STA.G hFilter
|
>STA.G hFilter
|
||||||
@ -252,7 +252,7 @@ InitDstDirYA >SYSCALL RealPath
|
|||||||
adc #0
|
adc #0
|
||||||
sta ZPPtr2+1
|
sta ZPPtr2+1
|
||||||
|
|
||||||
>SYSCALL NewStr
|
>SYSCALL strdup
|
||||||
bcs .9
|
bcs .9
|
||||||
txa
|
txa
|
||||||
>STA.G hDstFileName
|
>STA.G hDstFileName
|
||||||
|
@ -4,13 +4,14 @@ AUTO 4,1
|
|||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Mask7BitsH .DA #%01111111 Useless
|
Mask7BitsH .DA #%01111111 Useless
|
||||||
.DA #%01111110
|
C2.MASK .DA #%01111110
|
||||||
.DA #%01111100
|
.DA #%01111100
|
||||||
.DA #%01111000
|
.DA #%01111000
|
||||||
.DA #%01110000
|
.DA #%01110000
|
||||||
.DA #%01100000
|
.DA #%01100000
|
||||||
.DA #%01000000
|
.DA #%01000000
|
||||||
|
* .DA #%00000000
|
||||||
|
C1.MASK
|
||||||
Mask7BitsL .DA #%00000000 Useless
|
Mask7BitsL .DA #%00000000 Useless
|
||||||
.DA #%00000001
|
.DA #%00000001
|
||||||
.DA #%00000011
|
.DA #%00000011
|
||||||
@ -35,13 +36,13 @@ Shift7BitsCol2 .DA #%00000000 Useless
|
|||||||
.DA #%01111100
|
.DA #%01111100
|
||||||
.DA #%01111110
|
.DA #%01111110
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
C1.MASK .DA #%00000000 Clear (AND) Col 1 bits
|
*C1.MASK .DA #%00000000 Clear (AND) Col 1 bits
|
||||||
.DA #%00000001
|
* .DA #%00000001
|
||||||
.DA #%00000011
|
* .DA #%00000011
|
||||||
.DA #%00000111
|
* .DA #%00000111
|
||||||
.DA #%00001111
|
* .DA #%00001111
|
||||||
.DA #%00011111
|
* .DA #%00011111
|
||||||
.DA #%00111111
|
* .DA #%00111111
|
||||||
|
|
||||||
C1.DATA .DA #%11111111 set (ORA) COL 1 bits
|
C1.DATA .DA #%11111111 set (ORA) COL 1 bits
|
||||||
.DA #%11111110
|
.DA #%11111110
|
||||||
@ -51,13 +52,13 @@ C1.DATA .DA #%11111111 set (ORA) COL 1 bits
|
|||||||
.DA #%11100000
|
.DA #%11100000
|
||||||
.DA #%11000000
|
.DA #%11000000
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
C2.MASK .DA #%01111110 Clear (AND) Col 2 bits
|
*C2.MASK .DA #%01111110 Clear (AND) Col 2 bits
|
||||||
.DA #%01111100
|
* .DA #%01111100
|
||||||
.DA #%01111000
|
* .DA #%01111000
|
||||||
.DA #%01110000
|
* .DA #%01110000
|
||||||
.DA #%01100000
|
* .DA #%01100000
|
||||||
.DA #%01000000
|
* .DA #%01000000
|
||||||
.DA #%00000000
|
* .DA #%00000000
|
||||||
|
|
||||||
C2.DATA .DA #%10000001 set (ORA) COL 2 bits
|
C2.DATA .DA #%10000001 set (ORA) COL 2 bits
|
||||||
.DA #%10000011
|
.DA #%10000011
|
||||||
|
@ -228,8 +228,25 @@ STATUS.9 lda #MLI.E.BADCTL
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
OPEN sta A2osX.SCRNDEVS+2 DEV.ID in A
|
OPEN ldx #0 DEV.ID in A
|
||||||
|
|
||||||
|
.10 ldy A2osX.SCRNDEVS,x
|
||||||
|
beq .20
|
||||||
|
|
||||||
|
inx
|
||||||
|
cpx #K.SCR.MAX
|
||||||
|
bne .10
|
||||||
|
|
||||||
|
lda #E.OOH
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.20 sta A2osX.SCRNDEVS,x
|
||||||
|
sta DCB+S.DCB.GFX.DEVID
|
||||||
|
|
||||||
|
lda #S.DIB.S.OPENED
|
||||||
|
tsb DIB+S.DIB.S
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
ldy #1
|
ldy #1
|
||||||
|
|
||||||
@ -272,7 +289,7 @@ CONTROL ldy #0
|
|||||||
iny
|
iny
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.8 lda #3
|
.8 lda DCB+S.DCB.GFX.DEVID
|
||||||
sta A2osX.ASCREEN
|
sta A2osX.ASCREEN
|
||||||
|
|
||||||
clc
|
clc
|
||||||
@ -281,7 +298,7 @@ CONTROL ldy #0
|
|||||||
CLOSE clc
|
CLOSE clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
WRITE >STYA ZPIOCTL
|
WRITE >STYA ZPIOCTL NON STANDARD
|
||||||
|
|
||||||
lda (ZPIOCTL) Get Cmd
|
lda (ZPIOCTL) Get Cmd
|
||||||
|
|
||||||
@ -470,12 +487,17 @@ DIB .DA #0
|
|||||||
.DA K.VER
|
.DA K.VER
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DCB .DA #S.DCB.T.GFX
|
DCB .DA #S.DCB.T.GFX
|
||||||
|
.BS 1 DEV.ID
|
||||||
|
.BS 1 STATUS
|
||||||
.DA #S.CB.M.MONO+S.CB.M.C16 F
|
.DA #S.CB.M.MONO+S.CB.M.C16 F
|
||||||
.DA 0 S
|
|
||||||
.DA 560 W
|
.DA 560 W
|
||||||
.DA 192 H
|
.DA 192 H
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV.END
|
DRV.END
|
||||||
|
.LI ON
|
||||||
|
DRV.CS.SIZE .EQ DRV.CS.END-DRV.CS.START
|
||||||
|
DRV.SIZE .EQ DRV.END-DRV.CS.START
|
||||||
|
.LI OFF
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/DRV/DHGR.DRV.S
|
SAVE USR/SRC/DRV/DHGR.DRV.S
|
||||||
ASM
|
ASM
|
||||||
|
@ -119,22 +119,23 @@ FD.DEV.NAME .AZ "MOU7"
|
|||||||
* Driver Code
|
* Driver Code
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPIOCTL .EQ ZPDRV
|
ZPIOCTL .EQ ZPDRV
|
||||||
|
ZPBufPtr .EQ ZPDRV+2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV.CS.START cld
|
DRV.CS.START cld
|
||||||
jmp (.1,x)
|
jmp (.1,x)
|
||||||
.1 .DA STATUS
|
.1 .DA STATUS
|
||||||
.DA READBLOCK
|
.DA A2osX.BADCALL
|
||||||
.DA A2osX.BADCALL
|
.DA A2osX.BADCALL
|
||||||
.DA A2osX.BADCALL
|
.DA A2osX.BADCALL
|
||||||
.DA CONTROL
|
.DA CONTROL
|
||||||
.DA A2osX.BADCALL
|
.DA A2osX.BADCALL
|
||||||
.DA OPEN
|
.DA OPEN
|
||||||
.DA CLOSE
|
.DA CLOSE
|
||||||
.DA A2osX.BADCALL
|
.DA READ
|
||||||
.DA A2osX.BADCALL
|
.DA A2osX.BADCALL
|
||||||
.DA 0 end or relocation
|
.DA 0 end or relocation
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
STATUS >STYA ZPIOCTL
|
STATUS jsr GETIOCTL
|
||||||
|
|
||||||
ldy #S.IOCTL.STATCODE
|
ldy #S.IOCTL.STATCODE
|
||||||
lda (ZPIOCTL),y
|
lda (ZPIOCTL),y
|
||||||
@ -143,20 +144,13 @@ STATUS >STYA ZPIOCTL
|
|||||||
cmp #S.IOCTL.STATCODE.GETDIB
|
cmp #S.IOCTL.STATCODE.GETDIB
|
||||||
bne STATUS.DCB
|
bne STATUS.DCB
|
||||||
|
|
||||||
ldx #S.DIB-1
|
ldy #S.DIB-1
|
||||||
.HS 2C bit abs
|
.HS 2C bit abs
|
||||||
.1 ldx #3
|
.1 ldy #3
|
||||||
|
|
||||||
ldy #S.IOCTL.BUFPTR
|
|
||||||
lda (ZPIOCTL),y
|
|
||||||
sta .3+1
|
|
||||||
iny
|
|
||||||
lda (ZPIOCTL),y
|
|
||||||
sta .3+2
|
|
||||||
|
|
||||||
.2 lda DIB,x
|
.2 lda DIB,y
|
||||||
.3 sta $ffff,x SELF MODIFIED
|
sta (ZPBufPtr),y
|
||||||
dex
|
dey
|
||||||
bpl .2
|
bpl .2
|
||||||
|
|
||||||
clc
|
clc
|
||||||
@ -168,121 +162,7 @@ STATUS.9 lda #MLI.E.BADCTL
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
READBLOCK >STYA ZPIOCTL
|
CONTROL jsr GETIOCTL
|
||||||
|
|
||||||
stz READBLOCK.S+1 Reset Flags
|
|
||||||
|
|
||||||
php
|
|
||||||
sei
|
|
||||||
|
|
||||||
* ldy #READMOUSE DONE BY IRQ MANAGER
|
|
||||||
* jsr GOMOUSE
|
|
||||||
|
|
||||||
ldx DEVSLOT0n
|
|
||||||
|
|
||||||
lda MOUSESTSx,x
|
|
||||||
and #MOUSESTSx.MOVED
|
|
||||||
beq .1
|
|
||||||
|
|
||||||
ldy #S.MOUSE.X1
|
|
||||||
|
|
||||||
lda MOUSEXLOx,x
|
|
||||||
sta (ZPIOCTL),y
|
|
||||||
|
|
||||||
iny
|
|
||||||
lda MOUSEXHIx,x
|
|
||||||
sta (ZPIOCTL),y
|
|
||||||
|
|
||||||
iny
|
|
||||||
lda MOUSEYLOx,x
|
|
||||||
sta (ZPIOCTL),y
|
|
||||||
|
|
||||||
iny
|
|
||||||
lda MOUSEYHIx,x
|
|
||||||
sta (ZPIOCTL),y
|
|
||||||
|
|
||||||
lda #S.MOUSE.S.MOVE
|
|
||||||
tsb READBLOCK.S+1
|
|
||||||
|
|
||||||
stz bDblClick Reset DblClick flag
|
|
||||||
|
|
||||||
.1 lda MOUSESTSx,x
|
|
||||||
and #MOUSESTSx.DOWN+MOUSESTSx.LDOWN
|
|
||||||
beq .8 no button state change:up & previously up
|
|
||||||
|
|
||||||
cmp #MOUSESTSx.DOWN+MOUSESTSx.LDOWN
|
|
||||||
beq .8 no button state change:down & previously down
|
|
||||||
|
|
||||||
asl if CS, down & previously up
|
|
||||||
bcc .2
|
|
||||||
|
|
||||||
lda #S.MOUSE.S.DOWN
|
|
||||||
tsb READBLOCK.S+1 button has been pressed, start drag...
|
|
||||||
|
|
||||||
lda MOUSEXLOx,x
|
|
||||||
sta SrcDrag
|
|
||||||
|
|
||||||
lda MOUSEXHIx,x
|
|
||||||
sta SrcDrag+1
|
|
||||||
|
|
||||||
lda MOUSEYLOx,x
|
|
||||||
sta SrcDrag+2
|
|
||||||
|
|
||||||
lda MOUSEYHIx,x
|
|
||||||
sta SrcDrag+3
|
|
||||||
|
|
||||||
bra .8
|
|
||||||
|
|
||||||
.2 lda READBLOCK.S+1
|
|
||||||
|
|
||||||
pha save move state
|
|
||||||
|
|
||||||
ora #S.MOUSE.S.UP
|
|
||||||
sta READBLOCK.S+1
|
|
||||||
|
|
||||||
pla get back move state
|
|
||||||
|
|
||||||
bne .4 no move...click!
|
|
||||||
|
|
||||||
lda #S.MOUSE.S.CLK
|
|
||||||
bit bDblClick
|
|
||||||
bpl .3
|
|
||||||
|
|
||||||
lda #S.MOUSE.S.DCLK
|
|
||||||
|
|
||||||
ldy #1
|
|
||||||
sty bDblClick
|
|
||||||
|
|
||||||
.3 dec bDblClick
|
|
||||||
|
|
||||||
tsb READBLOCK.S+1
|
|
||||||
bra .8
|
|
||||||
|
|
||||||
.4 lda #S.MOUSE.S.DRAG
|
|
||||||
tsb READBLOCK.S+1
|
|
||||||
|
|
||||||
ldy #S.MOUSE.X2+3
|
|
||||||
|
|
||||||
.5 lda SrcDrag-S.MOUSE.X2,y
|
|
||||||
sta (ZPIOCTL),y
|
|
||||||
dey
|
|
||||||
bpl .5
|
|
||||||
|
|
||||||
.8 plp
|
|
||||||
|
|
||||||
READBLOCK.S lda #$ff SELF MODIFIED
|
|
||||||
beq .9
|
|
||||||
|
|
||||||
ldy #S.MOUSE.S
|
|
||||||
sta (ZPIOCTL),y
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.9 lda #MLI.E.EOF
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CONTROL >STYA ZPIOCTL
|
|
||||||
|
|
||||||
php
|
php
|
||||||
sei
|
sei
|
||||||
@ -331,21 +211,146 @@ CLOSE php
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
READ >STYA ZPBufPtr NON STANDARD
|
||||||
|
|
||||||
|
stz READ.S+1 Reset Flags
|
||||||
|
|
||||||
|
php
|
||||||
|
sei
|
||||||
|
|
||||||
|
* ldy #READMOUSE DONE BY IRQ MANAGER
|
||||||
|
* jsr GOMOUSE
|
||||||
|
|
||||||
|
ldx DEVSLOT0n
|
||||||
|
|
||||||
|
lda MOUSESTSx,x
|
||||||
|
and #MOUSESTSx.MOVED
|
||||||
|
beq .1
|
||||||
|
|
||||||
|
ldy #S.MOUSE.X1
|
||||||
|
|
||||||
|
lda MOUSEXLOx,x
|
||||||
|
sta (ZPBufPtr),y
|
||||||
|
|
||||||
|
iny
|
||||||
|
lda MOUSEXHIx,x
|
||||||
|
sta (ZPBufPtr),y
|
||||||
|
|
||||||
|
iny
|
||||||
|
lda MOUSEYLOx,x
|
||||||
|
sta (ZPBufPtr),y
|
||||||
|
|
||||||
|
iny
|
||||||
|
lda MOUSEYHIx,x
|
||||||
|
sta (ZPBufPtr),y
|
||||||
|
|
||||||
|
lda #S.MOUSE.S.MOVE
|
||||||
|
tsb READ.S+1
|
||||||
|
|
||||||
|
stz bDblClick Reset DblClick flag
|
||||||
|
|
||||||
|
.1 lda MOUSESTSx,x
|
||||||
|
and #MOUSESTSx.DOWN+MOUSESTSx.LDOWN
|
||||||
|
beq .8 no button state change:up & previously up
|
||||||
|
|
||||||
|
cmp #MOUSESTSx.DOWN+MOUSESTSx.LDOWN
|
||||||
|
beq .8 no button state change:down & previously down
|
||||||
|
|
||||||
|
asl if CS, down & previously up
|
||||||
|
bcc .2
|
||||||
|
|
||||||
|
lda #S.MOUSE.S.DOWN
|
||||||
|
tsb READ.S+1 button has been pressed, start drag...
|
||||||
|
|
||||||
|
lda MOUSEXLOx,x
|
||||||
|
sta SrcDrag
|
||||||
|
|
||||||
|
lda MOUSEXHIx,x
|
||||||
|
sta SrcDrag+1
|
||||||
|
|
||||||
|
lda MOUSEYLOx,x
|
||||||
|
sta SrcDrag+2
|
||||||
|
|
||||||
|
lda MOUSEYHIx,x
|
||||||
|
sta SrcDrag+3
|
||||||
|
|
||||||
|
bra .8
|
||||||
|
|
||||||
|
.2 lda READ.S+1
|
||||||
|
|
||||||
|
pha save move state
|
||||||
|
|
||||||
|
ora #S.MOUSE.S.UP
|
||||||
|
sta READ.S+1
|
||||||
|
|
||||||
|
pla get back move state
|
||||||
|
|
||||||
|
bne .4 no move...click!
|
||||||
|
|
||||||
|
lda #S.MOUSE.S.CLK
|
||||||
|
bit bDblClick
|
||||||
|
bpl .3
|
||||||
|
|
||||||
|
lda #S.MOUSE.S.DCLK
|
||||||
|
|
||||||
|
ldy #1
|
||||||
|
sty bDblClick
|
||||||
|
|
||||||
|
.3 dec bDblClick
|
||||||
|
|
||||||
|
tsb READ.S+1
|
||||||
|
bra .8
|
||||||
|
|
||||||
|
.4 lda #S.MOUSE.S.DRAG
|
||||||
|
tsb READ.S+1
|
||||||
|
|
||||||
|
ldy #S.MOUSE.X2+3
|
||||||
|
|
||||||
|
.5 lda SrcDrag-S.MOUSE.X2,y
|
||||||
|
sta (ZPBufPtr),y
|
||||||
|
dey
|
||||||
|
bpl .5
|
||||||
|
|
||||||
|
.8 plp
|
||||||
|
|
||||||
|
READ.S lda #$ff SELF MODIFIED
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
ldy #S.MOUSE.S
|
||||||
|
sta (ZPBufPtr),y
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 lda #MLI.E.EOF
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
* PRIVATE
|
* PRIVATE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SETCLAMP lda (ZPIOCTL),y
|
GETIOCTL >STYA ZPIOCTL
|
||||||
|
|
||||||
|
ldy #S.IOCTL.BUFPTR
|
||||||
|
lda (ZPIOCTL),y
|
||||||
|
sta ZPBufPtr
|
||||||
|
iny
|
||||||
|
lda (ZPIOCTL),y
|
||||||
|
sta ZPBufPtr+1
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
SETCLAMP lda (ZPBufPtr),y
|
||||||
sta LOCLAMPLO
|
sta LOCLAMPLO
|
||||||
|
|
||||||
iny
|
iny
|
||||||
lda (ZPIOCTL),y
|
lda (ZPBufPtr),y
|
||||||
sta LOCLAMPHI
|
sta LOCLAMPHI
|
||||||
|
|
||||||
iny
|
iny
|
||||||
lda (ZPIOCTL),y
|
lda (ZPBufPtr),y
|
||||||
sta HICLAMPLO
|
sta HICLAMPLO
|
||||||
|
|
||||||
iny
|
iny
|
||||||
lda (ZPIOCTL),y
|
lda (ZPBufPtr),y
|
||||||
sta HICLAMPHI
|
sta HICLAMPHI
|
||||||
|
|
||||||
txa
|
txa
|
||||||
|
@ -206,7 +206,7 @@ SYS.RealPath .EQ $7C
|
|||||||
SYS.StrLen .EQ $80
|
SYS.StrLen .EQ $80
|
||||||
SYS.StrCpy .EQ $82
|
SYS.StrCpy .EQ $82
|
||||||
SYS.StrCat .EQ $84
|
SYS.StrCat .EQ $84
|
||||||
* .EQ $86
|
SYS.StrDup .EQ $86
|
||||||
SYS.StrUpr .EQ $88
|
SYS.StrUpr .EQ $88
|
||||||
SYS.StrLwr .EQ $8A
|
SYS.StrLwr .EQ $8A
|
||||||
SYS.StrCmp .EQ $8C
|
SYS.StrCmp .EQ $8C
|
||||||
@ -269,7 +269,7 @@ SYS.GetMemByID .EQ $E6
|
|||||||
|
|
||||||
SYS.GetMem .EQ $E8
|
SYS.GetMem .EQ $E8
|
||||||
SYS.GetMem0 .EQ $EA
|
SYS.GetMem0 .EQ $EA
|
||||||
SYS.NewStr .EQ $EC
|
* .EQ $EC
|
||||||
SYS.SListAdd .EQ $EE
|
SYS.SListAdd .EQ $EE
|
||||||
|
|
||||||
SYS.SListLookup .EQ $F0
|
SYS.SListLookup .EQ $F0
|
||||||
|
@ -5,8 +5,9 @@ AUTO 4,1
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* GFX Devices
|
* GFX Devices
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.DCB.GFX.F .EQ 1
|
S.DCB.GFX.DEVID .EQ 1
|
||||||
S.DCB.GFX.S .EQ 2
|
S.DCB.GFX.S .EQ 2
|
||||||
|
S.DCB.GFX.F .EQ 3
|
||||||
S.DCB.GFX.W .EQ 4
|
S.DCB.GFX.W .EQ 4
|
||||||
S.DCB.GFX.H .EQ 6
|
S.DCB.GFX.H .EQ 6
|
||||||
*
|
*
|
||||||
|
@ -219,7 +219,7 @@ DNS.ADD.I sta DNS.TmpCache
|
|||||||
jsr DNS.FIND.FREE
|
jsr DNS.FIND.FREE
|
||||||
|
|
||||||
>LDYA ZPPtrDNS
|
>LDYA ZPPtrDNS
|
||||||
>SYSCALL newstr
|
>SYSCALL strdup
|
||||||
bcs .9
|
bcs .9
|
||||||
txa
|
txa
|
||||||
ldy #S.DNSCACHE.hNAME
|
ldy #S.DNSCACHE.hNAME
|
||||||
|
@ -41,26 +41,17 @@ K.LoadLib jsr BIN.FindLIB
|
|||||||
* out :
|
* out :
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.UnloadLib pha
|
K.UnloadLib pha
|
||||||
jsr K.GetMemByID
|
jsr K.GetMemPtr
|
||||||
>STYA ZPPtr1
|
>STYA .2+1
|
||||||
ldy #S.MEM.REFCNT
|
|
||||||
lda (ZPPtr1),y Get count of those referencing this lib
|
jsr MEM.decREFCNT
|
||||||
dec only one left ?
|
|
||||||
beq .1
|
beq .1
|
||||||
sta (ZPPtr1),y
|
|
||||||
pla
|
pla
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.1 ldy #S.MEM.PTR
|
.1 ldx #LIBMGR.UNLOAD
|
||||||
lda (ZPPtr1),y
|
|
||||||
sta .2+1
|
|
||||||
|
|
||||||
iny
|
|
||||||
lda (ZPPtr1),y
|
|
||||||
sta .2+2
|
|
||||||
|
|
||||||
ldx #LIBMGR.UNLOAD
|
|
||||||
.2 jsr $ffff Self Modified, Call LIB.UNLOAD function
|
.2 jsr $ffff Self Modified, Call LIB.UNLOAD function
|
||||||
pla
|
pla
|
||||||
jmp K.FreeMem
|
jmp K.FreeMem
|
||||||
@ -114,7 +105,7 @@ K.LoadDrv >STYA .2+1 Save "BIN\0ARGS\0\0"
|
|||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BIN.FindLIB clc
|
BIN.FindLIB clc
|
||||||
.HS B0 bcs
|
.HS B0 BCS
|
||||||
BIN.FindDRV sec
|
BIN.FindDRV sec
|
||||||
|
|
||||||
>STYA BIN.CmdLine
|
>STYA BIN.CmdLine
|
||||||
@ -149,29 +140,22 @@ BIN.Find.ENV.LIB .AZ "LIB"
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BIN.Load >STYA BIN.CmdLine
|
BIN.Load >STYA BIN.CmdLine
|
||||||
>STYA .2+1
|
>STYA .2+1
|
||||||
|
|
||||||
>LDYAI Mem.Table
|
|
||||||
>STYA ZPPtr1
|
|
||||||
|
|
||||||
ldx #0 we will skip Slot 0...
|
ldx #0
|
||||||
|
|
||||||
.1 cpx Mem.LastSlot
|
.1 cpx Mem.LastSlot
|
||||||
beq BIN.Load.1
|
beq BIN.Load.1
|
||||||
|
|
||||||
inx
|
inx we will skip Slot 0...
|
||||||
|
|
||||||
lda ZPPtr1
|
txa
|
||||||
clc
|
jsr K.GetMemPtr
|
||||||
adc #S.MEM
|
|
||||||
sta ZPPtr1
|
|
||||||
bcc .11
|
|
||||||
inc ZPPtr1+1
|
|
||||||
|
|
||||||
.11 lda (ZPPtr1)
|
lda (ZPMemMgrSPtr)
|
||||||
bpl .1 In Use?
|
bpl .1 In Use?
|
||||||
|
|
||||||
ldy #S.MEM.BIN any BIN PATH in this slot?
|
ldy #S.MEM.BIN any BIN PATH in this slot?
|
||||||
lda (ZPPtr1),y
|
lda (ZPMemMgrSPtr),y
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
jsr K.GetMemPtr X unmodified, get pathname
|
jsr K.GetMemPtr X unmodified, get pathname
|
||||||
@ -186,20 +170,14 @@ BIN.Load >STYA BIN.CmdLine
|
|||||||
ora #0
|
ora #0
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
ldy #S.MEM.REFCNT
|
txa
|
||||||
lda (ZPPtr1),y
|
jsr K.GetMemPtr
|
||||||
inc
|
|
||||||
sta (ZPPtr1),y
|
jsr MEM.IncREFCNT
|
||||||
|
|
||||||
ldy #S.MEM.PTR
|
|
||||||
lda (ZPPtr1),y
|
|
||||||
pha
|
|
||||||
iny
|
|
||||||
lda (ZPPtr1),y
|
|
||||||
ply
|
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts X=hMem, Y,A=Ptr
|
jmp K.GetMemPtr.ZPMemMgrSPtr
|
||||||
|
* X=hMem, Y,A=Ptr
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BIN.Load.1
|
BIN.Load.1
|
||||||
* >PUSHWI K.S.STAT
|
* >PUSHWI K.S.STAT
|
||||||
@ -258,24 +236,23 @@ BIN.Load.1
|
|||||||
jsr BIN.RelExe
|
jsr BIN.RelExe
|
||||||
|
|
||||||
>LDYA BIN.CmdLine get back bin path
|
>LDYA BIN.CmdLine get back bin path
|
||||||
jsr K.NewStr make a copy of this string
|
>SYSCALL StrDup make a copy of this string
|
||||||
bcs .98
|
bcs .98
|
||||||
|
|
||||||
lda BIN.hMem Keep X=hMem
|
lda BIN.hMem Keep X=hMem
|
||||||
jsr K.GetMemByID X unmodified
|
jsr K.GetMemByID X unmodified
|
||||||
>STYA ZPPtr1
|
|
||||||
|
|
||||||
lda (ZPPtr1)
|
lda (ZPMemMgrSPtr)
|
||||||
ora #S.MEM.F.CODE This is a code segment
|
ora #S.MEM.F.CODE This is a code segment
|
||||||
sta (ZPPtr1)
|
sta (ZPMemMgrSPtr)
|
||||||
|
|
||||||
txa Get Back hMem
|
txa Get Back Cmd line hMem
|
||||||
ldy #S.MEM.BIN
|
ldy #S.MEM.BIN
|
||||||
sta (ZPPtr1),y
|
sta (ZPMemMgrSPtr),y
|
||||||
|
|
||||||
lda BIN.hMem
|
ldx BIN.hMem return hMEM to Caller...
|
||||||
tax return hMEM to Caller...
|
clc
|
||||||
jmp K.GetMemPtr ...and Y,A=PTR to CS
|
jmp K.GetMemPtr.ZPMemMgrSPtr ...and Y,A=PTR to CS
|
||||||
|
|
||||||
.98 pha
|
.98 pha
|
||||||
lda BIN.hMem
|
lda BIN.hMem
|
||||||
@ -460,14 +437,9 @@ BIN.RelDrv ldy #H.BIN.DRV.REL.TABLE
|
|||||||
|
|
||||||
bra .1
|
bra .1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.2 tya add current offset in Y to Ptr
|
.2 jsr MEM.AddYp1ToPtr1 add current offset in Y to Ptr
|
||||||
|
* + 1 to skip last 00 from beq .2
|
||||||
sec + 1 to skip last 00 from beq .2
|
* ZPPtr1=Current Code PTR
|
||||||
|
|
||||||
adc ZPPtr1
|
|
||||||
sta ZPPtr1
|
|
||||||
bcc .3
|
|
||||||
inc ZPPtr1+1 ZPPtr1=Current Code PTR
|
|
||||||
|
|
||||||
.3 lda BIN.R.CS.End compute new CS.END to stop relocating
|
.3 lda BIN.R.CS.End compute new CS.END to stop relocating
|
||||||
clc
|
clc
|
||||||
|
@ -131,7 +131,7 @@ K.MKDev jsr MEM.SPtr1PPtr2 ptr1=fd, ptr2=name
|
|||||||
sta IRQ.Vectors+1,x
|
sta IRQ.Vectors+1,x
|
||||||
|
|
||||||
.8 >LDYA ZPPtr2
|
.8 >LDYA ZPPtr2
|
||||||
jsr K.NewStr
|
>SYSCALL StrDup
|
||||||
bcs .99
|
bcs .99
|
||||||
txa
|
txa
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ K.ExpandStr stz .88+1 Reset Intermediate string...
|
|||||||
stz K.Buf256,x
|
stz K.Buf256,x
|
||||||
|
|
||||||
>LDYAI K.Buf256
|
>LDYAI K.Buf256
|
||||||
jsr K.NewStr
|
>SYSCALL StrDup
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
stx .88+1 save this as temp string, in case of recurse
|
stx .88+1 save this as temp string, in case of recurse
|
||||||
@ -118,7 +118,7 @@ K.ExpandStr stz .88+1 Reset Intermediate string...
|
|||||||
jmp .1 Yes, start over with hPStr
|
jmp .1 Yes, start over with hPStr
|
||||||
|
|
||||||
.88 ldx #$ff SELF MODIFIED
|
.88 ldx #$ff SELF MODIFIED
|
||||||
* or exit with Y,A from K.NewStrYA
|
* or exit with Y,A from STRDUP
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
|
@ -83,7 +83,7 @@ K.SYSCALL.JMP .DA 0 $00
|
|||||||
.DA K.StrLen $80
|
.DA K.StrLen $80
|
||||||
.DA K.StrCpy
|
.DA K.StrCpy
|
||||||
.DA K.StrCat
|
.DA K.StrCat
|
||||||
.DA 0
|
.DA K.StrDup
|
||||||
.DA K.StrUpr
|
.DA K.StrUpr
|
||||||
.DA K.StrLwr
|
.DA K.StrLwr
|
||||||
.DA K.StrCmp
|
.DA K.StrCmp
|
||||||
@ -142,7 +142,7 @@ K.SYSCALL.JMP .DA 0 $00
|
|||||||
.DA K.GetMemByID
|
.DA K.GetMemByID
|
||||||
.DA K.GetMem
|
.DA K.GetMem
|
||||||
.DA K.GetMem0
|
.DA K.GetMem0
|
||||||
.DA K.NewStr
|
.DA 0
|
||||||
.DA K.SListAdd
|
.DA K.SListAdd
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DA K.SListLookup $F0
|
.DA K.SListLookup $F0
|
||||||
|
@ -158,14 +158,9 @@ MEM.GetMem.YAX stx Mem.ReqFlags
|
|||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
ldy #S.MEM.OWNERPID
|
ldy #S.MEM.OWNERPID
|
||||||
sta (ZPMemMgrSPtr),y
|
sta (ZPMemMgrSPtr),y
|
||||||
|
clc
|
||||||
ldy #S.MEM.PTR
|
jmp K.GetMemPtr.ZPMemMgrSPtr
|
||||||
lda (ZPMemMgrSPtr),y
|
* A = HI PTR,Y = LO PTR,X = Current hMem
|
||||||
pha
|
|
||||||
iny
|
|
||||||
lda (ZPMemMgrSPtr),y A = HI PTR
|
|
||||||
ply Y = LO PTR
|
|
||||||
clc X = Current hMem
|
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -222,7 +217,19 @@ Mem.AddSlot >STYA ZPMemMgrTmp1 save req size
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Mem.NextSlot lda ZPMemMgrSPtr
|
MEM.IncREFCNT ldy #S.MEM.REFCNT
|
||||||
|
lda (ZPMemMgrSPtr),y
|
||||||
|
inc
|
||||||
|
sta (ZPMemMgrSPtr),y
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
MEM.decREFCNT ldy #S.MEM.REFCNT
|
||||||
|
lda (ZPMemMgrSPtr),y
|
||||||
|
dec
|
||||||
|
sta (ZPMemMgrSPtr),y
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
MEM.NextSlot lda ZPMemMgrSPtr
|
||||||
clc
|
clc
|
||||||
adc #S.MEM
|
adc #S.MEM
|
||||||
sta ZPMemMgrSPtr
|
sta ZPMemMgrSPtr
|
||||||
@ -236,8 +243,8 @@ Mem.NextSlot lda ZPMemMgrSPtr
|
|||||||
* none.
|
* none.
|
||||||
* (X unmodified)
|
* (X unmodified)
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.FreeMem.ERRBAD .AZ "FreeMem:$%h=Bad hMem,BIN=%s\r\n"
|
K.FreeMem.ERRBAD .AZ "FreeMem:$%h=Bad,%s\r\n"
|
||||||
K.FreeMem.ERRFREED .AZ "FreeMem:$%h=already freed,BIN=%s\r\n"
|
K.FreeMem.ERRFREED .AZ "FreeMem:$%h=free,%s\r\n"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.FreeMem.BAD sec
|
K.FreeMem.BAD sec
|
||||||
.HS 90 BCC
|
.HS 90 BCC
|
||||||
@ -265,7 +272,7 @@ K.FreeMem.FREED clc
|
|||||||
.1 >SYSCALL printf
|
.1 >SYSCALL printf
|
||||||
|
|
||||||
plx
|
plx
|
||||||
>DEBUG
|
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -286,10 +293,7 @@ K.FreeMem tay
|
|||||||
|
|
||||||
.11 pla
|
.11 pla
|
||||||
|
|
||||||
ldy #S.MEM.REFCNT
|
jsr MEM.decREFCNT only one left ?
|
||||||
lda (ZPMemMgrSPtr),y Get count of those referencing this hMem
|
|
||||||
dec only one left ?
|
|
||||||
sta (ZPMemMgrSPtr),y
|
|
||||||
bne .8 no, must be a code segment loaded several times
|
bne .8 no, must be a code segment loaded several times
|
||||||
|
|
||||||
lda (ZPMemMgrSPtr)
|
lda (ZPMemMgrSPtr)
|
||||||
@ -365,7 +369,7 @@ K.GetMemPtr sta ZPMemMgrSPtr
|
|||||||
asl ZPMemMgrSPtr
|
asl ZPMemMgrSPtr
|
||||||
rol
|
rol
|
||||||
sta ZPMemMgrSPtr+1
|
sta ZPMemMgrSPtr+1
|
||||||
|
K.GetMemPtr.ZPMemMgrSPtr
|
||||||
ldy #S.MEM.PTR
|
ldy #S.MEM.PTR
|
||||||
lda (ZPMemMgrSPtr),y
|
lda (ZPMemMgrSPtr),y
|
||||||
pha
|
pha
|
||||||
@ -427,58 +431,6 @@ K.GetMemStat >STYA ZPMemMgrTmp1
|
|||||||
bpl .3
|
bpl .3
|
||||||
rts
|
rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # NewStr
|
|
||||||
* Create a new copy of this C-String
|
|
||||||
* Y,A = Ptr to source C-String
|
|
||||||
* ## RETURN VALUE
|
|
||||||
* CC : success
|
|
||||||
* Y,A = PTR to String
|
|
||||||
* X = hMem (PSTR)
|
|
||||||
* CS : error
|
|
||||||
* A = SYS error code
|
|
||||||
*\--------------------------------------
|
|
||||||
K.NewStr >STYA .1+1
|
|
||||||
>STYA .4+1
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
lda #0
|
|
||||||
|
|
||||||
.1 ldx $ffff,y
|
|
||||||
beq .2
|
|
||||||
iny
|
|
||||||
bne .1
|
|
||||||
inc
|
|
||||||
inc .1+2
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
.2 iny Add one for ending 0
|
|
||||||
bne .3
|
|
||||||
inc
|
|
||||||
|
|
||||||
.3 jsr K.GetMem
|
|
||||||
bcs .9
|
|
||||||
>STYA .5+1
|
|
||||||
|
|
||||||
phy
|
|
||||||
pha
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
|
|
||||||
.4 lda $ffff,y
|
|
||||||
.5 sta $ffff,y
|
|
||||||
beq .8
|
|
||||||
iny
|
|
||||||
bne .4
|
|
||||||
|
|
||||||
inc .4+2
|
|
||||||
inc .5+2
|
|
||||||
bne .4
|
|
||||||
|
|
||||||
.8 pla
|
|
||||||
ply
|
|
||||||
* clc
|
|
||||||
.9 rts
|
|
||||||
*/--------------------------------------
|
|
||||||
* # SListGetByID
|
* # SListGetByID
|
||||||
* PUSHB = hSList
|
* PUSHB = hSList
|
||||||
* PUSHW = KeyID
|
* PUSHW = KeyID
|
||||||
@ -743,6 +695,17 @@ MEM.NextCharPtr1
|
|||||||
MEM.GetCharPtr1.8
|
MEM.GetCharPtr1.8
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
MEM.AddYp1ToPtr1
|
||||||
|
sec
|
||||||
|
.HS 90 BCC
|
||||||
|
MEM.AddYToPtr1 clc
|
||||||
|
tya
|
||||||
|
adc ZPPtr1
|
||||||
|
sta ZPPtr1
|
||||||
|
bcc .8
|
||||||
|
inc ZPPtr1+1
|
||||||
|
.8 rts
|
||||||
|
*--------------------------------------
|
||||||
MEM.PutCharPtr2 sta (ZPPtr2)
|
MEM.PutCharPtr2 sta (ZPPtr2)
|
||||||
inc ZPPtr2
|
inc ZPPtr2
|
||||||
bne .8
|
bne .8
|
||||||
|
@ -32,7 +32,7 @@ K.ExecL sty .1+1
|
|||||||
jsr K.Args2ArgV
|
jsr K.Args2ArgV
|
||||||
|
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr PS.Exec
|
jsr PS.Exec
|
||||||
|
|
||||||
.9 php
|
.9 php
|
||||||
@ -85,7 +85,7 @@ PS.Exec jsr PS.CreateChild A=PID,Child S.PS at ZPPtr3,PS.Load.hMem
|
|||||||
* out :
|
* out :
|
||||||
* A = PSID
|
* A = PSID
|
||||||
* we cannot use ZPPtrs1 & 2
|
* we cannot use ZPPtrs1 & 2
|
||||||
* because of calling K.NewStr & PS.DupEnv
|
* because of calling K.StrDup & PS.DupEnv
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PS.CreateChild ldx CORE.PSCount
|
PS.CreateChild ldx CORE.PSCount
|
||||||
beq .3
|
beq .3
|
||||||
@ -140,7 +140,7 @@ PS.CreateChild ldx CORE.PSCount
|
|||||||
ldy #S.PS.hPREFIX copy hPREFIX...
|
ldy #S.PS.hPREFIX copy hPREFIX...
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
jsr K.GetMemPtr
|
jsr K.GetMemPtr
|
||||||
jsr K.NewStr
|
>SYSCALL StrDup
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr PS.SetMemOwner Set Ownership
|
jsr PS.SetMemOwner Set Ownership
|
||||||
@ -389,6 +389,33 @@ PS.Load.HEADER .AZ "#!/"
|
|||||||
PS.Load.ArgSize .BS 2
|
PS.Load.ArgSize .BS 2
|
||||||
PS.Load.hMem .BS 1
|
PS.Load.hMem .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
* PS.DupEnv
|
||||||
|
* In:
|
||||||
|
* A = ENV hMem To Duplicate
|
||||||
|
* Out:
|
||||||
|
* A = hMem to new ENV
|
||||||
|
* X = Count
|
||||||
|
*--------------------------------------
|
||||||
|
PS.DupEnv jsr K.GetMemPtr
|
||||||
|
>STYA ZPPtr1
|
||||||
|
|
||||||
|
>LDYAI K.ENV.SIZE
|
||||||
|
|
||||||
|
jsr K.GetMem
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>STYA ZPPtr2 Target Buffer
|
||||||
|
phx save hMem
|
||||||
|
|
||||||
|
jsr PS.SetMemOwner Set Ownership
|
||||||
|
|
||||||
|
jsr PS.AddPtr1ToStrVUntil0
|
||||||
|
|
||||||
|
pla hMem
|
||||||
|
|
||||||
|
clc
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
* hBIN + PS.ArgV -> #S.PS.hARGV
|
* hBIN + PS.ArgV -> #S.PS.hARGV
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PS.AddArgV stz PS.Load.ArgSize
|
PS.AddArgV stz PS.Load.ArgSize
|
||||||
@ -427,7 +454,7 @@ PS.AddArgV stz PS.Load.ArgSize
|
|||||||
|
|
||||||
inc PS.Load.ArgSize+1
|
inc PS.Load.ArgSize+1
|
||||||
|
|
||||||
.3 jsr PS.AddYp1ToPtr1
|
.3 jsr MEM.AddYp1ToPtr1
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.4 txa
|
.4 txa
|
||||||
@ -440,7 +467,7 @@ PS.AddArgV stz PS.Load.ArgSize
|
|||||||
inc
|
inc
|
||||||
|
|
||||||
.5 jsr K.GetMem
|
.5 jsr K.GetMem
|
||||||
bcs PS.LoadGetHeader.RTS
|
bcs PS.AddPtr1ToStrV.8
|
||||||
|
|
||||||
>STYA ZPPtr2 Target Buffer
|
>STYA ZPPtr2 Target Buffer
|
||||||
txa
|
txa
|
||||||
@ -456,48 +483,14 @@ PS.AddArgV stz PS.Load.ArgSize
|
|||||||
|
|
||||||
.6 >LDYA PS.ArgV
|
.6 >LDYA PS.ArgV
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
|
||||||
.7 lda (ZPPtr1)
|
|
||||||
sta (ZPPtr2)
|
|
||||||
beq .8 Ending \0
|
|
||||||
|
|
||||||
jsr PS.AddPtr1ToStrV
|
|
||||||
bra .7
|
|
||||||
|
|
||||||
.8 clc
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* PS.DupEnv
|
PS.AddPtr1ToStrVUntil0
|
||||||
* In:
|
|
||||||
* A = ENV hMem To Duplicate
|
|
||||||
* Out:
|
|
||||||
* A = hMem to new ENV
|
|
||||||
* X = Count
|
|
||||||
*--------------------------------------
|
|
||||||
PS.DupEnv jsr K.GetMemPtr
|
|
||||||
>STYA ZPPtr1
|
|
||||||
|
|
||||||
>LDYAI K.ENV.SIZE
|
|
||||||
|
|
||||||
jsr K.GetMem
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>STYA ZPPtr2 Target Buffer
|
|
||||||
phx save hMem
|
|
||||||
|
|
||||||
jsr PS.SetMemOwner Set Ownership
|
|
||||||
|
|
||||||
.1 lda (ZPPtr1)
|
.1 lda (ZPPtr1)
|
||||||
sta (ZPPtr2)
|
sta (ZPPtr2)
|
||||||
beq .8 Ending \0
|
beq PS.AddPtr1ToStrV.8 Ending \0
|
||||||
|
|
||||||
jsr PS.AddPtr1ToStrV
|
jsr PS.AddPtr1ToStrV
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.8 pla hMem
|
|
||||||
|
|
||||||
clc
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PS.AddPtr1ToStrV
|
PS.AddPtr1ToStrV
|
||||||
ldy #$ff
|
ldy #$ff
|
||||||
@ -507,26 +500,17 @@ PS.AddPtr1ToStrV
|
|||||||
sta (ZPPtr2),y
|
sta (ZPPtr2),y
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
jsr PS.AddYp1ToPtr1
|
jsr MEM.AddYp1ToPtr1
|
||||||
|
|
||||||
tya
|
tya
|
||||||
sec
|
sec
|
||||||
adc ZPPtr2
|
adc ZPPtr2
|
||||||
sta ZPPtr2
|
sta ZPPtr2
|
||||||
bcc .8
|
bcc PS.AddPtr1ToStrV.8
|
||||||
inc ZPPtr2+1
|
inc ZPPtr2+1
|
||||||
|
|
||||||
.8 rts
|
PS.AddPtr1ToStrV.8
|
||||||
*--------------------------------------
|
rts
|
||||||
PS.AddYp1ToPtr1 tya
|
|
||||||
sec
|
|
||||||
adc ZPPtr1
|
|
||||||
sta ZPPtr1
|
|
||||||
bcc .8
|
|
||||||
|
|
||||||
inc ZPPtr1+1
|
|
||||||
|
|
||||||
.8 rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PS.SetMemOwner lda CORE.LastPSID
|
PS.SetMemOwner lda CORE.LastPSID
|
||||||
ldy #S.MEM.OWNERPID
|
ldy #S.MEM.OWNERPID
|
||||||
|
@ -275,7 +275,7 @@ STAT.NewhNodeYAX
|
|||||||
.2 stx .3+1 Store hFILE
|
.2 stx .3+1 Store hFILE
|
||||||
|
|
||||||
pla
|
pla
|
||||||
jsr K.NewStr
|
>SYSCALL StrDup
|
||||||
bcs .9
|
bcs .9
|
||||||
txa
|
txa
|
||||||
|
|
||||||
|
@ -709,17 +709,17 @@ PrintF.Cnt .BS 2
|
|||||||
K.FGetS jsr PFT.CheckNodeA
|
K.FGetS jsr PFT.CheckNodeA
|
||||||
bcs .90
|
bcs .90
|
||||||
|
|
||||||
>PULLW ZPPtr1 s
|
jsr MEM.SPtr1PPtr2
|
||||||
|
|
||||||
>PULLA
|
lda ZPPtr1
|
||||||
sec
|
sec
|
||||||
sbc #2
|
sbc #2
|
||||||
eor #$ff
|
eor #$ff
|
||||||
sta ZPPtr2 !n
|
sta ZPPtr1 !n
|
||||||
>PULLA
|
lda ZPPtr1+1
|
||||||
sbc #0
|
sbc #0
|
||||||
eor #$ff
|
eor #$ff
|
||||||
sta ZPPtr2+1 !n
|
sta ZPPtr1+1 !n
|
||||||
|
|
||||||
jsr K.GetC.I
|
jsr K.GetC.I
|
||||||
bcs .9
|
bcs .9
|
||||||
@ -728,14 +728,9 @@ K.FGetS jsr PFT.CheckNodeA
|
|||||||
cmp #C.CR
|
cmp #C.CR
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
sta (ZPPtr1)
|
jsr MEM.PutCharPtr2
|
||||||
inc ZPPtr1
|
|
||||||
bne .2
|
|
||||||
inc ZPPtr1+1
|
|
||||||
|
|
||||||
.2 inc ZPPtr2
|
jsr MEM.NextCharPtr1
|
||||||
bne .3
|
|
||||||
inc ZPPtr2+1
|
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
.3 jsr K.GetC.I
|
.3 jsr K.GetC.I
|
||||||
@ -745,7 +740,7 @@ K.FGetS jsr PFT.CheckNodeA
|
|||||||
|
|
||||||
.9 pha
|
.9 pha
|
||||||
lda #0
|
lda #0
|
||||||
sta (ZPPtr1)
|
sta (ZPPtr2)
|
||||||
pla
|
pla
|
||||||
.99 rts
|
.99 rts
|
||||||
|
|
||||||
@ -819,14 +814,10 @@ K.SScanF >STYA ZPPtr2 String to Scan
|
|||||||
stz .5+1 reset LStack Ptr
|
stz .5+1 reset LStack Ptr
|
||||||
stz .80+1 rest Arg processed
|
stz .80+1 rest Arg processed
|
||||||
|
|
||||||
.1 lda (ZPPtr1) End Of format?
|
.1 jsr MEM.GetCharPtr1 End Of format?
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
inc ZPPtr1
|
cmp #'%' Escape ?
|
||||||
bne .11
|
|
||||||
inc ZPPtr1+1
|
|
||||||
|
|
||||||
.11 cmp #'%' Escape ?
|
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
cmp #' ' Space ?
|
cmp #' ' Space ?
|
||||||
@ -848,14 +839,10 @@ K.SScanF >STYA ZPPtr2 String to Scan
|
|||||||
beq .12
|
beq .12
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
.2 lda (ZPPtr1) Get specifier after %
|
.2 jsr MEM.GetCharPtr1 Get specifier after %
|
||||||
beq .9 unexpected End of format after "%" ?
|
beq .9 unexpected End of format after "%" ?
|
||||||
|
|
||||||
inc ZPPtr1
|
ldx #K.SScanFJMP-K.SScanFTBL-2
|
||||||
bne .21
|
|
||||||
inc ZPPtr1+1
|
|
||||||
|
|
||||||
.21 ldx #K.SScanFJMP-K.SScanFTBL-2
|
|
||||||
|
|
||||||
.3 cmp K.SScanFTBL,x
|
.3 cmp K.SScanFTBL,x
|
||||||
beq .4
|
beq .4
|
||||||
@ -1311,7 +1298,7 @@ STDIO.NewHFileYAX
|
|||||||
.2 stx .3+1 Store hFILE
|
.2 stx .3+1 Store hFILE
|
||||||
|
|
||||||
pla
|
pla
|
||||||
jsr K.NewStr
|
>SYSCALL StrDup
|
||||||
bcs .9
|
bcs .9
|
||||||
txa
|
txa
|
||||||
|
|
||||||
|
@ -411,7 +411,8 @@ K.realpath.I clc
|
|||||||
.89 lda #$ff SELF MODIFIED
|
.89 lda #$ff SELF MODIFIED
|
||||||
bpl .98
|
bpl .98
|
||||||
>LDYAI K.Buf256
|
>LDYAI K.Buf256
|
||||||
jmp K.NewStr
|
>SYSCALL StrDup
|
||||||
|
rts
|
||||||
|
|
||||||
.90 lda #E.BADPATH
|
.90 lda #E.BADPATH
|
||||||
sec
|
sec
|
||||||
|
@ -62,14 +62,9 @@ K.StrCpy clc
|
|||||||
|
|
||||||
bcc .2
|
bcc .2
|
||||||
|
|
||||||
.1 lda (ZPPtr1)
|
.1 jsr MEM.GetCharPtr1
|
||||||
beq .2
|
|
||||||
|
|
||||||
inc ZPPtr1
|
|
||||||
bne .1
|
bne .1
|
||||||
inc ZPPtr1+1
|
|
||||||
bra .1
|
|
||||||
|
|
||||||
.2 ldy #0
|
.2 ldy #0
|
||||||
|
|
||||||
.3 lda (ZPPtr2),y
|
.3 lda (ZPPtr2),y
|
||||||
@ -83,7 +78,59 @@ K.StrCpy clc
|
|||||||
|
|
||||||
.8 ply
|
.8 ply
|
||||||
pla
|
pla
|
||||||
rts
|
K.StrCpy.RTS rts
|
||||||
|
*/--------------------------------------
|
||||||
|
* # StrDup
|
||||||
|
* Create a new copy of this C-String
|
||||||
|
* Y,A = Ptr to source C-String
|
||||||
|
* ## RETURN VALUE
|
||||||
|
* CC : success
|
||||||
|
* Y,A = PTR to String
|
||||||
|
* X = hMem (PSTR)
|
||||||
|
* CS : error
|
||||||
|
* A = SYS error code
|
||||||
|
*\--------------------------------------
|
||||||
|
K.StrDup >STYA .1+1
|
||||||
|
>STYA .4+1
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
lda #0
|
||||||
|
|
||||||
|
.1 ldx $ffff,y
|
||||||
|
beq .2
|
||||||
|
iny
|
||||||
|
bne .1
|
||||||
|
inc
|
||||||
|
inc .1+2
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
.2 iny Add one for ending 0
|
||||||
|
bne .3
|
||||||
|
inc
|
||||||
|
|
||||||
|
.3 jsr K.GetMem
|
||||||
|
bcs K.StrCpy.RTS
|
||||||
|
>STYA .5+1
|
||||||
|
|
||||||
|
phy
|
||||||
|
pha
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.4 lda $ffff,y
|
||||||
|
.5 sta $ffff,y
|
||||||
|
beq K.StrDup.8
|
||||||
|
iny
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
inc .4+2
|
||||||
|
inc .5+2
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
K.StrDup.8 pla
|
||||||
|
ply
|
||||||
|
* clc
|
||||||
|
rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # StrUpr/StrLwr
|
* # StrUpr/StrLwr
|
||||||
* Convert string to UPPERCASE/lowercase
|
* Convert string to UPPERCASE/lowercase
|
||||||
@ -104,13 +151,13 @@ K.StrUpr ldx #0
|
|||||||
K.StrLwr ldx #2
|
K.StrLwr ldx #2
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
|
||||||
pha save Y,A to restore them at exit
|
|
||||||
phy
|
phy
|
||||||
|
pha save Y,A to restore them at exit
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
.1 lda (ZPPtr1),y
|
.1 lda (ZPPtr1),y
|
||||||
beq .8
|
beq K.StrDup.8
|
||||||
|
|
||||||
cmp .9,x
|
cmp .9,x
|
||||||
bcc .2
|
bcc .2
|
||||||
@ -122,10 +169,6 @@ K.StrLwr ldx #2
|
|||||||
bne .1
|
bne .1
|
||||||
inc ZPPtr1+1
|
inc ZPPtr1+1
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.8 ply
|
|
||||||
pla
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.9 .AS "azAZ"
|
.9 .AS "azAZ"
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
|
@ -78,7 +78,7 @@ DRV.TERM.OPEN ldx #0 DEV.ID in A
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #MLI.E.OPEN
|
.9 lda #MLI.E.OPEN
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user