Kernel 0.93

This commit is contained in:
Rémy GIBERT 2019-05-16 17:51:19 +02:00
parent aa16022baa
commit 9f844defbb
7 changed files with 121 additions and 117 deletions

Binary file not shown.

View File

@ -212,9 +212,8 @@ CS.RUN.PAUSE >PUSHBI 0
bcc .5 bcc .5
cmp #MLI.E.EOF cmp #MLI.E.EOF
bne .99 beq .90
rts
bra .90
.5 inc LineNum .5 inc LineNum
bne .6 bne .6
@ -257,7 +256,15 @@ CS.RUN.GETLINE >PUSHWI 256
lda (pPS),y lda (pPS),y
.1 >SYSCALL fgets .1 >SYSCALL fgets
rts bcs .9
lda #'\'
>PUSHA
ldy #S.PS.hStdErr
lda (pPS),y
>SYSCALL fputc
.9 rts
*-------------------------------------- *--------------------------------------
CS.RUN.PRINT lda bLineNum CS.RUN.PRINT lda bLineNum
bpl .1 bpl .1

View File

@ -249,17 +249,17 @@ STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
clc clc
rts rts
.3 cmp #S.IOCTL.STATCODE.GETRC .3 cmp #S.IOCTL.STATCODE.EOF
bne STATUS.9 bne STATUS.9
lda DIB+S.DIB.S lda DIB+S.DIB.S
and #S.DIB.S.OPENED and #S.DIB.S.OPENED
beq .8 beq OPEN.E
.DO SSCIRQ=1 .DO SSCIRQ=1
lda INBUF.TAIL lda INBUF.TAIL
eor INBUF.HEAD eor INBUF.HEAD
beq .4 NO DATA? eof + TRUE beq .4 NO DATA? eof = TRUE
lda #1 lda #1
@ -295,13 +295,13 @@ CONTROL jsr STATUS.CONTROL.Init
*-------------------------------------- *--------------------------------------
OPEN lda DIB+S.DIB.S OPEN lda DIB+S.DIB.S
bit #S.DIB.S.OPENED bit #S.DIB.S.OPENED
beq .1 beq OPEN.1
lda #MLI.E.OPEN OPEN.E lda #MLI.E.OPEN
sec sec
rts rts
.1 php OPEN.1 php
sei sei
ldx DEVSLOTn08F ldx DEVSLOTn08F
@ -424,11 +424,11 @@ READ php
clc clc
rts rts
.9 lda #C.EOF .9 lda #MLI.E.IO
.HS 2C BIT ABS .HS 2C BIT ABS
.99 plp .99 lda #E.NODATA
lda #E.NODATA plp
sec sec
rts rts
*-------------------------------------- *--------------------------------------
@ -445,7 +445,7 @@ WRITE php
.3 .DO SSCIRQ=1 .3 .DO SSCIRQ=1
lda SSC.STATUS-$8F,x lda SSC.STATUS-$8F,x
bit #SSC.STATUS.nDSR true when 0 bit #SSC.STATUS.nDSR true when 0
bne .90 bne .9
lda OUTBUF.HEAD lda OUTBUF.HEAD
cmp OUTBUF.TAIL Buffer Empty? cmp OUTBUF.TAIL Buffer Empty?
@ -471,7 +471,7 @@ WRITE php
inc inc
and #BUF.MASK and #BUF.MASK
cmp OUTBUF.TAIL cmp OUTBUF.TAIL
beq .9 Buffer Full!! beq .99 Buffer Full!!
sta OUTBUF.HEAD sta OUTBUF.HEAD
@ -486,7 +486,7 @@ WRITE php
.ELSE .ELSE
.4 lda SSC.STATUS-$8F,x .4 lda SSC.STATUS-$8F,x
bit #SSC.STATUS.nDSR true when 0 bit #SSC.STATUS.nDSR true when 0
bne .90 bne .9
bit #SSC.STATUS.TDRE Outgoing char? bit #SSC.STATUS.TDRE Outgoing char?
beq .4 beq .4
@ -505,9 +505,9 @@ WRITE php
clc clc
rts rts
.90 lda #E.NODATA .9 lda #MLI.E.IO
.HS 2C BIT ABS .HS 2C BIT ABS
.9 lda #C.EOF .99 lda #E.NODATA
plp plp
sec sec
rts rts
@ -520,17 +520,20 @@ STATUS.CONTROL.Init
ldy #S.IOCTL.BUFPTR ldy #S.IOCTL.BUFPTR
lda (ZPIOCTL),y lda (ZPIOCTL),y
sta ZPBufPtr sta ZPBufPtr
iny iny
lda (ZPIOCTL),y lda (ZPIOCTL),y
sta ZPBufPtr+1 sta ZPBufPtr+1
* ldy #S.IOCTL.BYTECNT iny #S.IOCTL.BYTECNT
iny
lda (ZPIOCTL),y lda (ZPIOCTL),y
eor #$ff eor #$ff
sta ZPCount sta ZPCount
iny iny
lda (ZPIOCTL),y lda (ZPIOCTL),y
eor #$ff eor #$ff
sta ZPCount+1 sta ZPCount+1

View File

@ -367,8 +367,7 @@ S.IOCTL.STATCODE.STATUS .EQ 0
S.IOCTL.STATCODE.GETDCB .EQ 1 S.IOCTL.STATCODE.GETDCB .EQ 1
S.IOCTL.STATCODE.GETNL .EQ 2 S.IOCTL.STATCODE.GETNL .EQ 2
S.IOCTL.STATCODE.GETDIB .EQ 3 S.IOCTL.STATCODE.GETDIB .EQ 3
S.IOCTL.STATCODE.GETRC .EQ 4 S.IOCTL.STATCODE.EOF .EQ 4
S.IOCTL.STATCODE.GETWC .EQ 5
S.IOCTL.CTRLCODE .EQ 4 1 BYTE S.IOCTL.CTRLCODE .EQ 4 1 BYTE
S.IOCTL.CTRLCODE.RESET .EQ 0 S.IOCTL.CTRLCODE.RESET .EQ 0
S.IOCTL.CTRLCODE.SETDCB .EQ 1 S.IOCTL.CTRLCODE.SETDCB .EQ 1

View File

@ -10,12 +10,23 @@ NEW
.INB INC/NET.TELNET.I .INB INC/NET.TELNET.I
*-------------------------------------- *--------------------------------------
TIMEOUT.MAX .EQ 100 10 sec. TIMEOUT.MAX .EQ 100 10 sec.
IAC.BUF.MAX .EQ 32
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY
.OR ZPBIN .OR ZPBIN
ZS.START ZS.START
ZPPtr1 .BS 2 ZPPtr1 .BS 2
TimeOut .BS 1 TimeOut .BS 1
hErr .BS 1
ArgIndex .BS 1
ArgDev .BS 1
ArgProg .BS 1
hFILE .BS 1
bExitOnClose .BS 1
IAC.CMD .BS 1
IAC.SUBCMD .BS 1
IAC.SB.CMD .BS 1
IAC.SB.LEN .BS 1
ZS.END .ED ZS.END .ED
*-------------------------------------- *--------------------------------------
* File Header (16 Bytes) * File Header (16 Bytes)
@ -48,6 +59,15 @@ L.ENV.TERM .DA ENV.TERM
*-------------------------------------- *--------------------------------------
CS.INIT clc CS.INIT clc
rts rts
TEST lda ArgProg
>SYSCALL ArgV
>PUSHYA
lda hErr
>SYSCALL fputs
rts
*-------------------------------------- *--------------------------------------
CS.RUN ldy #S.PS.ARGC CS.RUN ldy #S.PS.ARGC
lda (pPs),y lda (pPs),y
@ -55,7 +75,8 @@ CS.RUN ldy #S.PS.ARGC
bcc .9 bcc .9
.1 >INC.G ArgIndex .1 inc ArgIndex
lda ArgIndex
>SYSCALL ArgV >SYSCALL ArgV
bcs .8 bcs .8
@ -65,18 +86,18 @@ CS.RUN ldy #S.PS.ARGC
bcs .9 bcs .9
beq .1 valid option, check next arg beq .1 valid option, check next arg
>LDA.G ArgDev lda ArgDev
bne .2 bne .2
>LDA.G ArgIndex lda ArgIndex
>STA.G ArgDev sta ArgDev
bra .1 bra .1
.2 >LDA.G ArgProg .2 lda ArgProg
bne .9 bne .9
>LDA.G ArgIndex lda ArgIndex
>STA.G ArgProg sta ArgProg
bra .1 bra .1
.9 >PUSHBI 0 .9 >PUSHBI 0
@ -86,15 +107,19 @@ CS.RUN ldy #S.PS.ARGC
sec sec
.99 rts .99 rts
.8 >LDA.G ArgDev .8 lda ArgDev
beq .9 beq .9
>LDA.G ArgProg lda ArgProg
beq .9 beq .9
ldy #S.PS.hStdErr
lda (pPs),y
sta hErr
>PUSHWI 0 auxtype >PUSHWI 0 auxtype
>PUSHBI 0 type >PUSHBI 0 type
>PUSHBI O.RDWR >PUSHBI O.RDWR
>LDA.G ArgDev lda ArgDev
>SYSCALL ArgV >SYSCALL ArgV
>SYSCALL fopen >SYSCALL fopen
@ -107,7 +132,7 @@ CS.RUN ldy #S.PS.ARGC
iny #S.PS.hStdErr iny #S.PS.hStdErr
sta (pPs),y sta (pPs),y
>STA.G hFILE sta hFILE
CS.RUN.LOOP0 >SLEEP CS.RUN.LOOP0 >SLEEP
@ -149,7 +174,7 @@ CS.RUN.LOOP1 >SLEEP
.1 lda TimeOut .1 lda TimeOut
bne CS.RUN.LOOP1 bne CS.RUN.LOOP1
>LDA.G ArgDev lda ArgDev
>SYSCALL ArgV >SYSCALL ArgV
>PUSHYA >PUSHYA
>PUSHWI K.VER >PUSHWI K.VER
@ -160,16 +185,15 @@ CS.RUN.LOOP1 >SLEEP
bcs CS.RUN.EXIT unable to send greetings... bcs CS.RUN.EXIT unable to send greetings...
.2 >PUSHBI S.PS.F.HOLD .2 >PUSHBI S.PS.F.HOLD
lda ArgProg
>LDA.G ArgProg
>SYSCALL ArgV >SYSCALL ArgV
>SYSCALL ExecV >SYSCALL ExecV
>SLEEP >SLEEP
CS.RUN.EXIT >LDA.G bExitOnClose CS.RUN.EXIT lda bExitOnClose
bmi .8 bmi .8
jmp CS.RUN.LOOP0 jmp CS.RUN.LOOP0
.8 lda #0 .8 lda #0
@ -179,15 +203,14 @@ CS.RUN.9 rts
CS.RUN.IACMODE >SYSCALL GetChar Wait for IAC CMD (or SB) CS.RUN.IACMODE >SYSCALL GetChar Wait for IAC CMD (or SB)
bcs CS.RUN.9 bcs CS.RUN.9
>STA.G IAC.CMD sta IAC.CMD
>SYSCALL GetChar Wait for IAC SUBCMD >SYSCALL GetChar Wait for IAC SUBCMD
bcs CS.RUN.9 bcs CS.RUN.9
>STA.G IAC.SUBCMD ldx IAC.SUBCMD
tax
>LDA.G IAC.CMD lda IAC.CMD
cmp #SB cmp #SB
beq CS.RUN.IAC.SB beq CS.RUN.IAC.SB
*-------------------------------------- *--------------------------------------
@ -216,9 +239,9 @@ CS.RUN.IAC.CMD cmp #WILL
CS.RUN.IAC.SB >SYSCALL GetChar Wait for IAC SB.IS or SEND CS.RUN.IAC.SB >SYSCALL GetChar Wait for IAC SB.IS or SEND
bcs .9 bcs .9
>STA.G IAC.SB.CMD sta IAC.SB.CMD
>STZ.G IAC.SB.LEN stz IAC.SB.LEN
.2 >SYSCALL GetChar .2 >SYSCALL GetChar
bcs .9 bcs .9
@ -226,21 +249,17 @@ CS.RUN.IAC.SB >SYSCALL GetChar Wait for IAC SB.IS or SEND
cmp #IAC cmp #IAC
beq .4 end of DATA, go wait SE beq .4 end of DATA, go wait SE
pha ldy IAC.SB.LEN
>LDA.G IAC.SB.LEN
clc
adc #IAC.SB.DATA
tay
pla
sta (pData),y sta (pData),y
iny iny
lda #0 lda #0
sta (pData),y sta (pData),y
>INC.G IAC.SB.LEN sty IAC.SB.LEN
bra .2 cpy #IAC.BUF.MAX
bne .2
bra .8
.4 >SYSCALL GetChar .4 >SYSCALL GetChar
bcs .9 bcs .9
@ -248,15 +267,15 @@ CS.RUN.IAC.SB >SYSCALL GetChar Wait for IAC SB.IS or SEND
cmp #SE cmp #SE
bne .8 bne .8
>LDA.G IAC.SUBCMD lda IAC.SUBCMD
cmp #TELOPT.TTYPE cmp #TELOPT.TTYPE
bne .8 bne .8
>LDA.G IAC.SB.CMD lda IAC.SB.CMD
cmp #SB.IS cmp #SB.IS
bne .8 bne .8
>PUSHEA.G IAC.SB.DATA >PUSHW pData IAC.SB.DATA
>LDYA L.ENV.TERM >LDYA L.ENV.TERM
>SYSCALL SetEnv >SYSCALL SetEnv
@ -274,7 +293,7 @@ CS.DOEVENT lda (pEvent)
.9 sec do not discard TIMER event .9 sec do not discard TIMER event
rts rts
*-------------------------------------- *--------------------------------------
CS.QUIT >LDA.G hFILE CS.QUIT lda hFILE
beq .8 beq .8
>SYSCALL fclose >SYSCALL fclose
@ -337,16 +356,7 @@ ENV.TERM .AZ "TERM"
.DUMMY .DUMMY
.OR 0 .OR 0
DS.START DS.START
ArgIndex .BS 1 IAC.SB.DATA .BS IAC.BUF.MAX
ArgDev .BS 1
ArgProg .BS 1
hFILE .BS 1
bExitOnClose .BS 1
IAC.CMD .BS 1
IAC.SUBCMD .BS 1
IAC.SB.CMD .BS 1
IAC.SB.LEN .BS 1
IAC.SB.DATA .BS 32
DS.END .ED DS.END .ED
MAN MAN
SAVE USR/SRC/SBIN/GETTY.S SAVE USR/SRC/SBIN/GETTY.S

View File

@ -448,18 +448,15 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1
tax tax
iny iny
sbc (pFD),y sbc (pFD),y
bcc .12 pla A,X = cnt
bcc .12 cnt < Used
pla
dey
lda (pFD),y
pha
iny
lda (pFD),y lda (pFD),y
tax tax
dey
lda (pFD),y A,X = Used
.12 pla .12 sta .80+1
sta .80+1
stx .81+1 stx .81+1
eor #$ff eor #$ff
sta IO.Counter sta IO.Counter
@ -475,7 +472,7 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1
sty .2+1 sty .2+1
ldy #S.FD.PIPE.Tail+1 ldy #S.FD.PIPE.Tail+1
* clc clc
adc (pFD),y adc (pFD),y
sta .2+2 sta .2+2
@ -529,19 +526,21 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1
ldy #S.FD.PIPE.Tail ldy #S.FD.PIPE.Tail
sta (pFD),y sta (pFD),y
lda .80+1
ldy #S.FD.PIPE.Free ldy #S.FD.PIPE.Free
clc clc
adc (pFD),y lda (pFD),y
adc .80+1
sta (pFD),y sta (pFD),y
iny iny
lda .81+1 lda (pFD),y
adc (pFD),y adc .81+1
sta (pFD),y sta (pFD),y
ldy #S.FD.PIPE.Used iny #S.FD.PIPE.Used
sec sec
lda (pFD),y lda (pFD),y
sbc .80+1 sbc .80+1
@ -613,7 +612,7 @@ IO.WRITE.PIPE ldy #S.FD.PIPE.S
eor #$ff eor #$ff
sta IO.Counter+1 sta IO.Counter+1
pla pla
ldy #S.FD.PIPE.Used+1 iny #S.FD.PIPE.Used+1
adc (pFD),y adc (pFD),y
sta (pFD),y sta (pFD),y
@ -766,21 +765,8 @@ IO.EOF.TRUE lda #$ff
* clc * clc
IO.EOF.REG.RTS rts IO.EOF.REG.RTS rts
*-------------------------------------- *--------------------------------------
IO.EOF.CDEV >LDYAI K.IOBuf IO.EOF.CDEV lda #S.IOCTL.STATCODE.EOF
>STYA K.S.IOCTL+S.IOCTL.BUFPTR jmp K.GetDevStatus.I
lda #S.IOCTL.STATCODE.GETRC
jsr K.GetDevStatus.I
bcs IO.EOF.REG.RTS
lda K.IOBuf
ora K.IOBuf+1
beq IO.EOF.TRUE
IO.EOF.FALSE lda #0
* clc
rts
*-------------------------------------- *--------------------------------------
IO.EOF.SSOCK ldy #S.FD.SSOCK.EOF IO.EOF.SSOCK ldy #S.FD.SSOCK.EOF
@ -802,7 +788,10 @@ IO.EOF.PIPE clc
iny iny
ora (pFD),y ora (pFD),y
beq IO.EOF.TRUE beq IO.EOF.TRUE
bne IO.EOF.FALSE
IO.EOF.FALSE lda #0
* clc
rts
*-------------------------------------- *--------------------------------------
IO.MLIOPEN >LDYAI 1024 get a ProDOS IOBUF IO.MLIOPEN >LDYAI 1024 get a ProDOS IOBUF
ldx #S.MEM.F.ALIGN+S.MEM.F.NOMOVE ldx #S.MEM.F.ALIGN+S.MEM.F.NOMOVE

View File

@ -62,13 +62,13 @@ DRV.TERM.STATUS jsr DRV.TERM.GetIOCTLBufCntDCB
clc clc
rts rts
.3 cmp #S.IOCTL.STATCODE.GETRC .3 cmp #S.IOCTL.STATCODE.EOF
bne .9 bne .9
ldy #S.DCB.TTY.STATUS ldy #S.DCB.TTY.STATUS
lda (ZPDCBPtr),y lda (ZPDCBPtr),y
and #S.DIB.S.OPENED and #S.DIB.S.OPENED
beq .8 beq DRV.TERM.OPEN.E
jsr DRV.TERM.CURBLNK jsr DRV.TERM.CURBLNK
@ -76,24 +76,20 @@ DRV.TERM.STATUS jsr DRV.TERM.GetIOCTLBufCntDCB
lda (ZPDCBPtr),y lda (ZPDCBPtr),y
iny iny
sec sec
sbc (ZPDCBPtr),y OUTHEAD eor (ZPDCBPtr),y OUTHEAD
bne .8
and #$F
bit bActive bit bActive
bpl .8 bpl .7
bit OPENAPPLE bit OPENAPPLE
bmi .8 bmi .7
bit KBD bit KBD
bpl .8 bmi .8
inc .7 lda #$ff
.HS 2C BIT ABS
.8 sta (ZPBufPtr) .8 lda #0
ldy #1
lda #0
sta (ZPBufPtr),y
clc clc
rts rts
@ -108,13 +104,13 @@ DRV.TERM.OPEN tax DEV.ID in A
ldy #S.DCB.TTY.STATUS ldy #S.DCB.TTY.STATUS
lda (ZPDCBPtr),y lda (ZPDCBPtr),y
bit #S.DIB.S.OPENED bit #S.DIB.S.OPENED
beq .1 beq DRV.TERM.OPEN.1
lda #MLI.E.OPEN DRV.TERM.OPEN.E lda #MLI.E.OPEN
sec sec
rts rts
.1 txa DRV.TERM.OPEN.1 txa
ldx #0 ldx #0
.2 ldy A2osX.SCRNDEVS,x .2 ldy A2osX.SCRNDEVS,x
@ -760,8 +756,8 @@ DRV.TERM.G1 ldy #S.DCB.TTY.bG1ALT
.1 ror .1 ror
sta (ZPDCBPtr),y sta (ZPDCBPtr),y
clc lda #0
rts jmp DRV.TERM.SETMODE
*-------------------------------------- *--------------------------------------
DRV.TERM.IAC ldy #S.DCB.TTY.INBUFFER DRV.TERM.IAC ldy #S.DCB.TTY.INBUFFER
lda (ZPDCBPtr),y lda (ZPDCBPtr),y