Kernel 0.93

This commit is contained in:
Rémy GIBERT 2019-05-25 21:24:07 +02:00
parent 417ddd6699
commit 3d40cd048d
27 changed files with 259 additions and 208 deletions

Binary file not shown.

View File

@ -166,14 +166,18 @@ BUF.DelSel jsr BUF.GetSelLen
.8 clc
.9 rts
*--------------------------------------
BUF.Del ldy #FileLen
lda (pData),y
iny
ora (pData),y
beq .8 exit with A=0
jsr BUF.ComputeCOffset
* Erase char at CurXY
*--------------------------------------
BUF.DelChar lda BUF.COffset
sec
sbc #1
tay
lda BUF.COffset+1
sbc #0
bcc .9 deleting char #0
>STYA TmpCount
ldy #FileLen+1
lda (pData),y
pha
@ -183,17 +187,6 @@ BUF.Del ldy #FileLen
pla
jsr BUF.GetNewYA BufferLen-1
bcs .9
lda BUF.COffset
sec
sbc #1
tay
lda BUF.COffset+1
sbc #0
bcc .3 deleting char #0
sty TmpCount
sta TmpCount+1
jsr BUF.CopyCount
@ -268,7 +261,7 @@ BUF.SelToClipboard
ldy #0
.2 jsr DecTmpCount
beq .8
beq .7
lda (BufPtr),y
sta (ClipboardPtr),y
iny
@ -277,7 +270,7 @@ BUF.SelToClipboard
inc ClipboardPtr+1
bra .2
jsr BUF.ResetSel
.7 jsr BUF.ResetSel
.8 clc
.9 rts
@ -394,7 +387,8 @@ BUF.GetLineAX sta BUF.TmpLine1
.2 lda (BufPtr),y
beq .7
cmp #13
cmp #C.CR
beq .3
iny

View File

@ -120,7 +120,8 @@ Ctrl.G ldy #FileX
*--------------------------------------
Ctrl.BS ldy #FileX
lda (pData),y
beq .1 already at begining of line
beq .1 already at beginning of line
dec
sta (pData),y
bra .3
@ -158,6 +159,7 @@ Ctrl.BS ldy #FileX
.8 clc
rts
.9 jmp Ctrl.Q
*--------------------------------------
Ctrl.TAB
@ -520,40 +522,46 @@ Ctrl.ESC clc
rts
*--------------------------------------
Prompt.Editor cmp #C.DEL
beq .4
bne .2
cmp #C.SPACE
bcs .7
lda BUF.COffset
ora BUF.COffset+1 No Backspace possible
beq .8
jsr Ctrl.BS
bcs .9
asl
tax
jmp (J.CTRL,x)
.4 jsr BUF.Del
jsr BUF.DelChar
bcs .9
cmp #C.CR did we DEL a CR ?
bne .5
bne .1
jsr SCRN.UpdateMain
bcs .9
bra .6
.5 jsr SCRN.UpdateCurrentLine
bcs .9
.6 jsr SCRN.UpdateStatusBar
bcs .9
jsr SCRN.UpdateStatusBar
rts
.7 jsr BUF.InsertA
.1 jsr SCRN.UpdateCurrentLine
jsr SCRN.UpdateStatusBar
rts
.2 cmp #C.SPACE
bcc .3
jsr BUF.InsertA
bcs .9
jsr SCRN.UpdateCurrentLine
bcs .9
jsr Ctrl.FS
bcs .9
.8 clc
rts
.3 asl
tax
jmp (J.CTRL,x)
.9 jmp Ctrl.Q
*--------------------------------------

View File

@ -312,7 +312,7 @@ MSG.USAGE .AS "Usage : MORE <File>\r\n"
.AS " -P : Page mode, no scroll\r\n"
.AS " -S : Process ESC codes"
MSG.CRLF .AZ "\r\n"
MSG.Init .AZ "\e[7l"
MSG.Init .AZ "\e[?7l"
MSG.NUMLINE .AZ "%5D:"
MSG.Pause .AZ "\r\e[7m --- 'SPACE' for more, 'CR' one line, 'Q/q' to quit --- \e[0m"
MSG.PauseErase .AZ "\r\e[2K"

View File

@ -212,7 +212,7 @@ CS.QUIT clc
rts
*--------------------------------------
CS.END
MSG0 .AZ "\e[7lhPS pPID PID cPID CPU\% Flags UID Command Line\r\n"
MSG0 .AZ "\e[?7lhPS pPID PID cPID CPU\% Flags UID Command Line\r\n"
MSG1 .AZ "%3d %3d %3d %3d %3d\% %s %3d"
MSG2 .AZ " %s"
MSG3 .AZ "\r\n"

View File

@ -582,8 +582,8 @@ ToUpperCase cmp #'a'
CS.END
*--------------------------------------
MSG.GREETINGS .AZ "\r\nA2osX-SH %d.%d\r\n\r\n"
MSG.PROMPT .AZ "\e[7h$ " Enable Line Wrap
MSG.PROMPTCRLF .AZ "\e[7l\r\n" Disable Line Wrap
MSG.PROMPT .AZ "\e[?7h$ " Enable Line Wrap
MSG.PROMPTCRLF .AZ "\e[?7l\r\n" Disable Line Wrap
MSG.TRACE .AZ ">%s\r\n"
MSG.BATCHERR .AZ "^\r\nLine #%D:"
MSG.ERROR .AS "[$%h]:%S."

View File

@ -1,6 +1,5 @@
NEW
PREFIX
AUTO 4,1
AUTO 3,1
*/--------------------------------------
* # Args2ArgV
* Expand String and convert to ArgV List

View File

@ -1,6 +1,5 @@
NEW
PREFIX
AUTO 4,1
AUTO 3,1
*--------------------------------------
.DUMMY
.OR FAC 15 Bytes

View File

@ -1,6 +1,5 @@
NEW
PREFIX
AUTO 4,1
AUTO 3,1
*--------------------------------------
* CONTROL SECTION :
.LIST ON

View File

@ -164,19 +164,23 @@ S.DCB.TTY.CV .EQ 4
S.DCB.TTY.SCROLLTOP .EQ 5
S.DCB.TTY.SCROLLBOT .EQ 6
S.DCB.TTY.bCURON .EQ 7
S.DCB.TTY.bNORMAL .EQ 8
S.DCB.TTY.bLINEWRAP .EQ 9
S.DCB.TTY.bTITLE .EQ 10
S.DCB.TTY.bTITLE .EQ 8
S.DCB.TTY.bG0G1 .EQ 11
S.DCB.TTY.bG0ALT .EQ 12
S.DCB.TTY.bG1ALT .EQ 13
S.DCB.TTY.bNORMAL .EQ 9
S.DCB.TTY.bLINEWRAP .EQ 10
S.DCB.TTY.bCRLF .EQ 11
S.DCB.TTY.OUTTAIL .EQ 14
S.DCB.TTY.OUTHEAD .EQ 15
S.DCB.TTY.INBUFFER .EQ 16
S.DCB.TTY.INBUFFER.MAX .EQ 32
S.DCB.TTY.OUTBUFFER .EQ 32
* .EQ 12
S.DCB.TTY.bG0G1 .EQ 13
S.DCB.TTY.bG0ALT .EQ 14
S.DCB.TTY.bG1ALT .EQ 15
S.DCB.TTY.OUTTAIL .EQ 16
S.DCB.TTY.OUTHEAD .EQ 17
S.DCB.TTY.INBUFFER .EQ 18
S.DCB.TTY.INBUFFER.MAX .EQ 33
S.DCB.TTY.OUTBUFFER .EQ 34
S.DCB.TTY.OUTBUFFER.MAX .EQ 48
*
S.DCB.TTY .EQ 48

View File

@ -1,6 +1,5 @@
NEW
PREFIX
AUTO 4,1
AUTO 3,1
*/--------------------------------------
* # GetDevByName
* Y,A = Ptr to device name (C-String)

View File

@ -1,6 +1,5 @@
NEW
PREFIX
AUTO 4,1
AUTO 3,1
*/--------------------------------------
* # OpenDir
* ## C

View File

@ -1,6 +1,5 @@
NEW
PREFIX
AUTO 4,1
AUTO 3,1
*--------------------------------------
* DRV.DiskII
* X = IOCTL

View File

@ -1,6 +1,5 @@
NEW
PREFIX
AUTO 4,1
AUTO 3,1
*/--------------------------------------
* # ExpandStr
* **In:**

View File

@ -1,6 +1,5 @@
NEW
PREFIX
AUTO 4,1
AUTO 3,1
*--------------------------------------
* SYSCALL (AUXLC to AUXLC)
* Used by user & kernel for inter bank Calls

View File

@ -1,6 +1,5 @@
NEW
PREFIX
AUTO 4,1
AUTO 3,1
*--------------------------------------
* called directly by IRQ Vector $FFFE in AuxLC
* Must keep:

View File

@ -1,6 +1,5 @@
NEW
PREFIX
AUTO 4,1
AUTO 3,1
*--------------------------------------
* $E000-E1FF System calls Jump Table
*--------------------------------------

View File

@ -1,6 +1,5 @@
NEW
PREFIX
AUTO 4,1
AUTO 3,1
*/--------------------------------------
* # FAdd,FSub,FMult,FDiv,FPwr
* Return X+Y, X-Y, X*Y, X/Y, X^Y

View File

@ -1,6 +1,5 @@
NEW
PREFIX
AUTO 4,1
AUTO 3,1
*--------------------------------------
ZPMemMgrSPtr .EQ ZPMEMMGR Pointer To Slot selected
ZPMemMgrTmp1 .EQ ZPMEMMGR+2

View File

@ -1,6 +1,5 @@
NEW
PREFIX
AUTO 4,1
AUTO 3,1
*--------------------------------------
* K.PFTAdd
* In :

View File

@ -1,6 +1,5 @@
NEW
PREFIX
AUTO 4,1
AUTO 3,1
*--------------------------------------
.DUMMY
.OR ZPTMP+21

View File

@ -1,6 +1,5 @@
NEW
PREFIX
AUTO 4,1
AUTO 3,1
*/--------------------------------------
* # GetPWUID
* ## C

View File

@ -1,6 +1,5 @@
NEW
PREFIX
AUTO 4,1
AUTO 3,1
*/--------------------------------------
* # strtof
* Convert String to 40 bits Float

View File

@ -1,6 +1,5 @@
NEW
PREFIX
AUTO 4,1
AUTO 3,1
*/--------------------------------------
* # StrLen
* Returns Length of C-String

View File

@ -19,8 +19,10 @@ ZPTmpBool .BS 1
ZPTmpChar .BS 1
*--------------------------------------
bActive .BS 1
CsiHeader .BS 1
bCsiInNum .BS 1
CsiParamCnt .BS 1
CsiParams .BS 4
.ED
*--------------------------------------
@ -213,22 +215,38 @@ DRV.TERM.READ jsr DRV.TERM.GetIOCTLBufCntDCB
and #$7F
ldx KeyRemapped
ldx #KeyRemapped.cnt-1
.2 cmp KeyRemapped,x
beq .3
dex
bne .2
jsr Char.Out.Put no remap....send char....
bpl .2
cmp #C.CR
bne .21
jsr Char.Out.Put
ldy #S.DCB.TTY.bCRLF
lda (ZPDCBPtr),y
bpl .7
lda #C.LF
.21 jsr Char.Out.Put no remap....send char....
bra .7 and flush
.3 lda KeyRemappedIdx,x
tax
.3 lda KeyRemapped.Tbl,x
pha
.4 lda KeyRemappedTbl,x
beq .7 end of remap....flush
lda #C.ESC
jsr Char.Out.Put
inx
bra .4
lda #'['
jsr Char.Out.Put
pla
jsr Char.Out.Put
bra .7
.6 ldy #S.DCB.TTY.OUTTAIL
lda (ZPDCBPtr),y
@ -274,7 +292,7 @@ DRV.TERM.WRITE jsr DRV.TERM.GetIOCTLBufCntDCB
.1 inc ZPCount
bne .2
inc ZPCount+1
beq FS.8
beq .8
.2 ldy #S.DCB.TTY.MODE
lda (ZPDCBPtr),y
@ -295,6 +313,9 @@ DRV.TERM.WRITE jsr DRV.TERM.GetIOCTLBufCntDCB
.DA DRV.TERM.IAC
.DA DRV.TERM.G0
.DA DRV.TERM.G1
.8 clc
rts
*--------------------------------------
DRV.TERM.COUT lda (ZPBufPtr)
@ -324,8 +345,8 @@ DRV.TERM.COUT lda (ZPBufPtr)
jmp (.4,x)
.4 .DA ENQ
.DA BS
.DA LF
.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
@ -343,18 +364,43 @@ DRV.TERM.COUT.FS
ldy #S.DCB.TTY.bLINEWRAP
lda (ZPDCBPtr),y
bpl FS.8
bpl DRV.TERM.COUT.FS.8
ldy #S.DCB.TTY.CH
lda #0
sta (ZPDCBPtr),y
jmp LF
jmp DRV.TERM.COUT.LF.1
.1 inc
sta (ZPDCBPtr),y
FS.8 clc
DRV.TERM.COUT.FS.8
clc
rts
*--------------------------------------
DRV.TERM.COUT.BS
ldy #S.DCB.TTY.CH
lda (ZPDCBPtr),y
beq .1
dec
sta (ZPDCBPtr),y
clc
rts
.1 ldy #S.DCB.TTY.CV
lda (ZPDCBPtr),y
beq .2
dec
sta (ZPDCBPtr),y
lda #79
dey
sta (ZPDCBPtr),y
.2 clc
rts
*--------------------------------------
DRV.TERM.COUT.DEL
@ -367,7 +413,7 @@ DRV.TERM.COUT.DEL
.1 iny S.DCB.TTY.CV
lda (ZPDCBPtr),y
beq FS.8
beq DRV.TERM.COUT.FS.8
dec
sta (ZPDCBPtr),y
@ -470,11 +516,20 @@ DRV.TERM.CSI ldy #S.DCB.TTY.INBUFFER
rts
DRV.TERM.CSI.Exec
stz CsiHeader
stz CsiParamCnt
stz bCsiInNum
ldy #S.DCB.TTY.INBUFFER EscSeq Ptr
ldy #S.DCB.TTY.INBUFFER+1 EscSeq Ptr
lda (ZPDCBPtr),y
dey
cmp #'?'
bne .10
sta CsiHeader
iny
.10 stz ZPTmpWord
stz ZPTmpWord+1
@ -554,8 +609,8 @@ DRV.TERM.CSI.Exec
tax
jmp (.8,x)
.8 .DA Csi.LWEnable h
.DA Csi.LWDisable l
.8 .DA Csi.SetMode h
.DA Csi.ResetMode l
.DA Csi.DispAttr m
.DA Csi.Query n
.DA Csi.Scroll r
@ -563,24 +618,46 @@ DRV.TERM.CSI.Exec
.DA Csi.EraseLine K
.DA Csi.Home H
*--------------------------------------
Csi.LWEnable sec
Csi.SetMode sec
.HS 90 BCC
*--------------------------------------
Csi.LWDisable clc
Csi.ResetMode clc
ldx CsiParamCnt
beq .8
dex
bne .8
lda CsiParams
eor #7
bne .8
ror
ldy #S.DCB.TTY.bLINEWRAP
sta (ZPDCBPtr),y
beq .99
.8 clc
dex
bne .99
ldx CsiHeader
lda CsiParams
php
cmp #20 bCRLF
bne .1
txa
bne .98
ldy #S.DCB.TTY.bCRLF
bra .8
.1 cmp #7
bne .98
cpx #'?'
bne .98
ldy #S.DCB.TTY.bLINEWRAP
.8 plp
ror
sta (ZPDCBPtr),y
clc
rts
.98 plp
.99 clc
rts
*--------------------------------------
Csi.DispAttr ldx CsiParamCnt
@ -917,30 +994,15 @@ ENQ ldx #0
.8 clc
rts
*--------------------------------------
BS ldy #S.DCB.TTY.CH
DRV.TERM.COUT.LF
ldy #S.DCB.TTY.bCRLF
lda (ZPDCBPtr),y
beq .1
dec
sta (ZPDCBPtr),y
clc
rts
.1 ldy #S.DCB.TTY.CV
lda (ZPDCBPtr),y
beq .2
dec
sta (ZPDCBPtr),y
lda #79
dey
sta (ZPDCBPtr),y
.2 clc
rts
*--------------------------------------
LF ldy #S.DCB.TTY.CV
bpl DRV.TERM.COUT.LF.1
jsr DRV.TERM.COUT.CR
DRV.TERM.COUT.LF.1
ldy #S.DCB.TTY.CV
lda (ZPDCBPtr),y
ldy #S.DCB.TTY.SCROLLBOT
cmp (ZPDCBPtr),y
@ -1280,66 +1342,6 @@ DRV.TERM.Title.OFF
sta (ZPDCBPtr),y
jmp DRV.TERM.LINE0CPY
*--------------------------------------
RESET.VALUES .DA #0 S.DCB.TTY.MODE
.DA #0 S.DCB.TTY.CH
.DA #0 S.DCB.TTY.CV
.DA #0 S.DCB.TTY.SCROLLTOP
.DA #23 S.DCB.TTY.SCROLLBOT
.DA #0 S.DCB.TTY.bCURON
.DA #$80 S.DCB.TTY.bNORMAL
.DA #$80 S.DCB.TTY.bLINEWRAP
.DA #0 S.DCB.TTY.bTITLE
.DA #0 S.DCB.TTY.bG0G1
.DA #0 S.DCB.TTY.bG0ALT
.DA #$80 S.DCB.TTY.bG1ALT
.DA #S.DCB.TTY.OUTBUFFER S.DCB.TTY.OUTTAIL
.DA #S.DCB.TTY.OUTBUFFER S.DCB.TTY.OUTHEAD
.DA #S.DCB.TTY.INBUFFER S.DCB.TTY.INBUFFER
*--------------------------------------
CtrlChars .DA #C.ENQ,#C.BS,#C.LF,#C.FF,#C.CR,#C.SO,#C.SI,#C.FS,#C.ESC
CtrlChars.Cnt .EQ *-CtrlChars
*--------------------------------------
EscCodes .AZ "MDc[()"
EscCodes.Cnt .EQ *-EscCodes
EscModes .DA #0,#0,#0,#S.DCB.TTY.MODE.CSI,#S.DCB.TTY.MODE.G0,#S.DCB.TTY.MODE.G1
CsiCodes .AS "hlmnrJKH"
CsiCodes.Cnt .EQ *-CsiCodes
*--------------------------------------
KeyRemapped .HS 05080A0B0D15 L,D,U,CR,R
KeyRemappedIdx .HS 050004080C0F
KeyRemappedTbl .EQ *
KeyRemappedLEFT .HS 1B5B4400 esc[D
KeyRemappedDOWN .HS 1B5B4200 esc[B
KeyRemappedUP .HS 1B5B4100 esc[A
KeyRemappedCR .HS 0D0A00 crlf
KeyRemappedRGHT .HS 1B5B4300 esc[C
*--------------------------------------
WILLDO .DA #TELOPT.BINARY,#TELOPT.SGA
WILLDO.CNT .EQ *-WILLDO
WILLDONT .DA #TELOPT.TSPEED,#TELOPT.LINEMODE,#TELOPT.STATUS
WILLDONT.CNT .EQ *-WILLDONT
DOWILL .DA #TELOPT.BINARY,#TELOPT.SGA,#TELOPT.TTYPE,#TELOPT.NAWS
DOWILL.CNT .EQ *-DOWILL
DOWONT .DA #TELOPT.ECHO,#TELOPT.NEWENVIRON,#TELOPT.XDISPLOC,#TELOPT.TSPEED,#TELOPT.LFLOW
DOWONT.CNT .EQ *-DOWONT
SB.IS.TTYPE .DA #IAC,#SB,#TELOPT.TTYPE,#SB.IS
ENQ.String .AS "xterm"
ENQ.String.Len .EQ *-ENQ.String
.DA #IAC,#SE
SB.IS.TTYPE.LEN .EQ *-SB.IS.TTYPE
SB.IS.NAWS .DA #IAC,#SB,#TELOPT.NAWS,#SB.IS
.DA 80
.DA 24
.DA #IAC,#SE
SB.IS.NAWS.LEN .EQ *-SB.IS.NAWS
*--------------------------------------
DRV.TERM.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ
.DA #0,#0,#0
>PSTR "A2osX VT100 TERM"
.DA #S.DIB.T.CHAR
.DA #0
.DA K.VER
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.TERM
LOAD USR/SRC/SYS/KERNEL.S

View File

@ -285,6 +285,67 @@ REMAP.E0.FF .HS 5B4142434445464748495FA0DF544e4f
* p q r s t u v w x y z { | } ~ DEL
.HS 50DF5253545556575F595a5b5c5d5e5f
*--------------------------------------
RESET.VALUES .DA #0 S.DCB.TTY.MODE
.DA #0 S.DCB.TTY.CH
.DA #0 S.DCB.TTY.CV
.DA #0 S.DCB.TTY.SCROLLTOP
.DA #23 S.DCB.TTY.SCROLLBOT
.DA #0 S.DCB.TTY.bCURON
.DA #0 S.DCB.TTY.bTITLE
.DA #$80 S.DCB.TTY.bNORMAL
.DA #$80 S.DCB.TTY.bLINEWRAP
.DA #$80 S.DCB.TTY.bCRLF
.DA #0
.DA #0 S.DCB.TTY.bG0G1
.DA #0 S.DCB.TTY.bG0ALT
.DA #$80 S.DCB.TTY.bG1ALT
.DA #S.DCB.TTY.OUTBUFFER S.DCB.TTY.OUTTAIL
.DA #S.DCB.TTY.OUTBUFFER S.DCB.TTY.OUTHEAD
.DA #S.DCB.TTY.INBUFFER S.DCB.TTY.INBUFFER
*--------------------------------------
CtrlChars .DA #C.ENQ,#C.BS,#C.LF,#C.FF,#C.CR,#C.SO,#C.SI,#C.FS,#C.ESC
CtrlChars.Cnt .EQ *-CtrlChars
*--------------------------------------
EscCodes .AZ "MDc[()"
EscCodes.Cnt .EQ *-EscCodes
EscModes .DA #0,#0,#0,#S.DCB.TTY.MODE.CSI,#S.DCB.TTY.MODE.G0,#S.DCB.TTY.MODE.G1
CsiCodes .AS "hlmnrJKH"
CsiCodes.Cnt .EQ *-CsiCodes
*--------------------------------------
KeyRemapped .HS 080A0B15 Left,Down,Up,Right
KeyRemapped.Cnt .EQ *-KeyRemapped
KeyRemapped.Tbl .HS 44424143 esc[D,esc[B,esc[A,esc[C
*--------------------------------------
WILLDO .DA #TELOPT.BINARY,#TELOPT.SGA
WILLDO.CNT .EQ *-WILLDO
WILLDONT .DA #TELOPT.TSPEED,#TELOPT.LINEMODE,#TELOPT.STATUS
WILLDONT.CNT .EQ *-WILLDONT
DOWILL .DA #TELOPT.BINARY,#TELOPT.SGA,#TELOPT.TTYPE,#TELOPT.NAWS
DOWILL.CNT .EQ *-DOWILL
DOWONT .DA #TELOPT.ECHO,#TELOPT.NEWENVIRON,#TELOPT.XDISPLOC,#TELOPT.TSPEED,#TELOPT.LFLOW
DOWONT.CNT .EQ *-DOWONT
SB.IS.TTYPE .DA #IAC,#SB,#TELOPT.TTYPE,#SB.IS
ENQ.String .AS "xterm"
ENQ.String.Len .EQ *-ENQ.String
.DA #IAC,#SE
SB.IS.TTYPE.LEN .EQ *-SB.IS.TTYPE
SB.IS.NAWS .DA #IAC,#SB,#TELOPT.NAWS,#SB.IS
.DA 80
.DA 24
.DA #IAC,#SE
SB.IS.NAWS.LEN .EQ *-SB.IS.NAWS
*--------------------------------------
DRV.TERM.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ
.DA #0,#0,#0
>PSTR "A2osX VT100 TERM"
.DA #S.DIB.T.CHAR
.DA #0
.DA K.VER
*--------------------------------------
BUF.BASEL .DA #0
.DA #80
.DA #160

View File

@ -1,6 +1,5 @@
NEW
PREFIX
AUTO 4,1
AUTO 3,1
*--------------------------------------
* https://www.cise.ufl.edu/~cop4600/cgi-bin/lxr/http/source.cgi/lib/ansi/gmtime.c
*--------------------------------------