Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-06-07 10:06:51 +02:00
parent d34a1cbf52
commit 5bba299976
21 changed files with 383 additions and 325 deletions

View File

@ -85,7 +85,7 @@ X = hDev
`int getdevstatus(short int DevID, S.DIB *dstat);`
## ASM
`PUSHB DevID`
`>PUSHB DevID`
`>PUSHW S.DIB`
`>SYSCALL GetDevStatus`
@ -100,7 +100,7 @@ Create a hDEV
## ASM
`>PUSHW fd`
`>PUSHW devname`
`>SYSCALL mkdev
`>SYSCALL mkdev`
## RETURN VALUE
A = hDEV
@ -108,7 +108,7 @@ Create a hDEV
# IOCTL
## C
`int ioctl(short int DevID, int request, void * param );`
`int ioctl(short int DevID, short int request, void *param);`
## ASM
`>PUSHB hDEV`
@ -125,7 +125,7 @@ Create a hDEV
`int hDIR opendir (const char * dirpath);`
## ASM
`>PUSHW dirpath`
`>LDYA dirpath`
`>SYSCALL opendir`
## RETURN VALUE
@ -171,7 +171,6 @@ Change or add an environment variable
`int setenv(const char *name, const char *value);`
## ASM
**In:**
`>PUSHW name`
`>PUSHW value`
`>SYSCALL setenv`
@ -186,7 +185,6 @@ and returns a pointer to the corresponding value string.
`char *getenv(const char *name, char *value);`
## ASM
**In:**
`>PUSHW name`
`>PUSHW value`
`>SYSCALL getenv`
@ -215,7 +213,6 @@ Remove an environment variable
`int unsetenv(const char *name);`
## ASM
**In:**
`>PUSHW name`
`>SYSCALL unsetenv`
@ -550,29 +547,6 @@ CS : not found
## RETURN VALUE
# GetPWName
## C
`int getpwname(const char* name, S.PW *passwd);`
## ASM
`>PUSHW name`
`>PUSHW passwd`
`>SYSCALL getpwname`
## RETURN VALUE
# PutPW
## C
`int putpw( S.PW* passwd );`
## ASM
`>PUSHW passwd`
`>SYSCALL putpw`
## RETURN VALUE
# GetGRGID
## C
@ -585,6 +559,18 @@ CS : not found
## RETURN VALUE
# GetPWName
## C
`int getpwname(const char* name, S.PW *passwd);`
## ASM
`>PUSHW name`
`>PUSHW passwd`
`>SYSCALL getpwname`
## RETURN VALUE
# GetGRName
## C
@ -597,6 +583,17 @@ CS : not found
## RETURN VALUE
# PutPW
## C
`int putpw( S.PW* passwd );`
## ASM
`>PUSHW passwd`
`>SYSCALL putpw`
## RETURN VALUE
# PutGR
## C
@ -608,6 +605,29 @@ CS : not found
## RETURN VALUE
# OpenSession
## C
`short int hSID opensession(const char *name, const char *passwd);`
## ASM
`>PUSHW name`
`>PUSHW passwd`
`>SYSCALL OpenSession`
## RETURN VALUE
# CloseSession
## C
`int closesession(short int hSID);`
## ASM
`>PUSHB hSID`
`>SYSCALL CloseSession`
## RETURN VALUE
# SListGetData
## ASM
@ -649,7 +669,7 @@ CS : not found
## ASM
`>PUSHB hSList`
`>PUSHW KeyID`
`>PUSHW DataPtr`
`>PUSHW KeyPtr`
`>SYSCALL SListGetByID`
## RETURN VALUE
@ -700,7 +720,6 @@ Change The type of a ProDOS File
`int chtyp(const char *filepath, short int filetype);`
## ASM
**In:**
`>PUSHW filepath`
`>PUSHB filetype`
`>SYSCALL chtyp`
@ -714,7 +733,6 @@ Return information about a file
`int stat(const char *pathname, struct stat *statbuf);`
## ASM
**In:**
`>PUSHW pathname`
`>PUSHW statbuf`
`>SYSCALL stat`
@ -728,7 +746,6 @@ create a directory
`int mkdir(const char *pathname, int mode);`
## ASM
**In:**
`>PUSHW pathname`
`>PUSHW mode`
`>SYSCALL mkdir`
@ -742,17 +759,16 @@ A = EC
return a pathname to a new FIFO
## C
`int mkfifo( char *pathname, int mode );`
`hFILE mkfifo(const char *pathname, int mode);`
## ASM
**In:**
`>PUSHW pathname`
`>PUSHW mode`
`>LDYA pathname`
`>SYSCALL mkfifo`
## RETURN VALUE
CC = OK, CS = ERROR
A = hFD
A = hFILE
# MkNod
Create a special or ordinary file.
@ -762,10 +778,9 @@ Create a special or ordinary file.
`hFILE mknod(const char *pathname, int mode, hFD fd);`
## ASM
**In:**
`>PUSHB fd`
`>PUSHW pathname`
`>PUSHW mode`
`>LDYA pathname`
`>PUSHB fd`
`>SYSCALL mknod`
## RETURN VALUE
@ -789,7 +804,7 @@ A = hFD
Print A (char) to StdOut
## C
`int putchar ( int character );`
`int putchar ( short int character );`
## ASM
**In:**
@ -803,7 +818,7 @@ CC = success
Print A (char) to hFILE
## C
`int fputc ( hFILE stream , int character );`
`int fputc ( hFILE stream , short int character );`
## ASM
**In:**
@ -823,7 +838,7 @@ Write Str to StdOut, appends '\r\n'
## ASM
`>LDYAI str`
`>SYSCALL puts`
`>SYSCALL PutS`
## RETURN VALUE
CC = success
@ -933,7 +948,7 @@ int fclose ( hFILE stream );
## ASM
**In:**
`lda stream`
`>SYSCALL fclose`
`>SYSCALL FClose`
## RETURN VALUE
@ -1031,7 +1046,7 @@ int remove(const char *pathname);
## ASM
**In:**
`>PUSHW pathname`
`>LDYA pathname`
`>SYSCALL remove`
## RETURN VALUE
@ -1069,7 +1084,7 @@ PrintF : (example is for printing Y,A as integer : format="%I", 2 bytes)
`>PUSHW i`
`...`
`>PUSHBI 2` #bytecount
`>SYSCALL printf`
`>SYSCALL PrintF`
FPrintF :
`>PUSHB hFILE`
`>PUSHW format`
@ -1172,7 +1187,7 @@ TODO : %10s
## RETURN VALUE
A = Number of arguments filled.
# strtof
# StrToF
Convert String to 40 bits Float
## C
@ -1180,9 +1195,9 @@ Convert String to 40 bits Float
## ASM
**In:**
`>PUSHW str`
`>PUSHWI EndPtr`
`>LDYA str`
`>SYSCALL strtof`
`>SYSCALL StrToF`
## RETURN VALUE
On stack (float)
@ -1213,7 +1228,7 @@ Convert String to 32 bits (unsigned) int
`>PUSHW str`
`>PUSHW EndPtr`
`>PUSHB Base`
`>SYSCALL strtol`
`>SYSCALL StrToL`
## RETURN VALUE
On stack (long)
@ -1385,15 +1400,6 @@ CS : no match
CC, Y,A=0
CS, Y,A > 0 or < 0
# StrVShift
## ASM
`>PUSHB hSTRV`
`>PUSHB index`
`>SYSCALL StrVShift`
## RETURN VALUE
# StrVGet
## ASM
@ -1406,6 +1412,15 @@ CS : no match
CC: Y,A = Ptr
CS: Y,A = NULL
# StrVShift
## ASM
`>PUSHB hSTRV`
`>PUSHB index`
`>SYSCALL StrVShift`
## RETURN VALUE
# StrVAdd
## ASM
@ -1486,20 +1501,6 @@ Convert S.TIME struct to CSTR
## RETURN VALUE
# ChOwn
## C
`short int chown(const char *pathname, short int owner, short int group);`
## ASM
**In:**
`>PUSHW pathname`
`>PUSHB owner`
`>PUSHB group`
`>SYSCALL chown`
## RETURN VALUE
# open
## C
@ -1557,6 +1558,20 @@ CS: A = EC
CC: Y,A = bytes written
CS: A = EC
# ChOwn
## C
`short int chown(const char *pathname, short int owner, short int group);`
## ASM
**In:**
`>PUSHW pathname`
`>PUSHB owner`
`>PUSHB group`
`>SYSCALL chown`
## RETURN VALUE
## License
A2osX is licensed under the GNU General Public License.

View File

@ -3,6 +3,29 @@
## Copyright
Copyright 2015 - 2020, Remy Gibert and the A2osX contributors.
# D2TrkWrite16s
Write a track (16 sectors)
**In:**
PUSHB = DSSS0000
PUSHB = TrackNum * 4 : 0->136+
PUSHW = Ptr to 16*256 buffer
## RETURN VALUE
CC : success
CS : A = Error
A=0, currently starting/seeking...
# D2TrkWriteNIB
Write a track (NIBBLE)
**In:**
PUSHB = DSSS0000
PUSHW = Ptr to NIBBLE buffer (0 ended)
## RETURN VALUE
CC : success
CS : A = Error
A=0, currently starting/seeking...
# GetProDOSCatSize
Compute space needed for ProDOS Catalog
@ -35,30 +58,6 @@ int getprodoscatsize (short int options, short int catsize, int devsize );
7 for Disk II(280blk),3.5(1600),3.5HD(2880)
22 for 32mb Hardisk...
# D2TrkW16s
Write a track (16 sectors)
**In:**
PUSHW = Ptr to 16*256 buffer
PUSHB = TrackNum * 4 : 0->140+
PUSHB = DSSS0000
## RETURN VALUE
CC : success
CS : A = Error
A=0, currently starting/seeking...
# D2TrkWNIB
Write a track (NIBBLE)
**In:**
PUSHW = Ptr to NIBBLE buffer (0 ended)
PUSHB = TrackNum * 4 : 0->140+
PUSHB = DSSS0000
## RETURN VALUE
CC : success
CS : A = Error
A=0, currently starting/seeking...
## License
A2osX is licensed under the GNU General Public License.

View File

@ -182,9 +182,9 @@ CS: A = EC
CC: Y,A = bytes written
CS: A = EC
# Recv (RAW,DGRAM,SEQPACKET)
# Recv (RAW,DGRAM,SEQPKT)
# RecvFrom (RAW,DGRAM,SEQPACKET)
# RecvFrom (RAW,DGRAM,SEQPKT)
## C
`hMem recv(hFD fd);`
@ -200,9 +200,9 @@ CS: A = EC
CC: A = hMem
CS: A = EC
# Send (RAW,DGRAM,SEQPACKET)
# Send (RAW,DGRAM,SEQPKT)
# SendTo (RAW,DGRAM,SEQPACKET)
# SendTo (RAW,DGRAM,SEQPKT)
## C
`int skt.send(hFD fd, const void *buf, int count);`

Binary file not shown.

Binary file not shown.

View File

@ -127,7 +127,7 @@ S.SOCKET.AF .EQ S.FD.DSOCK+0
S.SOCKET.T .EQ S.FD.DSOCK+1
S.SOCKET.T.RAW .EQ 0 S.FD.T.DSOCK,ICMP...
S.SOCKET.T.DGRAM .EQ 2 S.FD.T.DSOCK,UDP
S.SOCKET.T.SEQPACKET .EQ 4 S.FD.T.DSOCK,TCP
S.SOCKET.T.SEQPKT .EQ 4 S.FD.T.DSOCK,TCP
S.SOCKET.T.STREAM .EQ 6 S.FD.T.SSOCK,TCP
S.SOCKET.PROTO .EQ S.FD.DSOCK+2
@ -295,6 +295,6 @@ S.DNS.QTYPE.ANY .EQ 255
S.DNS.QCLASS.IN .EQ 1
*--------------------------------------
MAN
SAVE INC/LIBTCPIP.I
LOAD USR/SRC/LIB/LIBTCPIP.S
SAVE inc/libtcpip.i
LOAD usr/src/lib/libtcpip.s
ASM

View File

@ -27,8 +27,8 @@ sector .EQ $3d
BB.RetryCnt .EQ $40
BB.TargetTrk .EQ $41
BB.CurQTrk .EQ $50
BB.TargetQTrk .EQ $51
BB.CurrentQTrack .EQ $50
BB.TargetQTrack .EQ $51
BB.HdrPtr .EQ $52
@ -49,10 +49,10 @@ kernel .EQ $2000
.PH $800
xboot .DA #1
sec apple iii enters xboot 'ora $38'
bcs BB.AppleII branch if not apple iii native mode
* bcs BB.AppleII branch if not apple iii native mode
bcc *
*--------------------------------------
BB.AppleIII bcc *
* lda #$9f make apple iii boot using block 1
*BB.AppleIII lda #$9f make apple iii boot using block 1
* pha the return address is $a000
* lda #$ff
* pha
@ -161,11 +161,12 @@ rddir jsr goread call read block routine.
lda sosid is it a prodos (sos) directory?
ora sosid+1
bterr1 bne booterr branch if not.
*--------------------------------------
lda #4 begin look-up with first entry past header.
bne nxdent1 branch always
* bne nxdent1 branch always
.HS 2C BIT ABS
nxdent lda idxl
nxdent1 clc
adc entlen bump to next directory entry.
tay save in y for now.
@ -181,7 +182,7 @@ nxdent1 clc
ldy #4 else, begin at block beginning.
nxdent2 sty idxl note: this method treats garbage at
nxdent2 sty idxl
ldy #0
@ -194,9 +195,9 @@ lookpro lda (idxl),y look for matching name.
bne lookpro
ldy #$10 get file type & index block addr.
lda (idxl),y
cmp #S.FI.T.SYS is it a system file?
bne booterr
* lda (idxl),y
* cmp #S.FI.T.SYS is it a system file?
* bne booterr
iny
lda (idxl),y
@ -231,7 +232,8 @@ bterr2 bcs booterr
jmp kernel go execute kernel code.
*--------------------------------------
booterr jsr clrscrn clear video
booterr
* jsr clrscrn clear video
* ldy #BB.MSG.ERR.Len-1
*.1 lda BB.MSG.ERR,y
@ -255,7 +257,7 @@ endcode ldx slotz
clc
rts
jmp BB.Read
jmp BB.Seek
*--------------------------------------
*BB.MSG.ERR .AS -"ERR"
*BB.MSG.ERR.Len .EQ *-BB.MSG.ERR
@ -280,106 +282,123 @@ d2io lda blok figure out track & sector.
lsr
sta BB.TargetTrk
jsr BB.Trk2Qtrk
sta BB.TargetQTrk
lda buff+1
sta dbuf+1
ldx slotz
lda IO.D2.DrvOn,x
jsr BB.Read go read sector.
jsr BB.Seek go read sector.
inc dbuf+1 bump address
inc sector
inc sector and sector #
bcs quitrd branch if error.
jsr BB.Read
jsr BB.Seek
quitrd ldy IO.D2.DrvOff,x
rts return error status in carry.
*--------------------------------------
BB.Read lda BB.HdrTrk get track we're on
BB.Seek lda BB.HdrTrk get track we're on
jsr BB.Trk2Qtrk
sta BB.CurQTrk
sta BB.CurrentQTrack
lda BB.TargetTrk
jsr BB.Trk2Qtrk
sta BB.TargetQTrack
ldy #0
beq .2
.1 lda BB.CurQTrk
jsr BB.PhaseOff
.2 ldx BB.CurQTrk
cpx BB.TargetQTrk
.1 lda BB.TargetQTrack
sec
sbc BB.CurrentQTrack
beq .8
bcs .3
bcc .2
inx
* Current < Target, must move in
cmp #2
bcc .6 one QT remaining
lda BB.CurrentQTrack
and #$FE from QT1 or QT3
inc
inc
bra .4
* Current > Target, must move out
.2 cmp #$FF
beq .6 one QT remaining
.HS B0 BCS
lda BB.CurrentQTrack
bit #1 from QT1 or QT3
bne .3
.3 dex
dec
.3 dec
stx BB.CurQTrk
.4 sta BB.CurrentQTrack
and #6
ora slotz
tax
pha
tya
beq .5
txa
jsr BB.PhaseOn
lda IO.D2.Ph0Off,y
lda #114
jsr BB.Wait100usecA Trash X
.5 lda IO.D2.Ph0On,x
ply
lda #164
jsr BB.Wait100usecA
bra .1
iny
* Last QTrack
bcs .1 CS from BB.MSWait
.6 lda BB.TargetQTrack
and #6
ora slotz
tax
inc
inc
and #$F7
tay
lda IO.D2.Ph0On,x
lda IO.D2.Ph0On,y
.7 phx
jsr BB.Wait25600usec
plx
lda IO.D2.Ph0Off,x
lda IO.D2.Ph0Off,y
bra BB.Read
.8 tya
beq seekend
lda #0 wait 25.6 ms
jsr BB.Wait100usecA Trash X
beq BB.Read
lda BB.TargetQTrk
jsr BB.PhaseOff
bcs seekend CS from BB.MSWait
*--------------------------------------
BB.PhaseOff clc
.HS B0 BCS
*--------------------------------------
BB.PhaseOn sec
bit #1
beq .1
php
pha
jsr .1
pla
inc
plp
.1 and #6 mask for 0,2,4,6
adc slotz Slot $n0
tax
sta IO.D2.Ph0Off,x
nop
rts
bra .7
*--------------------------------------
BB.Wait25600usec
lda #0
BB.Wait100usecA sec (6) JSR (2)
.1 ldx #19 (2)
.1 ldx #18 (2)
.2 dex (2) delay 86 usec.
bne .2 (2+) 2 + 5x16 + 2 + 2
sbc #1 (2) done 'n' intervals?
bne .1 (2+) a-reg counts
* ldx slotz (3)
* bit IO.D2.RData,x (4) Slow down ACC boards
sbc #1 (2)
bne .1 (2+)
rts (6)
*--------------------------------------
@ -394,7 +413,7 @@ BB.Trk2Qtrk asl x2
.1 adc #$ff SELF MODIFIED
BB.Trk2Qtrk.RTS rts
*--------------------------------------
seekend ldx slotz
BB.Read ldx slotz
ldy #$7f allow 127 mistakes.
sty BB.RetryCnt
@ -541,7 +560,7 @@ zzzend ldx slotz
rts
chg5 .EQ *-chg5a
goseek jmp BB.Read
goseek jmp BB.Seek
.ED
*--------------------------------------
.LIST ON

View File

@ -142,7 +142,7 @@ D2.PhaseOn.RTS rts
*--------------------------------------
D2.Wait100usecA sec (2)
.1 ldx #19 (2)
.1 ldx #18 (2)
.2 dex (2)
bne .2 (3)
@ -150,8 +150,8 @@ D2.Wait100usecA sec (2)
ldx Slotn0 (3)
bit IO.D2.RData,x (4) Slow down ACC boards
sbc #1
bne .1
sbc #1 (2)
bne .1 (3)
rts
*/--------------------------------------

View File

@ -364,6 +364,6 @@ ARP.Send >STYA IOCTL+S.IOCTL.BUFPTR
jmp FRM.Send.IOCTL
*--------------------------------------
MAN
SAVE USR/SRC/LIB/LIBTCPIP.S.ARP
LOAD USR/SRC/LIB/LIBTCPIP.S
SAVE usr/src/lib/libtcpip.s.arp
LOAD usr/src/lib/libtcpip.s
ASM

View File

@ -105,6 +105,6 @@ CFG.GET >LDYA L.IPCFG
rts
*--------------------------------------
MAN
SAVE USR/SRC/LIB/LIBTCPIP.S.CFG
LOAD USR/SRC/LIB/LIBTCPIP.S
SAVE usr/src/lib/libtcpip.s.cfg
LOAD usr/src/lib/libtcpip.s
ASM

View File

@ -506,6 +506,6 @@ DNS.NextCache lda ZPCachePtr
.8 rts
*--------------------------------------
MAN
SAVE USR/SRC/LIB/LIBTCPIP.S.DNS
LOAD USR/SRC/LIB/LIBTCPIP.S
SAVE usr/src/lib/libtcpip.s.dns
LOAD usr/src/lib/libtcpip.s
ASM

View File

@ -347,6 +347,6 @@ FRM.DiscardIn lda hFrameIn
rts
*--------------------------------------
MAN
SAVE USR/SRC/LIB/LIBTCPIP.S.FRM
LOAD USR/SRC/LIB/LIBTCPIP.S
SAVE usr/src/lib/libtcpip.s.frm
LOAD usr/src/lib/libtcpip.s
ASM

View File

@ -37,6 +37,6 @@ HST.GetByAddr >PULLW ZPPtrIP TODO
rts
*--------------------------------------
MAN
SAVE USR/SRC/LIB/LIBTCPIP.S.HST
LOAD USR/SRC/LIB/LIBTCPIP.S
SAVE usr/src/lib/libtcpip.s.hst
LOAD usr/src/lib/libtcpip.s
ASM

View File

@ -73,6 +73,6 @@ ICMP.IN.ECHOREP jsr FRM.GetTargetSKT.RAW
rts
*--------------------------------------
MAN
SAVE USR/SRC/LIB/LIBTCPIP.S.ICMP
LOAD USR/SRC/LIB/LIBTCPIP.S
SAVE usr/src/lib/libtcpip.s.icmp
LOAD usr/src/lib/libtcpip.s
ASM

View File

@ -222,6 +222,6 @@ IP.SetDestMAC ldy #S.IP.DST
.99 rts
*--------------------------------------
MAN
SAVE USR/SRC/LIB/LIBTCPIP.S.IP
LOAD USR/SRC/LIB/LIBTCPIP.S
SAVE usr/src/lib/libtcpip.s.ip
LOAD usr/src/lib/libtcpip.s
ASM

View File

@ -57,7 +57,7 @@ SKT.Socket.DSOCK
clc
.9 rts
SKT.Socket.SEQPACKET
SKT.Socket.SEQPKT
SKT.Socket.STREAM
lda #S.IP.PROTOCOL.TCP
ldy #S.SOCKET.TCP
@ -198,7 +198,7 @@ SKT.connect.DGRAM
jmp SKT.SetRemAddr
SKT.connect.STREAM
SKT.connect.SEQPACKET
SKT.connect.SEQPKT
ldy #S.SOCKET.TCP.S
lda (ZPPtrSKT),y
beq .1
@ -251,7 +251,7 @@ SKT.listen >SYSCALL2 GetMemPtr
ldy #S.SOCKET.T
lda (ZPPtrSKT),y
cmp #S.SOCKET.T.SEQPACKET
cmp #S.SOCKET.T.SEQPKT
bcc SKT.listen.9
ldy #S.SOCKET.TCP.S
@ -342,7 +342,7 @@ SKT.shutdown pha
cmp #S.SOCKET.T.STREAM
beq SKT.shutdown.STREAM
*--------------------------------------
cmp #S.SOCKET.T.SEQPACKET
cmp #S.SOCKET.T.SEQPKT
bne SKT.shutdown.DGRAM
pla
@ -355,6 +355,7 @@ SKT.shutdown pha
SKT.shutdown.LISTEN
SKT.shutdown.RAW
SKT.shutdown.DGRAM
SKT.shutdown.SEQPKT
.1 ldy #S.SOCKET.HQ.TAIL
lda (ZPPtrSKT),y
ldy #S.SOCKET.HQ.HEAD
@ -836,8 +837,8 @@ SKT.GetDataFromSktOut
clc
rts
*/--------------------------------------
* # Recv (RAW,DGRAM,SEQPACKET)
* # RecvFrom (RAW,DGRAM,SEQPACKET)
* # Recv (RAW,DGRAM,SEQPKT)
* # RecvFrom (RAW,DGRAM,SEQPKT)
* ## C
* `hMem recv(hFD fd);`
* `hMem recvfrom(hFD fd, struct sockaddr *addr);`
@ -855,6 +856,7 @@ SKT.RecvFrom pha
pla
sec
.HS 90 BCC
SKT.Recv clc
php
>SYSCALL2 GetMemPtr
@ -865,9 +867,6 @@ SKT.Recv clc
cmp #S.SOCKET.T.STREAM
beq .99
cmp #S.SOCKET.T.SEQPACKET
php CS is SEQ
ldy #S.SOCKET.HQ.TAIL
lda (ZPPtrSKT),y
tax
@ -890,10 +889,7 @@ SKT.Recv clc
tay
lda (ZPPtrSKT),y
plp
bcc .10 not a SEQPKT socket
.10 plp if CS, RecvFrom
plp if CS, RecvFrom
bcc .9 Exit with CC and A=hFrame
pha
@ -940,19 +936,18 @@ SKT.Recv clc
clc
.9 rts
.99 lda #ERR.SKT.BAD
plp
.99 plp
lda #ERR.SKT.BAD
sec
rts
.90 lda #0 no data
plp
plp
.90 plp
lda #0 no data
sec
rts
*/--------------------------------------
* # Send (RAW,DGRAM,SEQPACKET)
* # SendTo (RAW,DGRAM,SEQPACKET)
* # Send (RAW,DGRAM,SEQPKT)
* # SendTo (RAW,DGRAM,SEQPKT)
* ## C
* `int skt.send(hFD fd, const void *buf, int count);`
* `int skt.sendto(hFD fd, const void *buf, int count, const struct sockaddr *addr);`
@ -1001,7 +996,7 @@ SKT.Send.8 jsr SKT.SetFrameOutDstIP
clc Queue if fail
jmp FRM.SendIP
*--------------------------------------
SKT.Send.SEQPACKET
SKT.Send.SEQPKT
>LDYA ZPDataInLen
jsr TCP.NewFrame
bcs SKT.Send.9
@ -1309,7 +1304,7 @@ SKT.NewTCB ldx #S.SOCKET.TCP.INSEQNUM
ldy #S.SOCKET.T
lda (ZPPtrSKT),y
cmp #S.SOCKET.T.SEQPACKET
cmp #S.SOCKET.T.SEQPKT
bcc .8
tax
@ -1481,6 +1476,6 @@ SKT.SetupZPCode ldy #ZP.CODE.Len-1
.FIN
*--------------------------------------
MAN
SAVE USR/SRC/LIB/LIBTCPIP.S.SKT
LOAD USR/SRC/LIB/LIBTCPIP.S
SAVE usr/src/lib/libtcpip.s.skt
LOAD usr/src/lib/libtcpip.s
ASM

View File

@ -378,6 +378,7 @@ TCP.SENDCLOSE ldx #0
.1 phx
lda SKT.TABLE,x
beq .8
>SYSCALL2 GetMemPtr
>STYA ZPPtrSKT
@ -385,21 +386,32 @@ TCP.SENDCLOSE ldx #0
lda (ZPPtrSKT),y
cmp #AF.INET
bne .8
iny #S.SOCKET.T
lda (ZPPtrSKT),y
cmp #S.SOCKET.T.SEQPACKET
cmp #S.SOCKET.T.SEQPKT
bcc .8
tax
ldy #S.SOCKET.TCP.S
lda (ZPPtrSKT),y
cmp #S.SOCKET.TCP.S.TIMEWT
beq .4
cmp #S.SOCKET.TCP.S.ESTBLSH
bne .2
cpx #S.SOCKET.T.SEQPKT
beq .8
jsr SKT.GetTCB
jsr TCP.OUT
bra .8
.2 cmp #S.SOCKET.TCP.S.OPENED
bne .8
jsr SKT.GetTCB
lda #S.TCP.OPTIONS.SYN
jsr TCP.OUT.SendOptA Send SYN
@ -412,34 +424,41 @@ TCP.SENDCLOSE ldx #0
lda #S.TCP.OPTIONS.SYN
jsr TCP.OUT.SendOptA Send SYN
bra .8
.4 ldy #S.SOCKET.SQ.hInMem
lda (ZPPtrSKT),y
beq .5
.DO AUXPIPE=1
>SYSCALL2 FreeStkObj
.ELSE
>SYSCALL2 freemem
.FIN
.5 ldy #S.SOCKET.SQ.hOutMem
lda (ZPPtrSKT),y
beq .6
*--------------------------------------
.4 cpx #S.SOCKET.T.SEQPKT
bne .5
jsr SKT.shutdown.SEQPKT
bra .8
.5 ldy #S.SOCKET.SQ.hInMem
jsr TCP.SENDCLOSE.PIPE
.DO AUXPIPE=1
>SYSCALL2 FreeStkObj
.ELSE
>SYSCALL2 freemem
.FIN
.6 plx
ldy #S.SOCKET.SQ.hOutMem
jsr TCP.SENDCLOSE.PIPE
plx
phx
lda SKT.TABLE,x
stz SKT.TABLE,x
>SYSCALL2 freemem
.8 plx
inx
cpx #K.SKTTABLE.SIZE
bne .1
.9 rts
rts
TCP.SENDCLOSE.PIPE
lda (ZPPtrSKT),y
beq .8
.DO AUXPIPE=1
>SYSCALL2 FreeStkObj
.ELSE
>SYSCALL2 freemem
.FIN
.8 rts
*--------------------------------------
TCP.OUT lda SKT.Cache+S.SOCKET.TCP.OUTTOSEND+1
ldy SKT.Cache+S.SOCKET.TCP.OUTTOSEND
@ -575,6 +594,6 @@ TCP.AddAYToSktCacheAtX
.8 rts
*--------------------------------------
MAN
SAVE USR/SRC/LIB/LIBTCPIP.S.TCP
LOAD USR/SRC/LIB/LIBTCPIP.S
SAVE usr/src/lib/libtcpip.s.tcp
LOAD usr/src/lib/libtcpip.s
ASM

View File

@ -27,16 +27,16 @@ AUXPIPE .EQ 1
sta ]1+1
.EM
*--------------------------------------
.INB INC/MACROS.I
.INB inc/macros.i
.DO AUXPIPE=1
.INB INC/IO.I
.INB inc/io.i
.FIN
.INB INC/A2OSX.I
.INB INC/MLI.E.I
.INB INC/NIC.I
.INB INC/ETH.I
.INB INC/LIB.NET.I
.INB INC/LIBTCPIP.I
.INB inc/a2osx.i
.INB inc/mli.e.i
.INB inc/nic.i
.INB inc/eth.i
.INB inc/lib.net.i
.INB inc/libtcpip.i
*--------------------------------------
ZPFrameInPtr .EQ ZPLIB
ZPFrameInLen .EQ ZPLIB+2
@ -140,15 +140,15 @@ J.TCP.IN .DA TCP.IN.JMP.CLOSED
.DA TCP.IN.JMP.TIMEWT
J.SKT.Socket .DA SKT.Socket.RAW
.DA SKT.Socket.DGRAM
.DA SKT.Socket.SEQPACKET
.DA SKT.Socket.SEQPKT
.DA SKT.Socket.STREAM
J.SKT.connect .DA SKT.connect.RAW
.DA SKT.connect.DGRAM
.DA SKT.connect.SEQPACKET
.DA SKT.connect.SEQPKT
.DA SKT.connect.STREAM
J.SKT.send .DA SKT.send.RAW
.DA SKT.send.DGRAM
.DA SKT.send.SEQPACKET
.DA SKT.send.SEQPKT
.DA SKT.send.STREAM
.DA 0
*--------------------------------------
@ -247,15 +247,15 @@ GetDynPort inc DYNPORT.LAST
clc
rts
*--------------------------------------
.INB USR/SRC/LIB/LIBTCPIP.S.ARP
.INB USR/SRC/LIB/LIBTCPIP.S.CFG
.INB USR/SRC/LIB/LIBTCPIP.S.DNS
.INB USR/SRC/LIB/LIBTCPIP.S.FRM
.INB USR/SRC/LIB/LIBTCPIP.S.HST
.INB USR/SRC/LIB/LIBTCPIP.S.ICMP
.INB USR/SRC/LIB/LIBTCPIP.S.IP
.INB USR/SRC/LIB/LIBTCPIP.S.SKT
.INB USR/SRC/LIB/LIBTCPIP.S.TCP
.INB usr/src/lib/libtcpip.s.arp
.INB usr/src/lib/libtcpip.s.cfg
.INB usr/src/lib/libtcpip.s.dns
.INB usr/src/lib/libtcpip.s.frm
.INB usr/src/lib/libtcpip.s.hst
.INB usr/src/lib/libtcpip.s.icmp
.INB usr/src/lib/libtcpip.s.ip
.INB usr/src/lib/libtcpip.s.skt
.INB usr/src/lib/libtcpip.s.tcp
*--------------------------------------
CS.END
*--------------------------------------

View File

@ -25,7 +25,7 @@ XRW.START cld $D8 to flag language card bank 1 (main)
beq L59BD
lda #$01
sta montimeh
sta XRW.montimeh
L59A6 lda XRW.LastUnitUsed
and #$70
@ -37,7 +37,7 @@ L59A6 lda XRW.LastUnitUsed
jsr XRW.Wait100usec
lda montimeh
lda XRW.montimeh
bne L59A6
L59BD ldx A2L
@ -107,7 +107,7 @@ regrwts ldy #$01 retry count
php save test results
lda #$E8
sta montimeh
sta XRW.montimeh
lda unitnum determine drive 1 or 2.
cmp XRW.LastUnitUsed same drive used before ?
@ -148,7 +148,7 @@ L537C plp was motor on ?
L537F jsr XRW.Wait100usec wait 100us for each count in montime
lda montimeh
lda XRW.montimeh
bmi L537F count up to 0000
* motor should be up to speed,
@ -564,7 +564,7 @@ XRW.Wait100usec lda #1
XRW.Wait100usecA
sec (2)
.1 ldx #17 (2)
.1 ldx #16 (2)
.2 dex (2)
bne .2 (3)
@ -572,13 +572,13 @@ XRW.Wait100usecA
ldx A2L (3)
bit IO.D2.RData,x (4) Slow down ACC boards
inc montimel (6)
inc XRW.montimel (6)
bne .3 (3)
inc montimeh (6)
inc XRW.montimeh (6)
.3 sbc #1
bne .1
.3 sbc #1 (2)
bne .1 (3)
rts
*--------------------------------------
@ -804,8 +804,6 @@ XRW.Seek ldx XRW.UnitIndex
lda IO.D2.Ph0On,y
phx
* lda #164
* jsr XRW.Wait100usecA
lda #0 wait 25.6 ms
jsr XRW.Wait100usecA
@ -962,8 +960,8 @@ XRW.Recalibrate .HS 00
.HS 101418
XRW.XX000000 .HS 008040C0 used in fast prenib as lookup for 2-bit quantities.
* .HS FFFF
montimel .HS 00
montimeh .HS 00
XRW.montimel .HS 00
XRW.montimeh .HS 00
.HS 1C20
.HS FFFFFF
.HS 24282C3034

View File

@ -23,7 +23,7 @@ ZPPtr1 .BS 2
ZPPtr2 .BS 2
ZPSktPtr .BS 2
hFile .BS 1
hStr .BS 1
hLineBuf .BS 1
hSrvSocket .BS 1
TimeOut .BS 1
@ -33,8 +33,6 @@ ZPSrvNamePtr .BS 2
hRootdir .BS 1
ZPRootDirPtr .BS 2
hClntSocket .BS 1
ZPRequestPtr .BS 2
ZPnRequestLen .BS 2
ZPLinePtr .BS 2
@ -76,6 +74,8 @@ L.MSG.INITCONF .DA MSG.INITCONF
L.MSG.INITOK .DA MSG.INITOK
L.MSG.SKTERR .DA MSG.SKTERR
L.MSG.INCOMING .DA MSG.INCOMING
L.MSG.REQ .DA MSG.REQ
L.MSG.SKTCLOSE .DA MSG.SKTCLOSE
L.KEYWORDS.REQ .DA KEYWORDS.REQ
J.KEYWORDS.REQ .DA CS.RUN.REQ.GET
L.INDEX.HTML .DA INDEX.HTML
@ -137,7 +137,7 @@ CS.RUN.SYN
lda #E.SYN
sec
CS.RUN.RTS rts
*--------------------------------------
CS.RUN.INIT ldx #3
ldy #S.IPCFG.IP+3
@ -152,7 +152,7 @@ CS.RUN.INIT ldx #3
bcs CS.RUN.RTS
>STYA ZPLinePtr
stx hStr
stx hLineBuf
>PUSHW L.MSG.INITCONF
>PUSHW L.ETCHTTPDCONF
@ -186,17 +186,17 @@ CS.RUN.INIT ldx #3
>PUSHBI 4
>SYSCALL PrintF
*--------------------------------------
CS.RUN.LOOP >SLEEP
jsr CS.RUN.SERVER
bcs CS.RUN.ERR
bra CS.RUN.LOOP
.9 >LDYA L.MSG.SKTERR
CS.RUN.ERR >LDYA L.MSG.SKTERR
>SYSCALL PutS
lda #E.SYN
sec
CS.RUN.ERR rts
rts
*--------------------------------------
CS.RUN.CONF >PUSHW L.ETCHTTPDCONF
>PUSHBI O.RDONLY+O.TEXT
@ -313,17 +313,17 @@ CS.RUN.SERVER lda hSrvSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.accept
bcs .8
sta hClntSocket
>STA.G CLN.hSocket
>SYSCALL GetMemPtr
>STYA ZPSktPtr
>PUSHW L.MSG.INCOMING
>PUSHB.G CLN.hSocket
ldx #3
ldy #S.SOCKET.REM.ADDR
>PUSHB hClntSocket
.1 >PUSHB (ZPSktPtr),y
iny
dex
@ -335,24 +335,35 @@ CS.RUN.SERVER lda hSrvSocket
jsr CS.RUN.CLIENT
.8 clc
.9 rts
.9
CS.RUN.SERVER.RTS
rts
*--------------------------------------
CS.RUN.CLIENT >STZ.G REQ.KeepAlive
>STA.G REQ.FullPath
CS.RUN.CLIENT >LDYAI 1024
>SYSCALL GetMem
bcs CS.RUN.SERVER.RTS
>STYA ZPRepPtr
txa
>STA.G REQ.hBuf
.10 >STZ.G REQ.FullPath
>STA.G REQ.hReq
>STA.G REQ.KeepAlive
>STA.G REQ.hFile
>STA.G REQ.hBuf
.1 >SLEEP
lda hClntSocket
>LDA.G CLN.hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Recv
bcc .2
tay
beq .1
jmp .80
jmp .90
.2 jsr CS.RUN.REQ.GetFrame
.2 jsr CS.RUN.REQ.GetReq
.3 jsr CS.RUN.REQ.GetLine
bcs .4
@ -371,28 +382,17 @@ CS.RUN.CLIENT >STZ.G REQ.KeepAlive
.4 >LDA.G REQ.FullPath
beq .9
>LDYAI 1024
>SYSCALL GetMem
bcs .9
>STYA ZPRepPtr
txa
>STA.G REQ.hBuf
jsr CS.RUN.OpenFile
bcs .9
jsr CS.RUN.GetMime
bcs .9
jsr CS.RUN.SendFile
bcc .5
bra .90
.9 >PUSHWI HTTP.404.len
>PUSHW L.HTTP.404
lda hClntSocket
>LDA.G CLN.hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
bcc .5
>STZ.G REQ.KeepAlive
@ -401,30 +401,41 @@ CS.RUN.CLIENT >STZ.G REQ.KeepAlive
>SYSCALL FClose
.6 >LDA.G REQ.hBuf
beq .7
>SYSCALL freemem
.7 >LDA.G REQ.hFrame
.6 >LDA.G REQ.hReq
beq .8
>SYSCALL FreeMem
.8 >LDA.G REQ.KeepAlive
beq .80
jmp CS.RUN.CLIENT
beq .90
jmp .10
.80 lda hClntSocket
.90 >LDA.G REQ.hBuf
beq .91
>SYSCALL freemem
.91 >PUSHW L.MSG.SKTCLOSE
>PUSHB.G CLN.hSocket
>PUSHBI 1
>SYSCALL printf
>LDA.G CLN.hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
.99 rts
*--------------------------------------
CS.RUN.REQ.GetFrame
>STA.G REQ.hFrame
CS.RUN.REQ.GetReq
>STA.G REQ.hReq
>SYSCALL GetMemPtr
>STYA ZPRequestPtr
>PUSHW L.MSG.REQ
>PUSHB.G REQ.hReq
>PUSHB.G CLN.hSocket
>PUSHBI 2
>SYSCALL printf
ldy #S.IP.TOTAL.LENGTH+1
lda (ZPRequestPtr),y
sec
@ -505,9 +516,7 @@ CS.RUN.OpenFile >LEA.G REQ.FullPath
>PUSHEA.G REQ.Stat
>SYSCALL FStat
.9 rts
*--------------------------------------
CS.RUN.GetMime >LEA.G REQ.FullPath
>LEA.G REQ.FullPath
>STYA ZPPtr2
ldx #$ff
@ -546,7 +555,7 @@ CS.RUN.GetMime >LEA.G REQ.FullPath
.8 >STA.G REQ.MimeType
clc
rts
.9 rts
*--------------------------------------
CS.RUN.SendFile >PUSHW ZPRepPtr
>PUSHW L.HTTP.200
@ -580,7 +589,7 @@ CS.RUN.SendFile >PUSHW ZPRepPtr
*--------------------------------------
CS.RUN.SendBuf >PUSHYA
>PUSHW ZPRepPtr
lda hClntSocket
>LDA.G CLN.hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
rts
*--------------------------------------
@ -700,7 +709,7 @@ CS.QUIT lda hSrvSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
.1 lda hStr
.1 lda hLineBuf
beq .2
>SYSCALL FreeMem
@ -730,8 +739,10 @@ MSG.TCPWAIT .AZ "HTTPD:Waiting for TCP/IP initializing..."
MSG.TCPIPERR .AZ "HTTPD:TCP/IP Not initialized properly."
MSG.INITCONF .AZ "HTTPD:Reading %s file...\r\n"
MSG.INITOK .AZ "HTTPD:Listening on port %D, root dir: %s.\r\n"
MSG.SKTERR .AZ "HTTPD:Listen Error."
MSG.INCOMING .AZ "HTTPD:Incoming Connection [SKT=%h] From : %d.%d.%d.%d\r\n"
MSG.SKTERR .AZ "HTTPD:Skt Bind Error."
MSG.INCOMING .AZ "HTTPD:Skt $%h Opened From %d.%d.%d.%d\r\n"
MSG.REQ .AZ "HTTPD:Req $%h From Skt $%h\r\n"
MSG.SKTCLOSE .AZ "HTTPD:Skt $%h Close\r\n"
*--------------------------------------
KEYWORDS.REQ .AS "GET "
.AS "Connection: "
@ -791,11 +802,12 @@ SA.LOCAL .DA #AF.INET S.SOCKADDR.AF
DS.START
REQ.FullPath .BS MLI.MAXPATH+1
REQ.Stat .BS S.STAT
REQ.hFrame .BS 1
REQ.hReq .BS 1
REQ.hFile .BS 1
REQ.hBuf .BS 1
REQ.MimeType .BS 1
REQ.KeepAlive .BS 1
CLN.hSocket .BS 1
DS.END
.ED
*--------------------------------------

View File

@ -63,6 +63,7 @@ PS.Exec jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
jsr PS.AddArgV K.IOBuf= /.../SHELL, K.Buf256=/.../SCRIPT
bcc .8 or K.IOBuf= 0, K.Buf256=/.../BINFILE
.90 pha save error code
>PUSHBI 2
lda .8+1