Kernel 0.93++

This commit is contained in:
Rémy GIBERT 2020-02-06 17:23:59 +01:00
parent bf1990479c
commit c29cb8be90
16 changed files with 348 additions and 437 deletions

View File

@ -133,19 +133,6 @@ Create a hDEV
Y,A = PTR to Expanded String
X = hMem to Expanded String (C-String)
# PutEnv
Change or add an environment variable, string is 'NAME=VALUE'
## C
`int putenv(char *string);`
## ASM
**In:**
`>PUSHW string`
`>SYSCALL putenv`
## RETURN VALUE
# SetEnv
Change or add an environment variable
@ -177,6 +164,19 @@ and returns a pointer to the corresponding value string.
CC : Y,A = PTR to VALUE (C-String)
CS : not found
# PutEnv
Change or add an environment variable, string is 'NAME=VALUE'
## C
`int putenv(char *string);`
## ASM
**In:**
`>PUSHW string`
`>SYSCALL putenv`
## RETURN VALUE
# UnsetEnv
Remove an environment variable
@ -357,15 +357,19 @@ Add Data to MD5 computation
## RETURN VALUE
# GetMem0
Y,A = Size Requested
# Realloc
## C
`void *realloc(short int hMem, int size);`
## ASM
`>PUSHB hMem`
`>PUSHW size`
`>SYSCALL realloc`
## RETURN VALUE
CC : success
YA = PTR to Mem (ZERO Initialised)
* X = hMem
CS :
A = EC
YA = ptr
X = hMem
# GetMem
Y,A = Size Requested
@ -1292,24 +1296,41 @@ CS : no match
CC, Y,A=0
CS, Y,A > 0 or < 0
# NewStrV
**In:**
A = Initial Size (Page)
# StrVShift
## ASM
`>PUSHB hSTRV`
`>PUSHB index`
`>SYSCALL StrVShift`
## RETURN VALUE
X = hStrV
Y,A = Ptr
# StrVGet
**In:**
A = hStrV
X = index
## ASM
`>PUSHB hSTRV`
`>PUSHB index`
`>PUSHW ptr`
`>SYSCALL StrVGet`
## RETURN VALUE
Y,A = Ptr
CC: Y,A = Ptr
CS: Y,A = NULL
# StrVAdd
## ASM
`>PUSHB hSTRV`
`>PUSHW str`
`>SYSCALL StrVAdd`
## RETURN VALUE
CC : str added to hSTRV
CS : hSTRV full
# StrVDup
**In:**
## ASM
Y,A = Src StrV
## RETURN VALUE
@ -1317,7 +1338,7 @@ CS : no match
A = Str Count
# Str2StrV
Expand String and convert to ArgV List
Expand String and convert to StrV List
## C
short int str2strv(char* args, char* argv[])

View File

@ -1,72 +0,0 @@
*** Auto generated by docgen.cmd ***
## Copyright
Copyright 2015 - 2020, Remy Gibert and the A2osX contributors.
## MD5
Return MD5 Hash for input String
# C
`void md5 (const char* str, char* digest);`
# ASM
`>PUSHW digest`
`>PUSHW str`
## RETURN VALUE
CC
## MD5Init
Initialize a MD5 computation
# C
`hMD5 md5init ();`
# ASM
`>LIBCALL hLIBCRYPT,LIBCRYPT.MD5Init`
## RETURN VALUE
A = hMem To S.MD5
## MD5Update
Add Data to MD5 computation
# C
`void md5update (hMD5 md5, char* data, int len);`
# ASM
`>PUSHW len`
`>PUSHW data`
`>LDA.G md5`
`>hLIBCRYPT,LIBCRYPT.MD5Update`
## RETURN VALUE
## MD5Finalize
# C
`void md5finalize (hMD5 md5, char* digest);`
# ASM
`>PUSHW digest`
`>LDA.G md5`
`>LIBCALL hLIBCRYPT,LIBCRYPT.MD5Finalize`
## RETURN VALUE
## License
A2osX is licensed under the GNU General Public License.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
The full A2osX license can be found **[Here](../LICENSE)**.
*** End of Auto generated file ***

Binary file not shown.

View File

@ -319,6 +319,7 @@ Ctrl.O ldy #FileY+1
sta (pData),y
>STZ.G FileX
>STA.G ScreenX
jmp SCRN.UpdateMainAndStatus
@ -345,9 +346,6 @@ Ctrl.P ldy #FileY+1
jsr BUF.GetLineAX A,X = FileY+PAGE
bcs .8
tya Y = line length
>STA.G FileX
ldy #FileY+1
pla
sta (pData),y
@ -365,6 +363,9 @@ Ctrl.P ldy #FileY+1
adc #0
sta (pData),y
>STZ.G FileX
>STA.G ScreenX
jmp SCRN.UpdateMainAndStatus
.8 pla

View File

@ -283,9 +283,12 @@ SCRN.UpdateCurrentLine
inx
.1 jsr BUF.GetLineAX
bcs SCRN.UpdateMain.9
phy
bcc .2
jsr SCRN.LineBufInitEdit
jmp SCRN.UpdateLineAtBufPtr.EOL
.2 phy
>LDA.G CurY
ply
*--------------------------------------

View File

@ -35,17 +35,8 @@ CMD.SHIFT lda (ZPArgVBufPtr)
CMD.SHIFT.1 inc
CMD.SHIFTA >SYSCALL ArgV
bcs .8
CMD.SHIFTA >SYSCALL Shift
jsr RemoveStrFromArgV
ldy #S.PS.ARGC
lda (pPS),y
dec
sta (pPS),y
.8 clc
CMD.SHIFTA.RTS rts
*--------------------------------------
CMD.PUSHD >LDA.G PUSHD.STACK
@ -133,7 +124,12 @@ CMD.CD.YA >SYSCALL realpath
bcs .19
>STYA ZPPtr2
jsr StrCpyPtr1Ptr2
ldy #$ff
.1 iny
lda (ZPPtr1),y
sta (ZPPtr2),y
bne .1
lda #'/'
sta (ZPPtr2),y

View File

@ -486,21 +486,6 @@ CheckSleep ldy #Sleep+3
ora (pData),y
rts
*--------------------------------------
RemoveStrFromArgV
>STYA ZPPtr1
>STYA ZPPtr2
jsr GetPtr1LenY
.2 jsr AddYp1Ptr1
jsr StrCpyPtr1Ptr2
tya
beq .8
jsr AddAp1Ptr2
bra .2
.8 rts
*--------------------------------------
GetPtr1NextChar lda (ZPPtr1)
beq IncPtr1.8
@ -518,31 +503,15 @@ GetPtr1LenY ldy #$ff
GetPtr1NextString
jsr GetPtr1LenY
*--------------------------------------
AddYp1Ptr1 tya
tya
AddAp1Ptr1 sec
.HS 90 BCC
AddAPtr1 clc
adc ZPPtr1
sta ZPPtr1
bcc .8
inc ZPPtr1+1
.8 rts
*--------------------------------------
AddAp1Ptr2 sec
adc ZPPtr2
sta ZPPtr2
bcc .8
inc ZPPtr2+1
.8 rts
*--------------------------------------
StrCpyPtr1Ptr2 ldy #$ff
.1 iny
lda (ZPPtr1),y
sta (ZPPtr2),y
bne .1
rts
*--------------------------------------
ToUpperCase cmp #'a'
bcc .8
cmp #'z'+1

View File

@ -267,7 +267,7 @@ SYS.LoadTxtFile .EQ $AA
SYS.GetMemStat .EQ $AC
* .EQ $AE
* .EQ $B0
SYS.Shift .EQ $B0
SYS.ArgV .EQ $B2
SYS.Expand .EQ $B4
SYS.FileSearch .EQ $B6

View File

@ -1,9 +1,52 @@
NEW
AUTO 3,1
*/--------------------------------------
* # Shift
* ## ASM
* A = argument index.
* ## RETURN VALUE
* CC : success
* Y,A = PTR To Arg[A]
* CS : Out Of Bound
*\--------------------------------------
K.Shift jsr K.ArgV
bcs .9
>STYA ZPPtr1
* >STYA ZPPtr2 already set from ArgV
ldy #$ff
.1 iny
lda (ZPPtr1),y
bne .1
.2 jsr SHARED.AddYp1ToPtr1
ldy #$ff
.3 iny
lda (ZPPtr1),y
sta (ZPPtr2),y
bne .3
tya
beq .8
jsr SHARED.AddYp1ToPtr2
bra .2
.8 ldy #S.PS.ARGC
lda (pPS),y
dec
sta (pPS),y
clc
rts
.9 rts
*/--------------------------------------
* # ArgV
* ## ASM
* **In:**
* A = argument index.
* ## RETURN VALUE
* CC : success

View File

@ -84,7 +84,11 @@ K.Expand jsr K.strdup
lda /K.Buf256
>STYA FORPNT
jsr K.GetEnv.I
ldy #S.PS.hENV
lda (pPs),y
ldx #SYS.GetEnv
jsr K.SYSCALL.JMPX
bcs .70
ldx ENV.BufLen
@ -318,42 +322,6 @@ ENV.GetP3LenY ldy #$ff
bne .1
rts
*/--------------------------------------
* # PutEnv
* Change or add an environment variable, string is 'NAME=VALUE'
* ## C
* `int putenv(char *string);`
* ## ASM
* **In:**
* `>PUSHW string`
* `>SYSCALL putenv`
* ## RETURN VALUE
*\--------------------------------------
K.PutEnv >PULLW TXTPTR NAME=VALUE
ldy #$ff
.1 iny
lda (TXTPTR),y NAME=
beq .9
cmp #'='
bne .1
tya
sec skip =
adc TXTPTR
sta FORPNT
lda #0
adc TXTPTR+1
sta FORPNT+1
bra K.SetEnv.I
.9 lda #E.SYN
sec
rts
*/--------------------------------------
* # SetEnv
* Change or add an environment variable
* ## C
@ -365,18 +333,14 @@ K.PutEnv >PULLW TXTPTR NAME=VALUE
* `>SYSCALL setenv`
* ## RETURN VALUE
*\--------------------------------------
K.SetEnv >PULLW FORPNT value
>PULLW TXTPTR name
K.SetEnv
* >PULLW FORPNT value
* >PULLW TXTPTR name
K.SetEnv.I ldy #S.PS.hENV
lda (pPs),y
sta SETREADAUX
sta SETWRITEAUX
jsr ENVX.SetEnv
sta CLRREADAUX
sta CLRWRITEAUX
rts
* ldy #S.PS.hENV
* lda (pPs),y
* jmp K.SYSCALL.JMPX
*/--------------------------------------
* # GetEnv
* searches the environment list to find the environment variable name,
@ -393,17 +357,24 @@ K.SetEnv.I ldy #S.PS.hENV
* CS : not found
*\--------------------------------------
K.GetEnv >PULLW FORPNT value
>PULLW TXTPTR name
* >PULLW TXTPTR name
*
* ldy #S.PS.hENV
* lda (pPs),y
K.GetEnv.I ldy #S.PS.hENV
lda (pPs),y
sta SETREADAUX
sta SETWRITEAUX
jsr ENVX.GetEnv
sta CLRREADAUX
sta CLRWRITEAUX
rts
* jmp K.SYSCALL.JMPX
*/--------------------------------------
* # PutEnv
* Change or add an environment variable, string is 'NAME=VALUE'
* ## C
* `int putenv(char *string);`
* ## ASM
* **In:**
* `>PUSHW string`
* `>SYSCALL putenv`
* ## RETURN VALUE
*\--------------------------------------
K.PutEnv >PULLW TXTPTR NAME=VALUE
*/--------------------------------------
* # UnsetEnv
* Remove an environment variable
@ -415,17 +386,13 @@ K.GetEnv.I ldy #S.PS.hENV
* `>SYSCALL unsetenv`
* ## RETURN VALUE
*\--------------------------------------
K.UnsetEnv >PULLW TXTPTR name
K.UnsetEnv
* >PULLW TXTPTR name
ldy #S.PS.hENV
lda (pPs),y
sta SETREADAUX
sta SETWRITEAUX
jsr ENVX.UnsetEnv
sta CLRREADAUX
sta CLRWRITEAUX
rts
jmp K.SYSCALL.JMPX
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.ENV

View File

@ -3,11 +3,17 @@ NEW
*--------------------------------------
ENVX.hEnv .BS 1
*--------------------------------------
ENVX.PutEnv ldy #$ff
ENVX.PutEnv.9 lda #E.SYN
sec
rts
*--------------------------------------
ENVX.PutEnv tax save hEnv
ldy #$ff
.1 iny
jsr SHARED.TXTPTR.GetY NAME=
beq .9
beq ENVX.PutEnv.9
cmp #'='
bne .1
@ -21,11 +27,7 @@ ENVX.PutEnv ldy #$ff
adc TXTPTR+1
sta FORPNT+1
bra ENVX.SetEnv
.9 lda #E.SYN
sec
rts
txa get back hEnv
*--------------------------------------
ENVX.SetEnv jsr ENVX.UnsetEnv

View File

@ -106,7 +106,7 @@ K.SYSCALL .DA 0 $00
.DA K.GetMemStat
.DA 0
.DA 0 $B0
.DA K.Shift $B0
.DA K.ArgV
.DA K.Expand
.DA K.FileSearch
@ -351,17 +351,17 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
.DA #$80
.DA #RRAMWRAMBNK2
.DA #$80
.DA #0 $B8 : ENV
.DA #0
.DA #0
.DA #0
.DA #0
.DA #0
.DA #0
.DA #0
.DA #0
.DA #0 $C0
.DA #0 $C0 : TIME
.DA #$80
.DA #0
.DA #$80
@ -482,10 +482,18 @@ K.SYSCALL.JMPX sta SETREADAUX
sta CLRWRITEAUX
rts
.1 jmp (.2-SYS.StrFTime,x)
.2 .DA TIMEX.StrFTime
.1 jmp (.2-SYS.PutEnv,x)
.2 .DA ENVX.PutEnv
.DA ENVX.SetEnv
.DA ENVX.GetEnv
.DA ENVX.UnsetEnv
.DA 0 Time
.DA TIMEX.StrFTime
.DA TIMEX.PTime2Time
.DA TIMEX.CTime2Time
.DA MD5X.MD5
.DA MD5X.Init
.DA MD5X.Update

View File

@ -226,7 +226,8 @@ PS.Load ldy #$ff
.6 lda K.S.STAT+S.STAT.P.TYPE
cmp #S.FI.T.BIN
beq PS.LoadBIN
bne .7
jmp PS.LoadBIN
.7 cmp #S.FI.T.TXT
beq PS.Load.SCRIPT
@ -251,7 +252,7 @@ PS.Load.SCRIPT ldx #$ff
>PUSHWI PS.Load.ROOT
>PUSHWI K.Buf256 K.Buf256 = "$ROOT"
jsr K.GetEnv
>SYSCALL2 GetEnv
bcs PS.Load.IPATH
ldx #$ff
@ -795,7 +796,7 @@ ENV.Search.PATH ldx #4
>PUSHW ENV.VARS,x
>PUSHWI 0 allocate...
jsr K.GetEnv get value for Search Path
>SYSCALL2 GetEnv get value for Search Path
bcs K.FileSearch.RTS
>STYA ENV.Search.2+1

View File

@ -5,57 +5,43 @@ DRV.TERM cld
jmp (.1,x)
.1 .DA DRV.TERM.STATUS.LC
.1 .DA TERM.STATUS
.DA A2osX.BADCALL
.DA A2osX.BADCALL
.DA A2osX.BADCALL
.DA DRV.TERM.CONTROL.LC
.DA TERM.CONTROL
.DA A2osX.BADCALL
.DA DRV.TERM.OPEN.LC
.DA DRV.TERM.CLOSE.LC
.DA DRV.TERM.READ.LC
.DA DRV.TERM.WRITE.LC
.DA TERM.OPEN
.DA TERM.CLOSE
.DA TERM.READ
.DA TERM.WRITE
*--------------------------------------
DRV.TERM.STATUS.LC
jsr DRV.TERM.GetIOCTLBufCntDCB
TERM.STATUS jsr TERM.GetIOCTLBufCntDCB
ldy #S.IOCTL.STATCODE
lda (ZPIOCTL),y
bra DRV.TERM.TOAUX
bra TERM.TOAUX
DRV.TERM.CONTROL.LC
DRV.TERM.OPEN.LC
DRV.TERM.CLOSE.LC
pha DEV.ID in A for OPEN
jsr DRV.TERM.GetDCB
TERM.CONTROL
TERM.OPEN
TERM.CLOSE pha DEV.ID in A for OPEN
jsr TERM.GetDCB
pla
bra DRV.TERM.TOAUX
bra TERM.TOAUX
DRV.TERM.READ.LC
DRV.TERM.WRITE.LC
jsr DRV.TERM.GetIOCTLBufCntDCB
TERM.READ
TERM.WRITE jsr TERM.GetIOCTLBufCntDCB
*--------------------------------------
DRV.TERM.TOAUX sta SETREADAUX
TERM.TOAUX sta SETREADAUX
sta SETWRITEAUX
jsr .1
sta CLRREADAUX
sta CLRWRITEAUX
rts
.1 jmp (.2,x)
.2 .DA DRV.TERM.STATUS
.DA A2osX.BADCALL
.DA A2osX.BADCALL
.DA A2osX.BADCALL
.DA DRV.TERM.CONTROL
.DA A2osX.BADCALL
.DA DRV.TERM.OPEN
.DA DRV.TERM.CLOSE
.DA DRV.TERM.READ
.DA DRV.TERM.WRITE
.1 jmp (TERMX,x)
*--------------------------------------
DRV.TERM.GetIOCTLBufCntDCB
TERM.GetIOCTLBufCntDCB
>STYA ZPIOCTL
ldy #S.IOCTL.BUFPTR
@ -74,7 +60,7 @@ DRV.TERM.GetIOCTLBufCntDCB
eor #$ff
sta ZPCount+1
*--------------------------------------
DRV.TERM.GetDCB ldy #S.FD.DEV.DCBPTR
TERM.GetDCB ldy #S.FD.DEV.DCBPTR
lda (pFD),y
sta ZPDCBPtr
@ -100,14 +86,12 @@ DRV.TERM.GetDCB ldy #S.FD.DEV.DCBPTR
rts
*--------------------------------------
DRV.TERM.GetBufByte
sta CLRREADAUX
TERM.GetBufByte sta CLRREADAUX
lda (ZPBufPtr)
sta SETREADAUX
rts
*--------------------------------------
DRV.TERM.GetDevName
sta CLRREADAUX
TERM.GetDevName sta CLRREADAUX
lda (ZPDCBPtr) #S.DCB.TTY.DEVID
tax

View File

@ -26,7 +26,18 @@ CsiParamCnt .BS 1
CsiParams .BS 4
.ED
*--------------------------------------
DRV.TERM.STATUS beq .1
TERMX .DA TERMX.STATUS
.DA A2osX.BADCALL
.DA A2osX.BADCALL
.DA A2osX.BADCALL
.DA TERMX.CONTROL
.DA A2osX.BADCALL
.DA TERMX.OPEN
.DA TERMX.CLOSE
.DA TERMX.READ
.DA TERMX.WRITE
*--------------------------------------
TERMX.STATUS beq .1
cmp #S.IOCTL.STATCODE.GETDIB
bne .3
@ -37,7 +48,7 @@ DRV.TERM.STATUS beq .1
sta CLRWRITEAUX
.2 lda DRV.TERM.DIB,y
.2 lda TERMX.DIB,y
sta (ZPBufPtr),y
dey
bne .2
@ -51,10 +62,10 @@ DRV.TERM.STATUS beq .1
.3 cmp #S.IOCTL.STATCODE.EOF
bne .9
jsr DRV.TERM.ISOPENED
beq DRV.TERM.OPEN.E
jsr TERMX.ISOPENED
beq TERMX.OPEN.E
jsr DRV.TERM.CURBLNK
jsr TERMX.CURBLNK
ldy #S.DCB.TTY.OUTTAIL
lda (ZPDCBPtr),y
iny
@ -79,15 +90,15 @@ DRV.TERM.STATUS beq .1
.9 lda #MLI.E.BADCTL
.HS 2C BIT ABS
DRV.TERM.OPEN.E lda #MLI.E.OPEN
TERMX.OPEN.E lda #MLI.E.OPEN
sec
rts
*--------------------------------------
DRV.TERM.OPEN tax
jsr DRV.TERM.ISOPENED
bne DRV.TERM.OPEN.E
TERMX.OPEN tax
jsr TERMX.ISOPENED
bne TERMX.OPEN.E
DRV.TERM.OPEN.1 txa
TERMX.OPEN.1 txa
ldx #0
.2 ldy DevMgr.SCRNDEVS,x
@ -108,17 +119,16 @@ DRV.TERM.OPEN.1 txa
ldy #S.DCB.TTY.STATUS
lda (ZPDCBPtr),y
ora #S.DIB.S.OPENED
ora DRV.TERM.DIB+S.DIB.S
ora TERMX.DIB+S.DIB.S
sta (ZPDCBPtr),y
jsr RESET
*--------------------------------------
DRV.TERM.CONTROL
lda (ZPDCBPtr) #S.DCB.TTY.DEVID
TERMX.CONTROL lda (ZPDCBPtr) #S.DCB.TTY.DEVID
sta DevMgr.ASCREEN
sta SETTEXT
jsr DRV.TERM.SCRCPY
jsr TERMX.SCRCPY
lda #0
ldy #S.DCB.TTY.bCURON
@ -129,10 +139,10 @@ DRV.TERM.CONTROL
clc
rts
*--------------------------------------
DRV.TERM.CLOSE jsr DRV.TERM.ISOPENED
TERMX.CLOSE jsr TERMX.ISOPENED
beq .9
lda DRV.TERM.DIB+S.DIB.S
lda TERMX.DIB+S.DIB.S
sta (ZPDCBPtr),y
ldx #0
@ -152,24 +162,23 @@ DRV.TERM.CLOSE jsr DRV.TERM.ISOPENED
sec
rts
*--------------------------------------
DRV.TERM.ISOPENED
ldy #S.DCB.TTY.STATUS
TERMX.ISOPENED ldy #S.DCB.TTY.STATUS
lda (ZPDCBPtr),y
bit #S.DIB.S.OPENED
rts
*--------------------------------------
DRV.TERM.READ bit bActive is screen active?
TERMX.READ bit bActive is screen active?
bpl .6 no....go check flush...
jsr DRV.TERM.CURBLNK
jsr TERMX.CURBLNK
lda OPENAPPLE
bpl .1
jsr DRV.TERM.Title.ON
jsr TERMX.Title.ON
bra .6 Open apple key, not for us...
.1 jsr DRV.TERM.Title.OFF
.1 jsr TERMX.Title.OFF
lda KBD
sta A2osX.RANDOM16
@ -249,7 +258,7 @@ DRV.TERM.READ bit bActive is screen active?
* sec
rts
*--------------------------------------
DRV.TERM.WRITE jsr DRV.TERM.CUROFF
TERMX.WRITE jsr TERMX.CUROFF
.1 inc ZPCount
bne .2
@ -269,26 +278,26 @@ DRV.TERM.WRITE jsr DRV.TERM.CUROFF
.3 jmp (.4,x)
.4 .DA DRV.TERM.COUT
.DA DRV.TERM.ESC
.DA DRV.TERM.CSI
.DA DRV.TERM.IAC
.DA DRV.TERM.G0
.DA DRV.TERM.G1
.4 .DA TERMX.COUT
.DA TERMX.ESC
.DA TERMX.CSI
.DA TERMX.IAC
.DA TERMX.G0
.DA TERMX.G1
.8 clc
rts
*--------------------------------------
DRV.TERM.COUT jsr DRV.TERM.GetBufByte
TERMX.COUT jsr TERM.GetBufByte
cmp #IAC
bne .1
lda #S.DCB.TTY.MODE.IAC
jmp DRV.TERM.SETMODE
jmp TERMX.SETMODE
.1 cmp #C.DEL
beq DRV.TERM.COUT.DEL
beq TERMX.COUT.DEL
cmp #C.SPACE
bcs .8
@ -310,45 +319,43 @@ DRV.TERM.COUT jsr DRV.TERM.GetBufByte
jmp (.4,x)
.4 .DA ENQ
.DA DRV.TERM.COUT.BS
.DA DRV.TERM.COUT.LF
.DA DRV.TERM.COUT.FF
.DA DRV.TERM.COUT.CR
.DA DRV.TERM.COUT.SO
.DA DRV.TERM.COUT.SI
.DA DRV.TERM.COUT.FS
.DA DRV.TERM.COUT.ESC
.DA TERMX.COUT.BS
.DA TERMX.COUT.LF
.DA TERMX.COUT.FF
.DA TERMX.COUT.CR
.DA TERMX.COUT.SO
.DA TERMX.COUT.SI
.DA TERMX.COUT.FS
.DA TERMX.COUT.ESC
*--------------------------------------
.8 jsr SetCharAtCurPos
*--------------------------------------
DRV.TERM.COUT.FS
ldy #S.DCB.TTY.CH
TERMX.COUT.FS ldy #S.DCB.TTY.CH
lda (ZPDCBPtr),y
inc
sta (ZPDCBPtr),y
cmp #80
bcc DRV.TERM.COUT.BS.8
bcc TERMX.COUT.BS.8
ldy #S.DCB.TTY.bLINEWRAP
lda (ZPDCBPtr),y
bpl DRV.TERM.COUT.BS.8
bpl TERMX.COUT.BS.8
jsr DRV.TERM.COUT.CR
jsr TERMX.COUT.CR
jmp DRV.TERM.COUT.LF.1
jmp TERMX.COUT.LF.1
*--------------------------------------
DRV.TERM.COUT.BS
ldy #S.DCB.TTY.CH
TERMX.COUT.BS ldy #S.DCB.TTY.CH
lda (ZPDCBPtr),y
beq DRV.TERM.COUT.BS.1
beq TERMX.COUT.BS.1
dec
sta (ZPDCBPtr),y
DRV.TERM.COUT.BS.8
clc
TERMX.COUT.BS.8 clc
rts
DRV.TERM.COUT.BS.1
ldy #S.DCB.TTY.CV
TERMX.COUT.BS.1 ldy #S.DCB.TTY.CV
lda (ZPDCBPtr),y
beq .2
@ -362,8 +369,7 @@ DRV.TERM.COUT.BS.1
.2 clc
rts
*--------------------------------------
DRV.TERM.COUT.DEL
ldy #S.DCB.TTY.CH
TERMX.COUT.DEL ldy #S.DCB.TTY.CH
lda (ZPDCBPtr),y
beq .1
@ -373,7 +379,7 @@ DRV.TERM.COUT.DEL
.1 ldy #S.DCB.TTY.CV
lda (ZPDCBPtr),y
beq DRV.TERM.COUT.BS.8
beq TERMX.COUT.BS.8
dec
sta (ZPDCBPtr),y
@ -383,34 +389,29 @@ DRV.TERM.COUT.DEL
.3 lda #C.SPACE
jmp SetCharAtCurPos
*--------------------------------------
DRV.TERM.COUT.FF
jsr HOME
jmp DRV.TERM.CLRSCR
TERMX.COUT.FF jsr HOME
jmp TERMX.CLRSCR
*--------------------------------------
DRV.TERM.COUT.CR
lda #0
TERMX.COUT.CR lda #0
ldy #S.DCB.TTY.CH
sta (ZPDCBPtr),y
clc
rts
*--------------------------------------
DRV.TERM.COUT.SO
sec
TERMX.COUT.SO sec
.HS 90 BCC
*--------------------------------------
DRV.TERM.COUT.SI
clc
TERMX.COUT.SI clc
ldy #S.DCB.TTY.bG0G1
ror
sta (ZPDCBPtr),y
clc
rts
*--------------------------------------
DRV.TERM.COUT.ESC
lda #S.DCB.TTY.MODE.ESC
bra DRV.TERM.SETMODE
TERMX.COUT.ESC lda #S.DCB.TTY.MODE.ESC
bra TERMX.SETMODE
*--------------------------------------
DRV.TERM.ESC jsr DRV.TERM.GetBufByte y = #S.DCB.TTY.MODE
TERMX.ESC jsr TERM.GetBufByte y = #S.DCB.TTY.MODE
ldx #EscCodes.Cnt-1
.2 cmp EscCodes,x
@ -418,13 +419,13 @@ DRV.TERM.ESC jsr DRV.TERM.GetBufByte y = #S.DCB.TTY.MODE
dex
bpl .2
bra DRV.TERM.SETMODE0
bra TERMX.SETMODE0
.3 phx
jsr .4
plx
lda EscModes,x
bra DRV.TERM.SETMODE
bra TERMX.SETMODE
.4 txa
asl
@ -436,33 +437,31 @@ DRV.TERM.ESC jsr DRV.TERM.GetBufByte y = #S.DCB.TTY.MODE
.DA Scroll.Dn M
.DA Scroll.Up D
.DA RESET c
.DA DRV.TERM.SETMODE.RTS [
.DA DRV.TERM.SETMODE.RTS (
.DA DRV.TERM.SETMODE.RTS )
.DA TERMX.SETMODE.RTS [
.DA TERMX.SETMODE.RTS (
.DA TERMX.SETMODE.RTS )
*--------------------------------------
DRV.TERM.SETMODE0
lda #0
DRV.TERM.SETMODE
ldy #S.DCB.TTY.MODE
TERMX.SETMODE0 lda #0
TERMX.SETMODE ldy #S.DCB.TTY.MODE
sta (ZPDCBPtr),y
ldy #S.DCB.TTY.INBUFFER
lda #S.DCB.TTY.INBUFFER
sta (ZPDCBPtr),y
clc
DRV.TERM.SETMODE.RTS
TERMX.SETMODE.RTS
rts
*--------------------------------------
DRV.TERM.CSI ldy #S.DCB.TTY.INBUFFER
TERMX.CSI ldy #S.DCB.TTY.INBUFFER
lda (ZPDCBPtr),y
inc
sta (ZPDCBPtr),y
tay
jsr DRV.TERM.GetBufByte
jsr TERM.GetBufByte
sta (ZPDCBPtr),y
cmp #64 End of Seq ?
bcs DRV.TERM.CSI.Exec
bcs TERMX.CSI.Exec
cpy #S.DCB.TTY.INBUFFER.MAX-1 buffer full?
bne .8
@ -471,8 +470,7 @@ DRV.TERM.CSI ldy #S.DCB.TTY.INBUFFER
.8 clc
rts
DRV.TERM.CSI.Exec
stz CsiHeader
TERMX.CSI.Exec stz CsiHeader
stz CsiParamCnt
lda #S.DCB.TTY.INBUFFER+1 EscSeq Ptr
@ -651,15 +649,15 @@ Csi.Scroll ldy CsiParamCnt
Csi.EraseScreen ldx CsiParamCnt
bne .1
jmp DRV.TERM.CLRSCR.DN
jmp TERMX.CLRSCR.DN
.1 lda CsiParams
cmp #1
bne .2
jmp DRV.TERM.CLRSCR.UP
jmp TERMX.CLRSCR.UP
.2 cmp #2
bne .9
jmp DRV.TERM.CLRSCR
jmp TERMX.CLRSCR
.9 clc
rts
@ -724,13 +722,13 @@ HOME lda #0
clc
rts
*--------------------------------------
DRV.TERM.G0 ldx #$80
TERMX.G0 ldx #$80
.HS 2C BIT ABS
DRV.TERM.G1 ldx #$40
TERMX.G1 ldx #$40
ldy #S.DCB.TTY.bG0G1ALT
jsr DRV.TERM.GetBufByte
jsr TERM.GetBufByte
cmp #'0'
beq .1
@ -743,15 +741,15 @@ DRV.TERM.G1 ldx #$40
ora (ZPDCBPtr),y
.8 sta (ZPDCBPtr),y
jmp DRV.TERM.SETMODE0
jmp TERMX.SETMODE0
*--------------------------------------
DRV.TERM.IAC ldy #S.DCB.TTY.INBUFFER
TERMX.IAC ldy #S.DCB.TTY.INBUFFER
lda (ZPDCBPtr),y
inc
sta (ZPDCBPtr),y
tay
jsr DRV.TERM.GetBufByte
jsr TERM.GetBufByte
sta (ZPDCBPtr),y
cpy #S.DCB.TTY.INBUFFER+1 CMD ?
@ -762,7 +760,7 @@ DRV.TERM.IAC ldy #S.DCB.TTY.INBUFFER
cmp #SB
bne .1 not a SB/SE....stop with CMD/SUBCMD
jsr DRV.TERM.GetBufByte
jsr TERM.GetBufByte
cmp #SE
bne Csi.Home.8 wait for ending SE....keep bIACMode
@ -868,7 +866,7 @@ RESET ldy #S.DCB.TTY.MODE
iny
cpy #S.DCB.TTY.INBUFFER+1
bne .1
jmp DRV.TERM.CLRSCR
jmp TERMX.CLRSCR
*--------------------------------------
RESETATTR lda #$80
ldy #S.DCB.TTY.bNORMAL
@ -887,13 +885,12 @@ ENQ ldx #0
.8 clc
rts
*--------------------------------------
DRV.TERM.COUT.LF
ldy #S.DCB.TTY.bCRLF
TERMX.COUT.LF ldy #S.DCB.TTY.bCRLF
lda (ZPDCBPtr),y
bpl DRV.TERM.COUT.LF.1
jsr DRV.TERM.COUT.CR
DRV.TERM.COUT.LF.1
ldy #S.DCB.TTY.CV
bpl TERMX.COUT.LF.1
jsr TERMX.COUT.CR
TERMX.COUT.LF.1 ldy #S.DCB.TTY.CV
lda (ZPDCBPtr),y
ldy #S.DCB.TTY.SCROLLBOT
cmp (ZPDCBPtr),y
@ -953,7 +950,7 @@ SaveCurPos ldy #S.DCB.TTY.CH
sta (ZPDCBPtr),y
rts
*--------------------------------------
RestoreCurPos jsr DRV.TERM.CUROFF
RestoreCurPos jsr TERMX.CUROFF
ldy #S.DCB.TTY.CV.SAVE
@ -971,10 +968,10 @@ SCROLL.UP ldy #S.DCB.TTY.SCROLLTOP
tax
.1 jsr DRV.TERM.SETUP.L1X
.1 jsr TERMX.SETUP.L1X
inx
jsr DRV.TERM.COPY.XtoL1
jsr TERMX.COPY.XtoL1
txa
ldy #S.DCB.TTY.SCROLLBOT
@ -987,10 +984,10 @@ SCROLL.DN ldy #S.DCB.TTY.SCROLLBOT
tax
.1 jsr DRV.TERM.SETUP.L1X
.1 jsr TERMX.SETUP.L1X
dex
jsr DRV.TERM.COPY.XtoL1
jsr TERMX.COPY.XtoL1
txa
ldy #S.DCB.TTY.SCROLLTOP
@ -1000,35 +997,33 @@ SCROLL.DN ldy #S.DCB.TTY.SCROLLBOT
clc
rts
*--------------------------------------
DRV.TERM.CURBLNK
bit bActive
TERMX.CURBLNK bit bActive
bpl .9
lda DevMgr.Timer
and #CURSOR.BLINK.SPEED
ldy #S.DCB.TTY.bCURON
eor (ZPDCBPtr),y
bne DRV.TERM.CURBLNK.1
bne TERMX.CURBLNK.1
.9 rts
DRV.TERM.CUROFF bit bActive
bpl DRV.TERM.CURBLNK.RTS
TERMX.CUROFF bit bActive
bpl TERMX.CURBLNK.RTS
ldy #S.DCB.TTY.bCURON
lda (ZPDCBPtr),y
beq DRV.TERM.CURBLNK.RTS
beq TERMX.CURBLNK.RTS
DRV.TERM.CURBLNK.1
lda (ZPDCBPtr),y
bne DRV.TERM.CURBLNK.OFF
TERMX.CURBLNK.1 lda (ZPDCBPtr),y
bne TERMX.CURBLNK.OFF
jsr GetCharAtCurPos
bcs DRV.TERM.CURBLNK.RTS Out of screen
bcs TERMX.CURBLNK.RTS Out of screen
and #$80
eor #" "
DRV.TERM.CURBLNK.SET
TERMX.CURBLNK.SET
jsr SetCharAtY.SCR
ldy #S.DCB.TTY.bCURON
lda (ZPDCBPtr),y
@ -1036,17 +1031,17 @@ DRV.TERM.CURBLNK.SET
sta (ZPDCBPtr),y
rts
DRV.TERM.CURBLNK.OFF
TERMX.CURBLNK.OFF
jsr GetCharAtCurPos
bcc DRV.TERM.CURBLNK.SET if not Out of screen
DRV.TERM.CURBLNK.RTS
bcc TERMX.CURBLNK.SET if not Out of screen
TERMX.CURBLNK.RTS
rts
*--------------------------------------
Decimal.Out jsr MATH.A2STR10NP
ldx #0
.1 lda A2osX.NumStrBuf,x
beq DRV.TERM.CURBLNK.RTS
beq TERMX.CURBLNK.RTS
inx
jsr Char.Out.Put
bra .1
@ -1095,8 +1090,7 @@ Char.Out.Get ldy #S.DCB.TTY.OUTTAIL
clc
.9 rts
*--------------------------------------
DRV.TERM.SETUP.L1X
lda ZPBufBase
TERMX.SETUP.L1X lda ZPBufBase
clc
adc BUF.BASEL,x
sta ZPBufBaseL1
@ -1106,9 +1100,9 @@ DRV.TERM.SETUP.L1X
sta ZPBufBaseL1+1
bit bActive
bpl DRV.TERM.SETUP.L1X.8
bpl TERMX.SETUP.L1X.8
DRV.TERM.SETUP.L1X.SCR
TERMX.SETUP.L1X.SCR
lda SCR.BASEL,x
sta ZPScrBaseL1
txa
@ -1117,32 +1111,30 @@ DRV.TERM.SETUP.L1X.SCR
ora #4
* lda SCR.BASEH,x
sta ZPScrBaseL1+1
DRV.TERM.SETUP.L1X.8
TERMX.SETUP.L1X.8
rts
*--------------------------------------
DRV.TERM.CLRSCR.DN
ldy #S.DCB.TTY.CV
TERMX.CLRSCR.DN ldy #S.DCB.TTY.CV
sta (ZPDCBPtr),y
tax
bra DRV.TERM.CLRSCR.1
DRV.TERM.CLRSCR.UP
ldx #0
bra TERMX.CLRSCR.1
TERMX.CLRSCR.UP ldx #0
ldy #S.DCB.TTY.CV
sta (ZPDCBPtr),y
tay
bra DRV.TERM.CLRSCR.2
DRV.TERM.CLRSCR ldx #0
bra TERMX.CLRSCR.2
DRV.TERM.CLRSCR.1
ldy #24
TERMX.CLRSCR ldx #0
DRV.TERM.CLRSCR.2
sty .1+1
TERMX.CLRSCR.1 ldy #24
TERMX.CLRSCR.2 sty .1+1
sta SET80STORE
.1 cpx #$ff SELF MODIFIED
beq .9
jsr DRV.TERM.SETUP.L1X
jsr TERMX.SETUP.L1X
lda #" "
bit bActive
@ -1167,18 +1159,17 @@ DRV.TERM.CLRSCR.2
bpl .8
.9 rts
*--------------------------------------
DRV.TERM.Title.ON
ldy #S.DCB.TTY.bTITLE
TERMX.Title.ON ldy #S.DCB.TTY.bTITLE
lda (ZPDCBPtr),y
bmi DRV.TERM.Title.RTS
bmi TERMX.Title.RTS
lda #$ff
sta (ZPDCBPtr),y
jsr DRV.TERM.GetDevName
jsr TERM.GetDevName
ldx #0
jsr DRV.TERM.SETUP.L1X.SCR
jsr TERMX.SETUP.L1X.SCR
ldy #0
@ -1205,20 +1196,18 @@ DRV.TERM.Title.ON
iny
cpy #80
bne .4
DRV.TERM.Title.RTS
rts
TERMX.Title.RTS rts
DRV.TERM.Title.OFF
ldy #S.DCB.TTY.bTITLE
TERMX.Title.OFF ldy #S.DCB.TTY.bTITLE
lda (ZPDCBPtr),y
bpl DRV.TERM.Title.RTS
bpl TERMX.Title.RTS
lda #$0
sta (ZPDCBPtr),y
*--------------------------------------
DRV.TERM.LINE0CPY
ldx #0
TERMX.LINE0CPY ldx #0
.HS 2C BIT ABS
DRV.TERM.SCRCPY ldx #23
TERMX.SCRCPY ldx #23
sta SET80STORE
@ -1230,7 +1219,7 @@ DRV.TERM.SCRCPY ldx #23
lda ZPBufBase+1
adc BUF.BASEH,x
sta .80+2
jsr DRV.TERM.SETUP.L1X.SCR
jsr TERMX.SETUP.L1X.SCR
phx
@ -1266,7 +1255,7 @@ DRV.TERM.SCRCPY ldx #23
rts
*--------------------------------------
DRV.TERM.COPY.XtoL1
TERMX.COPY.XtoL1
lda ZPBufBase
clc
adc BUF.BASEL,x
@ -1353,7 +1342,7 @@ SetCharAtYX ror A2osX.RANDOM16+1
lda REMAP.E0.FF-$E0,y
sta ZPTmpChar
.3 jsr DRV.TERM.SETUP.L1X
.3 jsr TERMX.SETUP.L1X
ply
lda ZPTmpChar
sta (ZPBufBaseL1),y
@ -1380,7 +1369,7 @@ GetCharAtCurPos ldy #S.DCB.TTY.CV
bcs .9 Out of screen
tax
jsr DRV.TERM.SETUP.L1X
jsr TERMX.SETUP.L1X
ldy #S.DCB.TTY.CH
lda (ZPDCBPtr),y
@ -1451,7 +1440,7 @@ RESET.VALUES .DA #0 MODE
.DA #S.DCB.TTY.OUTBUFFER OUTHEAD
.DA #S.DCB.TTY.INBUFFER INBUFFER
*--------------------------------------
DRV.TERM.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ
TERMX.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ
.DA #0,#0,#0
>PSTR "A2osX VT100 term"
.DA #S.DIB.T.CHAR

View File

@ -16,7 +16,6 @@ K.Time >PULLW FORPNT
>LDYAI DATELO
>STYA TXTPTR
ldx #SYS.PTime2Time
jmp K.SYSCALL.JMPX
*/--------------------------------------
* # StrFTime