mirror of https://github.com/A2osX/A2osX.git
Kernel 0.94
This commit is contained in:
parent
d34a1cbf52
commit
5bba299976
163
.Docs/KERNEL.md
163
.Docs/KERNEL.md
|
@ -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.
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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.
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
*/--------------------------------------
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
|
|
112
SBIN/HTTPD.S.txt
112
SBIN/HTTPD.S.txt
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue