Kernel 0.93+

This commit is contained in:
Rémy GIBERT 2019-10-03 08:25:27 +02:00
parent 8c9c506d61
commit cb8adcbb8b
170 changed files with 652 additions and 7981 deletions

View File

@ -31,7 +31,7 @@ CS.START cld
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
@ -52,15 +52,12 @@ CS.INIT clc
* if RUN exits with CC, RN entered again
*--------------------------------------
CS.RUN
* Put your code here
>LDYA L.MSG.HELLO
>SYSCALL puts
.8 lda #0 Exit Code = Succes
sec QUIT Process
rts
.9 lda #E.SYN Exit Code = Succes
sec QUIT Process
rts

View File

@ -31,7 +31,7 @@ CS.START cld
.DA 0
*---------------------------------------
* Relocation Table
*---------------------------------------
*---------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
@ -52,15 +52,12 @@ CS.INIT clc
* if RUN exits with CC, RUN entered again
*---------------------------------------
CS.RUN
* Put your code here
* >LDYA L.MSG.Test Load EFFECTIVE address
* >SYSCALL puts Call API to print a string
.8 lda #0 Exit Code = Succes
sec QUIT Process
rts
.9 lda #E.SYN Exit Code = Succes
sec QUIT Process
rts

Binary file not shown.

View File

@ -12,15 +12,12 @@ NEW
A2osX.QC.Start .EQ *
A2osX.QC cld
jmp A2osX.QC.Start1
A2osX.QC.BOOT .BS 32
A2osX.QC.ROOT .BS 32
A2osX.QC.Start1 sei
ldx #$FF
txs
cli
bit RROMBNK1
>LDYAI A2osX.QC
>STYA POWERUP
@ -28,14 +25,10 @@ A2osX.QC.Start1 sei
lda #$01
sta MEMTABL+$17 protect ProDOS MLI Page
ldx #$16
.1 stz MEMTABL,x Reset ProDOS memory bitmap
dex
bne .1
lda #$CF protect zero page, stack and page 1
sta MEMTABL
@ -50,30 +43,24 @@ A2osX.QC.Start1 sei
sec
>LDYAI A2osX.QC.ROOT
jsr A2osX.QC.PrintYA
.3 jsr MLI
.DA #MLISETPREFIX
.DA MLISETPREFIX00
bcc .4
>LDYAI MSG.SETPREFIXKO
jsr A2osX.QC.PrintYA
>LDYAI A2osX.QC.BOOT
sec
jsr A2osX.QC.PrintYA
bra .3
.4 >LDYAI MSG.SETPREFIXOK
sec
jsr A2osX.QC.PrintYA
ldx A2osX.QC.BOOT
stx $280 For appending SYS/KERNEL
stz $2C0,x
.5 lda A2osX.QC.BOOT,x
sta $280,x
sta $2C0-1,x BOOT sz for KERNEL
@ -82,7 +69,6 @@ A2osX.QC.Start1 sei
ldx A2osX.QC.ROOT
stz $2E0,x
.6 lda A2osX.QC.ROOT,x
sta $2E0-1,x ROOT sz for KERNEL
dex
@ -90,7 +76,6 @@ A2osX.QC.Start1 sei
jsr A2osX.QC.KLoad
bcs *
.8 >LDYAI MSG.INIT1OK
sec
jsr A2osX.QC.PrintYA
@ -99,7 +84,6 @@ A2osX.QC.Start1 sei
* >STYA POWERUP
* bit RROMBNK1
* jsr SETPWRC
>DEBUGOA
jmp $2000
*--------------------------------------
@ -110,25 +94,20 @@ A2osX.QC.KLoad >LDYAI MSG.KLOAD
ldx $280
ldy #0
.2 inx
iny
lda SYSKERNEL,y
sta $280,x
cpy SYSKERNEL
bne .2
stx $280
>LDYAI $280
clc
jsr A2osX.QC.PrintYA
jsr MLI
.DA #MLIOPEN
.DA MLIOPENK
bcs .9
lda MLIOPENK+5
sta MLIREADK+1
sta MLICLOSEK+1
@ -139,7 +118,6 @@ A2osX.QC.KLoad >LDYAI MSG.KLOAD
php
pha
jsr MLI
.DA #MLICLOSE
.DA MLICLOSEK
@ -147,7 +125,6 @@ A2osX.QC.KLoad >LDYAI MSG.KLOAD
pla
plp
bcc .8
.9 pha
>LDYAI MSG.KLOAD.KO
clc
@ -165,19 +142,16 @@ A2osX.QC.PrintYA
beq .9
ldy #1
.1 lda (TmpPtr1),y
ora #$80
jsr COUT
iny
dex
bne .1
.9 plp
bcc .99
jsr CROUT
.99 rts
.99 rts
*--------------------------------------
MLISETPREFIX00 .DA #1
.DA A2osX.QC.BOOT

View File

@ -31,7 +31,6 @@ KM.Filename .EQ $8B00 MLI.MAXPATH
*--------------------------------------
SYSTEM.START .EQ *
.PH $1000
A2osX.Init0 >LDYAI $2000
>STYA TmpPtr1
>LDYAI $1000
@ -39,12 +38,10 @@ A2osX.Init0 >LDYAI $2000
ldx #$10 reloc $2000-$2FFF to $1000-$1FFF
ldy #0
.1 lda (TmpPtr1),y
sta (TmpPtr2),y
iny
bne .1
inc TmpPtr1+1
inc TmpPtr2+1
dex
@ -54,7 +51,6 @@ A2osX.Init0 >LDYAI $2000
*--------------------------------------
A2osX.Init1 ldx #$FF init 6502 stack to highest
txs
bit RROMBNK1
jsr HOME
>LDYAI MSG.INIT0
@ -67,7 +63,6 @@ A2osX.Init1 ldx #$FF init 6502 stack to highest
and #MACHID.M
cmp #MACHID.M.128
beq A2osX.Init1.128
>LDYAI MSG.SYSMEM.KO
jsr PrintFYA
bra *
@ -78,7 +73,6 @@ A2osX.Init1.128 jsr MLI
bcs *
ldx Boot.Prefix
.1 lda Boot.Prefix,x
sta A2osX.QC.B.BOOT,x
sta A2osX.QC.B.ROOT,x
@ -86,7 +80,6 @@ A2osX.Init1.128 jsr MLI
bpl .1
jsr A2osX.Screen80
>LDYAI MSG.INIT0
jsr PrintFYA
@ -102,7 +95,6 @@ A2osX.Init1.128 jsr MLI
>LDYAI MSG.SYSMEM.OK
jsr PrintFYA
>LDYAI MSG.CPU
jsr PrintFYA
@ -112,7 +104,6 @@ A2osX.Init1.128 jsr MLI
adc #$01
cld
bpl .2 if minus, BUG!, we have 6502
>LDYAI MSG.CPU.KO
jsr PrintFYA
bra *
@ -138,11 +129,9 @@ A2osX.RamDrv >LDYAI MSG.RAMDRV
>LDYAI MSG.RAMDRV.KO0
jsr PrintFYA
bra A2osX.SetupQC
.1 >LDYAI MSG.RAMDRV.KO1
jsr PrintFYA
bra A2osX.SetupQC
.2 >LDYAI MSG.RAMDRV.OK
jsr PrintFYA
*--------------------------------------
@ -155,7 +144,6 @@ A2osX.SetupQC lda RRAMWRAMBNK2
lda RRAMWRAMBNK2
ldx #0
.1 lda A2osX.QC.B.Start,x
sta $D100,x
lda A2osX.QC.B.Start+$100,x
@ -184,19 +172,15 @@ A2osX.Screen80 lda #$8C Reset 80 col screen ($0C:HOME)
sta LOGO.Filename,x
dex
bne .1
ldx Boot.Prefix
ldy #0
.2 inx
iny
lda A2osX.LOGO,y
sta LOGO.Filename,x
cpy A2osX.LOGO
bne .2
bne .2
stx LOGO.Filename
jsr MLI
.DA #MLIOPEN
.DA MLIOPEN00
@ -205,26 +189,22 @@ A2osX.Screen80 lda #$8C Reset 80 col screen ($0C:HOME)
lda MLIOPEN00+5
sta MLIREAD00+1
sta MLICLOSE00+1
jsr MLI
.DA #MLIREAD
.DA MLIREAD00
bcs .98
jsr .98
bra A2osX.ScreenDLGR
.98 jsr MLI
.DA #MLICLOSE
.DA MLICLOSE00
.99 rts
.99 rts
*--------------------------------------
A2osX.ScreenDLGR
lda #20
sta WNDTOP
sta CV
jsr VTAB
sta CLRHIRES
sta SETMIXED
sta CLRTEXT
@ -235,18 +215,14 @@ A2osX.ScreenDLGR
sta TmpPtr1
lda /A2osX.LOGOLOAD+S.BM
sta TmpPtr1+1
ldx #0
.1 lda SCR.BASEL,x
sta TmpPtr2
lda SCR.BASEH,x
sta TmpPtr2+1
ldy #0
.2 lda (TmpPtr1),y
pha
and #$f
phy
@ -266,18 +242,15 @@ A2osX.ScreenDLGR
iny
cpy #40
bne .2
lda TmpPtr1
clc
adc #40
sta TmpPtr1
bcc .3
inc TmpPtr1+1
.3 ldy #0
.4 lda (TmpPtr1),y
pha
and #$f
phy
@ -300,14 +273,12 @@ A2osX.ScreenDLGR
iny
cpy #40
bne .4
lda TmpPtr1
clc
adc #40
sta TmpPtr1
bcc .7
inc TmpPtr1+1
.7 inx
cpx #20
bne .1
@ -322,22 +293,18 @@ DisableRamDRV php
lda DEVPTRS3D2+1
cmp DEVPTRS+1 S0D1=NODEV
beq .9 S3D2=NODEV, nothing to do
.1 ldx DEVCNT
.2 lda DEVLST,x LOOKING FOR $BF, $BB, $B7, $B3
and #$F3
cmp #$B3
beq .3
dex
bpl .2
plp
lda #1 No device found, exit with error
sec
rts
.3 cpx DEVCNT
beq .5
@ -346,23 +313,19 @@ DisableRamDRV php
inx
cpx DEVCNT
bne .4
.5 ldx DEVCNT
stz DEVLST,x
dec DEVCNT
lda DEVPTRS
sta DEVPTRS3D2
lda DEVPTRS+1
sta DEVPTRS3D2+1
plp
jsr MLI
.DA #MLIONLINE
.DA MLIONLINE01
clc Success!!
rts
.9 plp
lda #0 Not detected
sec
@ -380,9 +343,7 @@ EnumKM ldx #0
iny
cpx SYS
bne .1
sty Boot.Prefix
jsr MLI
.DA #MLIOPEN
.DA MLIOPEN01
@ -391,28 +352,21 @@ EnumKM ldx #0
lda MLIOPEN01+5
sta MLIREAD01+1
sta MLICLOSE01+1
.2 jsr MLI
.DA #MLIREAD
.DA MLIREAD01
bcs .98
lda #EnumKM.EPB
sta EnumKM.EC
>LDYAI A2osX.ReadBuff+4
>STYA EnumKM.BPTR
.3 >LDYA EnumKM.BPTR
>STYA TmpPtr1
lda (TmpPtr1)
and #$F0 Empty ?
beq .5 yes, skip
and #$C0 anything out of type 1,2 or 3 ?
bne .5 yes, skip
lda (TmpPtr1)
and #$0F
cmp KM.PREFIX at least enough chars for KM.*?
@ -422,17 +376,13 @@ EnumKM ldx #0
lda (TmpPtr1),y
cmp #$06 'BIN'?
bne .5 skip
ldy KM.PREFIX
.4 lda (TmpPtr1),y
cmp KM.PREFIX,y
bne .5
dey
bne .4
jsr LoadKM
.5 lda EnumKM.BPTR
clc
adc #EnumKM.EL
@ -443,7 +393,6 @@ EnumKM ldx #0
.6 dec EnumKM.EC
bne .3
bra .2
.98 cmp #MLI.E.EOF
beq .8
pha
@ -456,7 +405,7 @@ EnumKM ldx #0
.8 jsr MLI
.DA #MLICLOSE
.DA MLICLOSE01
rts
rts
*--------------------------------------
EnumKM.EC .BS 1
EnumKM.BPTR .BS 2
@ -466,7 +415,6 @@ LoadKM ldx Boot.Prefix
sta KM.Filename,x
dex
bne .1
ldx Boot.Prefix
lda (TmpPtr1)
and #$0F
@ -475,18 +423,15 @@ LoadKM ldx Boot.Prefix
adc Boot.Prefix
sta KM.Filename
tax
.2 lda (TmpPtr1),y
sta KM.Filename,x
dex
dey
bne .2
lda #KM.Filename
pha
lda /KM.Filename
pha
>LDYAI MSG.KMLOAD
jsr PrintFYA
@ -498,21 +443,17 @@ LoadKM ldx Boot.Prefix
lda MLIOPEN02+5
sta MLIREAD02+1
sta MLICLOSE02+1
jsr MLI
.DA #MLIREAD
.DA MLIREAD02
bcs .98
jsr .9
jsr A2osX.KMLOAD
.98 pha
jsr .9
pla
sec
rts
.9 jsr MLI
.DA #MLICLOSE
.DA MLICLOSE02
@ -545,7 +486,7 @@ MLIGETPREFIX01 .DA #1
MLIONLINE01 .DA #2
.DA #0
.DA MLIONLINE01BUF
MLIONLINE01BUF .BS 256
MLIONLINE01BUF .BS 256
*--------------------------------------
MLIOPEN00 .DA #3 For DIR listing
.DA LOGO.Filename

View File

@ -47,7 +47,6 @@ CS.INIT >LDYA L.LIBETALK
>SYSCALL LoadLib
bcs .9
sta hLIBETALK
.9 rts
*--------------------------------------
CS.RUN >LIBCALL hLIBETALK,LIBETALK.GETCFG
@ -57,7 +56,6 @@ CS.RUN >LIBCALL hLIBETALK,LIBETALK.GETCFG
* bmi .1
* jmp CS.RUN.ERR
.1 ldy #S.PS.ARGC
lda (pPs),y
cmp #1
@ -66,28 +64,23 @@ CS.RUN >LIBCALL hLIBETALK,LIBETALK.GETCFG
.2 >PUSHEA.G DST.ADDR+3
>PUSHEA.G DST.ADDR+1
>PUSHBI 4 2 Ptrs
>PUSHW L.SSCANF.ADDR
lda #1
>SYSCALL ArgV
>SYSCALL sscanf
bcs CS.RUN.ERR
ldy #S.PS.ARGC
lda (pPs),y
cmp #1
beq CS.RUN.QUERY
cmp #3
bne CS.RUN.ERR
jmp CS.RUN.ADD
CS.RUN.ERR >PUSHBI 0
>LDYA L.MSG.Usage
>SYSCALL printf
lda #E.SYN
sec
rts
@ -98,39 +91,30 @@ CS.RUN.QUERY jsr Init.Timeout
>PUSHEA.G DST.ADDR
>LIBCALL hLIBETALK,LIBETALK.AARP.QUERY
bcc .2 success, print & exit
jsr Wait.TimeOut
bcs .8
>SLEEP
>SYSCALL GetChar
bcs .1
cmp #3
beq .9
bra .1
.2 ldx #5
ldy #DST.MAC+5
.3 >PUSHB (pData),y
dey
dex
bpl .3
ldx #3
ldy #DST.ADDR+3
.4 >PUSHB (pData),y
dey
dex
bne .4
>PUSHBI 8
>LDYA L.MSG2
>SYSCALL printf
.8 lda #0
.9 sec
rts
*--------------------------------------
@ -140,13 +124,10 @@ CS.RUN.ADD >PUSHEA.G DST.MAC+5
>PUSHEA.G DST.MAC+2
>PUSHEA.G DST.MAC+1
>PUSHEA.G DST.MAC
>PUSHBI 12 6 Ptrs
>PUSHW L.SSCANF.MAC
lda #2
>SYSCALL ArgV
>SYSCALL sscanf
bcs .9
@ -155,20 +136,16 @@ CS.RUN.ADD >PUSHEA.G DST.MAC+5
>LIBCALL hLIBETALK,LIBETALK.AARP.ADD
clc
.8 rts
.9 jmp CS.RUN.ERR
*--------------------------------------
CS.RUN.DUMP >LIBCALL hLIBETALK,LIBETALK.AARP.GETCACHE
>STYA ZPPTR1
>LDYA L.MSG0
>SYSCALL puts
ldx #K.AARPCACHE.SIZE
.1 lda (ZPPTR1)
beq .4
ldy #S.AARPCACHE.ADDR+3
>PUSHB (ZPPTR1),y
dey
@ -176,27 +153,21 @@ CS.RUN.DUMP >LIBCALL hLIBETALK,LIBETALK.AARP.GETCACHE
>PUSHB (ZPPTR1),y
iny
>PUSHB (ZPPTR1),y
ldy #S.AARPCACHE.MAC+6
.3 dey
>PUSHB (ZPPTR1),y
cpy #S.AARPCACHE.MAC
bne .3
ldy #S.AARPCACHE.TTL+1
>PUSHB (ZPPTR1),y
dey
>PUSHB (ZPPTR1),y
>PUSHB (ZPPTR1)
>PUSHBI 12
>LDYA L.MSG1
phx
>SYSCALL printf
plx
.4 lda ZPPTR1
clc
adc #S.AARPCACHE
@ -205,7 +176,6 @@ CS.RUN.DUMP >LIBCALL hLIBETALK,LIBETALK.AARP.GETCACHE
inc ZPPTR1+1
.5 dex
bne .1
.8 lda #0 tell TSKMGR that all done ok, but
sec we do not want to stay in memory
rts
@ -224,7 +194,6 @@ CS.DOEVENT lda (pEvent)
CS.QUIT lda hLIBETALK
beq .8
>SYSCALL UnloadLib
.8 clc
rts
*--------------------------------------

View File

@ -72,25 +72,20 @@ CS.INIT >LDYA L.LIBTCPIP
*--------------------------------------
CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ?
>STYA ZPIPCfgPtr
lda (ZPIPCfgPtr) Configured ?
bmi CS.RUN.IPOK
>LDYA L.MSG.IPKO
>SYSCALL puts
lda #E.SYN
sec
rts
CS.RUN.IPOK ldy #S.IPCFG.IP+3
ldx #3
.1 lda (ZPIPCfgPtr),y
sta SA.LOCAL+S.SOCKADDR.ADDR,x
dey
dex
bpl .1
>INC.G ArgIndex
>SYSCALL ArgV
bcs .9
@ -99,7 +94,6 @@ CS.RUN.IPOK ldy #S.IPCFG.IP+3
jsr Init.Timeout
.2 >PUSHW L.SA.REMOTE.AD
>PUSHW ZPHostPtr
>LIBCALL hLIBTCPIP,LIBTCPIP.HST.GETBYNAME
bcc CS.RUN.HOSTOK
@ -112,44 +106,37 @@ CS.RUN.IPOK ldy #S.IPCFG.IP+3
>LDYA L.MSG.UNKNOWN
>SYSCALL printf
bra CS.RUN.ESYN
.9 >PUSHBI 0
>LDYA L.MSG.USAGE
>SYSCALL printf
CS.RUN.ESYN lda #E.SYN
sec
CS.RUN.RTS rts
secCS.RUN.RTS
rts
CS.RUN.HOSTOK >INC.G ArgIndex
>SYSCALL ArgV
bcc .10
jmp CS.RUN.PORTOK
.10 >STYA ZPPtr
lda (ZPPtr)
cmp #'-'
beq .1
>LDYA ZPPtr
>LDYA ZPPtr
>SYSCALL atoi
bcs CS.RUN.RTS
>STYA SA.REMOTE+S.SOCKADDR.PORT
>INC.G ArgIndex
>SYSCALL ArgV
bcs .8
>STYA ZPPtr
lda (ZPPtr)
cmp #'-'
bne CS.RUN.ESYN
.1 ldy #1
lda (ZPPtr),y
cmp #'U'
bne .2
>INC.G ArgIndex
>SYSCALL ArgV
.9 bcs CS.RUN.ESYN
@ -158,23 +145,18 @@ CS.RUN.HOSTOK >INC.G ArgIndex
>SYSCALL strlen
>STYA ZPReqBufLen
.8 bra CS.RUN.PORTOK
.2 cmp #'F'
bne CS.RUN.ESYN
>INC.G ArgIndex
>SYSCALL ArgV
bcs CS.RUN.RTS
CS.RUN.PORTOK >PUSHW ZPHostPtr
>PUSHW SA.REMOTE+S.SOCKADDR.PORT
ldx #3
.1 >PUSHB SA.REMOTE+S.SOCKADDR.ADDR,x
dex
bpl .1
>PUSHBI 8
>LDYA L.MSG.HOSTOK
>SYSCALL printf
@ -190,21 +172,17 @@ CS.RUN.OPENSKT >PUSHBI 0 no protocol
pla
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind
bcc .2
.9 >LDYA L.MSG.SKTKO
>SYSCALL puts
lda #E.SYN
sec
rts
sec
c rts
.2 >PUSHW L.SA.REMOTE
>LDA.G hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
bcs .9
>LDYA L.MSG.SKTOK
>SYSCALL puts
>LDYAI RESP.BUFSIZE
>SYSCALL getmem
bcs .9
@ -217,7 +195,6 @@ CS.RUN.GET jsr CS.RUN.DIR
jsr CS.RUN.DIRDECODE
bcs .99
.9 lda #0
sec
.99 rts
@ -241,7 +218,6 @@ CS.RUN.IOERR pha
rts
*--------------------------------------
CS.RUN.DIR jsr Init.Timeout
.10 >PUSHWI ADT.DIR.LEN
>PUSHW L.ADT.DIR
@ -250,11 +226,9 @@ CS.RUN.DIR jsr Init.Timeout
bcc .8
tay
bne .99
>SLEEP
jsr Wait.TimeOut
bcc .10
.99 lda #MLI.E.IO
sec
rts
@ -266,22 +240,17 @@ CS.RUN.DIRDECODE
jsr Init.Timeout
.1 >SLEEP
>LDA.G hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Recv
bcc .2
tay
bne .8
>LDA.G bResponse
bne .81
jsr Wait.Timeout
bcs .99
bra .1
.2 >STA.G hFrame
>SYSCALL GetMemPtr
>STYA ZPRespBufPtr
@ -290,20 +259,16 @@ CS.RUN.DIRDECODE
lda (ZPRespBufPtr),y
cmp #$C1
bne .99
iny
lda (ZPRespBufPtr),y
sta ZPPayloadLen
iny
lda (ZPRespBufPtr),y
sta ZPPayloadLen+1
iny
lda (ZPRespBufPtr),y
cmp #$D3
bne .99
>DEBUG
jsr CS.RUN.UNRLE
@ -312,18 +277,14 @@ CS.RUN.DIRDECODE
ldy #S.PS.hStdOut
lda (pPs),y
>SYSCALL fwrite
>INC.G bResponse
bra .1
.8 cmp #MLI.E.IO SKT Close ?
bne .9
.80 >LDA.G bResponse
beq .99
.81 clc
rts
.99 lda #MLI.E.IO
.9 sec
@ -332,12 +293,10 @@ CS.RUN.DIRDECODE
CS.RUN.UNRLE >LDYA ZPPayloadLen
>SYSCALL getmem
bcs .9
>STYA ZPPayloadPtr
>STYA ZPPtr
txa
>STA.G hPayloadBuf
lda ZPPayloadLen
eor #$ff
sta ZPCnt
@ -345,15 +304,12 @@ CS.RUN.UNRLE >LDYA ZPPayloadLen
lda ZPPayloadLen+1
eor #$ff
sta ZPCnt+1
ldx #0
ldy #S.UDP+8
.1 inc ZPCnt
bne .2
inc ZPCnt+1
beq .8
.2 txa
clc
adc (ZPRespBufPtr),y
@ -362,11 +318,9 @@ CS.RUN.UNRLE >LDYA ZPPayloadLen
iny
bne .3
inc ZPRespBufPtr+1
.3 bra .1
.8 clc
.9 rts
.3 bra .1
.8 clc.9
rts
.80 sta (ZPPtr)
inc ZPPtr
@ -376,13 +330,10 @@ CS.RUN.UNRLE >LDYA ZPPayloadLen
*--------------------------------------
CS.DOEVENT lda (pEvent)
bpl .9 is it a TIMER event?
>LDA.G TimeOut
beq .9
dec
sta (pData),y
.9 sec do not discard TIMER event
rts
*--------------------------------------
@ -390,11 +341,9 @@ CS.QUIT >LDA.G hSocket
beq .1
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
.1 lda hLIBTCPIP
beq .8
>SYSCALL UnloadLib
.8 clc
rts
*--------------------------------------

View File

@ -47,7 +47,6 @@ CS.INIT >LDYA L.LIBTCPIP
>SYSCALL LoadLib
bcs .9
sta hLIBTCPIP
.9 rts
*--------------------------------------
CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG
@ -57,7 +56,6 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG
bmi .1
jmp CS.RUN.ERR
.1 ldy #S.PS.ARGC
lda (pPs),y
cmp #1
@ -68,28 +66,22 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG
>PUSHEA.G DST.IP+2
>PUSHEA.G DST.IP+1
>PUSHEA.G DST.IP
>PUSHBI 8 4 Ptrs
>PUSHW L.SSCANF.IP
lda #1
>SYSCALL ArgV
>SYSCALL sscanf
bcs CS.RUN.ERR
ldy #S.PS.ARGC
lda (pPs),y
cmp #1
beq CS.RUN.QUERY
cmp #3
bne CS.RUN.ERR
jmp CS.RUN.ADD
CS.RUN.ERR >PUSHBI 0
>LDYA L.MSG.Usage
>SYSCALL printf
lda #E.SYN
sec
rts
@ -100,39 +92,30 @@ CS.RUN.QUERY jsr Init.Timeout
>PUSHEA.G DST.IP
>LIBCALL hLIBTCPIP,LIBTCPIP.ARP.QUERY
bcc .2 success, print & exit
jsr Wait.TimeOut
bcs .8
>SLEEP
>SYSCALL GetChar
bcs .1
cmp #3
beq .9
bra .1
.2 ldx #5
ldy #DST.MAC+5
.3 >PUSHB (pData),y
dey
dex
bpl .3
ldx #3
ldy #DST.IP+3
.4 >PUSHB (pData),y
dey
dex
bpl .4
>PUSHBI 10
>LDYA L.MSG2
>SYSCALL printf
.8 lda #0
.9 sec
rts
*--------------------------------------
@ -142,13 +125,10 @@ CS.RUN.ADD >PUSHEA.G DST.MAC+5
>PUSHEA.G DST.MAC+2
>PUSHEA.G DST.MAC+1
>PUSHEA.G DST.MAC
>PUSHBI 12 6 Ptrs
>PUSHW L.SSCANF.MAC
lda #2
>SYSCALL ArgV
>SYSCALL sscanf
bcs .9
@ -157,45 +137,36 @@ CS.RUN.ADD >PUSHEA.G DST.MAC+5
>LIBCALL hLIBTCPIP,LIBTCPIP.ARP.ADD
clc
.8 rts
.9 jmp CS.RUN.ERR
*--------------------------------------
CS.RUN.DUMP >LIBCALL hLIBTCPIP,LIBTCPIP.ARP.GETCACHE
>STYA ZPPTR1
>LDYA L.MSG0
>SYSCALL puts
ldx #K.ARPCACHE.SIZE
.1 lda (ZPPTR1)
beq .4
ldy #S.ARPCACHE.IP+4
.2 dey
>PUSHB (ZPPTR1),y
cpy #S.ARPCACHE.IP
bne .2
ldy #S.ARPCACHE.MAC+6
.3 dey
>PUSHB (ZPPTR1),y
cpy #S.ARPCACHE.MAC
bne .3
ldy #S.ARPCACHE.TTL+1
>PUSHB (ZPPTR1),y
dey
>PUSHB (ZPPTR1),y
>PUSHB (ZPPTR1)
>PUSHBI 13
>LDYA L.MSG1
phx
>SYSCALL printf
plx
.4 lda ZPPTR1
clc
adc #S.ARPCACHE
@ -204,7 +175,6 @@ CS.RUN.DUMP >LIBCALL hLIBTCPIP,LIBTCPIP.ARP.GETCACHE
inc ZPPTR1+1
.5 dex
bne .1
.8 lda #0 tell TSKMGR that all done ok, but
sec we do not want to stay in memory
rts
@ -223,7 +193,6 @@ CS.DOEVENT lda (pEvent)
CS.QUIT lda hLIBTCPIP
beq .8
>SYSCALL UnloadLib
.8 clc
rts
*--------------------------------------

View File

@ -24,41 +24,30 @@ DIR.AS clc
lda #0
ror
sta DIR.Byte Save b7 of last char in string
jsr SRC.GetNextChar
bcs .9
cmp #'-'
bne .1
lda #$40 save b7 status of ALL chars
tsb DIR.Byte
jsr SRC.GetNextChar
bcs .9
.1 sta DIR.Word Save delimiter....
sta DIR.Word+1 Save also in prev char..
.2 jsr SRC.GetNextChar
bcs .8
cmp DIR.Word delimiter ?
beq .8
ldx DIR.Word+1 Get prev char
sta DIR.Word+1 replace it with new
txa
cmp DIR.Word is it the starting delimiter
beq .2 yes, skip
bit DIR.Byte
bvc .3
ora #$80
.3 jsr OUT.EmitByte no, emit prev char
bcc .2
.9 lda #E.SYNTAX.ERROR
sec
rts
@ -66,7 +55,6 @@ DIR.AS clc
.8 lda DIR.Word+1 Get prev char
cmp DIR.Word someone typed .AS "" ?
beq .88
bit DIR.Byte
bpl .81
eor #$80
@ -74,11 +62,10 @@ DIR.AS clc
.81 jmp OUT.EmitByte
.88 clc
rts
rts
*---------------------------------------
DIR.AZ jsr DIR.AS
bcs .9
lda #0
jmp OUT.EmitByte
.9 rts
@ -88,7 +75,6 @@ DIR.BS jsr SRC.GetNextCharNB
jsr EXP.Eval
bcs .9
lda SRC.ACC+3
ora SRC.ACC+2
bne .99
@ -98,82 +84,65 @@ DIR.BS jsr SRC.GetNextCharNB
lda SRC.ACC+1
eor #$ff
sta DIR.Word+1
stz DIR.Byte
jsr SRC.GetNextChar
bcs .1
cmp #' '
beq .1
cmp #','
bne .98
jsr EXP.Eval
bcs .9
lda SRC.ACC+3
ora SRC.ACC+2
ora SRC.ACC+1
bne .99
lda SRC.ACC
sta DIR.Byte
.1 inc DIR.Word
bne .2
inc DIR.Word+1
beq .8
.2 lda DIR.Byte
jsr OUT.EmitByte
bcc .1
rts
.8 clc
.9 rts
.99 lda #E.RANGE
sec
rts
.98 lda #E.SYNTAX.ERROR
sec
rts
*---------------------------------------
DIR.DA jsr SRC.GetNextCharNB
bcs .98
.1 jsr EXP.Eval
bcs .9
ldx SRC.ACC.SIZE
bne .10
ldx #2
.10 ldy #0
.2 lda SRC.ACC,y
jsr OUT.EmitByte
bcs .9
iny
dex
bne .2
.3 jsr SRC.GetNextChar
bcs .8
cmp #' '
beq .8
cmp #','
bne .98
jsr SRC.GetNextChar
bcc .1
.98 lda #E.SYNTAX.ERROR
clc
.9 rts
.8 clc
rts
*---------------------------------------
@ -181,32 +150,26 @@ DIR.DO >LDA.G ASM.DO.StackPtr
inc
cmp #DO.MAXDEPTH
bcs .98
jsr SRC.GetNextCharNB
bcs .99
jsr EXP.Eval
bcs .99
>INC.G ASM.DO.StackPtr
* clc ok from bcs .99
adc #ASM.DO.Stack-1
tay
lda SRC.ACC
ora SRC.ACC+1
ora SRC.ACC+2
ora SRC.ACC+3
beq .1
lda #$ff
.1 sta (pData),y
lda #$FF
>STA.G ASM.DO.ON
clc
rts
.98 lda #E.TOO.MANY.DO
sec
.99 rts
@ -216,46 +179,37 @@ DIR.DU >LDA.G ASM.DU.ON
lda #$80
sta (pData),y
ldy #ASM.PC.DU
jsr DIR.SavePC
clc
rts
DIR.DU.ERR lda #E.INV.DIR
sec
rts
*---------------------------------------
DIR.ED >LDA.G ASM.DU.ON
bpl DIR.DU.ERR
lda #0
sta (pData),y
ldy #ASM.PC.DU
jsr DIR.RestorePC
clc
rts
.9 lda #E.INV.DIR
sec
rts
*---------------------------------------
DIR.EL >LDA.G ASM.DO.StackPtr
beq .9
clc
adc #ASM.DO.Stack-1
tay
lda (pData),y
eor #$ff
sta (pData),y
clc
rts
.9 lda #E.ELSE.WITHOUT.DO
sec
rts
@ -263,22 +217,19 @@ DIR.EL >LDA.G ASM.DO.StackPtr
DIR.EM lda #E.MACRO.INV.DEF
sec
rts
*---------------------------------------
*---------------------------------------
DIR.EN clc
rts
*---------------------------------------
DIR.EP >LDA.G ASM.PH.ON
bpl .9
lda #0
sta (pData),y
ldy #ASM.PC.PH
jsr DIR.RestorePC
clc
rts
.9 lda #E.INV.DIR
sec
rts
@ -290,31 +241,26 @@ DIR.EQ clc
>LDA.G SYM.bInGlobal
bpl .99
jsr SRC.GetNextCharNB
bcs .99
lda #$ff
>STA.G OUT.bEquate
>LDA.G ASM.PASS
bne .2
jsr EXP.Eval PASS#1
bcs .9
jsr SYM.Acc2Global
jmp SYM.StoreGlobal
.2 lda (ZPSymbolBuf) PASS#2
.2
lda (ZPSymbolBuf) PASS#2
and #SYMG.F.FWREF
beq .3
jsr EXP.Eval
bcs .9
jmp SYM.UpdateGlobal
.3 ldy #SYMG-1 copy back value for OUT.Print
.4 lda (ZPSymbolBuf),y
@ -335,34 +281,26 @@ DIR.FI ldy #ASM.DO.StackPtr
dec
sta (pData),y
bne .1
lda #$0
ldy #ASM.DO.ON
sta (pData),y
.1 clc
rts
.99 lda #E.INV.DIR
sec
rts
*---------------------------------------
DIR.HS jsr SRC.GetNextCharNB
bcs .99
jsr SRC.IsDigit16
bcs .99
.1 >STA.G DIR.Byte
jsr SRC.GetNextChar
bcc .2
jmp OUT.EmitByte
.2 jsr SRC.IsDigit16
bcc .3
cmp #','
beq .22
@ -373,7 +311,6 @@ DIR.HS jsr SRC.GetNextCharNB
jsr OUT.EmitByte
bcc .5
rts
.3 pha
>LDA.G DIR.Byte
asl
@ -381,46 +318,35 @@ DIR.HS jsr SRC.GetNextCharNB
asl
asl
>STA.G DIR.Byte
pla
>ORA.G DIR.Byte
.4 jsr OUT.EmitByte
bcs .9
jsr SRC.GetNextChar
bcs .8
cmp #' '
beq .8
jsr SRC.IsDigit16
bcc .1
cmp #','
beq .5
cmp #'.'
bne .99
.5 jsr SRC.GetNextChar
bcs .99
jsr SRC.IsDigit16
bcc .1
.99 lda #E.SYNTAX.ERROR
sec
.9 rts
.9 rts
.8 clc
rts
*---------------------------------------
DIR.IN jsr SRC.GetNextCharNB
bcs .9
>LDYA ZPLinePtr
jmp FIO.OpenFile
.9 lda #E.SYNTAX.ERROR
sec
rts
@ -431,38 +357,30 @@ DIR.LI jsr SRC.GetNextChar
>LDYA L.T.LI
jsr SRC.GetKeyword
bcs .9
jsr .7
jsr SRC.GetChar
bcs .8
cmp #','
beq DIR.LI
cmp #' '
beq .8
.9 lda #E.SYNTAX.ERROR
sec
rts
.7 jmp (J.LI,x)
.8 clc
rts
DIR.LI.ON ldy #ASM.LI.ON
sec
bra DIR.LI.APPLY
DIR.LI.OFF ldy #ASM.LI.ON
clc
bra DIR.LI.APPLY
DIR.LI.CON ldy #ASM.LI.CON
sec
bra DIR.LI.APPLY
DIR.LI.COFF ldy #ASM.LI.CON
clc
bra DIR.LI.APPLY
@ -470,18 +388,14 @@ DIR.LI.COFF ldy #ASM.LI.CON
DIR.LI.MON ldy #ASM.LI.MON
sec
bra DIR.LI.APPLY
DIR.LI.MOFF ldy #ASM.LI.MON
clc
bra DIR.LI.APPLY
DIR.LI.XON ldy #ASM.LI.XON
sec
bra DIR.LI.APPLY
DIR.LI.XOFF ldy #ASM.LI.XON
clc
DIR.LI.APPLY lda #0
ror
@ -496,42 +410,33 @@ DIR.MA >LDA.G ASM.MA.ON
jsr SRC.GetNextCharNB
beq DIR.OP.SYNERR
>PUSHW ZPLinePtr
>LDA.G MAC.hList
>SYSCALL SListNewKey
bcs .99
>STYA.G MAC.ID
.8 lda #$ff
>STA.G ASM.MA.ON
clc
rts
.9 lda #E.MACRO.INV.DEF
sec
.99 rts
*---------------------------------------
DIR.OP jsr SRC.GetNextCharNB
bcs DIR.OP.SYNERR
>LDYA ZPLinePtr
jmp FIO.LOAD.ASM.T
DIR.OP.SYNERR lda #E.SYNTAX.ERROR
sec
rts
*---------------------------------------
DIR.OR jsr SRC.GetNextCharNB
bcs DIR.OP.SYNERR
jsr EXP.Eval
bcs .9
ldy #ASM.PC
ldx #0
.1 lda SRC.ACC,x
sta (pData),y
inx
@ -546,15 +451,12 @@ DIR.PG clc
*---------------------------------------
DIR.PH >LDA.G ASM.PH.ON
bmi .9
lda #$80
sta (pData),y
ldy #ASM.PC.PH
jsr DIR.SavePC
jmp DIR.OR
.9 lda #E.INV.DIR
sec
rts
@ -573,20 +475,15 @@ DIR.US clc
*---------------------------------------
DIR.SavePC phy
plx
ldy #ASM.PC+3
.1 lda (pData),y
pha
dey
cpy #ASM.PC-1
bne .1
phx
ply
ldx #3
.2 pla
sta (pData),y
iny
@ -596,22 +493,18 @@ DIR.SavePC phy
rts
*---------------------------------------
DIR.RestorePC ldx #3
.1 lda (pData),y
pha
iny
dex
bpl .1
ldy #ASM.PC+3
ldx #3
.2 pla
sta (pData),y
dey
dex
bpl .2
rts
*---------------------------------------
MAN

View File

@ -17,25 +17,19 @@ NEW
EXP.Eval.Missing
lda #E.MISSING.EXP
sec
rts
rts
EXP.Eval >STZ.G EXP.Modifier
>STZ.G EXP.Prefix
>STZ.G EXP.Operator
jsr SRC.GetChar
bcs EXP.Eval.Missing
jsr SRC.IsMODReserved
bcs EXP.Eval.Next
txa
>STA.G EXP.Modifier
lda #'#'
>STA.G EXP.Prefix
EXP.Eval.Next0 jsr SRC.GetNextChar
EXP.Eval.Next stz SRC.ACC.F
lda #2
sta SRC.ACC.SIZE Default To WORD (2 bytes)
@ -44,19 +38,15 @@ EXP.Eval.Next stz SRC.ACC.F
stz SRC.ACC+1
stz SRC.ACC+2
stz SRC.ACC+3
jsr SRC.GetChar
bcs EXP.Eval.Missing
cmp #'.' Local Label?
beq .13
cmp #':'
bne .12
.13 jsr EXP.GetLocal
bcs .14
jmp EXP.EvalOperator
.14 rts
@ -65,7 +55,6 @@ EXP.Eval.Next stz SRC.ACC.F
ldy #ASM.PC+3
ldx #3
.11 lda (pData),y
sta SRC.ACC,x
dey
@ -74,45 +63,32 @@ EXP.Eval.Next stz SRC.ACC.F
jsr SRC.GetNextChar
jmp EXP.EvalOperator
.10 jsr SRC.IsDigit10 Decimal constant ?
bcs .1
jsr SRC.GetDecimal
bcs EXP.EvalExitRTS
jmp EXP.EvalOperator
.1 cmp #'$' Hex?
bne .2
jsr SRC.GetHex
bcs EXP.EvalExitRTS
bra EXP.EvalOperator
.2 cmp #'%' binary?
bne .3
jsr SRC.GetBinary
bcs EXP.EvalExitRTS
bra EXP.EvalOperator
.3 cmp #'&' octal?
bne .4
jsr SRC.GetOctal
bcs EXP.EvalExitRTS
bra EXP.EvalOperator
bra EXP.EvalOperator
.4 cmp #'''
bne .43
jsr SRC.GetNextChar
bcs EXP.EvalExitSYN
jsr EXP.SetAccA
jsr SRC.GetNextChar
bcs EXP.EvalOperator
@ -121,10 +97,8 @@ EXP.Eval.Next stz SRC.ACC.F
cmp #','
bne EXP.EvalExitSYN
bra EXP.EvalOperator
.44 jsr SRC.GetNextChar
bra EXP.EvalOperator
.43 cmp #'"'
bne .42
jsr SRC.GetNextChar
@ -138,41 +112,34 @@ EXP.Eval.Next stz SRC.ACC.F
cmp #','
bne EXP.EvalExitSYN
bra EXP.EvalOperator
.45 jsr SRC.GetNextChar
bra EXP.EvalOperator
.42 jsr SRC.IsLetter Symbol ?
bcs EXP.EvalExitSYN
jsr EXP.GetGlobal
bcs EXP.EvalExitUND
bra EXP.EvalOperator
EXP.EvalExitOK >LDA.G EXP.Modifier
beq .8
asl
tax
jmp (J.EXP.MOD-2,x)
.8 clc
EXP.EvalExitRTS rts
EXP.EvalExitSYN lda #E.SYNTAX.ERROR
sec
rts
EXP.EvalExitUND lda #E.UNDEF.SYMBOL
sec
rts
*---------------------------------------
rts
*---------------------------------------
EXP.EvalOperator
>LDA.G EXP.Operator
beq .7
jsr EXP.Compute
bcs EXP.EvalExitRTS
.7 jsr SRC.GetChar
bcs EXP.EvalExitOK
@ -186,19 +153,15 @@ EXP.EvalOperator
bcs EXP.EvalExitSYN
txa
>STA.G EXP.Operator
ldx #4
.8 lda SRC.ACC.SIZE,x
sta SRC.ARG.SIZE,x
dex
bpl .8
jmp EXP.Eval.Next0
*---------------------------------------
EXP.GetLocal jsr SRC.GetNextChar
bcs .9
jsr SRC.GetDecimal
bcs EXP.EvalExitSYN
lda SRC.ACC+1
@ -210,48 +173,40 @@ EXP.GetLocal jsr SRC.GetNextChar
jsr SYM.GetLocalX
bcc .8
>LDA.G ASM.PASS pass#2?
bne EXP.EvalExitUND
lda #SYMG.F.FWREF Mark ACC as pending
sta SRC.ACC.F
stz SRC.ACC.SIZE
clc
rts
.9 lda #E.SYNTAX.ERROR
sec
.8 rts
*---------------------------------------
.8 rts
*---------------------------------------
EXP.GetGlobal jsr SYM.LookupGlobal
bcc .8
>LDA.G ASM.PASS pass#2?
bne EXP.EvalExitUND yes, undefined symbol
lda #SYMG.F.FWREF
sta SRC.ACC.F Mark ACC as pending
stz SRC.ACC.SIZE
.1 jsr SRC.GetNextChar
bcs .8
jsr SRC.IsLetterOrDigit
bcc .1
cmp #'.'
beq .1
cmp #'_'
beq .1
.8 clc
rts
*---------------------------------------
EXP.MOD.8.3 lda SRC.ACC+2
bra EXP.MOD.8
EXP.MOD.8.2 lda SRC.ACC+1
EXP.MOD.8 sta SRC.ACC
EXP.MOD.8 sta SRC.ACC
EXP.MOD.8.1 lda #1
sta SRC.ACC.SIZE
clc
@ -269,18 +224,14 @@ EXP.Compute ldx SRC.ACC.SIZE
beq .1
ldx SRC.ARG.SIZE
beq .1
asl
tax
jmp (J.EXP.OP-2,x)
.1 >LDA.G ASM.PASS
beq .8
lda #E.UNDEF.SYMBOL
sec
rts
.8 lda #SYMG.F.FWREF Mark ACC as pending
tsb SRC.ACC.F
stz SRC.ACC.SIZE
@ -318,14 +269,11 @@ EXP.OP.LOW jsr EXP.OP.SUB
lda #0
rol
jmp EXP.SetAccA
*---------------------------------------
EXP.OP.EQU ldx #0 ARG-ACC->ACC
ldy #4
clc il not Equals, return 0
.1 lda SRC.ARG,x
eor SRC.ACC,x
bne .2
@ -334,38 +282,32 @@ EXP.OP.EQU ldx #0 ARG-ACC->ACC
bne .1
sec equals, return 1
.2 lda #0
rol
sta SRC.ACC
lda #1
sta SRC.ACC.SIZE
.9 rts
.9 rts
*---------------------------------------
EXP.OP.GRT jsr EXP.OP.SUB
lda #0
rol
eor #1
jmp EXP.SetAccA
*---------------------------------------
EXP.OP.ADD ldx #0 ARG-ACC->ACC
ldy #4
clc
.1 lda SRC.ARG,x
adc SRC.ACC,x
sta SRC.ACC,x
inx
dey
bne .1
bcc .8
lda #E.VAL.TOO.BIG
.8 rts
*---------------------------------------
@ -380,13 +322,10 @@ EXP.OP.SUB ldx #0 ARG-ACC->ACC
inx
dey
bne .1
bcs .8
lda #E.VAL.TOO.BIG
sec
rts
.8 clc
rts
*---------------------------------------

View File

@ -9,16 +9,13 @@ FIO.LOAD.ASM.T >STYA ZPPtr2
>SYSCALL GetMemPtr
>STYA ZPPtr1
ldy #$ff
ldx #$ff
.1 iny
inx
lda (ZPPtr1),y
sta ASM.T.FILENAME,x
bne .1
lda #'.'
sta ASM.T.FILENAME,x
@ -31,7 +28,6 @@ FIO.LOAD.ASM.T >STYA ZPPtr2
lda #'.'
sta ASM.T.FILENAME,x
ldy #$ff
.2 iny
@ -41,33 +37,27 @@ FIO.LOAD.ASM.T >STYA ZPPtr2
bcs .3
sta ASM.T.FILENAME,x
bra .2
.3 stz ASM.T.FILENAME,x
ldy #ASM.T.hMem
lda (pData),y
beq .4
>SYSCALL FreeMem
ldy #ASM.T.hMem
lda #0
sta (pData),y
.4 >PUSHW L.ASM.T.FILENAME
>PUSHBI 2
>LDYA L.MSG.T.FILE
jsr OUT.Print
>PUSHWZ Aux type
>PUSHBI 6 S.FI.T.BIN
>PUSHBI O.RDONLY
>LDYA L.ASM.T.FILENAME
>SYSCALL LoadFile
bcs .9
txa
ldy #ASM.T.hMem
sta (pData),y
>SYSCALL GetMemPtr
>STYA ZPPtr1
@ -80,7 +70,6 @@ FIO.LOAD.ASM.T >STYA ZPPtr2
lda (ZPPtr1),y
adc ZPPtr1+1
sta ZPAMPtr+1
iny
lda (ZPPtr1),y
clc
@ -90,7 +79,6 @@ FIO.LOAD.ASM.T >STYA ZPPtr2
lda (ZPPtr1),y
adc ZPPtr1+1
sta ZPRPtr+1
iny
lda (ZPPtr1),y
clc
@ -100,46 +88,37 @@ FIO.LOAD.ASM.T >STYA ZPPtr2
lda (ZPPtr1),y
adc ZPPtr1+1
sta ZPOpsPtr+1
.9 rts
.9 rts
*---------------------------------------
FIO.OpenFile >STYA ZPPtr1
>PUSHW ZPPtr1
>PUSHBI 2
>LDYA L.MSG.SRC.FILE
jsr OUT.Print
ldy #SRC.COUNT
lda (pData),y
cmp #IN.MAXDEPTH
bne .1
lda #E.SRC.TOO.MANY.IN
sec
rts
.1 >PUSHW L.FIO.Stat
>LDYA ZPPtr1
>SYSCALL Stat
bcs .99
lda FIO.Stat+S.STAT.P.TYPE
cmp #$04 TXT ?
bne .2
>PUSHWZ
>PUSHBI 4
>PUSHBI O.RDONLY+O.TEXT
>PUSHBI O.RDONLY+O.TEXT
bra .3
.2 cmp #$FA S-C/BAS?
.2 cmp #$FA S-C/BAS?
bne .98
>PUSHWZ
>PUSHBI $FA
>PUSHBI O.RDONLY
.3 >LDYA ZPPtr1
>SYSCALL FOpen
bcs .99
@ -152,7 +131,6 @@ FIO.OpenFile >STYA ZPPtr1
tay
pla
sta (pData),y
ldy #SRC.COUNT
lda (pData),y
clc
@ -166,17 +144,13 @@ FIO.OpenFile >STYA ZPPtr1
lda (pData),y
inc
sta (pData),y
lda #0
>STA.G SRC.LINENUM
iny
sta (pData),y
clc
rts
.98 lda #E.SRC.INV.TYPE
sec
.99 rts
*---------------------------------------
@ -192,18 +166,14 @@ FIO.ReadLine ldy #SRC.COUNT
>PUSHW ZPLineBuf
jsr FIO.ReadFromFile
bcs .19
tya
beq .13
dey
lda (ZPLineBuf),y
eor #C.CR
beq .22
iny
.22 lda #0 replace ending $0D with $00
.13 sta (ZPLineBuf),y
@ -225,7 +195,6 @@ FIO.ReadLine ldy #SRC.COUNT
>STA.G SRC.LINENUM+1
pla
>STA.G SRC.LINENUM
lda (ZPTmpBuf) LEN
sec
sbc #3
@ -237,27 +206,21 @@ FIO.ReadLine ldy #SRC.COUNT
>PUSHW ZPTmpBuf
jsr FIO.ReadFromFile
bcs .9
>LDYA ZPTmpBuf
>STYA ZPPtr1
ldy #0
.1 lda (ZPPtr1)
inc ZPPtr1
bne .11
inc ZPPtr1+1
.11 tax
bmi .2
sta (ZPLineBuf),y
beq .8 Ending 00
iny
bne .1
bra .99
.2 cmp #$C0 REPEAT char?
bne .5
@ -265,35 +228,28 @@ FIO.ReadLine ldy #SRC.COUNT
inc ZPPtr1
bne .3
inc ZPPtr1+1
.3 tax
lda (ZPPtr1) Get Repeat Char
inc ZPPtr1
bne .4
inc ZPPtr1+1
.4 sta (ZPLineBuf),y
iny
beq .99
dex
bne .4
bra .1
.5 and #$3F Compute blank count
tax
lda #$20
.6 sta (ZPLineBuf),y
iny
beq .99
dex
bne .6
bra .1
.8 clc
.9 rts
@ -311,10 +267,8 @@ FIO.ReadFromFile
>SYSCALL FRead
bcs .9
tax $100 byte transfered ?
beq .9
lda #E.LINE.TOO.LONG
sec
.9 rts
@ -322,18 +276,15 @@ FIO.ReadFromFile
FIO.FileClose ldy #SRC.COUNT
lda (pData),y
beq .8
clc
adc #SRC.hFILES-1
tay
lda (pData),y
>SYSCALL fclose
ldy #SRC.COUNT
lda (pData),y
dec
sta (pData),y
.8 clc
rts
*---------------------------------------

View File

@ -5,11 +5,9 @@ MAC.Init >SYSCALL SListNew
bcs .9
>STA.G MAC.hList
>LDYAI 256
>SYSCALL getmem
bcs .9
>STYA ZPMacroBuf
txa
>STA.G MAC.hBuf
@ -17,12 +15,10 @@ MAC.Init >SYSCALL SListNew
>LDYAI 256
>SYSCALL getmem
bcs .9
>STYA ZPMacroStk
txa
>STA.G MAC.hStk
.9 rts
.9 rts
*---------------------------------------
MAC.Reset >STZ.G MAC.StkPtr
>STA.G MAC.CtxID
@ -32,12 +28,10 @@ MAC.Quit >LDA.G MAC.hStk
beq .1
>SYSCALL FreeMem
.1 >LDA.G MAC.hBuf
beq .3
>SYSCALL FreeMem
.3 >LDA.G MAC.hList
beq .8
>SYSCALL SListFree
@ -46,34 +40,27 @@ MAC.Quit >LDA.G MAC.hStk
rts
*---------------------------------------
MAC.AddChar tax
>LDA.G ASM.PASS If Pass#2, ignore
bne .8
>LDA.G MAC.BufPtr
tay
txa
sta (ZPMacroBuf),y
>INC.G MAC.BufPtr
txa
beq .1
cmp #C.CR
bne .8
.1 >LDA.G MAC.BufPtr
tay
lda #0
>PUSHYA
>PUSHW ZPMacroBuf
>PUSHW.G MAC.ID
>LDA.G MAC.hList
>SYSCALL SListAddData
rts
.8 clc
MAC.AddChar.RTS rts
*---------------------------------------
@ -86,14 +73,12 @@ MAC.ReadLine >LDA.G MAC.StkPtr
dey
lda (ZPMacroStk),y
sta ZPPtr1+1 pop mac ID
dey
lda (ZPMacroStk),y
sta ZPPtr2
dey
lda (ZPMacroStk),y
sta ZPPtr2+1 pop offset
dey
lda (ZPMacroStk),y
sta ZPMacroBuf
@ -103,7 +88,6 @@ MAC.ReadLine >LDA.G MAC.StkPtr
tya
>STA.G MAC.StkPtr
>PUSHW ZPPtr2 offset
>PUSHWZ len = 0 (string mode)
>PUSHW ZPLineBuf
@ -117,21 +101,16 @@ MAC.ReadLine >LDA.G MAC.StkPtr
* clc
adc ZPPtr2
sta ZPPtr2
pla
adc ZPPtr2+1
sta ZPPtr2+1
>LDYA ZPMacroBuf
>SYSCALL puts
>LDA.G MAC.StkPtr
tay
lda ZPLinePtr+1 push args
sta (ZPMacroStk),y
iny
lda ZPLinePtr
sta (ZPMacroStk),y
iny
@ -139,22 +118,17 @@ MAC.ReadLine >LDA.G MAC.StkPtr
MAC.Push lda ZPPtr2+1 push offset
sta (ZPMacroStk),y
iny
lda ZPPtr2
sta (ZPMacroStk),y
iny
iny
lda ZPPtr1+1 push MAC.ID
sta (ZPMacroStk),y
iny
lda ZPPtr1
sta (ZPMacroStk),y
iny
iny
tya
>STA.G MAC.StkPtr
clc
rts
*---------------------------------------
@ -166,61 +140,45 @@ MAC.Exec jsr SRC.GetNextChar skip '>'
>SYSCALL SListLookup
bcs .90
>STYA ZPPtr1 MAC.ID
txa
* clc
adc ZPLinePtr
sta ZPLinePtr
bcc .1
inc ZPLinePtr+1
.1 jsr SRC.GetChar
bcs .8
cmp #' '
bne .92
jsr SRC.GetNextChar
beq .8 eol..
cmp #' ' some arg...
bne .8
.2 jsr SRC.GetNextChar comment....skip
bcc .2
.8 >LDA.G MAC.StkPtr
cmp #MA.MAXDEPTH*8
beq .91
stz ZPPtr2
stz ZPPtr2+1 offset = 0
>INC.G MAC.CtxID
>INC.G MAC.Depth
>LDA.G MAC.StkPtr
tay
lda ZPLinePtr+1 push args
sta (ZPMacroStk),y
iny
lda ZPLinePtr
sta (ZPMacroStk),y
iny
jmp MAC.Push
.90 lda #E.MACRO.INV
sec
rts
.91 lda #E.MACRO.TOO.MANY
sec
rts
.92 lda #E.SYNTAX.ERROR
sec
rts

View File

@ -6,19 +6,14 @@ OUT.Init lda #PAGE.LEN
rts
*---------------------------------------
OUT.Reset ldx #4
ldy #ASM.PC
.1 lda (pData),y
pha
iny
dex
bne .1
ldx #4
ldy #OUT.PC+3
.2 pla
sta (pData),y
dey
@ -27,41 +22,31 @@ OUT.Reset ldx #4
>STZ.G OUT.Buf
>STA.G OUT.bEquate
rts
*---------------------------------------
OUT.PrintLineOn
* clc
* rts
>LDA.G ASM.LI.ON
bpl .9
>LDA.G ASM.MA.ON MACRO Mode ?
bpl .1
>LDA.G ASM.LI.MON
bpl .9
bmi .8
.1 >LDA.G ASM.DO.StackPtr within a DO/ELSE ?
beq .2
clc
adc #ASM.DO.Stack-1
tay
lda (pData),y TRUE ?
bne .8 yes, print always
>LDA.G ASM.LI.CON FALSE, check CON flag...
bpl .9
bmi .8
.2
.2
.8 clc
rts
.9 sec
rts
*---------------------------------------
@ -70,16 +55,13 @@ OUT.PrintLineErr
jsr OUT.PrintLine.1
bcs .9
.1 >PUSHB.G DIR.Byte
>PUSHBI 1
>LDYA L.MSG.ERROR
>SYSCALL printf
ldx ZPLinePtr
cpx ZPLineBuf
beq .4
.3 phx
lda #'-'
>SYSCALL PutChar
@ -88,7 +70,6 @@ OUT.PrintLineErr
dex
cpx ZPLineBuf
bne .3
.4 lda #'^'
phy
>SYSCALL PutChar
@ -96,17 +77,13 @@ OUT.PrintLineErr
bcs .9
.5 jmp OUT.PrintCR
.9 rts
*---------------------------------------
OUT.PrintLine jsr OUT.PrintLineOn
bcs OUT.Print.RTS
OUT.PrintLine.1 jsr OUT.PrintLineOutBuf
bcs OUT.Print.RTS
>LDA.G SRC.COUNT
.1 dec
bmi .2
pha
@ -114,14 +91,12 @@ OUT.PrintLine.1 jsr OUT.PrintLineOutBuf
>SYSCALL putchar
pla
bra .1
.2 >PUSHW.G SRC.LINENUM
>PUSHBI 2
>LDYA L.MSG.LINENUM
>SYSCALL printf
>LDA.G MAC.Depth
.3 dec
bmi .4
pha
@ -136,7 +111,6 @@ OUT.PrintLine.1 jsr OUT.PrintLineOutBuf
*---------------------------------------
OUT.Print >SYSCALL printf
bcs OUT.Print.RTS
jmp OUT.PrintCR
OUT.Print.RTS rts
@ -144,25 +118,20 @@ OUT.Print.RTS rts
OUT.PrintLineOutBuf
>LDA.G OUT.bEquate
bne OUT.PrintLineAcc
>LDA.G OUT.Buf
beq .2
tax
clc
adc #OUT.Buf
tay
.1 >PUSHB (pData),y
dey
dex
bne .1
.2 ldy #OUT.PC+1
>PUSHB (pData),y
dey
>PUSHB (pData),y
>LDA.G OUT.Buf
pha
inc
@ -179,21 +148,17 @@ OUT.PrintLineOutBuf
OUT.PrintLineAcc
lda SRC.ACC.SIZE
beq .2
tax
ldy #0
.1 >PUSHB SRC.ACC,y
iny
dex
bne .1
lda SRC.ACC.SIZE
.2 >PUSHA Byte Count
asl
tax
cpx #9
bcs *
@ -212,27 +177,20 @@ OUT.EmitByte phy
jsr OUT.PrintLineOn
bcs .1
>LDA.G ASM.LI.XON
bpl .1
jsr OUT.PrintLineOutBuf
jsr OUT.PrintCR
.1 jsr OUT.Reset
lda #0
ldy #OUT.Buf
.2 inc
sta (pData),y
clc
adc #OUT.Buf
tay
pla
sta (pData),y
.8 >INC.G ASM.PC
bne .80
>INC.G ASM.PC+1
@ -240,7 +198,6 @@ OUT.EmitByte phy
>INC.G ASM.PC+2
bne .80
>INC.G ASM.PC+3
.80 plx
ply
clc
@ -252,10 +209,8 @@ OUT.PrintCR >PUSHBI 0
>DEBUG
OUT.PrintCR1 >DEC.G OUT.LineCnt
bne .8
lda #PAGE.LEN
sta (pData),y
* lda #$80
* >STA.G bPause
.8 rts

View File

@ -2,64 +2,49 @@ NEW
AUTO 3,1
*---------------------------------------
SRC.ParseLine jsr OUT.Reset
jsr SRC.GetChar
bcs .8
cmp #'*' Comment?
beq .8
cmp #';' Comment?
beq .8
>LDA.G ASM.DO.StackPtr
beq .1
clc
adc #ASM.DO.Stack-1
tay
lda (pData),y
beq .8
.1 >LDA.G ASM.MA.ON
bmi SRC.ParseLine.MACRO
jmp SRC.ParseLine.LABEL
.8 clc
.9 rts
*---------------------------------------
SRC.ParseLine.Macro
>STZ.G MAC.BufPtr
sta (ZPMacroBuf)
lda (ZPLinePtr)
cmp #' ' No label, scan to DIR/OP if any
bne .1
jsr SRC.GetNextCharNB
bcs .8
lda #' ' Store ONE blank
jsr MAC.AddChar
bcs .90
lda (ZPLinePtr) get back non blank char
bra .2
.1 jsr MAC.AddChar
bcs .99
jsr SRC.GetNextChar
bcs .80
cmp #' '
bne .1
jsr MAC.AddChar
.90 bcs .99
jsr SRC.GetNextCharNB
bcs .80
.2 cmp #'.' Directive ?
bne .4
@ -70,7 +55,6 @@ SRC.ParseLine.Macro
beq .21
cmp #'e'
bne .3
.21 iny
lda (ZPLinePtr),y
beq .3
@ -78,76 +62,56 @@ SRC.ParseLine.Macro
beq .22
cmp #'m'
bne .3
.22 >STZ.G ASM.MA.ON
.8 clc
rts
.80 lda #C.CR
jmp MAC.AddChar
.3 lda (ZPLinePtr)
.4 jsr MAC.AddChar
bcs .99
jsr SRC.GetNextChar
bcs .80
cmp #' '
bne .4
jsr SRC.GetNextChar
bcs .8
cmp #' '
beq .80 Comments...
pha
lda #' '
jsr MAC.AddChar
pla
bcs .99
.5 jsr MAC.AddChar Store ARG....
bcs .99
jsr SRC.GetNextChar
bcs .80
cmp #' '
bne .5
bra .80 End of Line
.99
SRC.ParseLine.RTS
.99 SRC.ParseLine.RTS
rts
*---------------------------------------
SRC.ParseLine.LABEL
jsr SRC.GetChar
cmp #' ' no label...go scan dir/opcode
beq SRC.ParseLine.DirOp
tax save char...
cmp #'.' local symbol?
beq .1
cmp #':' private symbol?
bne .8
>LDA.G MAC.StkPtr
beq SRC.ParseLine.InvLbl
.1 >LDA.G SYM.bInGlobal Not relative to Global label...
bpl SRC.ParseLine.InvLbl
jsr SRC.GetNextChar
bcs SRC.ParseLine.InvLbl
jsr SRC.GetDecimal
bcs SRC.ParseLine.InvLbl
lda SRC.ACC+1
ora SRC.ACC+2
ora SRC.ACC+3
@ -157,10 +121,8 @@ SRC.ParseLine.LABEL
cpx #':'
beq .2
jsr SYM.NewLocalA
bra .3
.2 jsr SYM.NewPrivateA
.3 bcs SRC.ParseLine.RTS
@ -168,28 +130,23 @@ SRC.ParseLine.LABEL
.8 jsr SYM.NewOrGetGlobal
bcs SRC.ParseLine.RTS
*---------------------------------------
*---------------------------------------
SRC.ParseLine.DirOp
jsr SRC.GetNextCharNB Scan for an Opcode...
bcs SRC.ParseLine.Ok
cmp #'.'
bne .5
jsr SRC.GetNextChar
bcs SRC.ParseLine.InvDir
jsr SRC.ParseLine.Dir
bcs SRC.ParseLine.Err
bra SRC.ParseLine.Ok
.5 cmp #'>'
bne SRC.ParseLine.OpCode
jsr MAC.Exec
bcs SRC.ParseLine.Err
bra SRC.ParseLine.Ok
SRC.ParseLine.Ok
clc
SRC.ParseLine.Err
@ -199,7 +156,6 @@ SRC.ParseLine.InvLbl
lda #E.INV.LABEL
sec
rts
SRC.ParseLine.InvDir
lda #E.INV.DIR
sec
@ -210,7 +166,6 @@ SRC.ParseLine.Dir
jsr SRC.GetKeyword
bcs SRC.ParseLine.InvDir
jmp (J.DIRECTIVES,x)
*---------------------------------------
SRC.ParseLine.OpCode
@ -221,7 +176,6 @@ SRC.ParseLine.OpCode
ldy #1
ora (ZPOpDefPtr),y
beq .9
lda ZPOpDefPtr
clc
adc #2
@ -229,68 +183,52 @@ SRC.ParseLine.OpCode
lda ZPOpDefPtr+1
adc #0
sta ZPPtr2+1
lda (ZPPtr2)
tax
ldy #0
.2 lda (ZPLinePtr),y
beq .7
cmp #'a'
bcc .3
cmp #'z'+1
bcs .3
eor #$20
.3 iny
cmp (ZPPtr2),y
bne .7
dex
bne .2
lda (ZPLinePtr),y
beq .8 End of Line, no AM
cmp #C.SPACE A space after opcode ?
bne .7
tya
sec skip OP + ' '
adc ZPLinePtr
sta ZPLinePtr
bcc .5
inc ZPLinePtr+1
.5 jsr SRC.GetChar
bcs .8 Nothing after OP ' '
cmp #C.SPACE OP ' ' ?
beq .8
bra SRC.ParseLine.AM
.7 lda ZPOpDefPtr
clc
adc (ZPOpDefPtr)
tax
lda ZPOpDefPtr+1
ldy #1
adc (ZPOpDefPtr),y
stx ZPOpDefPtr
sta ZPOpDefPtr+1
bra .1
.8 lda #$ff
>STA.G SRC.AMID
jsr SRC.ParseLine.AMCheck4OP
bcs .99
jmp SRC.ParseLine.Emit
.9 lda #E.INV.OPCODE
sec
.99 rts
@ -300,70 +238,52 @@ SRC.ParseLine.AM
.1 jsr SRC.IsAMReserved
bcs .2
jsr SRC.AddToBuf
bra .7
.2 jsr SRC.IsLetter Any register?
bcs .6 no, try something else
>LDYA ZPRPtr Check in register table
jsr SRC.GetKeyword
bcs .6
lda (ZPPtr1) get register len
tax
.4 inc ZPPtr1
bne .5
inc ZPPtr1+1
.5 lda (ZPPtr1)
jsr SRC.AddToBuf
dex
bne .4
bra .74
.6 jsr EXP.Eval
bcs .99
>LDA.G EXP.Prefix
beq .75
jsr SRC.AddToBuf
.75 ldx SRC.ACC.SIZE
bne .73
ldx #2 FWREF ...assume 2 bytes...
.73 lda SRC.ACC-1,x
bne .72
dex
bne .73
inx
.72 lda #'a'
.71 jsr SRC.AddToBuf
dex
bne .71
.74 jsr SRC.GetChar
bcs .8
cmp #C.SPACE
bne .1
bra .8
.7 jsr SRC.GetNextChar
bcs .8
cmp #C.SPACE
bne .1
.8 jsr SRC.ParseLine.AMCheck
bcs .9
jsr SRC.ParseLine.AMCheck4OP
@ -390,15 +310,11 @@ SRC.ParseLine.AMCheck
* >PUSHBI 6
* >LDYA L.MSG.ACC
* >SYSCALL printf
* >LDYA L.SRC.AM.StrBuf
* jsr DEBUG.PSTR
>LDYA ZPAMPtr Check if AM is valid for CPU
>STYA ZPPtr1
ldx #0
.1 inx
* phx
* lda #'?'
@ -406,27 +322,21 @@ SRC.ParseLine.AMCheck
* >LDYA ZPPtr1
* jsr DEBUG.PSTR
* plx
lda (ZPPtr1)
beq .9
cmp SRC.AM.StrBuf
bne .7
tay
.2 lda (ZPPtr1),y
.2 lda (ZPPtr1),y
cmp SRC.AM.StrBuf,y
bne .6
dey
bne .2
txa
>STA.G SRC.AMID
clc
rts
.6 lda (ZPPtr1)
.7 sec
adc ZPPtr1
@ -434,7 +344,6 @@ SRC.ParseLine.AMCheck
bcc .1
inc ZPPtr1+1
bra .1
.9 sec
rts
*---------------------------------------
@ -445,7 +354,6 @@ SRC.ParseLine.AMCheck4OP
adc #2 Skip nextLoHi
bcc .11
inx
.11 sec skip LEN Byte
ldy #2 LEN Byte
adc (ZPOpDefPtr),y
@ -453,24 +361,20 @@ SRC.ParseLine.AMCheck4OP
inx
.10 sta ZPPtr1
stx ZPPtr1+1
lda (ZPPtr1) AMID...
.1 >CMP.G SRC.AMID
beq .8
lda ZPPtr1 Skip AMID,L,"39aa"
ldx ZPPtr1+1
inc AMID....
bne .12
inx
.12 sec LEN byte...
ldy #1 String...
adc (ZPPtr1),y
bcc .2
inx
.2 sta ZPPtr1
stx ZPPtr1+1
lda (ZPPtr1)
@ -479,7 +383,6 @@ SRC.ParseLine.AMCheck4OP
lda #E.INV.AM.4.OC
sec
rts
.8 >LDYA ZPPtr1
>STYA ZPOpDefPtr
clc
@ -492,11 +395,9 @@ SRC.ParseLine.Emit
lda (ZPOpDefPtr),y
sta SRC.ACCTMP+1 Char Count in AM
iny
.4 lda (ZPOpDefPtr),y
cmp #'a
bcs .5 lowercase, go compute address
jsr SRC.IsDigit16
asl
asl
@ -518,9 +419,7 @@ SRC.ParseLine.Emit
clc
rts
.5 bne .6 cmp #'a'....
ldx SRC.ACCTMP
inc SRC.ACCTMP
lda SRC.ACC,x
@ -528,33 +427,25 @@ SRC.ParseLine.Emit
.6 cmp #'r
bne .7
lda SRC.ACC.SIZE
beq .50 Emit 00 if pending symbol (pass #1)
jsr SRC.ComputeRel8
bcs .91
bra .50
.7 cmp #'l
bne .90
lda SRC.ACC.SIZE
bne .71
jsr OUT.EmitByte Emit 00 00 if pending symbol (pass #1)
bcs .9
lda #0
bra .50
.71 jsr SRC.ComputeRel16
bcs .91
lda SRC.ACC
jsr OUT.EmitByte
bcs .9
lda SRC.ACC+1
bra .50
@ -564,7 +455,6 @@ SRC.ParseLine.Emit
.90 lda #E.INV.T.FILE
sec
rts
.91 lda #E.RANGE
sec
rts
@ -576,35 +466,27 @@ SRC.AddToBuf inc SRC.AM.StrBuf
*---------------------------------------
SRC.ExpandAddress
ldy SRC.AM.StrBuf
.1 lda SRC.AM.StrBuf,y
sta SRC.AM.StrBuf+1,y
dey
cmp #'a'
bne .1
ldx #2 "aa"
tya
beq .8
.2 lda SRC.AM.StrBuf,y
cmp #'a'
bne .8
inx "aaa"
.3 dey
bne .2
.8 inc SRC.AM.StrBuf
rts
*---------------------------------------
SRC.ComputeRel8 jsr SRC.ComputeRel
bcc .1
* positive : check 0<r<0000007F
lda SRC.ACC+3
@ -627,7 +509,6 @@ SRC.ComputeRel8 jsr SRC.ComputeRel
bpl .9
clc
rts
.9 sec
rts
*---------------------------------------
@ -635,7 +516,6 @@ SRC.ComputeRel16
jsr SRC.ComputeRel
bcc .1
* positive : check 0<r<00007FFF
lda SRC.ACC+3
@ -656,16 +536,13 @@ SRC.ComputeRel16
bpl .9
clc
rts
.9 sec
rts
*---------------------------------------
SRC.ComputeRel phy
ldy #ASM.PC
clc
lda SRC.ACC
sbc (pData),y
sta SRC.ACC
@ -681,40 +558,29 @@ SRC.ComputeRel phy
lda SRC.ACC+3
sbc (pData),y
sta SRC.ACC+3
ply
rts
*---------------------------------------
SRC.GetDecimal jsr SRC.GetChar
beq .99
stz SRC.ACC+1
stz SRC.ACC+2
stz SRC.ACC+3
jsr SRC.IsDigit10
bcs .99
and #$0F
sta SRC.ACC
.1 jsr SRC.GetNextChar
bcs .8
cmp #' '
beq .8
jsr SRC.IsEXPReserved
bcc .8
jsr SRC.IsAMReserved
bcc .8
jsr SRC.IsDigit10
bcs .9
and #$0F
pha
jsr SRC.ACC10
pla
@ -723,40 +589,33 @@ SRC.GetDecimal jsr SRC.GetChar
adc SRC.ACC
sta SRC.ACC
bcc .1
inc SRC.ACC+1
bne .1
inc SRC.ACC+2
bne .1
inc SRC.ACC+3
bne .1
.9 lda #E.VAL.TOO.BIG
sec
rts
.8 clc
rts
.99 lda #E.SYNTAX.ERROR
sec
rts
*---------------------------------------
SRC.GetHex jsr SRC.GetNextChar skip '$'
bcs .99
stz SRC.ACC+1
stz SRC.ACC+2
stz SRC.ACC+3
jsr SRC.IsDigit16
bcs .99
sta SRC.ACC
.1 jsr SRC.GetNextChar
bcs .8
cmp #' '
beq .8
jsr SRC.IsEXPReserved
@ -765,9 +624,7 @@ SRC.GetHex jsr SRC.GetNextChar skip '$'
bcc .8
jsr SRC.IsDigit16
bcs .99
ldx #4
.2 asl SRC.ACC
rol SRC.ACC+1
rol SRC.ACC+2
@ -778,52 +635,39 @@ SRC.GetHex jsr SRC.GetNextChar skip '$'
ora SRC.ACC
sta SRC.ACC
bra .1
.8 clc
rts
.9 lda #E.VAL.TOO.BIG
sec
rts
.99 lda #E.SYNTAX.ERROR
sec
rts
*---------------------------------------
SRC.GetOctal jsr SRC.GetNextChar skip '&'
bcs .99
stz SRC.ACC+1
stz SRC.ACC+2
stz SRC.ACC+3
jsr SRC.IsDigit8
bcs .99
and #$0F
sta SRC.ACC
.1 jsr SRC.GetNextChar
bcs .8
cmp #' '
beq .8
jsr SRC.IsEXPReserved
bcc .8
jsr SRC.IsAMReserved
bcc .8
jsr SRC.IsDigit8
bcs .9
asl
asl
asl
asl
asl
ldx #3
.2 asl
rol SRC.ACC
@ -834,68 +678,50 @@ SRC.GetOctal jsr SRC.GetNextChar skip '&'
dex
bne .2
bra .1
.8 clc
rts
.9 lda #E.VAL.TOO.BIG
sec
rts
.99 lda #E.SYNTAX.ERROR
sec
rts
*---------------------------------------
SRC.GetBinary jsr SRC.GetNextChar skip '%'
bcs .99
stz SRC.ACC+1
stz SRC.ACC+2
stz SRC.ACC+3
cmp #'1'
beq .10
cmp #'0'
bne .99
.10 and #$01
sta SRC.ACC
.1 jsr SRC.GetNextChar
bcs .8
cmp #' '
beq .8
jsr SRC.IsEXPReserved
bcc .8
jsr SRC.IsAMReserved
bcc .8
cmp #'1'
beq .11
cmp #'0'
bne .8
.11 lsr
rol SRC.ACC
rol SRC.ACC+1
rol SRC.ACC+2
rol SRC.ACC+3
bcs .9
bra .1
.8 clc
rts
.9 lda #E.VAL.TOO.BIG
sec
rts
.99 lda #E.SYNTAX.ERROR
sec
rts
@ -905,59 +731,45 @@ SRC.GetKeyword >STYA ZPPtr1 KeyWord table
ldx #0 Keyword.ID
.1 phx
lda (ZPPtr1)
beq .9 End Of table
tax KW len
ldy #0
.3 lda (ZPLinePtr),y
beq .6
jsr SRC.IsKeywordLetterUC
bcs .6
iny
cmp (ZPPtr1),y
bne .7
dex
bne .3
lda (ZPLinePtr),y All chars match...
beq .4 End of Line ?
jsr SRC.IsKeywordLetterUC
bcc .7 Additional letters...
.4 lda ZPLinePtr found!
clc
adc (ZPPtr1) skip KW in source line
sta ZPLinePtr
bcc .5
inc ZPLinePtr+1
.5 plx Keyword.ID
clc
rts
.6
.6
.7 lda (ZPPtr1)
sec Add keyword Len+1
adc ZPPtr1
sta ZPPtr1
bcc .8
inc ZPPtr1+1
.8 plx Keyword.ID
inx
inx
bra .1
.9 plx
sec
rts
@ -971,7 +783,7 @@ SRC.IsAMReserved
sec
rts
.8 clc
rts
rts
*---------------------------------------
SRC.IsMODReserved
ldx SRC.MOD.RESERVED
@ -981,9 +793,8 @@ SRC.IsMODReserved
bne .1
sec
rts
.8 clc
rts
rts
*---------------------------------------
SRC.IsEXPReserved
ldx SRC.EXP.RESERVED
@ -993,10 +804,9 @@ SRC.IsEXPReserved
bne .1
sec
rts
SRC.IsEXPReserved.8
clc
rts
rts
*---------------------------------------
SRC.IsKeywordLetterUC
cmp #'.'
@ -1013,12 +823,9 @@ SRC.IsKeywordLetterUC
cmp #'a'
bcc .9
cmp #'z'+1
eor #$20
rts CC if lowercase
.9 sec
.9 sec
.99 rts
*---------------------------------------
SRC.IsLetterOrDigit
@ -1034,9 +841,8 @@ SRC.IsLetter cmp #'A'
bcc .9
cmp #'z'+1
rts CC if lowercase
.9 sec
SRC.IsLetterRTS rts
.9 sec
SRC.IsLetterRTS rts
*---------------------------------------
SRC.IsDigit16 jsr SRC.IsDigit10
bcc .8
@ -1044,22 +850,18 @@ SRC.IsDigit16 jsr SRC.IsDigit10
bcc .9
cmp #'F'+1
bcc .1
cmp #'a'
bcc .9
cmp #'f'+1
bcs .9
eor #$20
.1
.1
* clc
sbc #'A'-11 cc so A->10 (11-CC)
clc
.8 and #$0F
.8 and #$0F
rts
.9 sec
rts
*---------------------------------------
@ -1067,7 +869,6 @@ SRC.IsDigit10 cmp #'0'
bcc .9
cmp #'9'+1
rts cc if ok, cs if not
.9 sec
rts
*---------------------------------------
@ -1075,7 +876,6 @@ SRC.IsDigit8 cmp #'0'
bcc .9
cmp #'7'+1
rts cc if ok, cs if not
.9 sec
rts
*---------------------------------------
@ -1084,9 +884,7 @@ SRC.GetNextCharNB
bcs .9
cmp #' '
beq SRC.GetNextCharNB
clc
.9 rts
*---------------------------------------
SRC.GetNextCharUC
@ -1097,7 +895,6 @@ SRC.GetNextCharUC
cmp #'z'+1
bcs .8
eor #$20 to Uppercase
.8 clc
.9 rts
*---------------------------------------
@ -1105,20 +902,15 @@ SRC.GetNextChar lda (ZPLinePtr)
beq SRC.GetChar.ERR
cmp #$0D
beq SRC.GetChar.ERR
inc ZPLinePtr
bne SRC.GetChar
inc ZPLinePtr+1
SRC.GetChar lda (ZPLinePtr)
beq SRC.GetChar.ERR
cmp #$0D
beq SRC.GetChar.ERR
clc
rts
SRC.GetChar.ERR sec
rts
*---------------------------------------
@ -1139,7 +931,6 @@ SRC.ACC10 lda SRC.ACC ACC*2-> ACC & ACCTMP
sta SRC.ACC+3
sta SRC.ACCTMP+3
bcs .9
ldx #2
.1 asl SRC.ACC ACC=ACC*4
rol SRC.ACC+1
@ -1148,7 +939,6 @@ SRC.ACC10 lda SRC.ACC ACC*2-> ACC & ACCTMP
bcs .9
dex
bne .1
lda SRC.ACC CC from ROL SRC.ACC+3
adc SRC.ACCTMP
sta SRC.ACC
@ -1161,8 +951,7 @@ SRC.ACC10 lda SRC.ACC ACC*2-> ACC & ACCTMP
lda SRC.ACC+3
adc SRC.ACCTMP+3
sta SRC.ACC+3 CS if overflow
.9 rts
.9 rts
*---------------------------------------
DEBUG.PSTR >PUSHYA
>PUSHBI 2

View File

@ -18,15 +18,12 @@ SYM.Init >SYSCALL SListNew
bcs .9
>STA.G SYM.hList
>LDYAI 256
>SYSCALL getmem
bcs .9
>STYA ZPSymbolBuf
txa
>STA.G SYM.hGlobalBuf
.9 rts
*---------------------------------------
SYM.Reset >STZ.G SYM.bInGlobal
@ -34,13 +31,10 @@ SYM.Reset >STZ.G SYM.bInGlobal
*---------------------------------------
SYM.Quit >LDA.G SYM.hGlobalBuf
beq .3
>SYSCALL FreeMem
.3 >LDA.G SYM.hList
beq SYM.Quit.8
>SYSCALL SListFree
SYM.Quit.8 clc
rts
*---------------------------------------
@ -48,11 +42,10 @@ SYM.Dump.End >PUSHW ZPPtr2
>PUSHBI 2
>LDYA L.MSG.SUMMARY
jmp OUT.Print
SYM.Dump.RTS rts
SYM.Dump.RTS rts
*---------------------------------------
SYM.Dump >LDA.G ASM.LI.ON
bpl SYM.Quit.8
>LDYA L.MSG.SYMBOLS
>SYSCALL puts
@ -67,9 +60,7 @@ SYM.Dump >LDA.G ASM.LI.ON
>LDA.G SYM.hList
>SYSCALL SListGetByID
bcs SYM.Dump.End
>STYA ZPPtr2 Save Next ID
>PUSHWZ Start
>PUSHWI $ffff End
>PUSHW ZPSymbolBuf
@ -78,27 +69,21 @@ SYM.Dump >LDA.G ASM.LI.ON
>SYSCALL SListGetData
bcs SYM.Dump.RTS
ldy #SYMG.SIZE Get Symbol Size
lda (ZPSymbolBuf),y
tax
beq .3
phx
.2 iny
lda (ZPSymbolBuf),y
>PUSHA
dex
bne .2
pla Byte Count
asl
tax
.3 >PUSHA
ldy L.MSG.EQU0,x
lda L.MSG.EQU0+1,x
>SYSCALL printf
@ -113,45 +98,37 @@ SYM.Dump >LDA.G ASM.LI.ON
beq .7
jsr SYM.Dump.LP
.7 jsr OUT.PrintCR
jmp .1
jmp .1
*---------------------------------------
SYM.Dump.LP ldy #SYMG
.4 lda (ZPSymbolBuf),y
beq .8
phy
iny
ldx #4
.5 iny
lda (ZPSymbolBuf),y
>PUSHA
dex
bne .5
ply
iny
lda (ZPSymbolBuf),y
tax
beq .55
>PUSHA
.55 dey
lda (ZPSymbolBuf),y
>PUSHA
phy
txa
beq .6
>PUSHBI 6
>LDYA L.MSG.PSYMBOL
bra .66
.6 >PUSHBI 5
>LDYA L.MSG.LSYMBOL
.66 >SYSCALL printf
@ -161,7 +138,6 @@ SYM.Dump.LP ldy #SYMG
tay
bra .4
.8 rts
*---------------------------------------
SYM.NewOrGetGlobal
@ -177,38 +153,28 @@ SYM.NewGlobal jsr SYM.StoreGlobal
bcs .9 Already Defined
>STYA.G SYM.GlobalID
txa
adc ZPLinePtr
sta ZPLinePtr
bcc .1
inc ZPLinePtr+1
.1 jsr SYM.PC2Acc
jsr SYM.Acc2Global
lda #SYMG
>STA.G SYM.GlobalPtr
tay
lda #0
sta (ZPSymbolBuf),y
lda #$ff
>STA.G SYM.bInGlobal
* >PUSHW.G SYM.GlobalID
* >PUSHBI 2
* >LDYA L.MSG.WORD
* >SYSCALL printf
clc
rts
.9 lda #E.SYMBOL.REDEF
sec
.99 rts
.99 rts
*---------------------------------------
SYM.GetGlobal >PUSHW ZPLinePtr Pass #2: should be already defined...
>LDA.G SYM.hList
@ -220,9 +186,7 @@ SYM.GetGlobal >PUSHW ZPLinePtr Pass #2: should be already defined...
adc ZPLinePtr
sta ZPLinePtr
bcc .1
inc ZPLinePtr+1
.1 >PUSHWZ Start
>PUSHWI $ffff End
>PUSHW ZPSymbolBuf
@ -230,12 +194,11 @@ SYM.GetGlobal >PUSHW ZPLinePtr Pass #2: should be already defined...
>LDA.G SYM.hList
>SYSCALL SListGetData
bcs .99
lda #$ff
>STA.G SYM.bInGlobal
* clc
* clc
rts
.9 lda #E.UNDEF.SYMBOL
sec
.99 rts
@ -245,16 +208,12 @@ SYM.LookupGlobal
>LDA.G SYM.hList
>SYSCALL SListLookup
bcs .9
>STYA ZPPtr1
txa
adc ZPLinePtr
sta ZPLinePtr
bcc .1
inc ZPLinePtr+1
.1 >LDA.G SYM.GlobalID
cmp ZPPtr1
bne .3
@ -262,9 +221,7 @@ SYM.LookupGlobal
lda (pData),y
cmp ZPPtr1+1
bne .3
ldy #SYMG-1
.2 lda (ZPSymbolBuf),y
sta SRC.ACC.F,y
dey
@ -280,7 +237,6 @@ SYM.LookupGlobal
>LDA.G SYM.hList
>SYSCALL SListGetData
rts
.9 lda #E.UNDEF.SYMBOL
sec
rts
@ -296,17 +252,14 @@ SYM.StoreGlobal >LDA.G ASM.PASS
lda #0
cpy #SYMG
beq .1
lda (ZPSymbolBuf)
ora #SYMG.F.LOCALS
sta (ZPSymbolBuf)
lda #0
sta (ZPSymbolBuf),y
iny
bne .1
inc
.1 >PUSHYA
>PUSHW ZPSymbolBuf
@ -314,13 +267,10 @@ SYM.StoreGlobal >LDA.G ASM.PASS
>LDA.G SYM.hList
>SYSCALL SListAddData
bcs .9
lda #0
>STA.G SYM.bInGlobal
>STA.G MAC.CtxID
rts
.8 clc
.9 rts
*---------------------------------------
@ -334,7 +284,6 @@ SYM.UpdateGlobal
*---------------------------------------
SYM.PC2Acc ldy #ASM.PC+3
ldx #3
.1 lda (pData),y
sta SRC.ACC,x
dey
@ -344,12 +293,10 @@ SYM.PC2Acc ldy #ASM.PC+3
lda #2
sta SRC.ACC.SIZE
stz SRC.ACC.F
rts
*---------------------------------------
SYM.Acc2Global ldy #SYMG-1
.2 lda SRC.ACC.F,y
.2 lda SRC.ACC.F,y
sta (ZPSymbolBuf),y
dey
bpl .2
@ -365,13 +312,11 @@ SYM.NewPrivateA sec
.HS 90 BCC
SYM.NewLocalA clc
ror ZPPtr1
tax Save Local ID
>LDA.G SYM.bInGlobal not in a global label
bpl .91
>LDA.G ASM.PASS Pass #2: should be already defined...
bne .8
@ -381,30 +326,23 @@ SYM.NewLocalA clc
>LDA.G SYM.GlobalPtr
cmp #252 6*42
beq .90
ldy #ASM.PC+4
.1 dey
lda (pData),y
pha
cpy #ASM.PC
bne .1
bne .1
lda #0
bit ZPPtr1
bpl .11 local, Ctx = 0
>LDA.G MAC.CtxID Get Macro Context ID
.11 pha
>LDA.G SYM.GlobalPtr
tay
txa Get Back ID
sta (ZPSymbolBuf),y
ldx #5 MAC ID + PC (4)
.2 pla
iny
sta (ZPSymbolBuf),y
@ -416,18 +354,15 @@ SYM.NewLocalA clc
sta (ZPSymbolBuf),y
tya
>STA.G SYM.GlobalPtr
lda (ZPSymbolBuf)
ora #SYMG.F.LOCALS
sta (ZPSymbolBuf)
.8 clc
rts
.91 lda #E.INV.LABEL
.91 lda #E.INV.LABEL
sec
rts
.90 lda #E.TOO.MANY.LOCAL
sec
rts
@ -439,12 +374,10 @@ SYM.NewLocalA clc
SYM.GetLocalX lda (ZPSymbolBuf)
and #SYMG.F.LOCALS
beq .9
ldy #SYMG
.1 lda (ZPSymbolBuf),y
beq .9
txa
cmp (ZPSymbolBuf),y
bne .4
@ -457,7 +390,6 @@ SYM.GetLocalX lda (ZPSymbolBuf)
bne .3
ldx #0
.2 iny
lda (ZPSymbolBuf),y
sta SRC.ACC,x
@ -467,7 +399,6 @@ SYM.GetLocalX lda (ZPSymbolBuf)
lda #2
sta SRC.ACC.SIZE
clc
rts
@ -477,7 +408,6 @@ SYM.GetLocalX lda (ZPSymbolBuf)
adc #SYML
tay
bra .1
.9 lda #E.UNDEF.SYMBOL
sec
rts

View File

@ -207,15 +207,12 @@ J.EXP.OP .DA EXP.OP.EOR ^!|&<=>+-*/
CS.INIT ldy #S.PS.ARGC
lda (pPs),y
beq .99
lda #1
>SYSCALL ArgV
>SYSCALL RealPath
txa
ldy #SRC.hFILENAME
sta (pData),y
jsr FIO.Init
bcs .9
@ -224,7 +221,6 @@ CS.INIT ldy #S.PS.ARGC
jsr MAC.Init
bcs .9
jsr OUT.Init
>LDYAI 256
@ -240,10 +236,8 @@ CS.INIT ldy #S.PS.ARGC
>STYA ZPTmpBuf
txa
>STA.G SRC.hTmpBuf
clc
rts
.99 >PUSHBI 0
>LDYA L.MSG.HELP
>SYSCALL printf
@ -255,7 +249,6 @@ CS.RUN ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL feof
bcs .99
tay
bne .13
@ -264,7 +257,6 @@ CS.RUN ldy #S.PS.hStdIn
cmp #$03 Ctrl-C
beq .99 Abort....beq=CS
cmp #$13 Ctrl-S
bne .11
@ -275,17 +267,14 @@ CS.RUN ldy #S.PS.hStdIn
bpl .12
clc
rts
.13 >LDA.G bPause
bpl .11
clc
.99 rts
.11 >STZ.G bPause
.12 >LDA.G SRC.COUNT root file is already opened?
bne .10
>LDA.G ASM.PASS
inc
>PUSHA
@ -295,35 +284,26 @@ CS.RUN ldy #S.PS.hStdIn
ldy #SRC.hFILENAME
lda (pData),y
>SYSCALL GetMemPtr
jsr FIO.OpenFile
bcs .99
jsr DIR.Reset
jsr SYM.Reset
jsr MAC.Reset
.10 >LDYA ZPLineBuf
>STYA ZPLinePtr
>LDA.G MAC.StkPtr
beq .20
jsr MAC.ReadLine
bcc .2
cmp #E.EMPTYKEY
bne .9
>DEC.G MAC.Depth
.20 jsr FIO.ReadLine
bcc .2
cmp #MLI.E.EOF End Of File?
bne .9
jsr FIO.FileClose
>LDA.G SRC.COUNT end of root file ?
bne .8 no continue back to previous file
@ -335,21 +315,16 @@ CS.RUN ldy #S.PS.hStdIn
sta (pData),y
clc
rts
.1 jsr SYM.Dump
>LDYA L.MSG.END
>SYSCALL puts
lda #0 End of assembly, exit with no error
sec
rts
.2 jsr SRC.ParseLine
bcs .9
jsr OUT.PrintLine
.8 clc
rts
@ -370,25 +345,17 @@ CS.QUIT jsr FIO.FileClose
jsr MAC.Quit
jsr SYM.Quit
>LDA.G ASM.T.hMem
beq .1
>SYSCALL FreeMem
.1 >LDA.G SRC.hFILENAME
beq .2
>SYSCALL FreeMem
.2 >LDA.G SRC.hLineBuf
beq .3
>SYSCALL FreeMem
.3 >LDA.G SRC.hTmpBuf
beq .8
>SYSCALL FreeMem
.8 clc

View File

@ -28,7 +28,7 @@ CS.START cld
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
@ -46,17 +46,14 @@ CS.INIT clc
CS.RUN >STZ.G P.GetInfo Sync
lda #ATGetInfo
>STA.G P.GetInfo+1
jsr A2osX.ATKCALL
bcc .10
pha
>LDYA L.MSG.NOATK
>SYSCALL printf
pla
sec
.99 rts
.99 rts
.10 >LDA.G P.GetInfo+$E NODE
>PUSHA
>PUSHW.G P.GetInfo+$8 NET
@ -66,40 +63,29 @@ CS.RUN >STZ.G P.GetInfo Sync
>STZ.G P.LookupName Sync
lda #ATLookupName
>STA.G P.LookupName+1
>LDYA L.SEARCH.STRING
>STYA.G P.LookupName+$08 Entry Name Ptr
lda #4
>STA.G P.LookupName+$C RetInt
>STA.G P.LookupName+$D RetCnt
>LDYAI 1024
>STYA.G P.LookupName+$10 BufLen
>SYSCALL getmem
bcs .99
>STYA.G P.LookupName+$12 BufPtr
>STYA ZPPTR1
txa
>STA.G hBuf
lda #16
>STA.G P.LookupName+$16 MaxMatch
jsr A2osX.ATKCALL
bcs .99
>LDA.G P.LookupName+$17
beq .8
>LDYA L.MSG.DUMP0
>SYSCALL printf
bcs .9
.1 lda ZPPTR1
clc
adc #5
@ -107,19 +93,15 @@ CS.RUN >STZ.G P.GetInfo Sync
lda ZPPTR1+1
adc #0
sta ZPPTR2+2
>PUSHW ZPPTR2
ldy #4
.2 >PUSHB (ZPPTR1),y
dey
bpl .2
>LDYA L.MSG.DUMP
>SYSCALL printf
bcs .9
lda ZPPTR2
sec
adc (ZPPTR2)
@ -127,10 +109,8 @@ CS.RUN >STZ.G P.GetInfo Sync
lda ZPPTR2+1
adc #0
sta ZPPTR1+1
>DEC.G P.LookupName+$17
bne .2
lda #0
.8 sec
.9 rts

View File

@ -27,7 +27,7 @@ CS.START cld
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
@ -43,17 +43,13 @@ CS.RUN stz K.MLI.PARAMS Sync
sta K.MLI.PARAMS+1
>MLICALL MLIATALK
bcc .10
pha
>LDYA L.MSG.NOATK
>SYSCALL printf
pla
sec
.99 rts
.10
lda #0
.99 rts
.10 lda #0
.8 sec
.9 rts
*--------------------------------------

View File

@ -24,7 +24,7 @@ S.BMP .EQ $36
*--------------------------------------
.DUMMY
.OR ZPBIN
ZS.START
ZS.START
ZPPTR1 .BS 2
ZPInputBuf .BS 2
ZPInputBufPtr .BS 2
@ -64,7 +64,7 @@ CS.START cld
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
@ -82,50 +82,40 @@ CS.RUN
.1 >INC.G ArgCount
>SYSCALL ArgV
bcs .7
>STYA ZPPtr1
lda (ZPPtr1)
cmp #'-'
bne .4
ldy #1
lda (ZPPtr1),y
ldx OptionList
.2 cmp OptionList,x
beq .3
dex
bne .2
.99 >PUSHBI 0
>LDYA L.MSG.USAGE
>SYSCALL printf
lda #E.SYN
sec
rts
.3 ldy OptionVars-1,x
lda #$80
sta (pData),y
bra .1
.4 >LDA.G hInputFile
bne .5
jsr CS.RUN.OpenInput
bcc .1 scan for any other args
rts
.5 >LDA.G hOutputFile
bne .99
jsr CS.RUN.CreateOutput
bcc .1 scan for any other args
.9 rts
.7 >LDA.G hOutputFile
beq .99
>LDA.G BMP.Header+S.BMP.BPP
cmp #1
beq CS.RUN.1
@ -137,12 +127,10 @@ CS.RUN.1 lda #S.BM.F.BBP1
* >LDA.G PIX.Header+S.BM.W
* sta ZPBMPRowBytes
* sta ZPPIXRowBytes
* iny
* lda (pData),y
* sta ZPBMPRowBytes+1
* sta ZPPIXRowBytes+1
* lda ZPBMPRowBytes
* and #%00011111
* beq .1
@ -151,9 +139,7 @@ CS.RUN.1 lda #S.BM.F.BBP1
* clc
* adc #%00100000
* bcc .1
* inc ZPBMPRowBytes+1
*
*.1 lsr ZPBMPRowBytes+1
* ror
* lsr ZPBMPRowBytes+1
@ -161,7 +147,6 @@ CS.RUN.1 lda #S.BM.F.BBP1
* lsr ZPBMPRowBytes+1
* ror
* sta ZPBMPRowBytes
* lda ZPPIXRowBytes
* and #%00000111
* beq .2
@ -170,10 +155,9 @@ CS.RUN.1 lda #S.BM.F.BBP1
* clc
* adc #%00001000
* bcc .2
* inc ZPPIXRowBytes+1
*.2 lsr ZPPIXRowBytes+1
*.2
lsr ZPPIXRowBytes+1
* ror
* lsr ZPPIXRowBytes+1
* ror
@ -181,7 +165,6 @@ CS.RUN.1 lda #S.BM.F.BBP1
* ror
* sta ZPPIXRowBytes
* >STA.G PIX.Header+S.BM.RowBytes
* lda ZPInputBufPtr
* clc
* adc ZPInputBufLen
@ -189,15 +172,12 @@ CS.RUN.1 lda #S.BM.F.BBP1
* lda ZPInputBufPtr+1
* adc ZPInputBufLen+1
* sta ZPInputDataPtr+1
* jsr CS.RUN.WRITE.HDR
* bcs CS.RUN.RTS
*CS.RUN.1.LOOP inc ZPLineCount
* bne .1
* inc ZPLineCount+1
* beq .8
*.1 lda ZPInputDataPtr
* sec
* sbc ZPBMPRowBytes
@ -205,39 +185,27 @@ CS.RUN.1 lda #S.BM.F.BBP1
* lda ZPInputDataPtr+1
* sbc ZPBMPRowBytes+1
* sta ZPInputDataPtr+1
* >LDYA ZPBufPtr
* >STYA ZPPTR1
* ldy #0
*.2 lda (ZPInputDataPtr),y
* tax
* lda TWIST,x
* sta (ZPPTR1)
* inc ZPPTR1
* bne .3
* inc ZPPTR1+1
*.3 iny
* cpy ZPPIXRowBytes
* bne .2
* >PUSHW ZPPIXRowBytes
* >PUSHW ZPOutputBufPtr
* >LDA.G hOutputFile
* >SYSCALL FWrite
* bcs CS.RUN.RTS
* bra CS.RUN.1.LOOP
*.8 >LDYA L.MSG.DONE
* >SYSCALL puts
* lda #0
* sec
CS.RUN.RTS rts
@ -248,20 +216,16 @@ CS.RUN.24 lda #S.BM.F.BBP4
>LDA.G BMP.Header+S.BMP.W
asl
sta ZPInputRowBytes
>LDA.G BMP.Header+S.BMP.W+1
rol
sta ZPInputRowBytes+1
lda ZPInputRowBytes
clc
>ADC.G BMP.Header+S.BMP.W
pha
lda ZPInputRowBytes+1
>ADC.G BMP.Header+S.BMP.W+1
tax
pla
bit #%00000011
beq .1
@ -271,40 +235,31 @@ CS.RUN.24 lda #S.BM.F.BBP4
bcc .1
inx
.1 sta ZPInputRowBytes
stx ZPInputRowBytes+1
>LDYA ZPInputRowBytes
>SYSCALL getmem
bcs CS.RUN.RTS
>STYA ZPInputBuf
txa
>STA.G hInputBuf
>LDA.G PIX.Header+S.BM.W+1
lsr
tax
>LDA.G PIX.Header+S.BM.W
ror
bcc .2
inc
bne .2
inx
.2 sta ZPOutputRowBytes
stx ZPOutputRowBytes+1
>STA.G PIX.Header+S.BM.RowBytes
* txa
* >STA.G PIX.Header+S.BM.RowBytes+1
jsr CS.RUN.GetOutputBuf
bcs CS.RUN.RTS
jsr DEBUG.ClrScr
lda #$ff
sta ZPCntY
@ -312,15 +267,11 @@ CS.RUN.24.LOOP inc ZPLineCount
bne .1
inc ZPLineCount+1
beq .8
.1 inc ZPCntY
lda #$ff
sta ZPCntX
jsr CS.RUN.ReadInput
bcs .9
lda ZPOutputBuf
sec
sbc ZPOutputRowBytes
@ -333,39 +284,31 @@ CS.RUN.24.LOOP inc ZPLineCount
bne .3
inc ZPPixelCount+1
beq CS.RUN.24.LOOP
.3 inc ZPCntX
ldx #2
ldy #0
.4 lda (ZPInputBufPtr),y
sta ZPPixel24,x
iny
dex
bpl .4
lda ZPInputBufPtr
clc
adc #3
sta ZPInputBufPtr
bcc .5
inc ZPInputBufPtr+1
.5 jsr CS.RUN.GetNearestColor
pha
jsr DEBUG.PLOT
lda ZPCntX
lsr
tay
pla
bcs .6
sta (ZPOutputBuf),y
bra .2
.6 asl
asl
asl
@ -376,35 +319,29 @@ CS.RUN.24.LOOP inc ZPLineCount
.8 jsr CS.RUN.WriteOutput
bcs .9
lda #0
sec
.9 rts
*--------------------------------------
CS.RUN.GetNearestColor
stz ZPPixelIndex16
lda #$ff
sta ZPPixelBest
sta ZPPixelBest+1
sta ZPPixelBest+2
ldy #63
.30 stz ZPPixelScore
stz ZPPixelScore+1
stz ZPPixelScore+2
ldx #2
.40 lda PALETTE.RGB-1,y
sec
sbc ZPPixel24,x
bcs .5
eor #$ff
inc
.5 phx
sta ZBTmpB1
@ -418,31 +355,25 @@ CS.RUN.GetNearestColor
bcc .2
clc
adc ZBTmpB1
.2 ror
ror ZBTmpW
dex
bne .1
sta ZBTmpW+1
lda ZPPixelScore
clc
adc ZBTmpW
sta ZPPixelScore
lda ZPPixelScore+1
adc ZBTmpW+1
sta ZPPixelScore+1
bcc .3
inc ZPPixelScore+2
.3 plx
dey
dex
bpl .40
lda ZPPixelBest
cmp ZPPixelScore
lda ZPPixelBest+1
@ -450,14 +381,12 @@ CS.RUN.GetNearestColor
lda ZPPixelBest+2
sbc ZPPixelScore+2
bcc .8
lda ZPPixelScore
sta ZPPixelBest
lda ZPPixelScore+1
sta ZPPixelBest+1
lda ZPPixelScore+2
sta ZPPixelBest+2
tya
lsr
lsr
@ -465,9 +394,8 @@ CS.RUN.GetNearestColor
.8 dey
bpl .30
lda ZPPixelIndex16
CS.RUN.GetIndexInPalette.RTS
CS.RUN.GetIndexInPalette.RTS
rts
*--------------------------------------
CS.RUN.OpenInput
@ -477,7 +405,6 @@ CS.RUN.OpenInput
>LDYA ZPPtr1
>SYSCALL fopen
bcs CS.RUN.GetIndexInPalette.RTS
>STA.G hInputFile
>PUSHWI S.BMP
@ -485,62 +412,51 @@ CS.RUN.OpenInput
>LDA.G hInputFile
>SYSCALL FRead
bcs CS.RUN.GetIndexInPalette.RTS
>LDA.G BMP.Header+S.BMP.SIG
cmp #'B'
bne .99
iny
lda (pData),y
cmp #'M'
bne .99
>LDA.G BMP.Header+S.BMP.BPP+1
bne .99
dey
lda (pData),y
cmp #1
beq .1
cmp #24
bne .99
.1 >PUSHA
>LDA.G BMP.Header+S.BMP.H
>STA.G PIX.Header+S.BM.H
pha
eor #$ff
sta ZPLineCount
>LDA.G BMP.Header+S.BMP.H+1
>STA.G PIX.Header+S.BM.H+1
>PUSHA
eor #$ff
sta ZPLineCount+1
pla
>PUSHA
>LDA.G BMP.Header+S.BMP.W
>STA.G PIX.Header+S.BM.W
pha
>LDA.G BMP.Header+S.BMP.W+1
>STA.G PIX.Header+S.BM.W+1
>PUSHA
pla
>PUSHA
>PUSHBI 5
>LDYA L.MSG.HEADER.OK
>SYSCALL printf
.9 rts
.99 >LDYA L.MSG.HEADER.KO
>SYSCALL puts
lda #E.IBIN
sec
rts
rts
*--------------------------------------
CS.RUN.ReadInput
>PUSHW ZPInputRowBytes
@ -548,10 +464,8 @@ CS.RUN.ReadInput
>LDA.G hInputFile
>SYSCALL FRead
bcs .9
>LDYA ZPInputBuf
>STYA ZPInputBufPtr
>LDA.G BMP.Header+S.BMP.W
eor #$ff
sta ZPPixelCount
@ -568,30 +482,25 @@ CS.RUN.CreateOutput
>SYSCALL FOpen
bcs .9
>STA.G hOutputFile
.9 rts
.9 rts
*--------------------------------------
CS.RUN.GetOutputBuf
stz ZPPtr1
stz ZPPtr1+1
ldy ZPLineCount
ldx ZPLineCount+1
.1 iny
bne .2
inx
beq .8
.2 lda ZPPtr1
clc
adc ZPOutputRowBytes
sta ZPPtr1
lda ZPPtr1+1
adc ZPOutputRowBytes+1
sta ZPPtr1+1
bra .1
.8 >LDYA ZPPtr1
>SYSCALL Getmem
bcs .9
@ -605,7 +514,6 @@ CS.RUN.GetOutputBuf
clc
adc ZPOutputBuf
sta ZPOutputBuf
lda ZPPtr1+1
>STA.G OutputDataLen+1
adc ZPOutputBuf+1
@ -620,12 +528,10 @@ CS.RUN.WriteOutput
>LDA.G hOutputFile
>SYSCALL FWrite
bcs .9
>PUSHW.G OutputDataLen
>PUSHW ZPOutputBuf
>LDA.G hOutputFile
>SYSCALL FWrite
.9 rts
*--------------------------------------
CS.DOEVENT sec
@ -638,32 +544,26 @@ CS.QUIT >LDA.G hOutputBuf
.1 >LDA.G hInputBuf
beq .2
>SYSCALL FreeMem
.2 >LDA.G hOutputFile
beq .3
>SYSCALL fclose
.3 >LDA.G hInputFile
beq .8
>SYSCALL fclose
.8 clc
rts
*--------------------------------------
DEBUG.ClrScr sta SETMIXED
sta CLRTEXT
ldx #19
.1 lda SCR.BASEL,x
sta ZPPTR1
lda SCR.BASEH,x
sta ZPPTR1+1
lda #0
ldy #39
.2 sta SETPAGE2
@ -673,7 +573,6 @@ DEBUG.ClrScr sta SETMIXED
dey
bpl .2
dex
bpl .1
rts
@ -681,11 +580,9 @@ DEBUG.ClrScr sta SETMIXED
DEBUG.PLOT php
sei
pha
lda ZPCntX
cmp #80
bcs .9
lsr
tay
@ -695,11 +592,9 @@ DEBUG.PLOT php
plx
lda PALETTE.AUX,x
pha
.1 lda ZPCntY
cmp #40
bcs .9
lda #39
sec
sbc ZPCntY
@ -709,21 +604,17 @@ DEBUG.PLOT php
sta ZPPTR1
lda SCR.BASEH,x
sta ZPPTR1+1
pla
bcc .2
asl
asl
asl
asl
.2 ora (ZPPTR1),y
sta (ZPPTR1),y
sta CLRPAGE2
plp
rts
.9 pla
plp
rts

View File

@ -44,7 +44,7 @@ CS.START cld
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
@ -64,45 +64,36 @@ CS.RUN
lda ArgCount
>SYSCALL ArgV
bcs .7
>STYA ZPPtr1
lda (ZPPtr1)
cmp #'-'
bne .4
ldy #1
lda (ZPPtr1),y
ldx OptionList
.2 cmp OptionList,x
beq .3
dex
bne .2
.99 >PUSHBI 0
>LDYA L.MSG.USAGE
>SYSCALL printf
lda #E.SYN
sec
.9 rts
.3 ldy OptionVars-1,x
lda #$80
sta 0,y
bra .1
.4 inc FileCount
bra .1 scan for any other args
.7 lda FileCount
beq .99
>LDYAI 256
>SYSCALL GetMem
bcs .9
>STYA ZPBufPtr
stx hBuf
*--------------------------------------
@ -110,16 +101,13 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL feof
bcs .90 IO error
tay
bne .10 no char
>SYSCALL GetChar
bcs .9 IO error
cmp #$03 Ctrl-C
beq .9 Abort....
cmp #$13 Ctrl-S
bne .10
@ -127,29 +115,22 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
eor #$ff
sta bPause
bne CS.RUN.LOOP
.10 lda bPause
bne CS.RUN.LOOP Pause...
.11 lda hFILE
bne .2
.1 inc ArgIndex
lda ArgIndex
>SYSCALL ArgV
bcs .99 No more arg...the end!
>STYA ZPPtr1
lda (ZPPtr1)
cmp #'-'
beq .1 An option, skip...
>LDYA ZPPtr1
jsr CS.RUN.OPEN
.90 bcs .9
sta hFILE
.2 >PUSHWI 254 Leave room for CRLF
@ -162,12 +143,9 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
jsr CS.RUN.PRINT
bcc CS.RUN.LOOP
rts
.7 cmp #MLI.E.EOF
bne .9
jsr CS.RUN.CLOSE
jmp CS.RUN.LOOP
.99 lda #0 Exit with no Error
@ -175,13 +153,10 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
rts
*--------------------------------------
CS.RUN.OPEN pha
stz bPrintedBlankLine Reset this flag for the new file
>PUSHWZ Aux type
>PUSHBI S.FI.T.TXT
>PUSHBI O.RDONLY+O.TEXT
pla
>SYSCALL FOpen
rts
@ -189,37 +164,28 @@ CS.RUN.OPEN pha
CS.RUN.PRINT inc LineNum
bne .10
inc LineNum+1
.10 lda bSuppressBlankLine
bpl .2
lda (ZPBufPtr)
bne .1 Empty line ?
lda bPrintedBlankLine
bmi .8
lda #$ff
sta bPrintedBlankLine
bra .2
.1 stz bPrintedBlankLine
.2 jsr CS.RUN.PRINTNUM
bcs .99
lda bPrintAll
bmi .3
ldy #$ff
.20 iny
lda (ZPBufPtr),y
beq .21
cmp #C.SPACE
bcs .20
lda #C.SPACE
sta (ZPBufPtr),y
bra .20
@ -229,29 +195,23 @@ CS.RUN.PRINT inc LineNum
rts
.3 stz ByteIndex
.4 ldy ByteIndex
lda (ZPBufPtr),y
beq .7
cmp #C.SPACE
bcc .5
>SYSCALL putchar
.99 bcs .9
bra .62
.8 clc
rts
.5 tax
>LDYA L.ASCII
>STYA ZPPtr1
.6 dex
bmi .61
lda ZPPtr1
sec
adc (ZPPtr1)
@ -259,22 +219,19 @@ CS.RUN.PRINT inc LineNum
bcc .6
inc ZPPtr1+1
bra .6
.61 >PUSHW ZPPtr1
>PUSHBI 2
>LDYA L.MSG.CTRLCHAR
>SYSCALL printf
bcs .9
.62 inc ByteIndex
bne .4
.7 >PUSHBI 2
>LDYA L.MSG.CRLF
>SYSCALL printf
.9 rts
.9 rts
*--------------------------------------
CS.RUN.PRINTNUM clc
lda bLineNum
@ -293,10 +250,8 @@ CS.QUIT lda hBuf
CS.RUN.CLOSE lda hFILE
beq .8
stz hFILE
>SYSCALL FClose
.8 clc
rts
*--------------------------------------

View File

@ -58,28 +58,23 @@ CS.RUN >INC.G ArgIndex
>SYSCALL ArgV
bcs .8
>STYA ZPPtr1
lda (ZPPtr1)
cmp #'-'
bne .4
ldy #1
lda (ZPPtr1),y
ldx OptionList
.2 cmp OptionList,x
beq .3
dex
bne .2
.9 >PUSHBI 0
>LDYA L.MSG.USAGE
>SYSCALL printf
lda #E.SYN
sec
.99 rts
.3 ldy OptionVars-1,x
lda #$80
sta (pData),y
@ -91,24 +86,18 @@ CS.RUN >INC.G ArgIndex
>LDA.G ArgIndex
>STA.G StrMode
bra CS.RUN
.5 >LDA.G hSrcBasePath
bne .9
>LDYA ZPPtr1
jsr InitSrcDirYA
bcc CS.RUN
rts
.8 >LDA.G StrMode
beq .9
jsr CS.RUN.Str2Mode
bcs .9
>LDA.G hSrcBasePath
beq .9
>LDYAI 256
>SYSCALL getmem
bcs .99
@ -120,16 +109,12 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL feof
bcs .99
tay
bne .1
>SYSCALL GetChar
bcs .99
cmp #$03 Ctrl-C
beq .99 Abort....
cmp #$13 Ctrl-S
bne .1
@ -137,20 +122,16 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
eor #$ff
sta (pData),y
bne CS.RUN.LOOP
.1 >LDA.G bPause
bne CS.RUN.LOOP Pause...
jsr GetEntry
bcs .9
ldy #S.STAT.P.DRIVE
lda (ZPFileStat),y ProDOS Device ?
beq .5
jsr CS.RUN.DEV
bcc CS.RUN.LOOP
rts
.5 ldy #S.STAT.P.TYPE
lda (ZPFileStat),y
cmp #$0F Directory ?
@ -158,102 +139,77 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
jsr CS.RUN.DIR
bcs .99
bra .8
bra .8
.6 jsr CS.RUN.FILE
bcs .99
bra .8
bra .8
.9 jsr LeaveSubDir
bcs .90
jsr BasePath..
.8 jsr GetNextEntry
jmp CS.RUN.LOOP
.90 lda #0
sec
.99 rts
*--------------------------------------
CS.RUN.DEV lda #E.BADPATH
sec
sec
rts
*--------------------------------------
CS.RUN.DIR >LDA.G bRecurse
bpl .8
lda (ZPFileName)
cmp #'.'
beq .8
jsr CS.RUN.GetFilePath
>PUSHW ZPFullPath
>PUSHBI 2
>LDYA L.MSG.DIR
>SYSCALL printf
bcs .9
>PUSHW ZPMode
>LDYA ZPFullPath
>SYSCALL chmod
jsr CS.RUN.CheckErr
>LDYA ZPFileName
jsr EnterSubDirYA
rts
.8 clc
.9 rts
*--------------------------------------
CS.RUN.FILE jsr FilterMatch
bcs .8 no match, skip....
jsr CS.RUN.GetFilePath
>PUSHW ZPFullPath
>PUSHBI 2
>LDYA L.MSG.FILE
>SYSCALL printf
bcs .9
>PUSHW ZPMode
>LDYA ZPFullPath
>SYSCALL chmod
jsr CS.RUN.CheckErr
.8 clc
.9 rts
*--------------------------------------
CS.RUN.Str2Mode >SYSCALL ArgV
>STYA ZPPtr1
ldy #$ff
.1 iny
lda (ZPPtr1),y
bne .1
cpy #3
bne .9
stz ZPMode
stz ZPMode+1
dey
.2 lda (ZPPtr1),y
cmp #'0'
bcc .9
cmp #'7'+1
bcs .9
asl ZPMode
rol ZPMode+1
asl ZPMode
@ -266,13 +222,11 @@ CS.RUN.Str2Mode >SYSCALL ArgV
sta ZPMode
bcc .3
inc ZPMode+1
.3 dey
bpl .2
clc
rts
.9 sec
rts
*--------------------------------------
@ -280,14 +234,11 @@ CS.RUN.CheckErr bcs .1
>LDYA L.MSG.OK
>SYSCALL puts
rts
.1 pha
>PUSHA
>PUSHBI 1
>LDYA L.MSG.ERR
>SYSCALL printf
>LDA.G bContinue
eor #$80
asl
@ -298,11 +249,8 @@ CS.RUN.GetFilePath
>LDA.G hSrcBasePath
>SYSCALL GetMemPtr
>PUSHYA
>LDYA ZPFullPath
>SYSCALL StrCpy
>PUSHW ZPFileName
>LDYA ZPFullPath
>SYSCALL StrCat
@ -313,15 +261,12 @@ CS.DOEVENT sec
*--------------------------------------
CS.QUIT jsr LeaveSubDir
bcc CS.QUIT
>LDA.G hFilter
beq .1
>SYSCALL FreeMem
.1 >LDA.G hSrcFullPath
beq .8
>SYSCALL FreeMem
.8 clc
rts
*--------------------------------------

View File

@ -51,46 +51,37 @@ CS.INIT
>SYSCALL ArgV
bcs .7
>STYA ZPPtr1
lda (ZPPtr1)
cmp #'-'
bne .4
ldy #1
lda (ZPPtr1),y
ldx OptionList
.2 cmp OptionList,x
beq .3
dex
bne .2
.99 >PUSHBI 0
>LDYA L.MSG.USAGE
>SYSCALL printf
lda #E.SYN
sec
rts
.3 ldy OptionVars-1,x
lda #$80
sta (pData),y
bra .1
.4 ldy #index
lda (pData),y
bne .5
>LDYA ZPPtr1
jsr InitSrcDirYA
bcc .1
rts
.5 ldy #HexFileType
.5 ldy #HexFileType
lda (pData),y
bne .99
jsr GetHexFileType
bcs .99
bra .1
@ -99,17 +90,15 @@ CS.INIT
lda (pData),y
beq .99 , no src ? ERROR
ldy #HexFileType
ldy #HexFileType
lda (pData),y
beq .99 we also have a TYPE
>LDYAI 256
>SYSCALL getmem
bcs .99
>STYA ZPFullPath
txa
>STA.G hSrcFullPath
clc
rts
*--------------------------------------
@ -117,16 +106,12 @@ CS.RUN ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL feof
bcs .99
tay
bne .10
>SYSCALL GetChar
bcs .99
cmp #$03 Ctrl-C
beq .92 Abort....
cmp #$13 Ctrl-S
bne .10
@ -134,36 +119,28 @@ CS.RUN ldy #S.PS.hStdIn
eor #$ff
sta (pData),y
bne .80
.10 >LDA.G bPause
bne .80 Pause...
jsr GetEntry
bcs .9
jsr FilterMatch
bcs .8 no match, skip....
ldy #S.STAT.P.DRIVE
lda (ZPFileStat),y ProDOS Device ?
bne CS.RUN.DEV
ldy #S.STAT.P.TYPE
lda (ZPFileStat),y
cmp #$0F Directory ?
bne CS.RUN.FILE
jmp CS.RUN.DIR
.9 jsr LeaveSubDir
bcs .92
jsr BasePath..
.8 jsr GetNextEntry
.80 clc
rts
.92 lda #0
sec
.99 rts
@ -171,36 +148,29 @@ CS.RUN ldy #S.PS.hStdIn
CS.RUN.DIR
CS.RUN.DEV
.8 jsr GetNextEntry
clc
.9 rts
clc.9
rts
*--------------------------------------
CS.RUN.FILE jsr CS.RUN.GetFilePath
>PUSHW ZPFullPath
>PUSHBI 2
>LDYA L.MSG.FILE
>SYSCALL printf
bcs .9
ldy #HexFileType
>PUSHB (pData),y
>LDYA ZPFullPath
>SYSCALL ChTyp
jsr CS.RUN.CheckErr
>LDA.G bRecurse
bpl .8
lda (ZPFileName)
cmp #'.'
beq .8
>LDYA ZPFileName
jsr EnterSubDirYA
rts
.8 jsr GetNextEntry
clc
.9 rts
@ -209,14 +179,11 @@ CS.RUN.CheckErr bcs .1
>LDYA L.MSG.OK
>SYSCALL puts
rts
.1 pha
>PUSHA
>PUSHBI 1
>LDYA L.MSG.ERR
>SYSCALL printf
>LDA.G bContinue
eor #$80
asl
@ -227,11 +194,8 @@ CS.RUN.GetFilePath
>LDA.G hSrcBasePath
>SYSCALL GetMemPtr
>PUSHYA
>LDYA ZPFullPath
>SYSCALL StrCpy
>PUSHW ZPFileName
>LDYA ZPFullPath
>SYSCALL StrCat
@ -242,15 +206,12 @@ CS.DOEVENT sec
*--------------------------------------
CS.QUIT jsr LeaveSubDir
bcc CS.QUIT
>LDA.G hFilter
beq .1
>SYSCALL FreeMem
.1 >LDA.G hSrcFullPath
beq .8
>SYSCALL FreeMem
.8 clc
rts
*--------------------------------------
@ -262,11 +223,9 @@ GetHexFileType ldy #$ff
cpy #3
bne .9
lda (ZPPtr1)
cmp #'0'
bne .1
ldy #1
lda (ZPPtr1),y
jsr IsDigit16
@ -276,12 +235,10 @@ GetHexFileType ldy #$ff
asl
asl
>STA.G HexFileType
ldy #2
lda (ZPPtr1),y
jsr IsDigit16
bcs .9
>ORA.G HexFileType
sta (pData),y
clc
@ -290,7 +247,6 @@ GetHexFileType ldy #$ff
.1 ldx #0
>LDYA L.PRODOS.FT.TXT
>STYA ZPPtr2
.2 ldy #2
.21 lda (ZPPtr1),y
@ -299,17 +255,14 @@ GetHexFileType ldy #$ff
cmp #'z'+1
bcs .4
eor #$20
.4 cmp (ZPPtr2),y
bne .5
dey
bpl .21
lda PRODOS.FT.ID,x
>STA.G HexFileType
clc
rts
.5 clc
lda ZPPtr2
adc #3
@ -320,7 +273,6 @@ GetHexFileType ldy #$ff
inx
cpx #PRODOS.FT.COUNT
bne .2
.9 sec
rts
*---------------------------------------
@ -328,27 +280,22 @@ IsDigit16 cmp #'0'
bcc .9
cmp #'9'+1
bcc .8
cmp #'A'
bcc .9
cmp #'F'+1
bcc .1
cmp #'a'
bcc .9
cmp #'f'+1
bcs .9
eor #$20
.1
.1
* clc
sbc #'A'-11 cc so A->10 (11-CC)
clc
.8 and #$0F
.8 and #$0F
rts
.9 sec
rts
*--------------------------------------

View File

@ -50,7 +50,7 @@ CS.START cld
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
@ -67,72 +67,57 @@ CS.RUN
lda ArgIndex
>SYSCALL ArgV
bcs .7
>STYA ZPPtr1
lda (ZPPtr1)
cmp #'-'
bne .2
jsr CS.RUN.CheckOpt
bcc .1
.99 >PUSHBI 0
>LDYA L.MSG.USAGE
>SYSCALL printf
lda #E.SYN
sec
.9 rts
.2 lda hFile1
bne .3
jsr CS.RUN.OPEN
bcs .9
sta hFile1
>LDYAI 256
>SYSCALL GetMem
bcs .9
>STYA ZPBufPtr1
stx hBuf1
bra .1
.3 lda hFile2
bne .4
jsr CS.RUN.OPEN
bcs .9
sta hFile2
>LDYAI 256
>SYSCALL GetMem
bcs .9
>STYA ZPBufPtr2
stx hBuf2
bra .1
.4 bit bSkip1
bmi .5
jsr CS.RUN.SEEK
bcs .9
sec
ror bSkip1
bra .1
.5 bit bSkip2
bmi .99
sta bSkip2
jsr CS.RUN.SEEK
bcs .9
sec
ror bSkip2
jmp .1
.7 lda hFile2
beq .99
lda hFile1
@ -142,16 +127,13 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL feof
bcs .9 IO error
tay
bne .1 no char
>SYSCALL GetChar
bcs .9 IO error
cmp #$03 Ctrl-C
beq .9 Abort....
cmp #$13 Ctrl-S
bne .1
@ -159,7 +141,6 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
eor #$ff
sta bPause
bne CS.RUN.LOOP
.1 lda bPause
bne CS.RUN.LOOP Pause...
@ -168,40 +149,31 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
cmp #MLI.E.EOF
bne .9
bra .99
.2 >STYA BufCnt
jsr CS.RUN.READ2
bcc .20
cmp #MLI.E.EOF
bne .9
bra .99
.20 cpy BufCnt
pha
sbc BufCnt+1
pla
bcc .3
>STYA BufCnt
.3 ldy #0
.4 lda (ZPBufPtr1),y
cmp (ZPBufPtr2),y
beq .8
lda #$E0
sta bDiff
bit bVerbose
bpl .5
jsr CS.RUN.Print
bcs .9
.5 bit bAll
bpl .99
.8 iny
cpy BufCnt
bne .4
@ -209,7 +181,6 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
bne CS.RUN.LOOP
inc Offset+1
bra CS.RUN.LOOP
.99 lda bDiff
.9 sec
rts
@ -217,7 +188,6 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
CS.RUN.OPEN >PUSHWZ Aux type
>PUSHBI 0 Type
>PUSHBI O.RDONLY
>LDYA ZPPtr1
>SYSCALL FOpen
rts
@ -227,17 +197,14 @@ CS.RUN.SEEK >LDYA ZPPtr1
bcs .9
>PULLL SeekOfs
lda bSkip1
bmi .1
>PUSHBI SEEK.SET
>PUSHL SeekOfs
lda hFile1
>SYSCALL fseek
bcs .9
.1 >PUSHBI SEEK.SET
>PUSHL SeekOfs
lda hFile2
@ -264,7 +231,6 @@ CS.RUN.Print phy
>PUSHA
>PUSHW Offset
>PUSHBI 5
>LDYA L.MSG.DIFF
>SYSCALL printf
ply
@ -273,7 +239,6 @@ CS.RUN.Print phy
CS.QUIT lda hFile2
beq .1
>SYSCALL FClose
.1 lda hFile1
beq .2
>SYSCALL FClose
@ -285,7 +250,6 @@ CS.QUIT lda hFile2
.3 lda hBuf1
beq .8
>SYSCALL FreeMem
.8 clc
rts
*--------------------------------------
@ -304,7 +268,6 @@ CS.RUN.CheckOpt ldy #1
sec
rts
.3 ldy OptionVars,x
lda #$ff
sta 0,y

View File

@ -29,7 +29,7 @@ CSH.PREOPS >PSTR "+"
*--------------------------------------
CSH.POSTOPS >PSTR "++"
>PSTR "--"
.HS 00
.HS 00
*--------------------------------------
* Assignment Operators: = += -= *= /= %= <<= >>= &= ^= |=
*--------------------------------------
@ -114,7 +114,6 @@ CSH.FN >PSTR "printf"
>PSTR "getchar"
.DA #CSH.T.CHAR returned value
.DA #0
.DA #0
*--------------------------------------
MAN

View File

@ -5,7 +5,6 @@ NEW
CSH.Init >SYSCALL SListNew
bcs .9
>STA.G CSH.hSymbols
>LDYAI 256
>SYSCALL GetMem
bcs .9
@ -19,14 +18,11 @@ CSH.Init >SYSCALL SListNew
>STYA ZPCSHStack
txa
>STA.G CSH.hStack
lda #$0
>STA.G CSH.ConstPtr
>STA.G CSH.StackPtr
sta (ZPCSHConst)
sta (ZPCSHStack)
* clc
.9 rts
*--------------------------------------
@ -38,29 +34,22 @@ CSH.Quit >LDA.G CSH.hSymbols
>LDA.G CSH.hStack
jsr .7
>LDA.G CSH.hConst
jsr .7
.7 beq CSH.Quit.RTS
>SYSCALL FreeMem
CSH.Quit.RTS rts
*--------------------------------------
CSH.Run jsr CSH.GetCharNB
bcs CSH.Quit.RTS
CSH.Run.1 cmp #'#'
bne .3 comments ...
.1 jsr CSH.GetNextChar
bcs .2
cmp #C.CR
bne .1
.2 jmp CSH.GetNextChar Skip CR and exit
.3 cmp #C.CR
beq .2
@ -69,47 +58,36 @@ CSH.Run.1 cmp #'#'
jsr CSH.CheckStack must be something on stack....
bcs .9
jsr CSH.GetNextCharNB Skip '}'
jsr CSH.Pop was expected....
jsr CSH.Pop get stacked Cmd...
tax
jmp (J.CSH.KW.END,x)
.4 jsr CSH.IsLetter
bcc .5
bra .99 error, todo : PREOPS ++ --.....
.5 jsr CSH.SavePtr Save Ptr, in case of while,for....
>LDYA L.CSH.KW
jsr CSH.LookupID
bcs .6 not an internal CSH keyword....
jsr CSH.KW.JMP
bcs .9
bra .8
.6 jsr CSH.GetVar
bcs .7
>STYA ZPVarID
jsr CSH.GetCharNB
bcs .9
cmp #'=' TODO: all AOPS
bne .99
jsr CSH.GetNextChar Skip =
bcs .99
lda #0 Any Type
jsr CSH.ExpEval
bcs .9
@ -117,27 +95,20 @@ CSH.Run.1 cmp #'#'
>LDYA ZPVarID X = Exp Type
jsr CSH.SetVarValueFromStack
bcs .9
jsr CSH.GetChar
cmp #';'
bne .99
bra .8
.7 lda #0 no return value type check required
jsr CSH.fCall
bcs .9
.8 jsr CSH.GetNextCharNB Skip ;
bcs .9
cmp #C.CR
beq .80
jmp CSH.Run.1
.80 jmp CSH.GetNextChar Skip CR
.99 lda #CSH.E.SYNTAX
sec
.9 rts
@ -153,24 +124,20 @@ CSH.IF jsr CSH.GetCharNB
bcs .9
cmp #'('
bne .9
jsr CSH.GetNextCharNB
bcs .9
lda #0 Any var type
jsr CSH.ExpEval
bcs .99
jsr CSH.GetCharNB
bcs .99
cmp #')'
bne .9
jsr CSH.GetNextCharNB skip ')'
bcs .99
cmp #'{'
bne .9
jsr CSH.GetNextCharNB Skip '{'
bcs .99
@ -186,21 +153,16 @@ CSH.IF jsr CSH.GetCharNB
>LDA.G CSH.BufPtrSave
jsr CSH.Push
pla
.1 jsr CSH.Push
bcs .99
lda #'}' Tell '}' is expected at the end of block
jsr CSH.Push
bcs .99
rts
.6 jsr CSH.SkipBlock
bcc .99
.9 lda #CSH.E.SYNTAX
sec
.99 rts
@ -249,36 +211,28 @@ CSH.SIGNED jsr CSH.GetChar
bcs .9
cmp #C.SPACE
bne .9
jsr CSH.GetNextCharNB
bcs .9
>LDYA L.CSH.STYPES
jsr CSH.LookupID
bcs .9
jmp (J.CSH.STYPES,x)
.9 lda #CSH.E.SYNTAX
sec
rts
rts
*--------------------------------------
CSH.UNSIGNED jsr CSH.GetChar
bcs .9
cmp #C.SPACE
bne .9
jsr CSH.GetNextCharNB
bcs .9
>LDYA L.CSH.STYPES
jsr CSH.LookupID
bcs .9
jmp (J.CSH.UTYPES,x)
.9 lda #CSH.E.SYNTAX
sec
rts
@ -299,13 +253,10 @@ CSH.ULONG ldx #CSH.T.ULONG
CSH.FLOAT ldx #CSH.T.FLOAT
CSH.TYPE stx ZPVarType
jsr CSH.GetChar
bcs .9
cmp #C.SPACE
bne .9
jsr CSH.GetNextCharNB
bcs .9
@ -316,7 +267,6 @@ CSH.TYPE stx ZPVarType
bcs .99 OOM or DUP
>STYA ZPVarID
jsr CSH.GetCharNB
bcs .9
cmp #';'
@ -324,40 +274,32 @@ CSH.TYPE stx ZPVarType
ldx ZPVarType
jsr CSH.SIZEOF
.1 dec pStack
dec
bne .1
ldx ZPVarType
bra .7
.2 cmp #'='
bne .9
jsr CSH.GetNextCharNB Skip =
bcs .9
lda ZPVarType
jsr CSH.ExpEval
bcs .99
.7 >LDYA ZPVarID
jsr CSH.AddVarValueFromStack X= Type, Add value to this var
bcs .99
jsr CSH.GetChar
bcs .9
cmp #';'
bne .9
.8 clc
rts
.90 lda #CSH.E.DUP
sec
rts
.9 lda #CSH.E.SYNTAX
sec
.99 rts
@ -376,10 +318,8 @@ CSH.fCall ldx ZPPtr1
phx
ldx ZPPtr2+1 local : variadic size
phx
sta ZPPtr2 save Type
stz ZPPtr2+1 Reset VARIADIC byte count
>LDYA L.CSH.FN
jsr CSH.LookupFn
phx X = function index
@ -392,20 +332,16 @@ CSH.fCall ldx ZPPtr1
cmp #'('
bne .52
jsr CSH.GetNextCharNB skip '('
.10 bcs .90
lda ZPPtr2
bne .11
lda (ZPPtr1)
sta ZPPtr2
bra .1 expected type is 0, no check
.11 cmp (ZPPtr1) Get Return value Type
bne .91
.1 inc ZPPtr1 advance to arg list type
bne .2
inc ZPPtr1+1
@ -415,56 +351,43 @@ CSH.fCall ldx ZPPtr1
*--------------------------------------
.3 eor #CSH.T.VARIADIC if VARIADIC, don't advance to next arg and assume type = 0
beq .4
eor #CSH.T.VARIADIC restore type...
.4 jsr CSH.ExpEval A=0 if VARIADIC
bcs .9 X = Var Type
lda (ZPPtr1) get current arg type
eor #CSH.T.VARIADIC
bne .5
jsr CSH.SIZEOF X = Var Type
* clc
adc ZPPtr2+1
sta ZPPtr2+1 Add to byte count
bra .51
.5 inc ZPPtr1
bne .51
inc ZPPtr1+1
.51 jsr CSH.GetCharNB
bcs .90
cmp #','
bne .6
jsr CSH.GetNextCharNB Skip ,
lda (ZPPtr1)
bne .3 Another ARG....
.52 bra .90 extra args....error
.6 cmp #')'
bne .90
lda (ZPPtr1)
beq .8 no more arg after ')', exit
eor #CSH.T.VARIADIC
bne .90 missing arg
>PUSHB ZPPtr2+1 push VARIADIC byte count
bra .8
.7 jsr CSH.GetCharNB
bcs .90
cmp #')'
bne .90
@ -480,15 +403,12 @@ CSH.fCall ldx ZPPtr1
sta ZPPtr1+1
pla
sta ZPPtr1
phy
jsr .80
plx
rts
.90 lda #CSH.E.SYNTAX
.HS 2C BIT ABS
.91 lda #CSH.E.TMISMATCH
sec
@ -505,8 +425,7 @@ CSH.fCall ldx ZPPtr1
.99 rts
.80 jmp (J.CSH.EXEC,x)
.80 jmp (J.CSH.EXEC,x)
*--------------------------------------
* Input:
* ZPFileBufPtr, A = Expected type
@ -524,13 +443,11 @@ CSH.ExpEval ldx ZPPtr1
phx
sta ZPPtr2
.10 lda #$ff
sta ZPPtr2+1 Reset BOP1
jsr CSH.GetCharNB
bcs .33
.20 jsr CSH.IsLetter Fnc or Var ?
bcs .2
@ -542,17 +459,14 @@ CSH.ExpEval ldx ZPPtr1
bcs .29
stx ZPPtr2 store real var type
bra .11
bra .11
.1 lda ZPPtr2 var type
jsr CSH.fCall X = function index
bcs .99
stx ZPPtr2 store real var type
bra .11
.2 jsr CSH.IsDigit10 number ?
bcs .3
ldx ZPPtr2
bne .22
@ -561,70 +475,53 @@ CSH.ExpEval ldx ZPPtr1
.22 jsr CSH.GetNumOnStack
.29 bcs .99
.11 jsr CSH.GetCharNB
bcs .90
cmp #','
beq .8
cmp #')'
beq .8
cmp #';'
beq .8
jsr CSH.IsOPChar
.33 bcs .90
>LDYA L.CSH.BOPS
jsr CSH.LookupOP
bcs .90
lda ZPPtr2+1 previous OP...
bpl .5 go check precedence
stx ZPPtr2+1
jsr CSH.GetCharNB
bcc .20 go check for an ARG
bra .90
.3 cmp #'"' String literal
bne .90
jsr CSH.AddContCharP
bcs .99
jmp .11
.5 cpx ZPPtr2+1
bcs .6
bcs .6
* new OP has precedence, stack ACC
jmp .10
* Old OP has precedence, compute ACC=ARG <BOP> ACC
* Old OP has precedence, compute ACC=ARG <BOP> ACC
.6 lda ZPPtr2 Var Type
ldx ZPPtr2+1 BOP
jsr CSH.BOPExec
bcs .99
jsr CSH.GetCharNB
bcs .90
jmp .10
.8 ldx ZPPtr2+1
bmi .80
lda ZPPtr2 Var Type
jsr CSH.BOPExec
bcc .80
bcs .99
.90 lda #CSH.E.SYNTAX
.99 sec
.HS 90 BCC
.80 clc
@ -638,26 +535,21 @@ CSH.ExpEval ldx ZPPtr1
sty ZPPtr1+1
ply
sty ZPPtr1
rts
*--------------------------------------
CSH.AddContCharP
ldy #0
.1 jsr CSH.GetNextChar
bcs .9
cmp #C.CR
beq .9
cmp #'"'
beq .2
sta (ZPCSHConst),y
iny
bra .1
.2 lda #0
sta (ZPCSHConst),y
>PUSHW ZPCSHConst Push PTR on stack
tya
@ -665,14 +557,11 @@ CSH.AddContCharP
adc ZPCSHConst
sta ZPCSHConst
bcc .3
inc ZPCSHConst+1
.3 jsr CSH.GetNextChar Skip "
clc
rts
.9 lda #CSH.E.SYNTAX
sec
rts
@ -691,7 +580,6 @@ CSH.LookupID clc
>STYA ZPPtr1
ror
>STA.G CSH.LookupOpt
jsr CSH.GetIDLen
bra CSH.Lookup
@ -700,20 +588,14 @@ CSH.LookupOP >STYA ZPPtr1
jsr CSH.GetOPLen
CSH.Lookup phy Y = len
ldx #0
.1 lda (ZPPtr1)
beq .9 Ending 0, not found....
pla
pha Get Back Len
cmp (ZPPtr1) Same Len ?
bne .4
tay
.2 lda (ZPPtr1),y
.3 dey
@ -722,7 +604,6 @@ CSH.Lookup phy Y = len
tya
bne .2
pla Found keyword...
clc
adc ZPFileBufPtr ..advance Ptr to char after it..
@ -736,28 +617,22 @@ CSH.Lookup phy Y = len
tay
lda ZPPtr1+1
adc #0
clc Y,A = F() def, X = F() index
.8 rts
.4 inx
inx
lda (ZPPtr1)
jsr CSH.ZPPtr1AddAp1
>LDA.G CSH.LookupOpt
bpl .1
ldy #$ff
.6 iny
lda (ZPPtr1),y
bne .6
tya
jsr CSH.ZPPtr1AddAp1
bra .1
.9 pla
sec
rts
@ -777,25 +652,20 @@ CSH.GetNumOnStack
.10 cpx #CSH.T.FLOAT
bcc .1
bne .99
>PUSHWI ZPFileBufPtr
>LDYA ZPFileBufPtr
>SYSCALL StrToF
clc
rts
.1 >PUSHBI 10
>PUSHWI ZPFileBufPtr
>LDYA ZPFileBufPtr
phx
cpx #CSH.T.UCHAR
bcc .2
>SYSCALL StrToUL
bra .3
.2 >SYSCALL StrToL
.3 plx
@ -807,7 +677,6 @@ CSH.GetNumOnStack
cmp #2
bne .4
ldy #1
>PULLA
sta (pStack),y
@ -815,7 +684,6 @@ CSH.GetNumOnStack
sta (pStack),y
clc
rts
.4 >PULLA
inc pStack
inc pStack
@ -834,19 +702,15 @@ CSH.AddVar >PUSHW ZPFileBufPtr
>LDA.G CSH.hSymbols
>SYSCALL SListNewKey
bcs .9
pha
txa
* clc
adc ZPFileBufPtr
sta ZPFileBufPtr
bcc .1
inc ZPFileBufPtr+1
clc
.1 pla
.9 rts
*--------------------------------------
* Y,A = VarID, X=Type
@ -860,7 +724,6 @@ CSH.AddVarValueFromStack
CSH.SetVarValueFromStack
clc
php
pha
phy
stx ZPVarData X = type
@ -870,13 +733,11 @@ CSH.SetVarValueFromStack
tax
ldy #1
.1 >PULLA
sta ZPVarData,y
iny
dex
bne .1
>PUSHBI 0 Datalen HI
pla
inc
@ -891,9 +752,8 @@ CSH.SetVarValueFromStack
>SYSCALL SListAddData
rts
.2 >SYSCALL SListSetData
rts
rts
*--------------------------------------
CSH.GetVar >PUSHW ZPFileBufPtr
>LDA.G CSH.hSymbols
@ -907,10 +767,8 @@ CSH.GetVar >PUSHW ZPFileBufPtr
adc ZPFileBufPtr
sta ZPFileBufPtr
bcc .1
inc ZPFileBufPtr+1
clc
.1 pla Y,A = VarID
.9 rts
*--------------------------------------
@ -926,28 +784,23 @@ CSH.GetVarValueOnStack
>PUSHWI ZPVarData
pla
>PUSHYA KeyID
>LDA.G CSH.hSymbols
>SYSCALL SListGetData
bcs .9
ldx ZPVarType
beq .1
cpx ZPVarData
bne .99
.1 ldx ZPVarData
beq *
jsr CSH.SIZEOF
tay
.2 lda ZPVarData,y
>PUSHA
dey
bne .2
clc X = Var Type
.9 rts
@ -962,15 +815,11 @@ CSH.TMISSMATCH lda #CSH.E.TMISMATCH
*--------------------------------------
CSH.IsValue0 cpx #CSH.T.FLOAT
bcc .1 char,int,long
ldy CSH.TYPESIZE,x
lda ZPVarData,y
bne .9
.8 clc
rts
.1 jsr CSH.SIZEOF
tax
@ -980,10 +829,8 @@ CSH.IsValue0 cpx #CSH.T.FLOAT
inc pStack
dex
bne .2
tax
beq .8
.9 sec
rts
*--------------------------------------
@ -1002,7 +849,6 @@ CSH.BOPS.ADDu8 clc
sta (pStack)
clc
rts
CSH.BOPS.ADDi16
CSH.BOPS.ADDu16 clc
@ -1015,7 +861,6 @@ CSH.BOPS.ADDu16 clc
sta (pStack),y
clc
rts
CSH.BOPS.ADDi32
CSH.BOPS.ADDu32 >FPU ADD32
clc
@ -1038,7 +883,6 @@ CSH.BOPS.SUBu8 sec
inc pStack
clc
rts
CSH.BOPS.SUBi16
CSH.BOPS.SUBu16 sec
@ -1046,7 +890,6 @@ CSH.BOPS.SUBu16 sec
lda (pStack),y
sbc (pStack)
sta (pStack),y
iny
lda (pStack),y
ldy #1
@ -1056,7 +899,6 @@ CSH.BOPS.SUBu16 sec
sta (pStack),y
clc
rts
CSH.BOPS.SUBi32
CSH.BOPS.SUBu32 >FPU SUB32
clc
@ -1068,19 +910,15 @@ CSH.BOPS.SUBf >FPU FSUB
*--------------------------------------
CSH.BOPS.MUL cmp #CSH.T.FLOAT
beq .8
clc
rts
.8 >FPU FMULT
clc
rts
*--------------------------------------
CSH.BOPS.DIV cmp #CSH.T.FLOAT
beq .8
clc
rts
@ -1118,10 +956,8 @@ CSH.CheckStack tax
txa
cmp (ZPCSHStack),y
bne .9
clc
rts
.9 lda #CSH.E.SYNTAX
sec
rts
@ -1154,31 +990,27 @@ CSH.Pop >LDA.G CSH.StackPtr
.9 lda #CSH.E.SYNTAX
sec
rts
rts
*--------------------------------------
* CHAR related Subs.....
*--------------------------------------
CSH.GetOPLen ldy #0
.1 iny
lda (ZPFileBufPtr),y
beq .8
jsr CSH.IsOPChar
bcc .1
.8 tya
rts
*--------------------------------------
CSH.GetIDLen ldy #0
.1 iny
lda (ZPFileBufPtr),y
beq .8
jsr CSH.IsLetterOrDigit
bcc .1
.8 tya
rts
*--------------------------------------
@ -1193,13 +1025,10 @@ CSH.SkipBlock ldy #0 not in "", TOTO:skip comments
.1 jsr CSH.GetNextCharNB
bcs .9
cmp #'{'
bne .2
tya
bmi .1
inx
bra .1
@ -1208,22 +1037,18 @@ CSH.SkipBlock ldy #0 not in "", TOTO:skip comments
tya
bmi .1
dex
bne .1
clc
rts
.3 cmp #'"'
bne .1
tya
eor #$ff
tay
bra .1
jmp CSH.GetNextCharNB skip '}'
.9 rts
.9 rts
*--------------------------------------
CSH.GetCharNB jsr CSH.GetChar
bcs CSH.GetNextCharNB.RTS
@ -1245,7 +1070,7 @@ CSH.CheckCharNB cmp #C.SPACE
cmp #C.TAB
beq .9
clc
.9 rts
.9 rts
*--------------------------------------
CSH.GetNextChar inc ZPFileBufPtr
bne CSH.GetChar
@ -1255,7 +1080,6 @@ CSH.GetChar lda (ZPFileBufPtr)
beq .9
clc
rts
.9 lda #MLI.E.EOF
sec
rts
@ -1268,9 +1092,8 @@ CSH.IsOPChar ldx #CSH.OPChars.Cnt-1
bpl .1
sec
rts
.8 clc
rts
rts
*---------------------------------------
CSH.IsLetterOrDigit
jsr CSH.IsDigit10
@ -1280,10 +1103,8 @@ CSH.IsLetter cmp #'_'
bne .1
clc
rts
.1 cmp #'A'
bcc .9
cmp #'Z'+1
bcc CSH.IsLetterRTS
@ -1293,14 +1114,12 @@ CSH.IsLetter cmp #'_'
rts CC if lowercase
.9 sec
CSH.IsLetterRTS rts
CSH.IsLetterRTS rts
*---------------------------------------
CSH.IsDigit10 cmp #'0'
bcc .9
cmp #'9'+1
rts cc if ok, cs if not
.9 sec
rts
*--------------------------------------
@ -1309,7 +1128,6 @@ CSH.IsDigit10 cmp #'0'
CSH.SIZEOF txa
and #CSH.Q.PPPOINTER
bne .2
txa
and #$f
phx
@ -1317,14 +1135,13 @@ CSH.SIZEOF txa
lda CSH.TYPESIZE,x
plx
rts
.2 lda #2
rts
*--------------------------------------
* EXEC
*--------------------------------------
EXEC.printf >SYSCALL printf2
rts
rts
*--------------------------------------
EXEC.puts >PULLYA
>SYSCALL puts

View File

@ -77,28 +77,23 @@ CS.RUN >PUSHWI K.VER
>LDYA L.MSG.GREETINGS
>SYSCALL printf
bcs CS.INIT.RTS
jsr CS.RUN.ARGS
bcs CS.INIT.RTS
jsr CSH.Init
bcs CS.INIT.RTS
.1 >SLEEP
>LDA.G bDebug
bpl .2
jsr PrintDebugMsg
.2 >LDA.G bTrace
bpl .3
>LDYA ZPFileBufPtr
jsr PrintTraceMsg
.3 jsr CSH.Run
bcc .1
cmp #MLI.E.EOF
beq .8
@ -107,7 +102,6 @@ CS.RUN >PUSHWI K.VER
pla
sec
rts
.8 lda #0 Exit Code = Success
sec
rts
@ -122,50 +116,41 @@ CS.RUN.ARGS inc ArgIndex
lda (ZPPtr1)
cmp #'-'
bne .4
ldy #1
lda (ZPPtr1),y
ldx #OptionVars-OptionList-1
.1 cmp OptionList,x
beq .2
dex
bpl .1
bra .90
.2 ldy OptionVars,x
lda #$ff
sta (pData),y
bra CS.RUN.ARGS
.4 >LDA.G hFileBuf
bne .90
>PUSHWZ Aux type
>PUSHBI S.FI.T.TXT
>PUSHBI O.RDONLY
>LDYA ZPPtr1
>SYSCALL LoadTxtFile
bcs .9
txa
>STA.G hFileBuf
>SYSCALL GetMemPtr
>STYA ZPFileBuf
>STYA ZPFileBufPtr
bra CS.RUN.ARGS
.7 >LDA.G hFileBuf
beq .90
clc
rts
.90 >PUSHBI 0
>LDYA L.MSG.USAGE
>SYSCALL printf
lda #E.SYN
sec QUIT Process
@ -180,7 +165,6 @@ CS.QUIT jsr CSH.Quit
*--------------------------------------
PrintErrMsg >LDYA ZPFileBuf
>STYA ZPPtr1
stz ZPPtr2
stz ZPPtr2+1 Line counter
@ -190,17 +174,14 @@ PrintErrMsg >LDYA ZPFileBuf
.2 >LDYA ZPPtr1
>STYA ZPPtr3 save line start
.20 lda (ZPPtr1)
beq .4 EoF
inc ZPPtr1
bne .3
inc ZPPtr1+1
.3 cmp #C.CR
bne .20 Scan until EoL
ldx ZPPtr1
cpx ZPFileBufPtr
lda ZPPtr1+1
@ -209,29 +190,22 @@ PrintErrMsg >LDYA ZPFileBuf
.4 >LDA.G bTrace
bmi .5
jsr PrintTraceMsg.3
.5 lda ZPPtr3
cmp ZPFileBufPtr
bne .6
lda ZPPtr3+1
cmp ZPFileBufPtr+1
beq .8
.6 >PUSHBI '-'
ldy #S.PS.hStdErr
lda (pPS),y
>SYSCALL fputc
inc ZPPtr3
bne .5
inc ZPPtr3+1
bra .5
.8 >PUSHW ZPPtr2 Line counter
>PUSHBI 2
>PUSHW L.MSG.ERR
ldy #S.PS.hStdErr
@ -245,14 +219,12 @@ PrintDebugMsg >PUSHW pStack
>LDYA L.MSG.DEBUG
>SYSCALL printf
rts
*--------------------------------------
*--------------------------------------
PrintTraceMsg >STYA ZPPtr3
PrintTraceMsg.3 >PUSHBI '>'
ldy #S.PS.hStdErr
lda (pPS),y
>SYSCALL fputc
ldy #$ff
.1 iny
@ -260,7 +232,6 @@ PrintTraceMsg.3 >PUSHBI '>'
beq .8
cmp #C.CR
beq .8
phy
>PUSHA
ldy #S.PS.hStdErr
@ -268,7 +239,6 @@ PrintTraceMsg.3 >PUSHBI '>'
>SYSCALL fputc
ply
bra .1
.8 >PUSHBI 0
>PUSHW L.MSG.ECHOCRLF
ldy #S.PS.hStdErr

View File

@ -42,7 +42,7 @@ CS.START cld
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
@ -57,60 +57,47 @@ CS.INIT clc
CS.RUN stz ArgCount
lda #C.SPACE
sta Separator
.10 jsr CS.RUN.NextArg
bcs .8
lda (ZPPtr1)
cmp #'-'
beq .1
lda ArgCount
sta ArgIndex
bra .10
.1 ldy #1
lda (ZPPtr1),y
ldx OptionList
.2 cmp OptionList,x
beq .3
dex
bne .2
bra .97
.3 txa
lsr
beq .98 -H
cmp #4 -S
bne .4
jsr CS.RUN.NextArg
bcs .97
lda (ZPPtr1)
sta Separator
bra .10
.4 sta OptionIdx
jsr CS.RUN.NextArg
bcs .97
>SYSCALL atoi
bcs .97
tax
bne .97
tya
ldx OptionIdx
sta FieldNum-1,x
bra .10 scan for any other args
.97 lda #E.SYN
.98 pha
.98 pha
>PUSHBI 0
>LDYA L.MSG.USAGE
>SYSCALL printf
@ -121,34 +108,26 @@ CS.RUN stz ArgCount
.8 >LDYAI 256
>SYSCALL GetMem
bcs .9
>STYA ZPBufPtr
stx hBuf
lda ArgIndex
beq .80
>SYSCALL ArgV
>PUSHYA
>LDYA ZPBufPtr
>SYSCALL strcpy
bra CS.RUN.OUT
.80 ldy #S.PS.hStdIn
lda (pPS),y
tax
lda OF.Table.hFD-1,x
>SYSCALL GetMemPtr
>STYA ZPPtr1
lda (ZPPtr1)
cmp #S.FD.T.PIPE
bne .97
>PUSHWI 256
>PUSHW ZPBufPtr
ldy #S.PS.hStdIn
lda (pPS),y
@ -156,26 +135,20 @@ CS.RUN stz ArgCount
bcc CS.RUN.OUT
cmp #MLI.E.EOF
bne .9
CS.RUN.OUT lda FieldNum
beq CS.RUN.OUT.MN
ldy #$ff
.1 iny skip spaces
lda (ZPBufPtr),y
beq CS.RUN.PRINTCR
cmp Separator
beq .1
dec FieldNum
beq .4
.2 iny skip token
lda (ZPBufPtr),y
beq CS.RUN.PRINTCR
eor Separator
bne .2
bra .1
@ -189,12 +162,10 @@ CS.RUN.OUT lda FieldNum
beq .8
eor Separator
bne .6
sta (ZPBufPtr),y
.8 >LDYA ZPBufPtr
>SYSCALL puts
lda #0 Exit with no Error
sec
rts
@ -203,7 +174,6 @@ CS.RUN.PRINTCR >PUSHBI 0
>LDYA L.MSG.CRLF
>SYSCALL printf
bcs .9
lda #0
sec
.9 rts
@ -212,32 +182,26 @@ CS.RUN.OUT.MN ldy #$ff
ldx StartChar
beq .2
.1 iny
lda (ZPBufPtr),y
beq CS.RUN.PRINTCR
dex
bne .1
.2 ldx EndChar
beq .8
.3 iny
lda (ZPBufPtr),y
beq .8
cpy EndChar
bne .3
lda #0
sta (ZPBufPtr),y
.8 ldy StartChar
jsr CS.RUN.AddYToBufPtr
>LDYA ZPBufPtr
>SYSCALL puts
lda #0 Exit with no Error
sec
rts
@ -246,7 +210,6 @@ CS.RUN.NextArg inc ArgCount
lda ArgCount
>SYSCALL ArgV
bcs .9
>STYA ZPPtr1
.9 rts
@ -258,7 +221,6 @@ CS.RUN.AddYToBufPtr
sta ZPBufPtr
bcc .8
lda ZPBufPtr+1
.8 rts
*--------------------------------------
CS.QUIT lda hBuf

View File

@ -32,7 +32,7 @@ CS.START cld
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.EVENT
@ -51,38 +51,31 @@ L.MSG.USAGE .DA MSG.USAGE
CS.INIT >LDYA L.LIBTCPIP
>SYSCALL LoadLib
bcs .9
sta hLIBTCPIP
.9 rts
*--------------------------------------
CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ?
>STYA ZPPTR1
lda (ZPPTR1) Configured ?
bmi CS.RUN.IPOK
>LDYA L.MSG.IPKO
>SYSCALL puts
lda #E.SYN
sec
rts
CS.RUN.IPOK ldy #S.PS.ARGC
lda (pPs),y
bne .1
jmp CS.RUN.DUMP
.1 cmp #2
beq CS.RUN.ADD
>PUSHBI 0
>LDYA L.MSG.USAGE
>SYSCALL printf
lda #E.SYN
sec
sec
rts
*--------------------------------------
CS.RUN.ADD >PUSHEA.G DST.IP+3
@ -95,14 +88,12 @@ CS.RUN.ADD >PUSHEA.G DST.IP+3
>SYSCALL ArgV
>SYSCALL sscanf
bcs .9
>PUSHEA.G DST.IP
lda #1
>SYSCALL ArgV
>PUSHYA
>LIBCALL hLIBTCPIP,LIBTCPIP.DNS.ADD
bcs .99
lda #0 tell TSKMGR that all done ok, but
sec we do not want to stay in memory
rts
@ -118,26 +109,21 @@ CS.RUN.DUMP >LIBCALL hLIBTCPIP,LIBTCPIP.DNS.GetCache
lda #K.DNSCACHE.SIZE
>STA.G EntryCount
.1 lda (ZPPTR1)
beq .6
ldy #S.DNSCACHE.TTL+4
.2 dey
.2 dey
lda (ZPPTR1),y
>PUSHA
cpy #S.DNSCACHE.TTL
bne .2
ldy #S.DNSCACHE.IP+4
.3 dey
lda (ZPPTR1),y
>PUSHA
cpy #S.DNSCACHE.IP
bne .3
ldy #S.DNSCACHE.hNAME
lda (ZPPTR1),y
>SYSCALL GetMemPtr
@ -149,13 +135,10 @@ CS.RUN.DUMP >LIBCALL hLIBTCPIP,LIBTCPIP.DNS.GetCache
>PUSHB (ZPPTR1),y
ldx #0
lda (ZPPTR1) Entry Status
bmi .5
asl
tax
.5 >PUSHW L.MSG1.Status,x
>PUSHBI 14
>LDYA L.MSG1
@ -167,7 +150,6 @@ CS.RUN.DUMP >LIBCALL hLIBTCPIP,LIBTCPIP.DNS.GetCache
sta ZPPTR1
bcc .7
inc ZPPTR1+1
.7 >DEC.G EntryCount
bne .8
@ -182,7 +164,6 @@ CS.EVENT sec
CS.QUIT lda hLIBTCPIP
beq .8
>SYSCALL UnloadLib
.8 clc
rts
*--------------------------------------

View File

@ -6,10 +6,8 @@ BUF.InsertClipboard
ldy #hClipBoard
lda (pData),y
beq .8
>SYSCALL GetMemPtr
>STYA ClipboardPtr
jsr BUF.ComputeCOffset
lda BufLen
@ -17,28 +15,22 @@ BUF.InsertClipboard
ldy #ClipboardLen
adc (pData),y
pha
lda BufLen+1
iny
adc (pData),y
ply
jsr BUF.GetNewYA
bcs .9
>LDYA BUF.COffset
jsr BUF.Start2YA
jsr BUF.CopyClipboard
jsr BUF.CopyTail
.4 ldy #ClipboardLen
lda (pData),y
clc
adc BufLen
sta BufLen
iny
lda (pData),y
adc BufLen+1
@ -53,7 +45,6 @@ BUF.InsertA sta TmpByte
bne .10
clc
rts
.10 lda BufLen
clc
adc #2
@ -63,7 +54,6 @@ BUF.InsertA sta TmpByte
ply
jsr BUF.GetNewYA
bcs .9
>LDYA BUF.COffset
jsr BUF.Start2YA
@ -72,17 +62,13 @@ BUF.InsertA sta TmpByte
inc BufPtr
bne .3
inc BufPtr+1
.3 jsr BUF.CopyTail
.4 lda BufLen
clc
adc #1
sta BufLen
bcc .9
inc BufLen+1
clc
.9 rts
*--------------------------------------
@ -95,41 +81,33 @@ BUF.DelSel jsr BUF.GetSelLen
tay
lda BufLen+1
sbc SelLen+1
iny
bne .1
inc
.1 jsr BUF.GetNewYA
bcs .9
>LDYA.G SelStart
jsr BUF.Start2YA
lda BufPtrBackup
clc
adc SelLen
sta BufPtrBackup
lda BufPtrBackup+1
adc SelLen+1
sta BufPtrBackup+1
jsr BUF.CopyTail
lda BufLen
sec
sbc SelLen
sta BufLen
lda BufLen+1
sbc SelLen+1
sta BufLen+1
jsr BUF.ResetSel
.8 clc
.9 rts
.9 rts
*--------------------------------------
* Erase char at CurXY
*--------------------------------------
@ -147,16 +125,11 @@ BUF.DelCharAtCursor
inc BufPtrBackup
bne .4
inc BufPtrBackup+1
.4 jsr BUF.CopyTail
lda BufLen
bne .5
dec BufLen+1
.5 dec BufLen
jsr BUF.ResetSel
pla Get back deleted char
@ -166,28 +139,21 @@ BUF.DelCharAtCursor
BUF.SelToClipboard
jsr BUF.GetSelLen
bcs .8
>LDA.G hClipBoard
beq .1
>SYSCALL FreeMem
>STZ.G hClipBoard
.1 >LDYA SelLen
>SYSCALL GetMem
bcs .9
>STYA ClipboardPtr
txa
>STA.G hClipBoard
ldy #hBuffer
lda (pData),y
>SYSCALL GetMemPtr
pha
tya
* clc
>ADC.G SelStart
sta BufPtr
@ -195,35 +161,27 @@ BUF.SelToClipboard
pla
>ADC.G SelStart+1
sta BufPtr+1
lda SelLen
ldy #ClipBoardLen
sta (pData),y
eor #$ff
tax
iny
lda SelLen+1
sta (pData),y
eor #$ff
pha
ldy #0
.2 inx
bne .3
pla
inc
beq .8
pha
.3 lda (BufPtr),y
sta (ClipboardPtr),y
iny
bne .2
inc BufPtr+1
inc ClipboardPtr+1
bra .2
@ -235,68 +193,50 @@ BUF.CopyClipboard
>LDA.G ClipboardLen
eor #$ff
tax
iny
lda (pData),y
eor #$ff
pha
ldy #0
.1 inx
bne .2
pla
inc
beq .3
pha
.2 lda (ClipboardPtr),y
sta (BufPtr),y
iny
bne .1
inc ClipboardPtr+1
inc BufPtr+1
bra .1
.3 tya
clc
adc ClipboardPtr
sta ClipboardPtr
bcc BUF.CopyAddY
inc ClipboardPtr+1
BUF.CopyAddY tya
clc
adc BufPtr
sta BufPtr
bcc .2
inc BufPtr+1
.2 rts
*--------------------------------------
BUF.Start2YA eor #$ff
pha
tya
eor #$ff
tax
ldy #0
.1 inx
bne .2
pla
inc
beq .3
pha
.2 lda (BufPtrBackup),y
sta (BufPtr),y
iny
@ -305,13 +245,11 @@ BUF.Start2YA eor #$ff
inc BufPtrBackup+1
inc BufPtr+1
bra .1
.3 tya
clc
adc BufPtrBackup
sta BufPtrBackup
bcc BUF.CopyAddY
inc BufPtrBackup+1
bra BUF.CopyAddY
*--------------------------------------
@ -320,10 +258,8 @@ BUF.CopyTail ldy #0
.1 lda (BufPtrBackup),y
sta (BufPtr),y
beq .8
iny
bne .1
inc BufPtrBackup+1
inc BufPtr+1
bra .1
@ -358,7 +294,6 @@ BUF.GetLine ldy #FileY+1
tax
dey
lda (pData),y
BUF.GetLineAX sta BUF.TmpLine1
stx BUF.TmpLine1+1
@ -369,18 +304,14 @@ BUF.GetLineAX sta BUF.TmpLine1
lda (pData),y
>SYSCALL GetMemPtr
>STYA BufPtr
stz BUF.TmpLine2
stz BUF.TmpLine2+1
.1 ldy #0
.2 lda (BufPtr),y
beq .7
cmp #C.CR
beq .3
iny
bne .2
@ -390,14 +321,12 @@ BUF.GetLineAX sta BUF.TmpLine1
lda BUF.TmpLine1+1
cmp BUF.TmpLine2+1
beq .8
.4 tya
sec
adc BufPtr
sta BufPtr
bcc .5
inc BufPtr+1
.5 tya
sec
adc BUF.LOffset
@ -409,39 +338,32 @@ BUF.GetLineAX sta BUF.TmpLine1
bne .1
inc BUF.TmpLine2+1
bra .1
.7 lda BUF.TmpLine1
cmp BUF.TmpLine2
bne .9
lda BUF.TmpLine1+1
cmp BUF.TmpLine2+1
bne .9
.8 clc Y = Line length
rts
.9 sec
rts
*--------------------------------------
BUF.GetNewYA phy
pha
>LDA.G hBufferBackup
beq .1
>SYSCALL FreeMem
.1 >LDA.G hBuffer
>STA.G hBufferBackup
>SYSCALL GetMemPtr
>STYA BufPtrBackup
>STZ.G hBuffer
>STZ.G hBuffer
pla
ply
>SYSCALL GetMem
bcs .9
>STYA BufPtr
txa
>STA.G hBuffer
@ -456,29 +378,24 @@ BUF.ResetSel lda #$ff
sta (pData),y
iny #SelEnd
inc
sta (pData),y
iny
sta (pData),y
rts
*--------------------------------------
BUF.CheckSelected
lda BUF.COffset
ldy #SelStart
cmp (pData),y
lda BUF.COffset+1
iny
sbc (pData),y
bcc .9 CC:COffset < SelStart
iny #SelEnd
lda (pData),y
clc
sbc BUF.COffset
iny
lda (pData),y
sbc BUF.COffset+1
@ -495,7 +412,6 @@ BUF.GetSelLen ldy #SelEnd
sta SelLen
tax
ldy #SelEnd+1
lda (pData),y
@ -505,12 +421,9 @@ BUF.GetSelLen ldy #SelEnd
bcc .9
bne .8
txa
beq .9
.8 clc
rts
.9 sec
rts
*--------------------------------------

View File

@ -30,7 +30,6 @@ NEW
*--------------------------------------
Prompt.Editor cmp #C.DEL
beq Ctrl.DEL
cmp #C.SPACE
bcc .3
@ -56,7 +55,6 @@ Ctrl.DEL jsr BUF.ComputeCOffset
jsr Ctrl.BS
bcs .9
jmp Ctrl.Z
.8 clc
@ -64,32 +62,25 @@ Ctrl.DEL jsr BUF.ComputeCOffset
*--------------------------------------
Ctrl.Invalid
clc
Ctrl.Invalid.RTS
Ctrl.Invalid.RTS
rts
*--------------------------------------
Ctrl.A lda #PromptModeHelp
>STA.G PromptMode
>LDYA L.MSG.HELP
>STYA ZPPTR1
stz .1+1
.1 ldy #0
ldx #0
jsr GotoXY
lda (ZPPTR1)
beq .8
>PUSHW ZPPTR1
>PUSHBI 2
>LDYA L.MSG.HELPLINE
>SYSCALL printf
bcs Ctrl.Invalid.RTS
inc .1+1
lda (ZPPTR1)
sec
adc ZPPTR1
@ -122,7 +113,6 @@ Ctrl.E jsr BUF.ComputeCOffset
*--------------------------------------
Ctrl.F lda #PromptModeFind
>STA.G PromptMode
jmp SCRN.UpdateStatusBar
*--------------------------------------
Ctrl.G ldy #FileX
@ -142,25 +132,21 @@ Ctrl.BS ldy #FileX
dec
sta (pData),y
bra .3
.1 ldy #FileY+1
lda (pData),y
tax
dey
ora (pData),y
beq .8
lda (pData),y
bne .2
dex
.2 dec
jsr BUF.GetLineAX
bcs .8
tya
ldy #FileX
sta (pData),y
sec
ldy #FileY
lda (pData),y
@ -170,9 +156,7 @@ Ctrl.BS ldy #FileX
lda (pData),y
sbc #0
sta (pData),y
.3 jmp SCRN.UpdateViewPort
.8 clc
rts
*--------------------------------------
@ -190,13 +174,11 @@ Ctrl.LF ldy #FileY+1
inx
.1 jsr BUF.GetLineAX
bcs .8
tya Y = line length
ldy #FileX
cmp (pData),y
bcs .2
sta (pData),y
.2 ldy #FileY
lda (pData),y
inc
@ -206,9 +188,7 @@ Ctrl.LF ldy #FileY+1
lda (pData),y
inc
sta (pData),y
.3 jmp SCRN.UpdateViewPort
.8 clc
rts
*--------------------------------------
@ -218,21 +198,17 @@ Ctrl.VT ldy #FileY+1
dey
ora (pData),y
beq .8
lda (pData),y
bne .1
dex
.1 dec
jsr BUF.GetLineAX
bcs .8
tya Y = line length
ldy #FileX
cmp (pData),y
bcs .2
sta (pData),y
.2 sec
ldy #FileY
lda (pData),y
@ -242,15 +218,12 @@ Ctrl.VT ldy #FileY+1
lda (pData),y
sbc #0
sta (pData),y
jmp SCRN.UpdateViewPort
.8 clc
rts
*--------------------------------------
Ctrl.L jsr BUF.GetLine
bcs .8
tya Y = line length
ldy #FileX
sta (pData),y
@ -279,7 +252,6 @@ Ctrl.O ldy #FileY+1
tax
dey
lda (pData),y
ldy #ViewPortH
sec
sbc (pData),y
@ -287,19 +259,16 @@ Ctrl.O ldy #FileY+1
txa
sbc #0
bcc .8
ldy #FileY+1
sta (pData),y
dey
pla
sta (pData),y
lda #0
ldy #FileX
sta (pData),y
jmp SCRN.UpdateViewPort
.8 pla
jmp Ctrl.T
*--------------------------------------
@ -308,17 +277,14 @@ Ctrl.P ldy #FileY+1
tax
dey
lda (pData),y
ldy #ViewPortH
clc
adc (pData),y
bcc .1
inx
.1 pha
phx
jsr BUF.GetLineAX A,X = FileY+PAGE
bcs .8
@ -333,7 +299,6 @@ Ctrl.P ldy #FileY+1
dey
pla
sta (pData),y
jmp SCRN.UpdateViewPort
.8 pla
@ -347,40 +312,30 @@ Ctrl.Q lda #$FF
*--------------------------------------
Ctrl.R lda #PromptModeReplace
>STA.G PromptMode
jmp SCRN.UpdateStatusBar
*--------------------------------------
Ctrl.S lda #PromptModeSave
>STA.G PromptMode
>LDA.G hFileName
beq .2
>SYSCALL GetMemPtr
>STYA ZPPTR1
ldy #$ff
.1 iny
lda (ZPPTR1),y
sta (pData),y
bne .1
tya
.2 >STA.G PromptBufPtr
jmp SCRN.UpdateStatusBar
*--------------------------------------
Ctrl.T >STZ.G FileX
>STZW.G FileY
jmp SCRN.UpdateViewPort
*--------------------------------------
Ctrl.FS jsr BUF.GetLine
bcs .8
tya Y = line length
ldy #FileX
cmp (pData),y
@ -390,7 +345,6 @@ Ctrl.FS jsr BUF.GetLine
inc
sta (pData),y
bra .3
.1 ldy #FileY+1
lda (pData),y
tax
@ -399,10 +353,8 @@ Ctrl.FS jsr BUF.GetLine
inc
bne .2
inx
.2 jsr BUF.GetLineAX
bcs .8
ldy #FileY CC
lda (pData),y
adc #1
@ -411,13 +363,10 @@ Ctrl.FS jsr BUF.GetLine
lda (pData),y
adc #0
sta (pData),y
ldy #FileX
lda #0
sta (pData),y
.3 jmp SCRN.UpdateViewPort
.8 clc
rts
*--------------------------------------
@ -443,13 +392,10 @@ Ctrl.W jsr BUF.ComputeCOffset Y=line len
clc
lda (BufPtr),y
beq .1 last line \0 ending
sec delete CR
.1 tya
adc BUF.LOffset
ldy #SelEnd
sta (pData),y
lda BUF.LOffset+1
@ -457,7 +403,6 @@ Ctrl.W jsr BUF.ComputeCOffset Y=line len
iny
sta (pData),y
bra Ctrl.D
.8
Ctrl.W.RTS rts
*--------------------------------------
@ -466,7 +411,6 @@ Ctrl.X jsr BUF.SelToClipboard
Ctrl.D jsr BUF.DelSel
bcs Ctrl.W.RTS
jsr SCRN.CursorAdjust
jsr SCRN.UpdateMain
bcs Ctrl.W.RTS
@ -478,11 +422,9 @@ Ctrl.Y ldy #FileY+1
tax
dey
lda (pData),y
inc
bne .1
inx
.1 jsr BUF.GetLineAX
bcs .2
@ -496,9 +438,7 @@ Ctrl.Y ldy #FileY+1
lda (pData),y
inc
sta (pData),y
bra Ctrl.Y
.2 jsr BUF.GetLine
tya Y = line length
@ -511,11 +451,9 @@ Ctrl.Z jsr BUF.ComputeCOffset
lda BUF.COffset
eor BufLen
bne .1
lda BUF.COffset+1
eor BufLen+1
bne .1
clc
rts
@ -534,22 +472,17 @@ Prompt.Help >STZ.G PromptMode
Prompt.Help.Upd jsr SCRN.UpdateStatusBar
bcs .9
jmp SCRN.UpdateMain
.9
Prompt.Help.RTS rts
.9Prompt.Help.RTS
rts
*--------------------------------------
Prompt.Find cmp #3
bne .1
>STZ.G PromptMode
jmp SCRN.UpdateStatusBar
.1 cmp #C.CR
bne .2
.2
.2
clc
.9 rts
*--------------------------------------
@ -557,16 +490,12 @@ Prompt.Replace cmp #3
bne .1
>STZ.G PromptMode
jsr SCRN.UpdateStatusBar
bcs .9
rts
.1 cmp #C.CR
bne .2
.2
.2
clc
@ -577,40 +506,30 @@ Prompt.Save cmp #3 Ctrl-C
>STZ.G PromptMode
bra .80
.1 cmp #C.CR
bne .2
>LDA.G PromptBufPtr
beq .8
>LDYA pData
>SYSCALL RealPath
bcs .12
phx
>LDA.G hFileName
beq .11
>SYSCALL FreeMem
.11 pla
>STA.G hFileName
>STZ.G PromptMode
jsr SaveFile
bcc .81
.12 jsr SCRN.UpdateStatusBarErrA
bcs .9
rts
.2 cmp #C.DEL
bne .3
>LDA.G PromptBufPtr
beq .8
dec
sta (pData),y
@ -618,17 +537,14 @@ Prompt.Save cmp #3 Ctrl-C
lda #0
sta (pData),y
bra .80
.3 cmp #C.SPACE
bcc .8
pha
>LDA.G PromptBufPtr
tay
pla
cpy #PromptBufMax
beq .8
sta (pData),y
iny
lda #0
@ -636,10 +552,8 @@ Prompt.Save cmp #3 Ctrl-C
tya
>STA.G PromptBufPtr
bra .80
.8 clc
rts
rts
.81 jsr SCRN.UpdateTopBar
bcs .9
.80 jmp SCRN.UpdateStatusBar

View File

@ -16,7 +16,6 @@ SCRN.Init >LDYAI 510+5+5+4+1 potentially 255*\\ NORM,INV,CEOL & \0
>LDYA L.SEQ.INIT
>SYSCALL printf
bcs .9
lda #0
ldy #FileX
@ -46,19 +45,16 @@ SCRN.UpdateTopBar
lda #1
jsr SCRN.InvLineA
bcs .9
>LDA.G hFileName
beq .1
>SYSCALL GetMemPtr
bra .2
.1 >LDYA L.MSG.NEWFILE
.2 >PUSHYA
>PUSHBI 2
>LDYA L.MSG.TOPBAR
>SYSCALL printf
.9 rts
*--------------------------------------
SCRN.UpdateMain >LDA.G ScreenY
@ -69,43 +65,34 @@ SCRN.UpdateMain >LDA.G ScreenY
lda #0
sta TmpByte
>LDA.G ViewPortH
sta TmpCount
.1 lda TmpIndex
ldx TmpIndex+1
jsr BUF.GetLineAX Y = line length
bcs .5
lda TmpByte
jsr SCRN.UpdateLineAtALenY
bcs SCRN.UpdateMain.9
.3 inc TmpByte
inc TmpIndex
bne .4
inc TmpIndex+1
.4 dec TmpCount
bne .1
jmp SCRN.GotoCurXCurY
.5 ldx #0
ldy TmpByte
jsr GotoXY
bcs SCRN.UpdateMain.9
>PUSHBI 0
>LDYA L.SEQ.CEOL
>SYSCALL printf
bcs SCRN.UpdateMain.9
inc TmpByte
dec TmpCount
bne .5
jmp SCRN.GotoCurXCurY
SCRN.UpdateMain.9
@ -133,75 +120,58 @@ SCRN.UpdateCurrentLine
SCRN.UpdateLineAtALenY
stz bSelected
sty TmpLen
ldx #0
tay
jsr GotoXY
bcs SCRN.UpdateMain.9
>LDYA LineBufPtr
>STYA ZPPTR1
>LDA.G ScreenW
tax
>LDA.G ScreenX
cmp TmpLen
bcs .8
tay
clc
adc BUF.LOffset
sta BUF.COffset
lda #0
adc BUF.LOffset+1
sta BUF.COffset+1
tya
* clc
adc BufPtr
sta BufPtr
bcc .1
inc BufPtr+1
.1 lda (BufPtr)
beq .8
cmp #C.CR
beq .8
jsr BUF.CheckSelected
eor bSelected
bpl .5
jsr SCRN.ToggleSel
.5 lda (BufPtr)
cmp #'\'
beq .50
cmp #'%'
bne .51
.50 pha
lda #'\'
jsr SCRN.ToLineBuf
pla
.51 jsr SCRN.ToLineBuf
inc BufPtr
bne .6
inc BufPtr+1
.6 inc BUF.COffset
bne .7
inc BUF.COffset+1
.7 dex
bne .1
.8 bit bSelected
bpl .80
jsr SCRN.ToggleSel
@ -213,27 +183,21 @@ SCRN.UpdateLineAtALenY
jsr SCRN.ToLineBuf
iny
bra .81
.82 sta (ZPPTR1)
>PUSHBI 0
>LDYA LineBufPtr
>SYSCALL printf
.9 rts
*--------------------------------------
SCRN.ToggleSel ldy #0
lda bSelected
eor #$ff
sta bSelected
bpl .1
ldy #6
.1 lda SEQ.NORM,y
beq .8
jsr SCRN.ToLineBuf
iny
bra .1
@ -253,7 +217,6 @@ SCRN.UpdateStatusBar
>LDYA L.MSG.GOTOXY
>SYSCALL printf
bcs .9
>PUSHBI 0
>LDYA L.SEQ.INV
>SYSCALL printf
@ -261,30 +224,25 @@ SCRN.UpdateStatusBar
>LDA.G PromptMode
bne .2
>LDA.G FileY
tax
iny
lda (pData),y
inx
bne .1
inc
.1 >PUSHA
txa
>PUSHA
>LDA.G FileX
inc
>PUSHA
>PUSHW BufLen
>PUSHBI 5
>LDYA L.MSG.STATUSBAR
>SYSCALL printf
bcs .9
lda #58
jsr SCRN.ClearEOLA
bcs .9
@ -300,17 +258,14 @@ SCRN.UpdateStatusBar
beq .3
>PUSHW pData
lda #2
.3 >PUSHA
>LDA.G ScreenH
jsr SCRN.InvLineA
bcs .9
ldy #PromptMode
lda (pData),y
tax
>LDYA L.MSG.STATUSBAR,x
>SYSCALL printf
bcs .9
@ -322,7 +277,6 @@ SCRN.UpdateStatusBarErrA
lda (pData),y
dec
jsr SCRN.InvLineA
pla
>PUSHA
>PUSHBI 1
@ -333,9 +287,7 @@ SCRN.UpdateStatusBarErrA
SCRN.CursorAdjust
.1 jsr BUF.ComputeCOffset
bcc .8
>DECW.G FileY
>STZ.G FileX
bra .1
@ -350,13 +302,11 @@ SCRN.ClearEOLA pha
bcs .8
inc
pha
lda #' '
>SYSCALL PutChar
bcc .1
plx
rts
.8 clc
.9 rts
*--------------------------------------
@ -373,20 +323,16 @@ SCRN.InvLineA sta .2+1
>LDYA L.SEQ.INV
>SYSCALL printf
bcs .9
ldy #ScreenW
lda (pData),y
.1 pha
lda #' '
>SYSCALL PutChar
pla
bcs .9
dec
bne .1
lda #1
>PUSHA
.2 lda #$ff
@ -394,8 +340,7 @@ SCRN.InvLineA sta .2+1
>PUSHBI 2
>LDYA L.MSG.GOTOXY
>SYSCALL printf
.9 rts
.9 rts
*--------------------------------------
SCRN.GotoCurXCurY
ldy #CurX
@ -404,7 +349,6 @@ SCRN.GotoCurXCurY
ldy #CurY
lda (pData),y
tay
GotoXY txa
inc
>PUSHA
@ -420,24 +364,20 @@ GotoXY.RTS rts
SCRN.UpdateViewPort
lda #$ff
sta bNotRepaint
.1 ldy #FileX
lda (pData),y
ldy #ScreenX
cmp (pData),y
bcs .2 out of left border ?
ldy #ScreenX yes
lda (pData),y
dec
sta (pData),y
stz bNotRepaint
bra .1
.2 clc
ldy #ScreenX
lda (pData),y
ldy #ScreenW
adc (pData),y
dec
@ -450,20 +390,17 @@ SCRN.UpdateViewPort
sta (pData),y
stz bNotRepaint
bra .2
.3 ldy #FileY+1
lda (pData),y
tax
dey
lda (pData),y A,X = FileY
ldy #ScreenY
cmp (pData),y
iny
txa
sbc (pData),y
bcs .4 out of top border ?
ldy #ScreenY move viewport up one line....
lda (pData),y
sbc #0 CC from BCS
@ -472,31 +409,26 @@ SCRN.UpdateViewPort
lda (pData),y
sbc #0
sta (pData),y
bit bNotRepaint
bpl .3
jsr SCRN.scrollDn ...and move content one line down
bcs GotoXY.RTS
.4 ldy #ScreenY+1
lda (pData),y
tax
dey
lda (pData),y
ldy #ViewPortHm1
clc
adc (pData),y
bcc .41
inx
.41 ldy #FileY A,X = screen bottom
cmp (pData),y
txa
iny FileY > screen bottom ?
sbc (pData),y
bcs .5 CS : fileY>= screen bottom
* clc from BCS
ldy #ScreenY move viewport down one line....
lda (pData),y
@ -506,14 +438,11 @@ SCRN.UpdateViewPort
lda (pData),y
adc #0
sta (pData),y
bit bNotRepaint
bpl .4
jsr SCRN.scrollUp ...and move content one line up
bcs .9
bra .4
.5 sec
ldy #FileX
lda (pData),y
@ -521,7 +450,6 @@ SCRN.UpdateViewPort
sbc (pData),y
ldy #CurX
sta (pData),y
sec
ldy #FileY
lda (pData),y
@ -529,16 +457,12 @@ SCRN.UpdateViewPort
sbc (pData),y
ldy #CurY
sta (pData),y
bit bNotRepaint
bmi .6
jsr SCRN.UpdateMain
bcs .9
.6 jsr SCRN.UpdateStatusBar
bcs .9
jmp SCRN.GotoCurXCurY
.9 rts
*--------------------------------------
@ -546,7 +470,6 @@ SCRN.scrollUp ldy #CurX
lda (pData),y
inc
>PUSHA
ldy #CurY
lda (pData),y
inc
@ -556,7 +479,6 @@ SCRN.scrollUp ldy #CurX
>LDYA L.SEQ.SCROLLUP
>SYSCALL printf
bcs .9
ldy #ScreenY+1
lda (pData),y
tax
@ -569,7 +491,6 @@ SCRN.scrollUp ldy #CurX
inx
.1 jsr BUF.GetLineAX
bcs .9
ldy #ViewPortHm1
lda (pData),y
jmp SCRN.UpdateLineAtALenY
@ -580,7 +501,6 @@ SCRN.scrollDn ldy #CurX
lda (pData),y
inc
>PUSHA
ldy #CurY
lda (pData),y
inc
@ -598,7 +518,6 @@ SCRN.scrollDn ldy #CurX
lda (pData),y
jsr BUF.GetLineAX
bcs .9
lda #0
jmp SCRN.UpdateLineAtALenY
.9 rts

View File

@ -57,7 +57,7 @@ CS.START cld
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
@ -127,53 +127,39 @@ CS.RUN >PUSHBI 0
>LDYA L.SEQ.DETECT
>SYSCALL printf Send Query for term W & H
bcs CS.RUN.RTS
.1 >SYSCALL GetChar
bcs CS.RUN.RTS
jsr CharIn
>LDA.G ScreenW Wait for Response from terminal for W & H
beq .1
lda #1
>SYSCALL ArgV
bcs .2 No arg, new file....
>SYSCALL RealPath
txa
>STA.G hFileName
jsr LoadFile
bcc .3 if CS, Failed to load file, keep name, but new file....
cmp #E.OOM
beq CS.RUN.RTS
.2 >LDYAI 1 buffer size = 0 (+ 1 for ending 0)
>SYSCALL GetMem0
bcs CS.RUN.RTS
txa
>STA.G hBuffer BufLen already set to 0
.3 lda #$ff
>STA.G bSaved
jsr SCRN.Init
bcs CS.RUN.RTS
CS.RUN.LOOP >SYSCALL GetChar
bcs CS.RUN.RTS I/O error
jsr CharIn
bcs .9
>LDA.G bCancel
bpl CS.RUN.LOOP
lda #0
.9 pha
>PUSHBI 0
>LDYA L.SEQ.RESET
@ -190,15 +176,12 @@ CS.QUIT ldy #hLineBuffer
ldy #hBuffer
jsr .8
ldy #hBufferBackup
jsr .8
ldy #hClipBoard
jsr .8
ldy #hFileName
.8 lda (pData),y
beq .9
>SYSCALL FreeMem
@ -212,7 +195,6 @@ CharIn tax
asl
txa
bcc .1 Not in ESC mode
cmp #'['
beq .8
@ -220,19 +202,16 @@ CharIn tax
lda (pData),y
inc
sta (pData),y
clc
adc #EscBuffer
tay
txa
sta (pData),y
cmp #64
bcc .8
jsr CharIn.Esc
bcs .8 Not translated, exit
.1 cmp #C.ESC
bne .2
@ -243,7 +222,6 @@ CharIn tax
.8 clc
rts
.2 pha
>LDA.G PromptMode
tax
@ -251,41 +229,30 @@ CharIn tax
jmp (J.PROMPT,x)
*--------------------------------------
CharIn.Esc >STZ.G bEscMode
ldy #EscBuffer
lda (pData),y
clc
adc #EscBuffer
tay
lda (pData),y
ldx EscChars
.1 cmp EscChars,x
beq .2
dex
bne .1
cmp #'R' Response to cursor position query?
beq .3
sec
rts
.2 lda EscAscii,x
clc
rts
.3 stz TmpByte
ldy #EscBuffer+1
.4 lda (pData),y
cmp #';'
beq .5
and #$0f
pha
lda TmpByte
@ -301,7 +268,6 @@ CharIn.Esc >STZ.G bEscMode
sta TmpByte
iny
bra .4
.5 phy
lda TmpByte
@ -314,17 +280,12 @@ CharIn.Esc >STZ.G bEscMode
dec
ldy #ViewPortHm1 Remove 1 more to store offsert to last line of viewport
sta (pData),y
ply
stz TmpByte
iny
.6 lda (pData),y
cmp #'R'
beq .7
and #$0f
pha
lda TmpByte
@ -340,11 +301,9 @@ CharIn.Esc >STZ.G bEscMode
sta TmpByte
iny
bra .6
.7 lda TmpByte
ldy #ScreenW
sta (pData),y
sec
rts
*--------------------------------------
@ -352,9 +311,7 @@ LoadFile >PUSHWZ Aux type
>PUSHBI S.FI.T.TXT
>PUSHBI O.RDONLY
>LDA.G hFileName
>SYSCALL GetMemPtr
>SYSCALL LoadTXTFile
bcs .9
@ -364,48 +321,37 @@ LoadFile >PUSHWZ Aux type
>SYSCALL GetMemPtr
>STYA BufPtr
>STYA BufPtrBackup
stz BufLen
stz BufLen+1
ldy #0
ldx #0
.1 lda (BufPtrBackup),y
beq .8
cpx #C.CR
bne .2
cmp #C.LF
beq .5
.2 cmp #C.SPACE
bcs .3
cmp #C.CR
bne .5
.3 sta (BufPtr)
inc BufPtr
bne .4
inc BufPtr+1
.4 inc BufLen
bne .5
inc BufLen+1
.5 tax set previous char
iny
bne .1
inc BufPtrBackup+1
bra .1
.8 sta (BufPtr)
clc
.9 jmp BUF.ResetSel
*--------------------------------------
SaveFile >PUSHWZ Aux type
@ -416,15 +362,11 @@ SaveFile >PUSHWZ Aux type
>SYSCALL FOpen
bcs .9
pha
>PUSHW BufLen
>LDA.G hBuffer
>SYSCALL GetMemPtr
>PUSHYA
pla
pha
@ -438,11 +380,9 @@ SaveFile >PUSHWZ Aux type
pla
sec
rts
.1 pla
>SYSCALL FClose
.9 rts
>SYSCALL FClose.9
rts
*--------------------------------------
.INB USR/SRC/BIN/EDIT.S.BUF
.INB USR/SRC/BIN/EDIT.S.CTRL

View File

@ -44,7 +44,7 @@ CS.START cld
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
@ -93,7 +93,6 @@ CS.RUN >LIBCALL hLIBETALK,LIBETALK.GETCFG
>STYA pETKCFG
ldy #S.ETKCFG-1
.1 lda (pETKCFG),y
sta ETKCFG,y
dey
@ -101,13 +100,11 @@ CS.RUN >LIBCALL hLIBETALK,LIBETALK.GETCFG
lda ETKCFG+S.NETCFG.DevID
bne CS.RUN.SETUP
>LDYA L.MSG.NODEV
>SYSCALL puts
lda #MLI.E.NODEV
sec
rts
CS.RUN.SETUP jsr CS.RUN.PROBE
jsr CS.RUN.DUMP
@ -119,7 +116,6 @@ CS.RUN.SETUP jsr CS.RUN.PROBE
CS.RUN.DUMP >PUSHEA.G DIB
lda ETKCFG+S.NETCFG.DevID
>SYSCALL GetDevStatus
>LEA.G DCB.NIC
>STYA IOCTL+S.IOCTL.BUFPTR
lda #S.IOCTL.STATCODE.GETDCB
@ -129,10 +125,8 @@ CS.RUN.DUMP >PUSHEA.G DIB
>PUSHBI IOCTL.STATUS
lda ETKCFG+S.NETCFG.DevID
>SYSCALL IOCTL
CS.RUN.DUMPNIC ldy #DCB.NIC+S.DCB.NIC.MAC+5
ldx #6
.1 lda (pData),y
>PUSHA
dey
@ -150,24 +144,19 @@ CS.RUN.DUMPNIC ldy #DCB.NIC+S.DCB.NIC.MAC+5
adc /S.FD.DEV
>PUSHYA
lda ETKCFG+S.NETCFG.DevID
>PUSHA
>PUSHBI 11
>LDYA L.MSG1.DEV
>SYSCALL printf
>LDA.G DCB.NIC+S.DCB.NIC.FLAGS
and #S.DCB.NIC.FLAGS.ARPOFFLOAD
beq .2
lda #1
.2 >PUSHA
>PUSHBI 1
>LDYA L.MSG1.DEV.ARP
>SYSCALL printf
>LDA.G DCB.NIC+S.DCB.NIC.FLAGS
and #S.DCB.NIC.FLAGS.IPOFFLOAD
@ -183,36 +172,28 @@ CS.RUN.DUMPNIC ldy #DCB.NIC+S.DCB.NIC.MAC+5
>LDA.G DCB.NIC+S.DCB.NIC.LINK
and #S.DCB.NIC.LINK.OK
bne CS.RUN.LINK
>LDYA L.MSG1.LINK.KO
>SYSCALL puts
bra CS.RUN.DUMPNET
CS.RUN.LINK >LDYA L.MSG1.LINK.OK
>SYSCALL puts
>PUSHBI 0
>LDYA L.MSG1.LINKSPEED
>SYSCALL printf
>LDA.G DCB.NIC+S.DCB.NIC.SPEED
and #$0F
tax
.4 phx
lda #'0'
>SYSCALL PutChar
plx
dex
bne .4
>LDA.G DCB.NIC+S.DCB.NIC.LINK
and #S.DCB.NIC.LINK.FD
bne .5
>LDYA L.MSG1.DPLX.HD
bra .6
.5 >LDYA L.MSG1.DPLX.FD
.6 >SYSCALL puts
@ -221,12 +202,9 @@ CS.RUN.DUMPNET >PUSHBI 0
>SYSCALL printf
lda ETKCFG+S.ETKCFG.NodID
beq .11
>LDYA L.MSG2.C
bra .10
.11 >LDYA L.MSG2.U
.10 >SYSCALL puts
>PUSHB ETKCFG+S.ETKCFG.NodID
@ -235,20 +213,16 @@ CS.RUN.DUMPNET >PUSHBI 0
>PUSHBI 3
>LDYA L.MSG2.ADDR
>SYSCALL printf
>PUSHB ETKCFG+S.ETKCFG.Router
>PUSHW ETKCFG+S.ETKCFG.NetID
>PUSHBI 3
>LDYA L.MSG2.ROUTER
>SYSCALL printf
>PUSHW L.ETKCFG.OBJECT
>PUSHBI 2
>LDYA L.MSG2.OBJECT
>SYSCALL printf
lda #0 tell TSKMGR that all done ok, but
sec we do not want to stay in memory
rts
@ -263,7 +237,6 @@ CS.RUN.PROBE >PUSHBI 0
sta AARP.PRB.SHA,x
dex
bpl .20
lda #0
* lda #$58
sta AARP.PRB.SPA+2
@ -281,21 +254,17 @@ CS.RUN.PROBE >PUSHBI 0
* lda #$3A
bne .1
inc
.1 cmp #$FE
bcc .2
eor #$80
bne .2
inc
.2 sta AARP.PRB.SPA+3
sta AARP.PRB.TPA+3
sta ETKCFG+S.ETKCFG.NodID
lda #PROBE.MAX
>STA.G PROBE.CNT
.3 >LDYA L.AARP.PRB
>STYA IOCTL+S.IOCTL.BUFPTR
>LDYAI AARP.PRB.LEN
@ -304,12 +273,9 @@ CS.RUN.PROBE >PUSHBI 0
>PUSHBI IOCTL.WRITE
lda ETKCFG+S.NETCFG.DevID
>SYSCALL IOCTL
>SLEEP
>DEC.G PROBE.CNT
bne .3
>LDYA L.DDP.GetNetInfo
>STYA IOCTL+S.IOCTL.BUFPTR
>LDYAI DDP.GetNetInfo.LEN
@ -318,10 +284,8 @@ CS.RUN.PROBE >PUSHBI 0
>PUSHBI IOCTL.WRITE
lda ETKCFG+S.NETCFG.DevID
>SYSCALL IOCTL
>LDYA L.MSG.PROBE.OK
>SYSCALL puts
clc
rts
*--------------------------------------
@ -329,10 +293,8 @@ CFG.EtcFiles >LDYAI 256
>SYSCALL GetMem
bcc .1
rts
.1 >STYA ZPTmpPtr1
stx CFG.hBuf1
>LDYA L.HOSTNAME
jsr CFG.Read.PrintF
jsr CFG.Read.HOSTNAME
@ -347,14 +309,12 @@ CFG.EtcFiles >LDYAI 256
>SYSCALL sprintf
lda #11
sta ETKCFG+S.ETKCFG.OBJECT
.4 >PUSHW L.ETKCFG
>LIBCALL hLIBETALK,LIBETALK.SETCFG
lda CFG.hBuf1
>SYSCALL freemem
.9 rts
.9 rts
*--------------------------------------
CFG.Read.PrintF >PUSHYA
>PUSHBI 2
@ -367,28 +327,22 @@ CFG.Read.HOSTNAME
jsr CFG.Read.Open
jsr CFG.Read.Result
bcs .9
.1 jsr CFG.Read.GetS
bcs .8
lda (ZPTmpPtr1)
beq .1 empty line...
cmp #'#
beq .1 comment...
ldy #0
.2 lda (ZPTmpPtr1),y
beq .8 end of name
sta ETKCFG+S.ETKCFG.OBJECT,y
iny
cpy #32
bne .2
.8 tya
sta ETKCFG+S.ETKCFG.OBJECT
clc
.HS B0 BCS
.9 sec
@ -401,35 +355,28 @@ CFG.Read.Result bcc .1
>SYSCALL printf
sec
rts
.1 >LDYA L.MSG.CFG.OK
>SYSCALL puts
rts
*--------------------------------------
CFG.Read.Open stz CFG.hCfgFile
pha
>PUSHWZ
>PUSHBI S.FI.T.TXT
>PUSHBI O.RDONLY
pla
>SYSCALL fopen
bcs .9
sta CFG.hCfgFile
* clc
.9 rts
* clc
.9 rts
*--------------------------------------
CFG.Read.Close php
pha
CFG.Read.Close2
lda CFG.hCfgFile
CFG.Read.Close2 lda CFG.hCfgFile
beq .8
>SYSCALL fclose
.8 pla
plp
rts
@ -442,20 +389,16 @@ CFG.Read.GetS >PUSHWI 255
*--------------------------------------
CS.DOEVENT lda (pEvent)
bpl .9 is it a TIMER event?
>LDA.G TimeOut
beq .9
dec
sta (pData),y
.9 sec do not discard TIMER event
rts
*--------------------------------------
CS.QUIT lda hLIBETALK
beq .8
>SYSCALL UnloadLib
.8 clc
rts
*--------------------------------------
@ -550,7 +493,7 @@ DDP.GetNetInfo .HS 090007FFFFFF S.ETH.DSTMAC
.HS 00.00.00.00
.HS 00 Zone Len
.BS DDP.GetNetInfo+60-*
DDP.GetNetInfo.LEN .EQ 60
DDP.GetNetInfo.LEN .EQ 60
*--------------------------------------
IOCTL .BS S.IOCTL
*--------------------------------------

View File

@ -35,7 +35,7 @@ CS.START cld
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
@ -53,57 +53,45 @@ CS.INIT
.1 >INC.G Count
>SYSCALL ArgV
bcs .7
>STYA ZPPtr1
lda (ZPPtr1)
cmp #'-'
bne .4
ldy #1
lda (ZPPtr1),y
ldx OptionList
.2 cmp OptionList,x
beq .3
dex
bne .2
.99 >LDYA L.MSG.USAGE
>SYSCALL printf
lda #E.SYN
sec
rts
.3 ldy OptionVars-1,x
lda #$80
sta (pData),y
bra .1
.4 >LDA.G hInputBuf
bne .5
jsr CS.INIT.OPENINPUT
bcc .1 scan for any other args
rts
.5 >LDA.G hOutputFile
bne .99
jsr CS.INIT.CREATEOUTPUT
bcc .1 scan for any other args
rts
.7 >LDA.G hOutputFile
beq .99
>LDYAI 8192 max 256x256 pixels
>SYSCALL getmem
bcs CS.INIT.RTS
>STYA ZPCharBufPtr
txa
>STA.G hCharBuf
.8 clc
CS.INIT.RTS rts
*--------------------------------------
@ -114,33 +102,25 @@ CS.INIT.OPENINPUT
>LDYA ZPPtr1
>SYSCALL LoadFile
bcs CS.INIT.RTS
>PUSHYA
txa
>STA.G hInputBuf
>SYSCALL GetMemPtr
>STYA ZPInputBufPtr
>LDYA L.MSG.FILE.OK
>SYSCALL printf
>SYSCALL printf
ldy #S.FNT.dfVersion
lda (ZPInputBufPtr),y
bne .99
iny
lda (ZPInputBufPtr),y
cmp #2
beq .1
cmp #3
bne .99
.1 asl *2 = Entry Len in Tbl
>STA.G FNT.Version
pha
ldy #S.FNT.dfAscent
lda (ZPInputBufPtr),y
>STA.G FON.Header+S.FON.Ascent
@ -158,17 +138,15 @@ CS.INIT.OPENINPUT
pla
>PUSHA
>LDYA L.MSG.HEADER.OK
>SYSCALL printf
clc
rts
.99 >LDYA L.MSG.HEADER.KO
>SYSCALL printf
lda #E.IBIN
sec
rts
rts
*--------------------------------------
CS.INIT.CREATEOUTPUT
>PUSHWZ Aux type
@ -178,16 +156,13 @@ CS.INIT.CREATEOUTPUT
>SYSCALL FOpen
bcs .9
>STA.G hOutputFile
>LDYAI 256
>SYSCALL getmem
bcs .9
>STYA ZPOutPutBufPtr
txa
>STA.G hOutPutBuf
.9 rts
.9 rts
*--------------------------------------
CS.RUN ldy #S.FNT.dfBreakChar
lda (ZPInputBufPtr),y
@ -209,10 +184,8 @@ CS.RUN ldy #S.FNT.dfBreakChar
>STA.G FON.Header+S.FON.First
>STA.G CharIndex
>PUSHA
>LDYA L.MSG.RANGE
>SYSCALL printf
>LDA.G FON.Header+S.FON.Last
sec
>SBC.G FON.Header+S.FON.First
@ -227,7 +200,6 @@ CS.RUN ldy #S.FNT.dfBreakChar
iny
sta (pData),y
ply
>SYSCALL getmem
bcs .9
>STYA ZPOutPutTblPtr
@ -239,14 +211,11 @@ CS.RUN ldy #S.FNT.dfBreakChar
>ADC.G FileOffset
sta (pData),y
sta ZPOutPutCharOfs
iny
lda /S.FON
adc (pData),y
sta (pData),y
sta ZPOutPutCharOfs+1
>LEA.G FileOffset
>PUSHYA
>PUSHBI SYS.FSeek.SET
@ -254,13 +223,11 @@ CS.RUN ldy #S.FNT.dfBreakChar
>SYSCALL FSeek
bcc .1
.9 rts
.1 >LDA.G FNT.Version
ldx #S.FNT.dfCharTable2
cmp #4
beq .2
ldx #S.FNT.dfCharTable3
.2 txa
clc
adc ZPInputBufPtr
@ -268,7 +235,6 @@ CS.RUN ldy #S.FNT.dfBreakChar
lda #0
adc ZPInputBufPtr+1
sta ZPInputTblPtr+1
CS.RUN.LOOP >SLEEP
>SYSCALL GetChar
@ -276,10 +242,8 @@ CS.RUN.LOOP >SLEEP
cmp #$03 Ctrl-C
beq .9 Abort....
cmp #$13 Ctrl-S
bne .3
>LDA.G bPause
eor #$FF
sta (pData),y
@ -296,18 +260,15 @@ CS.RUN.LOOP >SLEEP
lda (ZPInputTblPtr),y
adc ZPInputBufPtr+1
sta ZPInputBMPtr+1
jsr CS.RUN.GetChar
jsr CS.RUN.ShiftLChar
jsr CS.RUN.CutRChar
jsr CS.RUN.DumpChar
jsr CS.RUN.StoreChar
bcs .9
>INC.G CharIndex
>DEC.G CharCount
beq .8
lda ZPInputTblPtr
clc
>ADC.G FNT.Version
@ -315,16 +276,12 @@ CS.RUN.LOOP >SLEEP
bcc CS.RUN.LOOP
inc ZPInputTblPtr+1
bra CS.RUN.LOOP
.8 jsr CS.RUN.FlushOutPutBuf
bcs .9
jsr CS.RUN.WriteBMAndTbl
bcs .9
>LDYA L.MSG.DONE
>SYSCALL printf
lda #0
sec
.9 rts
@ -345,13 +302,10 @@ CS.RUN.GetChar lda (ZPInputTblPtr) Get Char PixW
and #7
beq .1
inx
.1 txa
>STA.G CharByteW
>STA.G CharOutByteW
lda #0 0 -> A -> CharByteW
.2 pha
clc
adc ZPCharBufPtr
@ -359,9 +313,7 @@ CS.RUN.GetChar lda (ZPInputTblPtr) Get Char PixW
lda #0
adc ZPCharBufPtr+1
sta ZPPTR1+1
>LDA.G FON.Header+S.FON.PixH
tax
.3 lda (ZPInputBMPtr) Get one source byte
@ -369,7 +321,6 @@ CS.RUN.GetChar lda (ZPInputTblPtr) Get Char PixW
inc ZPInputBMPtr
bne .4
inc ZPInputBMPtr+1
.4 tay
lda TWIST,y
sta (ZPPTR1)
@ -379,7 +330,6 @@ CS.RUN.GetChar lda (ZPInputTblPtr) Get Char PixW
sta ZPPTR1
bcc .5
inc ZPPTR1+1
.5 dex
bne .3
@ -387,7 +337,6 @@ CS.RUN.GetChar lda (ZPInputTblPtr) Get Char PixW
inc
>CMP.G CharByteW
bne .2
clc
rts
*--------------------------------------
@ -402,50 +351,38 @@ CS.RUN.DumpChar >LDA.G CharOutByteW
>PUSHA
>LDYA L.MSG.DUMP
>SYSCALL printf
lda ZPCharBufPtr
sta ZPPTR1
lda ZPCharBufPtr+1
sta ZPPTR1+1
>LDA.G FON.Header+S.FON.PixH
.1 pha
lda #'|'
>SYSCALL PutChar
>LDA.G CharOutPixW
>STA.G Count
ldy #0
.2 lda (ZPPTR1),y
phy
ldx #8
.4 lsr
pha
lda #' '
bcc .5
lda #'O'
.5 phx
>SYSCALL PutChar
plx
>DEC.G Count
beq .6
pla Get back BYTE
dex
bne .4
ply
iny
bra .2
.6 pla
pla
@ -455,7 +392,6 @@ CS.RUN.DumpChar >LDA.G CharOutByteW
>SYSCALL PutChar
lda #10
>SYSCALL PutChar
lda ZPPTR1
clc
>ADC.G CharByteW
@ -466,103 +402,83 @@ CS.RUN.DumpChar >LDA.G CharOutByteW
.7 pla
dec
bne .1
rts
*--------------------------------------
CS.RUN.ShiftLChar
>LDA.G bNoShrink
bmi .9
.1 lda ZPCharBufPtr
sta ZPPTR1
lda ZPCharBufPtr+1
sta ZPPTR1+1
>LDA.G FON.Header+S.FON.PixH
tax
lda #0
pha
.2 pla
ora (ZPPTR1)
pha
lda ZPPTR1
clc
>ADC.G CharByteW
sta ZPPTR1
bcc .3
inc ZPPTR1+1
.3 dex
bne .2
pla
beq .9 No pixel in first COL, must be SPACE or BREAK
lsr
lsr
bcs .9
lda ZPCharBufPtr
sta ZPPTR1
lda ZPCharBufPtr+1
sta ZPPTR1+1
>LDA.G FON.Header+S.FON.PixH
tax
.4 >LDA.G CharByteW
tay
clc
.5 dey
lda (ZPPTR1),y
ror
sta (ZPPTR1),y
tya
bne .5
lda ZPPTR1
clc
>ADC.G CharByteW
sta ZPPTR1
bcc .6
inc ZPPTR1+1
.6 dex
bne .4
>DEC.G CharOutPixW
and #7
bne .1
>DEC.G CharOutByteW
bra .1
.9 rts
*--------------------------------------
CS.RUN.CutRChar >LDA.G bNoShrink
bmi .9
.1 lda ZPCharBufPtr
sta ZPPTR1
lda ZPCharBufPtr+1
sta ZPPTR1+1
>LDA.G FON.Header+S.FON.PixH
tax
>LDA.G CharOutByteW
tay
dey
lda #0
pha
.2 pla
ora (ZPPTR1),y
pha
phy
lda ZPPTR1
clc
@ -574,11 +490,9 @@ CS.RUN.CutRChar >LDA.G bNoShrink
.3 ply
dex
bne .2
pla
bmi .9 Bit 7 is colored....exit
bne .4
tya No bits in this COL
beq .9 was COL 0.....SPACE or BREAK
@ -588,7 +502,6 @@ CS.RUN.CutRChar >LDA.G bNoShrink
asl
>STA.G CharOutPixW
bra .1
.4 pha
>LDA.G CharOutByteW
asl
@ -596,14 +509,11 @@ CS.RUN.CutRChar >LDA.G bNoShrink
asl
tax
pla
.5 dex
asl
bpl .5
txa
>STA.G CharOutPixW
pha
lsr
lsr
@ -613,62 +523,48 @@ CS.RUN.CutRChar >LDA.G bNoShrink
and #7
beq .7
inx
.7 txa
>STA.G CharOutByteW
.9 rts
*--------------------------------------
CS.RUN.StoreChar
lda ZPOutPutCharOfs
sta (ZPOutPutTblPtr)
lda ZPOutPutCharOfs+1
ldy #1
sta (ZPOutPutTblPtr),y
lda ZPOutPutTblPtr
clc
adc #2
sta ZPOutPutTblPtr
bcc .1
inc ZPOutPutTblPtr+1
.1 >LDA.G CharOutPixW
jsr CS.RUN.WriteByte
bcs .99
>LDA.G CharOutByteW
jsr CS.RUN.WriteByte
bcs .99
lda ZPCharBufPtr
sta ZPPTR1
lda ZPCharBufPtr+1
sta ZPPTR1+1
>LDA.G FON.Header+S.FON.PixH
pha
.2 >LDA.G CharOutByteW
tax
ldy #0
.3 lda (ZPPTR1),y
jsr CS.RUN.WriteByte
bcs .9
iny
dex
bne .3
pla
dec
beq .8
pha
lda ZPPTR1
clc
>ADC.G CharByteW
@ -676,10 +572,8 @@ CS.RUN.StoreChar
bcc .2
inc ZPPTR1+1
bra .2
.8 clc
.8 clc
rts
.9 plx
.99 rts
*--------------------------------------
@ -689,7 +583,6 @@ CS.RUN.WriteByte
pha
>LDA.G OutPutPtr
tay
pla
sta (ZPOutPutBufPtr),y
tya
@ -698,7 +591,6 @@ CS.RUN.WriteByte
tay
clc
bne .8
>PUSHWI 256
>PUSHW ZPOutPutBufPtr
>LDA.G hOutputFile
@ -721,41 +613,34 @@ CS.RUN.FlushOutPutBuf
tay
lda #0
>PUSHYA
>PUSHW ZPOutPutBufPtr
>LDA.G hOutputFile
>SYSCALL FWrite
.8 rts
*--------------------------------------
CS.RUN.WriteBMAndTbl
ldy #FileOffset
ldx #4
lda #0
.1 sta (pData),y
iny
dex
bne .1
>LEA.G FileOffset
>PUSHYA
>PUSHBI SYS.FSeek.SET
>LDA.G hOutputFile
>SYSCALL FSeek
bcs .9
>PUSHWI S.FON
>PUSHEA.G FON.Header
>LDA.G hOutputFile
>SYSCALL FWrite
bcs .9
>LDA.G FON.Header+S.FON.Last
sec
>SBC.G FON.Header+S.FON.First
inc
asl
pha
lda #0
@ -769,7 +654,6 @@ CS.RUN.WriteBMAndTbl
>LDA.G hOutputFile
>SYSCALL FWrite
clc
.9 rts
*--------------------------------------
@ -783,7 +667,6 @@ CS.QUIT >LDA.G hOutPutBuf
.1 >LDA.G hOutputFile
beq .2
>SYSCALL fclose
.2 >LDA.G hInputBuf
beq .3
>SYSCALL FreeMem

View File

@ -56,17 +56,13 @@ CS.INIT ldy #S.PS.ARGC
beq .90
.1 >INC.G ArgIndex
>SYSCALL ArgV
bcc .11
jmp .8
.11 >STYA ZPPtr1
lda (ZPPtr1)
cmp #'-'
bne .4
ldy #1
lda (ZPPtr1),y
beq .90
@ -75,24 +71,19 @@ CS.INIT ldy #S.PS.ARGC
bcc .20
cmp #'9'+1
bcs .20
and #$0F
>STA.G CatSize
bra .1
.20 ldx OptionList
.2 cmp OptionList,x
beq .3
dex
bne .2
.90 bra .99
.3 ldy OptionVars-1,x
lda #$80
sta (pData),y
bra .1
.4 >LDA.G hDevID
bne .5 Already have a dev...go get VolName
@ -102,17 +93,13 @@ CS.INIT ldy #S.PS.ARGC
>STYA ZPPtrFD
txa
>STA.G hDevID
>LDYA ZPPtr1
>STYA ZPPtrDevName
bra .1
.5 ldy #$ff
.6 iny
lda (ZPPtr1),y
beq .61
cpy #15
beq .99 VolName too long
@ -125,32 +112,27 @@ CS.INIT ldy #S.PS.ARGC
>SYSCALL LoadLib
bcs .9
sta hLIBBLKDEV
clc
.9 rts
.99 >PUSHBI 0
>LDYA L.MSG.USAGE
>SYSCALL printf
lda #E.SYN
sec
rts
rts
*--------------------------------------
CS.RUN jsr CS.RUN.InitCat
bcs .9
jsr CS.RUN.BuildCat
bcs .9
jsr CS.RUN.WriteCat
bcs .9
>LDYA L.MSG.OK
>SYSCALL puts
lda #0
sec
rts
.9 pha
>PUSHA
>PUSHBI 1
@ -175,7 +157,6 @@ CS.RUN.InitCat >LDA.G CatSize
>LEA.G VolName
>SYSCALL sprintf
rts
.8 clc
rts
*--------------------------------------
@ -184,23 +165,18 @@ CS.RUN.BuildCat >PUSHEA.G DIB
>SYSCALL GetDevStatus
bcs .99
>LDA.G DIB+S.DIB.SIZE
iny
ora (pData),y
bne .1
>PUSHBI 0
>LDYA L.MSG.NOSIZE
>SYSCALL printf
lda #MLI.E.IO
sec
rts
.1 >PUSHEA.G VolName
>PUSHW.G DIB+S.DIB.SIZE
>PUSHW ZPPtrDevName
>PUSHBI 6
@ -219,17 +195,13 @@ CS.RUN.BuildCat >PUSHEA.G DIB
>STA.G BlkCnt
pla
ply
>SYSCALL GetMem0 BufferSize
bcs .9
phx
>STYA.G IOCTL+S.IOCTL.BUFPTR
pla
>STA.G hBuf
jsr .7
>PUSHEA.G VolName
>PUSHW.G IOCTL+S.IOCTL.BUFPTR
>LIBCALL hLIBBLKDEV,LIBBLKDEV.BuildProDOSCat
@ -246,19 +218,14 @@ CS.RUN.WriteCat >PUSHEA.G IOCTL
>SYSCALL IOCTL
bcs .9
lda #'.'
>SYSCALL PutChar
>LDA.G IOCTL+S.IOCTL.BUFPTR+1
inc
inc
sta (pData),y
>INC.G IOCTL+S.IOCTL.BLKNUM
>SLEEP
>DEC.G BlkCnt
bne CS.RUN.WriteCat
.9 rts
@ -269,12 +236,9 @@ CS.DOEVENT sec
CS.QUIT >LDA.G hBuf
beq .1
>SYSCALL FreeMem
.1 lda hLIBBLKDEV
beq .8
>SYSCALL UnloadLib
.8 clc
rts
*--------------------------------------

View File

@ -44,7 +44,7 @@ CS.START cld
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
@ -60,17 +60,13 @@ CS.INIT clc
CS.RUN stz ArgIndex
stz ArgPattern
stz hFile
.10 jsr CS.RUN.NextArg
bcs .8
lda (ZPPtr1)
cmp #'-'
beq .1
lda ArgPattern
bne .11
lda ArgIndex
sta ArgPattern
>LDYA ZPPtr1
@ -84,31 +80,26 @@ CS.RUN stz ArgIndex
jsr CS.RUN.OPEN
bcs .9
sta hFile
bra .10
bra .10
.1 ldy #1
lda (ZPPtr1),y
ldx #OptionList.Cnt-1
.2 cmp OptionList,x
beq .3
dex
bpl .2
bra .97
.3 txa
beq .98
lsr
tax
lda #$80
sta bIgnoreCase-1,x
bra .10 scan for any other args
.97 lda #E.SYN
.98 pha
.98 pha
>PUSHBI 0
>LDYA L.MSG.USAGE
>SYSCALL printf
@ -118,11 +109,9 @@ CS.RUN stz ArgIndex
.8 lda hFile
bne .80
ldy #S.PS.hStdIn
lda (pPS),y
tax
lda OF.Table.hFD-1,x
>SYSCALL GetMemPtr
>STYA ZPPtr1
@ -133,48 +122,38 @@ CS.RUN stz ArgIndex
.80 >LDYAI 256
>SYSCALL GetMem
bcs .9
>STYA ZPBufPtr
stx hBuf
stz LineNum
stz LineNum+1
CS.RUN.LOOP >SLEEP
>PUSHWI 256
>PUSHW ZPBufPtr
lda hFile
bne .1
ldy #S.PS.hStdIn
lda (pPS),y
.1 >SYSCALL fgets
bcs .9
inc LineNum
bne .2
inc LineNum+1
.2 jsr CS.RUN.PRINT
bcc CS.RUN.LOOP
rts
.9 cmp #MLI.E.EOF
bne .99
lda #0 Exit with no Error
.99 sec
rts
*--------------------------------------
CS.RUN.OPEN pha
>PUSHWZ Aux type
>PUSHBI S.FI.T.TXT
>PUSHBI O.RDONLY+O.TEXT
pla
>SYSCALL FOpen
bcs .9
@ -184,10 +163,8 @@ CS.RUN.OPEN pha
*--------------------------------------
CS.RUN.PRINT >LDYA ZPBufPtr
>STYA ZPPtr1
.1 lda (ZPPtr1)
beq .8
ldy #$ff
.2 iny
@ -196,18 +173,14 @@ CS.RUN.PRINT >LDYA ZPBufPtr
lda (ZPPatternPtr),y
bne .8
.3 lda (ZPPatternPtr),y
beq .6
jsr CS.RUN.toUpper
sta char
lda (ZPPtr1),y
jsr CS.RUN.toUpper
cmp char
beq .2
inc ZPPtr1
bne .1
inc ZPPtr1+1
@ -221,7 +194,6 @@ CS.RUN.PRINT >LDYA ZPBufPtr
>LDYA L.MSG.NUMLINE
>SYSCALL printf
bcs .9
.7 >LDYA ZPBufPtr
>SYSCALL puts
rts
@ -233,14 +205,12 @@ CS.RUN.NextArg inc ArgIndex
lda ArgIndex
>SYSCALL ArgV
bcs .9
>STYA ZPPtr1
.9 rts
*--------------------------------------
CS.RUN.toUpper bit bIgnoreCase
bpl .9
cmp #'a'
bcc .9
cmp #'z'+1
@ -258,8 +228,7 @@ CS.QUIT lda hBuf
beq .2
>SYSCALL FClose
.2
.2
.8 clc
rts
*--------------------------------------

View File

@ -57,10 +57,8 @@ CS.INIT clc
*--------------------------------------
CS.RUN jsr GFX.Open
bcs .9
jsr LoadResources
bcs .9
>LDYA L.CB.RECT
jsr GFX.Write.YA
@ -81,10 +79,8 @@ CS.RUN jsr GFX.Open
lda hFontB
sta CB.TEXTB+S.CB.hFont
>LDYA L.MESSAGEB
>STYA CB.TEXTB+S.CB.TxtPtr
>LDYA L.CB.TEXTB
>SYSCALL OSD
bcs .9
@ -116,14 +112,10 @@ CS.DOEVENT clc
*--------------------------------------
CS.QUIT lda hFont
beq .1
>SYSCALL FreeStkObj
.1 lda hFontB
beq .2
>SYSCALL FreeStkObj
.2 lda CB.PIX+S.CB.SrcPtr
beq .3
@ -132,7 +124,6 @@ CS.QUIT lda hFont
.3
lda hDevGFX
beq .8
* >DEBUG
* >SYSCALL close
* >DEBUG
@ -170,7 +161,6 @@ GFX.Open >PUSHBI 0
>LDYA L.DEVNAME.GFX
>SYSCALL open
bcs .9
sta hDevGFX
.9 rts
*--------------------------------------
@ -255,7 +245,6 @@ BM.Apple .DA #S.BM.F.BBP4
.DA 16 W
.DA 7 H
.DA BM.Apple.AND-BM.Apple
.HS 0006 green (8)
.HS 6006 green (8)
.HS EEEE yellow (15)
@ -263,7 +252,6 @@ BM.Apple .DA #S.BM.F.BBP4
.HS 8808 magenta (10)
.HS 9999 violet (11)
.HS 1001 Dark blue (4)
BM.Apple.AND .HS FFF0
.HS 0FF0
.HS 0000

View File

@ -41,7 +41,7 @@ CS.START cld
.DA #0
.DA CS.END-CS.START Code Length To Relocate
.DA DS.END-DS.START Data Segment to Allocate
.DA #16 SS
.DA #64 SS
.DA #ZS.END-ZS.START Zero Page Size
.DA 0
*--------------------------------------
@ -75,25 +75,21 @@ CS.INIT >LDYA L.LIBTCPIP
*--------------------------------------
CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ?
>STYA ZPIPCfgPtr
lda (ZPIPCfgPtr) Configured ?
bmi CS.RUN.IPOK
>LDYA L.MSG.IPKO
>SYSCALL puts
lda #E.SYN
sec
rts
CS.RUN.IPOK ldy #S.IPCFG.IP+3
ldx #3
.1 lda (ZPIPCfgPtr),y
sta SA.LOCAL+S.SOCKADDR.ADDR,x
dey
dex
bpl .1
>INC.G ArgIndex
>SYSCALL ArgV
bcs .9
@ -102,7 +98,6 @@ CS.RUN.IPOK ldy #S.IPCFG.IP+3
jsr Init.Timeout
.2 >PUSHW L.SA.REMOTE.AD
>PUSHW ZPHostPtr
>LIBCALL hLIBTCPIP,LIBTCPIP.HST.GETBYNAME
bcc CS.RUN.HOSTOK
@ -115,44 +110,37 @@ CS.RUN.IPOK ldy #S.IPCFG.IP+3
>LDYA L.MSG.UNKNOWN
>SYSCALL printf
bra CS.RUN.ESYN
.9 >PUSHBI 0
>LDYA L.MSG.USAGE
>SYSCALL printf
CS.RUN.ESYN lda #E.SYN
sec
sec
CS.RUN.RTS rts
CS.RUN.HOSTOK >INC.G ArgIndex
>SYSCALL ArgV
bcc .10
jmp CS.RUN.PORTOK
.10 >STYA ZPPtr
lda (ZPPtr)
cmp #'-'
beq .1
>LDYA ZPPtr
>LDYA ZPPtr
>SYSCALL atoi
bcs CS.RUN.RTS
>STYA SA.REMOTE+S.SOCKADDR.PORT
>INC.G ArgIndex
>SYSCALL ArgV
bcs .8
>STYA ZPPtr
lda (ZPPtr)
cmp #'-'
bne CS.RUN.ESYN
.1 ldy #1
lda (ZPPtr),y
cmp #'U'
bne .2
>INC.G ArgIndex
>SYSCALL ArgV
.9 bcs CS.RUN.ESYN
@ -161,37 +149,30 @@ CS.RUN.HOSTOK >INC.G ArgIndex
>SYSCALL strlen
>STYA ZPReqBufLen
.8 bra CS.RUN.PORTOK
.2 cmp #'F'
bne CS.RUN.ESYN
>INC.G ArgIndex
>SYSCALL ArgV
bcs CS.RUN.RTS
pha
>PUSHWZ Aux type
>PUSHBI S.FI.T.TXT
>PUSHBI O.RDONLY
pla
>SYSCALL LoadTxtFile
bcs .9
>STYA ZPReqBufLen
txa
>STA.G hReqBuf
>SYSCALL GetMemPtr
>STYA ZPReqBufPtr
CS.RUN.PORTOK >PUSHW ZPHostPtr
>PUSHW SA.REMOTE+S.SOCKADDR.PORT
ldx #3
.1 >PUSHB SA.REMOTE+S.SOCKADDR.ADDR,x
dex
bpl .1
>PUSHBI 8
>LDYA L.MSG.HOSTOK
>SYSCALL printf
@ -207,21 +188,17 @@ CS.RUN.OPENSKT >PUSHBI 0 no protocol
pla
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind
bcc .2
.9 >LDYA L.MSG.SKTKO
>SYSCALL puts
lda #E.SYN
sec
sec
rts
.2 >PUSHW L.SA.REMOTE
>LDA.G hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
bcs .9
>LDYA L.MSG.SKTOK
>SYSCALL puts
>LDYAI RESP.BUFSIZE
>SYSCALL getmem
bcs .9
@ -231,19 +208,16 @@ CS.RUN.OPENSKT >PUSHBI 0 no protocol
CS.RUN.GET jsr CS.RUN.ENCODE
bcs .99
* >PUSHW ZPEncodedBufLen
* >PUSHW ZPEncodedBufPtr
* ldy #S.PS.hStdOut
* lda (pPs),y
* >SYSCALL fwrite
jsr CS.RUN.REQUEST
bcs .99
jsr CS.RUN.RESPONSE
bcs .99
.9 lda #0
sec
.99 rts
@ -277,14 +251,11 @@ CS.RUN.ENCODE >LDYA ZPReqBufPtr
inc ZPEncodedBufLen
bne .1
inc ZPEncodedBufLen+1
.1 inc ZPPtr
bne .11
inc ZPPtr+1
.11 jsr CS.RUN.TOENCODE
bcc .10
.3 lda ZPEncodedBufLen
clc
adc #2
@ -296,7 +267,6 @@ CS.RUN.ENCODE >LDYA ZPReqBufPtr
.4 >LDYA ZPEncodedBufLen
>SYSCALL GetMem
bcs .9
>STYA ZPEncodedBufPtr
>STYA ZPPtr
txa
@ -304,25 +274,19 @@ CS.RUN.ENCODE >LDYA ZPReqBufPtr
.5 lda (ZPReqBufPtr)
beq .8
inc ZPReqBufPtr
bne .6
inc ZPReqBufPtr+1
.6 jsr CS.RUN.TOENCODE
bcc .7
jsr CS.RUN.ADDBYTETOBUF
bra .5
.7 jsr CS.RUN.ADDTOBUF
bra .5
.8 clc
.9 rts
.9 rts
*--------------------------------------
CS.RUN.TOENCODE ldx #URI.ToEncode.Cnt-1
.1 cmp URI.ToEncode,x
beq .9 CS
dex
@ -356,10 +320,9 @@ CS.RUN.ADDTOBUF sta (ZPPtr)
inc ZPPtr
bne .8
inc ZPPtr+1
.8 rts
.8 rts
*--------------------------------------
CS.RUN.REQUEST jsr Init.Timeout
.10 >PUSHWI HTTP.GET1.LEN
>PUSHW L.HTTP.GET1
@ -367,11 +330,9 @@ CS.RUN.REQUEST jsr Init.Timeout
bcc .1
tay
bne .99
>SLEEP
jsr Wait.TimeOut
bcc .10
.99 lda #MLI.E.IO
sec
rts
@ -380,7 +341,6 @@ CS.RUN.REQUEST jsr Init.Timeout
>PUSHW ZPEncodedBufPtr
jsr .8
bcs .9
>PUSHWI HTTP.GET2.LEN
>PUSHW L.HTTP.GET2
jsr .8
@ -403,7 +363,6 @@ CS.RUN.REQUEST jsr Init.Timeout
CS.RUN.RESPONSE jsr Init.Timeout
.1 >SLEEP
>PUSHWI RESP.BUFSIZE
>PUSHW ZPRespBufPtr
>LDA.G hSocket
@ -412,15 +371,11 @@ CS.RUN.RESPONSE jsr Init.Timeout
tay
bne .8
>LDA.G bResponse
bne .81
jsr Wait.Timeout
bcs .99
bra .1
.2 >PUSHYA len
>PUSHW ZPRespBufPtr
ldy #S.PS.hStdOut
@ -430,15 +385,12 @@ CS.RUN.RESPONSE jsr Init.Timeout
>INC.G bResponse
bra .1
.8 cmp #MLI.E.IO SKT Close ?
bne .9
.80 >LDA.G bResponse
beq .99
.81 clc
rts
.99 lda #MLI.E.IO
.9 sec
@ -446,13 +398,10 @@ CS.RUN.RESPONSE jsr Init.Timeout
*--------------------------------------
CS.DOEVENT lda (pEvent)
bpl .9 is it a TIMER event?
>LDA.G TimeOut
beq .9
dec
sta (pData),y
.9 sec do not discard TIMER event
rts
*--------------------------------------
@ -460,26 +409,18 @@ CS.QUIT >LDA.G hSocket
beq .1
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
.1 >LDA.G hReqBuf
beq .2
>SYSCALL freemem
.2 >LDA.G hEncodedBuf
beq .3
>SYSCALL freemem
.3 >LDA.G hRespBuf
beq .4
>SYSCALL freemem
.4 lda hLIBTCPIP
beq .8
>SYSCALL UnloadLib
.8 clc
rts
*--------------------------------------

View File

@ -6,11 +6,9 @@ AUTO 4,1
DHCP.INIT lda IPCFG+S.NETCFG.STATUS
and #S.IPCFG.STATUS.OK
bne .99 Already Configured, exit
stz IPCFG+S.NETCFG.STATUS
ldx #3
.1 lda A2osX.TIMER16,x
sta DHCP.DISC.XID,x
sta DHCP.REQ.XID,x
@ -24,7 +22,6 @@ DHCP.INIT lda IPCFG+S.NETCFG.STATUS
sta DHCP.REQ.CHADDR,x
dex
bpl .2
clc
.9 rts
@ -40,28 +37,23 @@ DHCP.RUN >PUSHBI 0 no protocol
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket
bcc .1
.9 jmp DHCP.RUN.KO
.1 >STA.G hSocket
pha
>PUSHW L.SA.LOCAL
pla
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind
bcs .9
>PUSHWI S.SOCKET.O.BROADCAST
>LDA.G hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.setsockopt
>PUSHW L.SA.REMOTE
>LDA.G hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
bcs .9
>LDYA L.MSG.DHCP.CFG1
>SYSCALL puts
jsr Init.Timeout
DHCP.RUN.SDISC >PUSHW L.SA.DEST
>PUSHWI DHCP.DISC.LEN
>PUSHW L.DHCP.DISC
@ -75,7 +67,6 @@ DHCP.RUN.SDISC >PUSHW L.SA.DEST
sta IPCFG
DHCP.RUN.ROFFER >SLEEP
jsr DHCP.RUN.SKT.RCVD
bcc .1
jsr Wait.Timeout
@ -83,11 +74,8 @@ DHCP.RUN.ROFFER >SLEEP
lda #1
jmp DHCP.RUN.KO
.1 jsr CheckDHCPOffer
bcs DHCP.RUN.ROFFER
lda #S.IPCFG.STATUS.ROFFER
sta IPCFG
@ -96,7 +84,6 @@ DHCP.RUN.SREQ ldx #3
.1 >PUSHB IPCFG+S.IPCFG.DHCPSRVR,x
dex
bpl .1
>PUSHBI 4
>LDYA L.MSG.DHCP.CFG2
>SYSCALL printf
@ -110,22 +97,18 @@ DHCP.RUN.SREQ ldx #3
lda #S.IPCFG.STATUS.SREQ
sta IPCFG
DHCP.RUN.RACK >SLEEP
jsr DHCP.RUN.SKT.RCVD
bcc .1
jsr Wait.Timeout
bne DHCP.RUN.RACK
lda #2
bra DHCP.RUN.KO
.1 jsr CheckDHCPAck
bcs DHCP.RUN.RACK
DHCP.RUN.OK lda #S.IPCFG.STATUS.OK
DHCP.RUN.OK
lda #S.IPCFG.STATUS.OK
sta IPCFG
>PUSHW L.IPCFG
>LIBCALL hLIBTCPIP,LIBTCPIP.SETCFG
@ -135,21 +118,18 @@ DHCP.RUN.OK lda #S.IPCFG.STATUS.OK
>PUSHA
dex
bpl .1
ldx #3
.2 lda IPCFG+S.IPCFG.IP,x
>PUSHA
dex
bpl .2
>PUSHBI 8
>LDYA L.MSG.DHCP.OK
>SYSCALL printf
lda #0 Leave with NO ERROR
sec
rts
DHCP.RUN.KO pha
>PUSHA
>PUSHBI 1
@ -166,20 +146,18 @@ DHCP.RUN.SKT.RCVD
>STA.G hFrame
>SYSCALL GetMemPtr
>STYA ZPFrameBase
>STYA ZPFrameBase
.9 rts
*--------------------------------------
DHCP.QUIT >LDA.G hSocket
beq .1
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
.1 clc
rts
*--------------------------------------
CheckDHCPOffer jsr CheckDHCPXID
bcs .9
lda ZPFrameBase
clc
adc #S.DHCP.OPTIONS
@ -188,43 +166,33 @@ CheckDHCPOffer jsr CheckDHCPXID
lda ZPFrameBase+1
adc /S.DHCP.OPTIONS
sta ZPFramePtr+1
lda (ZPFramePtr)
cmp #S.DHCP.OPTIONS.MSGTYPE
bne .9
ldy #2
lda (ZPFramePtr),y
cmp #S.DHCP.OPTIONS.DHCPOffer
bne .9
* ldy #S.DHCP.YIADDR+11 Copy YIADDR,SIADDR+GIADDR
* ldx #11
*.1 lda (ZPFrameBase),y
* sta DHCP.REQ.YIADDR,x
* dey
* dex
* bpl .1
ldy #S.DHCP.YIADDR+3
ldx #3
.2 lda (ZPFrameBase),y
sta DHCP.REQ.OPT.REQIP,x
sta IPCFG+S.IPCFG.IP,x
dey
dex
bpl .2
ldy #S.DHCP.SIADDR+3
lda (ZPFrameBase),y
bne .3
ldy #S.IP.SRC+3
.3 ldx #3
.4 lda (ZPFrameBase),y
sta IPCFG+S.IPCFG.DHCPSRVR,x
sta DHCP.REQ.OPT.SVRIP,x
@ -235,24 +203,20 @@ CheckDHCPOffer jsr CheckDHCPXID
.5 inc ZPFramePtr skip Option 53 (DHCPOffer:530102)
bne .6
inc ZPFramePtr+1
.6 lda (ZPFramePtr)
sec
adc ZPFramePtr add option len + 1
sta ZPFramePtr
bcc .7
inc ZPFramePtr+1
.7 lda (ZPFramePtr)
cmp #S.DHCP.OPTIONS.END
beq .8
jsr GetDHCPOption May override SVRIP
bra .5
.8 jsr CS.RUN.DISCARD
clc
rts
.9 jsr CS.RUN.DISCARD
sec
rts
@ -261,16 +225,12 @@ GetDHCPOption cmp #S.DHCP.OPTIONS.MASK
bne .1
ldx #S.IPCFG.MASK
bra GetDHCPOption.CopyIP
.1 cmp #S.DHCP.OPTIONS.GW
bne .2
ldx #S.IPCFG.GW
bra GetDHCPOption.CopyIP
.2 cmp #S.DHCP.OPTIONS.DNS
bne .3
ldx #S.IPCFG.DNS1
bra GetDHCPOption.CopyIP
@ -279,27 +239,21 @@ GetDHCPOption cmp #S.DHCP.OPTIONS.MASK
ldy #5
ldx #3
.31 lda (ZPFramePtr),y
sta DHCP.REQ.OPT.SVRIP,x
dey
dex
bpl .31
rts
.4 cmp #S.DHCP.OPTIONS.DOMAIN
bne .9
ldy #1
lda (ZPFramePtr),y Get String len
cmp #45
bcc .6
lda #44
.6 sta IPCFG+S.IPCFG.DOMAIN store len
tax
.7 iny
lda (ZPFramePtr),y
sta IPCFG+S.IPCFG.DOMAIN-1,y
@ -314,25 +268,19 @@ GetDHCPOption.CopyIP
cmp #9
bcc .1
lda #8 max 8 bytes (2 DNS)
.1 iny
.2 pha
lda (ZPFramePtr),y
sta IPCFG,x
iny
inx
pla
dec
bne .2
rts
*--------------------------------------
CheckDHCPAck jsr CheckDHCPXID
bcs .9
lda ZPFrameBase
clc
adc #S.DHCP.OPTIONS
@ -341,20 +289,16 @@ CheckDHCPAck jsr CheckDHCPXID
lda ZPFrameBase+1
adc /S.DHCP.OPTIONS
sta ZPFramePtr+1
lda (ZPFramePtr)
cmp #S.DHCP.OPTIONS.MSGTYPE
bne .9
ldy #2
lda (ZPFramePtr),y
cmp #S.DHCP.OPTIONS.DHCPAck
bne .9
jsr CS.RUN.DISCARD
clc
rts
.9 jsr CS.RUN.DISCARD
sec
rts
@ -365,17 +309,14 @@ CS.RUN.DISCARD >LDA.G hFrame
*--------------------------------------
CheckDHCPXID ldy #S.DHCP.XID+3
ldx #3
.1 lda (ZPFrameBase),y
cmp DHCP.DISC.XID,x same XID ?
bne .9
dey
dex
bpl .1
clc
rts
.9 sec
rts
*--------------------------------------

View File

@ -7,10 +7,8 @@ CFG.EtcFiles >LDYAI 256
>SYSCALL GetMem
bcc .1
rts
.1 >STYA ZPTmpPtr1
stx CFG.hBuf1
>LDYA L.HOSTNAME
jsr CFG.Read.PrintF
jsr CFG.Read.HOSTNAME
@ -23,17 +21,14 @@ CFG.EtcFiles >LDYAI 256
>PUSHW L.CFG.DefaultHost
>LDYA L.IPCFG.HOSTNAME
>SYSCALL sprintf
.4 >LDYA L.TCPIP.CONF
jsr CFG.Read.PrintF
jsr CFG.Read.TCPIP.CONF
lda IPCFG+S.IPCFG.IP
beq .5
lda #S.IPCFG.STATUS.OK
sta IPCFG+S.NETCFG.STATUS
.5 >LDYA L.HOSTS
jsr CFG.Read.PrintF
jsr CFG.Read.HOSTS
@ -43,8 +38,7 @@ CFG.EtcFiles >LDYAI 256
lda CFG.hBuf1
>SYSCALL freemem
.9 rts
.9 rts
*--------------------------------------
CFG.Read.PrintF >PUSHYA
>PUSHBI 2
@ -57,25 +51,20 @@ CFG.Read.HOSTNAME
jsr CFG.Read.Open
jsr CFG.Read.Result
bcs .9
.1 jsr CFG.Read.GetS
bcs .8
lda (ZPTmpPtr1)
beq .1 empty line...
cmp #'#
beq .1 comment...
ldy #0
.2 lda (ZPTmpPtr1),y
sta IPCFG+S.IPCFG.HOSTNAME,y
beq .8 end of name
iny
cpy #15
bne .2
.8 clc
.HS B0 BCS
.9 sec
@ -86,15 +75,12 @@ CFG.Read.TCPIP.CONF
jsr CFG.Read.Open
jsr CFG.Read.Result
bcs .9
.1 jsr CFG.Read.GetS
bcs .8
lda (ZPTmpPtr1)
beq .1 empty line...
cmp #'#
beq .1 comment...
ldy #$ff
.2 iny
@ -102,12 +88,10 @@ CFG.Read.TCPIP.CONF
beq .3
cmp #' '
bne .2
.3 lda L.CFG.Keywords
sta ZPTmpPtr2
lda L.CFG.Keywords+1
sta ZPTmpPtr2+1
ldx #0
.4 phy save keyword len
@ -115,39 +99,31 @@ CFG.Read.TCPIP.CONF
tya
cmp (ZPTmpPtr2)
bne .6
.5 lda (ZPTmpPtr2),y
dey
cmp (ZPTmpPtr1),y
bne .6
tya
bne .5
ply discard keyword len
jsr .80
bra .1
.6 lda (ZPTmpPtr2)
sec
adc ZPTmpPtr2
sta ZPTmpPtr2
bcc .7
inc ZPTmpPtr2+1
.7 inx
inx
ply reset keyword len
lda (ZPTmpPtr2)
bne .4
bra .1
.8 clc
.HS B0 BCS
.9 sec
jmp CFG.Read.Close
.80 jmp (J.CFG.Keywords,x)
*--------------------------------------
CFG.Read.address
@ -164,7 +140,6 @@ CFG.Read.nameserver
lda IPCFG,x
beq CFG.Read.IP
ldx #S.IPCFG.DNS2+3
CFG.Read.IP ldy #3
.1 txa
@ -179,15 +154,13 @@ CFG.Read.IP ldy #3
dex
dey
bpl .1
>PUSHBI 8 4 PTRs on stack
>PUSHBI 8
4 PTRs on stack
>PUSHW L.CFG.IP.SScanF
lda (ZPTmpPtr2)
sec
adc ZPTmpPtr1
tay
lda ZPTmpPtr1+1
adc #0
@ -203,7 +176,6 @@ CFG.Read.dnsdomain
inc ZPTmpPtr1+1
.1 ldy #$ff
.2 iny
lda (ZPTmpPtr1),y
sta IPCFG+S.IPCFG.DOMAIN,y
@ -216,7 +188,6 @@ CFG.Read.dnsdomain
*--------------------------------------
CFG.Read.HOSTS stz CFG.hBuf2
stz CFG.hBuf3
>LDYA L.HOSTS
jsr CFG.Read.Open
jsr CFG.Read.Result
@ -228,35 +199,28 @@ CFG.Read.HOSTS stz CFG.hBuf2
>STYA ZPTmpPtr2
stx CFG.hBuf2
>LDYAI 256
>SYSCALL GetMem
bcs .9
>STYA ZPTmpPtr3
stx CFG.hBuf3
.1 jsr CFG.Read.GetS
bcs .8
lda (ZPTmpPtr1)
beq .1 empty line...
cmp #'#
beq .1 comment...
jsr CFG.Read.HOSTS.Scan
bcs .1
cmp #5
bcc .1 less than 5 parameters, ignore
beq .2 no alias
>LDYA ZPTmpPtr3
jsr CFG.DNS.Add
.2 >LDYA ZPTmpPtr2
jsr CFG.DNS.Add
jsr CFG.DNS.Add
bra .1
.8 clc
@ -277,9 +241,7 @@ CFG.Read.HOSTS stz CFG.hBuf2
CFG.Read.HOSTS.Scan
>PUSHW ZPTmpPtr3
>PUSHW ZPTmpPtr2
ldx #3
.2 txa
clc
adc L.CFG.IP
@ -290,7 +252,6 @@ CFG.Read.HOSTS.Scan
dex
bpl .2
>PUSHBI 12 6 PTRs on stack
>PUSHW L.CFG.HOST.SScanF
>LDYA ZPTmpPtr1
@ -301,7 +262,6 @@ CFG.Read.HOSTS.Scan
CFG.DNS.ADD >STYA ZPTmpPtr1
>LDYA L.CFG.IP
>PUSHYA
>PUSHW ZPTmpPtr1
>LIBCALL hLIBTCPIP,LIBTCPIP.DNS.Add
@ -313,35 +273,26 @@ CFG.Read.Result bcc .1
>SYSCALL printf
sec
rts
.1 >LDYA L.MSG.CFG.OK
>SYSCALL puts
rts
*--------------------------------------
CFG.Read.Open stz CFG.hCfgFile
pha
>PUSHWZ
>PUSHBI S.FI.T.TXT
>PUSHBI O.RDONLY
pla
>SYSCALL fopen
bcs .9
sta CFG.hCfgFile
* clc
.9 rts
*--------------------------------------
* clc
.9 rts*--------------------------------------
CFG.Read.Close php
pha
CFG.Read.Close2
lda CFG.hCfgFile
CFG.Read.Close2 lda CFG.hCfgFile
beq .8
>SYSCALL fclose
.8 pla
plp
rts

View File

@ -47,7 +47,7 @@ CS.START cld
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
@ -116,7 +116,6 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG
>STYA pIPCFG
ldy #S.IPCFG-1
.1 lda (pIPCFG),y
sta IPCFG,y
dey
@ -124,41 +123,33 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG
lda IPCFG+S.NETCFG.DevID
bne CS.RUN.SETUP
>LDYA L.MSG.NODEV
>SYSCALL puts
lda #MLI.E.NODEV
sec
rts
CS.RUN.SETUP
.1 >INC.G ArgIndex
>SYSCALL ArgV
bcs .4
>STYA ZPTmpPtr1
lda (ZPTmpPtr1)
cmp #'-'
bne .99
ldy #1
lda (ZPTmpPtr1),y
ldx OptionList
.2 cmp OptionList,x
beq .3
dex
bne .2
.99 >PUSHBI 0
>LDYA L.MSG.USAGE
>SYSCALL printf
lda #E.SYN
sec
rts
.3 ldy OptionVars-1,x
lda #$80
sta (pData),y
@ -166,18 +157,15 @@ CS.RUN.SETUP
.4 lda IPCFG+S.NETCFG.STATUS
bne .5
lda #$ff no config, force all
>STA.G bETC
>STA.G bDHCP
.5 >LDA.G bETC
>ORA.G bDHCP
beq CS.RUN.DUMP
>LDA.G bETC
bpl .6
jsr CFG.EtcFiles
.6 >LDA.G bDHCP
@ -197,7 +185,6 @@ CS.RUN.SETUP
CS.RUN.DUMP >PUSHEA.G DIB
lda IPCFG+S.NETCFG.DevID
>SYSCALL GetDevStatus
>LEA.G DCB.NIC
>STYA.G IOCTL+S.IOCTL.BUFPTR
lda #S.IOCTL.STATCODE.GETDCB
@ -207,10 +194,8 @@ CS.RUN.DUMP >PUSHEA.G DIB
>PUSHBI IOCTL.STATUS
lda IPCFG+S.NETCFG.DevID
>SYSCALL IOCTL
CS.RUN.DUMPNIC ldy #DCB.NIC+S.DCB.NIC.MAC+5
ldx #6
.1 lda (pData),y
>PUSHA
dey
@ -228,24 +213,19 @@ CS.RUN.DUMPNIC ldy #DCB.NIC+S.DCB.NIC.MAC+5
adc /S.FD.DEV
>PUSHYA
lda IPCFG+S.NETCFG.DevID
>PUSHA
>PUSHBI 11
>LDYA L.MSG1.DEV
>SYSCALL printf
>LDA.G DCB.NIC+S.DCB.NIC.FLAGS
and #S.DCB.NIC.FLAGS.ARPOFFLOAD
beq .2
lda #1
.2 >PUSHA
>PUSHBI 1
>LDYA L.MSG1.DEV.ARP
>SYSCALL printf
>LDA.G DCB.NIC+S.DCB.NIC.FLAGS
and #S.DCB.NIC.FLAGS.IPOFFLOAD
@ -261,36 +241,28 @@ CS.RUN.DUMPNIC ldy #DCB.NIC+S.DCB.NIC.MAC+5
>LDA.G DCB.NIC+S.DCB.NIC.LINK
and #S.DCB.NIC.LINK.OK
bne CS.RUN.LINK
>LDYA L.MSG1.LINK.KO
>SYSCALL puts
bra CS.RUN.DUMPIP
CS.RUN.LINK >LDYA L.MSG1.LINK.OK
>SYSCALL puts
>PUSHBI 0
>LDYA L.MSG1.LINKSPEED
>SYSCALL printf
>LDA.G DCB.NIC+S.DCB.NIC.SPEED
and #$0F
tax
.4 phx
lda #'0'
>SYSCALL PutChar
plx
dex
bne .4
>LDA.G DCB.NIC+S.DCB.NIC.LINK
and #S.DCB.NIC.LINK.FD
bne .5
>LDYA L.MSG1.DPLX.HD
bra .6
.5 >LDYA L.MSG1.DPLX.FD
.6 >SYSCALL puts
@ -300,82 +272,62 @@ CS.RUN.DUMPIP >PUSHBI 0
lda IPCFG+S.NETCFG.STATUS
and #S.IPCFG.STATUS.OK
beq .11
>LDYA L.MSG2.C
bra .10
.11 >LDYA L.MSG2.U
.10 >SYSCALL puts
ldx #3
.2 >PUSHB IPCFG+S.IPCFG.DHCPSRVR,x
dex
bpl .2
>PUSHBI 4
>LDYA L.MSG2.DHCPSRVR
>SYSCALL printf
ldx #7 IP/MASK
.3 >PUSHB IPCFG+S.IPCFG.IP,x
dex
bpl .3
>PUSHBI 8
>LDYA L.MSG2.IP
>SYSCALL printf
ldx #3
.4 >PUSHB IPCFG+S.IPCFG.GW,x
dex
bpl .4
>PUSHBI 4
>LDYA L.MSG2.GW
>SYSCALL printf
ldy #7
.5 >PUSHB IPCFG+S.IPCFG.DNS1,x
dex
bpl .5
>PUSHBI 8
>LDYA L.MSG2.DNS
>SYSCALL printf
>PUSHW L.IPCFG.DOMAIN
>PUSHW L.IPCFG.HOSTNAME
>PUSHBI 4
>LDYA L.MSG2.HOSTNAME
>SYSCALL printf
lda #0 tell TSKMGR that all done ok, but
sec we do not want to stay in memory
rts
*--------------------------------------
CS.DOEVENT lda (pEvent)
bpl .9 is it a TIMER event?
>LDA.G TimeOut
beq .9
dec
sta (pData),y
.9 sec do not discard TIMER event
rts
*--------------------------------------
CS.QUIT lda hLIBTCPIP
beq .8
>SYSCALL UnloadLib
.8 clc
rts
*--------------------------------------

View File

@ -49,12 +49,10 @@ CS.RUN ldy #S.PS.ARGC
lda #1
>STA.G Signal
.1 >INC.G ArgIndex
>SYSCALL ArgV
bcs .9
>STYA ZPTmpPtr
lda (ZPTmpPtr)
cmp #'-'
bne .2
@ -67,24 +65,20 @@ CS.RUN ldy #S.PS.ARGC
bcc .9
cmp #'9'+1
bcs .9
and #$0F
>STA.G Signal
bra .1
.9 >PUSHBI 0
>LDYA L.MSG.USAGE
>SYSCALL printf
lda #E.SYN
sec
rts
sec
rts
.2 >PUSHEA.G PID
>PUSHBI 2 1 Ptr
>PUSHW L.SSCANF.PID
>LDYA ZPTmpPtr
>SYSCALL sscanf
@ -109,7 +103,7 @@ MSG.USAGE .AS "Usage : KILL <signal> PID\r\n"
.AS " -0 : No Signal\r\n"
.AS " -1 : SIGQUIT\r\n"
.AZ " -2 : SIGKILL\r\n"
SSCANF.PID .AZ "%d"
SSCANF.PID .AZ "%d"
*--------------------------------------
.DUMMY
.OR 0

View File

@ -41,7 +41,7 @@ CS.START cld
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
@ -65,38 +65,30 @@ CS.RUN
>SYSCALL ArgV
bcs .6
>STYA ZPPtr1
lda (ZPPtr1)
cmp #'-'
bne .4
ldy #1
lda (ZPPtr1),y
ldx OptionList
.2 cmp OptionList,x
beq .3
dex
bne .2
lda #E.SYN
sec
rts
.3 ldy OptionVars-1,x
lda #$80
sta (pData),y
bra .1
.4 >LDYA ZPPtr1
jsr InitSrcDirYA
bcc .1 scan for any other args
.9 rts
.9 rts
.6 >LDA.G index do we have a Source dir ?
bne CS.RUN.LOOP
ldy #S.PS.hCWD
lda (pPs),y
>SYSCALL GetMemPtr
@ -107,16 +99,12 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL feof
bcs .99 I/O error
tay
bne .2 no char
>SYSCALL GetChar
cmp #$03 Ctrl-C
bne .1 Abort....
rts CS
.1 cmp #$13 Ctrl-S
bne .2
@ -124,20 +112,15 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
eor #$ff
sta (pData),y
bne CS.RUN.LOOP
.2 >LDA.G bPause
bne CS.RUN.LOOP
jsr GetEntry
bcs .9
jsr FilterMatch
bcs .8 no match, skip....
.4 ldy #S.STAT.P.DRIVE
lda (ZPFileStat),y ProDOS Device ?
bne .5
ldy #S.STAT.P.TYPE
lda (ZPFileStat),y
cmp #$0F Directory ?
@ -146,7 +129,6 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
jsr CS.RUN.PRINT.DIR
bcs .99
bra .8
.5 jsr CS.RUN.PRINT.DEV
bcs .99
bra .8
@ -170,9 +152,7 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
jsr BasePath..
jsr GetNextEntry
.92 jmp CS.RUN.LOOP
.98 lda #0
sec
.99 rts
@ -180,7 +160,6 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
CS.RUN.PRINT.DEV
>LDA.G bLong
bpl CS.RUN.PRINT.DIR
ldy #S.STAT.P.DEVBLOCKS+1
>PUSHB (ZPFileStat),y
dey
@ -194,7 +173,6 @@ CS.RUN.PRINT.DEV
>PUSHB (ZPFileStat),y
dey SLOT
>PUSHB (ZPFileStat),y
>PUSHW ZPFileName
>PUSHBI 8
>LDYA L.MSG.DEVEXT
@ -204,69 +182,54 @@ CS.RUN.PRINT.DEV
ldy #bRecurse
lda (pData),y
bpl .8
>LDYA ZPFileName
jsr EnterSubDirYA
bcs .9
jmp CS.RUN.ENTER.MSG
.8 clc
.9 rts
.8 clc.9
rts
*--------------------------------------
CS.RUN.PRINT.DIR
>LDA.G bAllmostAll
bmi .10
lda (ZPFileName)
cmp #'.'
bne .10
jmp .5
.10 >LDA.G bLong
bmi .4
>LDA.G bColumn
bmi .23
>LDA.G bFullPath
bpl .22
>PUSHBI 0
ldy #hSrcBasePath
lda (pData),y
>SYSCALL GetMemPtr
>SYSCALL printf
>SYSCALL printf
.23 >LDYA ZPFileName
>SYSCALL puts
bcs .9
>LDA.G bRecurse
bpl .8
lda (ZPFileName)
cmp #'.'
beq .8
>LDYA ZPFileName
jmp EnterSubDirYA
.8 clc
.9 rts
.22 >PUSHW ZPFileName
>PUSHBI 2
>LDYA L.MSG.DIR
>SYSCALL printf
bcs .9
ldy #0
.1 iny
lda (ZPFileName),y
bne .1
.11 iny
cpy #19
bcs .2
@ -276,38 +239,30 @@ CS.RUN.PRINT.DIR
ply
bcc .11
rts
.2 jsr CS.RUN.UpdateColCnt
bcc .5
rts
.4 jsr CS.RUN.PUSHDATES
jsr Mod2CSTR
>PUSHEA.G MOD File Mod
>PUSHW ZPFileName
>PUSHBI 8
>LDYA L.MSG.DIREXT
>SYSCALL printf
bcs .90
.5 >LDA.G bRecurse
bpl .80
lda (ZPFileName)
cmp #'.'
beq .80
jsr CS.RUN.NewLine
bcs .90
>LDYA ZPFileName
jsr EnterSubDirYA
bcs .90
jmp CS.RUN.ENTER.MSG
.80 clc
.90 rts
*--------------------------------------
@ -315,19 +270,16 @@ CS.RUN.PRINT.FILE
ldy #bLong
lda (pData),y
bmi .1
>LDA.G bColumn
bmi .23
>LDA.G bFullPath
bpl .22
>PUSHBI 0
ldy #hSrcBasePath
lda (pData),y
>SYSCALL GetMemPtr
>SYSCALL printf
>SYSCALL printf
.23 >LDYA ZPFileName
>SYSCALL puts
rts
@ -337,25 +289,18 @@ CS.RUN.PRINT.FILE
>LDYA L.MSG.FILE
>SYSCALL printf
bcs .9
jmp CS.RUN.UpdateColCnt
.1 jsr CS.RUN.PUSHDATES
ldy #S.STAT.SIZE+3
ldx #4
.2 lda (ZPFileStat),y
>PUSHA
dey
dex
bne .2
jsr Mod2CSTR
>PUSHEA.G MOD File Mod
ldy #S.STAT.P.AUXTYPE+1
lda (ZPFileStat),y
>PUSHA
dey
@ -366,7 +311,6 @@ CS.RUN.PRINT.FILE
lda (ZPFileStat),y
jsr FileType2PSTR
>PUSHYA
>PUSHW ZPFileName
>PUSHBI 16
>LDYA L.MSG.FILEEXT
@ -377,16 +321,13 @@ CS.RUN.PRINT.FILE
CS.RUN.PUSHDATES
ldx #$ff
ldy #TIME.Mod-1 Set NODATE as default
.10 inx
iny
lda MSG.NODATE,x
sta (pData),y
bne .10
ldx #$ff
ldy #TIME.Create-1 Set NODATE as default
.11 inx
iny
lda MSG.NODATE,x
@ -407,7 +348,6 @@ CS.RUN.PUSHDATES
>PUSHW L.FMT.DateTime
>LEA.G TIME.Mod
>SYSCALL StrFTime
.1 ldy #S.STAT.CTIME+S.TIME.MONTH
lda (ZPFileStat),y
beq .2 Month=0.....invalid date/time
@ -422,7 +362,6 @@ CS.RUN.PUSHDATES
>PUSHW L.FMT.DateTime
>LEA.G TIME.Create
>SYSCALL StrFTime
.2 >PUSHEA.G TIME.Mod
>PUSHEA.G TIME.Create
rts
@ -438,7 +377,7 @@ CS.RUN.UpdateColCnt
*--------------------------------------
CS.RUN.NewLine >LDA.G ColCount
beq CS.RUN.NewLine.8
CS.RUN.NewLine.1
CS.RUN.NewLine.1
>PUSHBI 0
>LDYA L.MSG.CRLF
>SYSCALL printf
@ -462,7 +401,6 @@ CS.DOEVENT sec
*--------------------------------------
CS.QUIT jsr LeaveSubDir
bcc CS.QUIT
>LDA.G hFilter
beq .3
>SYSCALL FreeMem
@ -471,14 +409,11 @@ CS.QUIT jsr LeaveSubDir
rts
*--------------------------------------
FileType2PSTR ldy #0
.1 cmp PRODOS.FT.HEX,y
beq .8
iny
cpy #PRODOS.FT.TXT-PRODOS.FT.HEX
bne .1
pha
lsr
lsr
@ -489,7 +424,6 @@ FileType2PSTR ldy #0
bcc .2
adc #6
.2 sta PRODOS.FT.DFLT+2
pla
and #$0F
ora #$30
@ -497,8 +431,7 @@ FileType2PSTR ldy #0
bcc .3
adc #6
.3 sta PRODOS.FT.DFLT+3
.8 tya
.8 tya
asl
asl CC
adc L.PRODOS.FT.TXT
@ -509,7 +442,6 @@ FileType2PSTR ldy #0
*--------------------------------------
Mod2CSTR ldy #S.STAT.MODE+1
lda (ZPFileStat),y
lsr
lsr
lsr
@ -517,38 +449,28 @@ Mod2CSTR ldy #S.STAT.MODE+1
tax
lda TYPES,x
>STA.G MOD
ldx #0
ldy #S.STAT.MODE
lda (ZPFileStat),y
ldy #MOD+1
.1 lsr
pha
lda #'-'
bcc .2
lda ACCESS,x
.2 sta (pData),y
iny
pla
inx
cpx #8
bne .1
.3 ldy #S.STAT.MODE+1
lda (ZPFileStat),y
lsr
lda #'-'
bcc .4
lda ACCESS,x
.4 >STA.G MOD+9
rts

View File

@ -34,7 +34,7 @@ CS.START cld
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.EVENT
@ -62,10 +62,8 @@ CS.INIT clc
*--------------------------------------
CS.RUN jsr DumpDev
bcs .9
jsr DumpNod
bcs .9
.8 lda #0 tell TSKMGR that all done ok, but
sec we do not want to stay in memory
.9 rts
@ -75,30 +73,25 @@ DumpDev >LDYA L.MSG0
ldx #1
stx Index
.1 lda Dev.Table-1,x
sta ZPFDPtr
lda Dev.Table,x
sta ZPFDPtr+1
beq .8
jsr DumpDevFD
bcs .9
ldy #DEV.DIB+S.DIB-1
ldx #S.DIB-1
.2 lda BLANK.DIB,x
sta (pData),y
dey
dex
bpl .2
>PUSHEA.G DEV.DIB
lda Index
>SYSCALL GetDevStatus
bcc .6
>PUSHA
>PUSHBI 1
>LDYA L.MSG2.ERR
@ -106,7 +99,6 @@ DumpDev >LDYA L.MSG0
bcs .9
bra .7
.6 jsr DumpDevDIB
.7 inc Index
@ -124,20 +116,16 @@ DumpDevFD ldy #S.FD.DEV.DRVPTR+1
dey
>PUSHB (ZPFDPtr),y
lda ZPFDPtr
clc
adc #S.FD.DEV
tay
lda ZPFDPtr+1
adc /S.FD.DEV
>PUSHYA
>PUSHB (ZPFDPtr) S.FD.T
>PUSHB Index
>PUSHBI 6
>LDYA L.MSG1
>SYSCALL printf
@ -145,52 +133,39 @@ DumpDevFD ldy #S.FD.DEV.DRVPTR+1
*--------------------------------------
DumpDevDIB >PUSHB.G DEV.DIB+S.DIB.VERSION+1
>PUSHB.G DEV.DIB+S.DIB.VERSION
>PUSHEA.G DEV.DIB+S.DIB.IDS
>PUSHB.G DEV.DIB+S.DIB.ST
>PUSHB.G DEV.DIB+S.DIB.T
>LDA.G DEV.DIB+S.DIB.S
ldy #DEV.SFLAGS+7
ldx #7
.1 lsr
pha
lda #'-'
bcc .2
lda MSG.SFLAGS,x
.2 sta (pData),y
pla
dey
dex
bpl .1
>PUSHEA.G DEV.SFLAGS
>PUSHBI 8
>LDYA L.MSG2
>SYSCALL printf
bcs .9
>LDA.G DEV.DIB+S.DIB.S
bpl .4 char device...
>PUSHBI 0
>PUSHB.G DEV.DIB+S.DIB.SIZE+2
>PUSHB.G DEV.DIB+S.DIB.SIZE+1
>PUSHB.G DEV.DIB+S.DIB.SIZE
>PUSHBI 4
>LDYA L.MSG2.B
bra .8
.4 >PUSHBI 0
>LDYA L.MSG2.C
.8 >SYSCALL printf
.9 rts
*--------------------------------------
@ -199,31 +174,25 @@ DumpNod >LDYA L.MSG3
ldx #2
stx Index
.1 lda Nod.Table.hPath-2,x
beq .7
>SYSCALL GetMemPtr
>PUSHYA
ldx Index
lda Nod.Table.hFD-2,x
>SYSCALL GetMemPtr
>STYA ZPFDPtr
lda (ZPFDPtr)
tax
>PUSHW L.FD.T,x
ldx Index
lda Nod.Table.hFD-2,x
>PUSHA
txa
>PUSHA
>PUSHBI 6
>LDYA L.MSG4
>SYSCALL printf
.7 inc index
ldx index

View File

@ -27,7 +27,7 @@ CS.START cld
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.EVENT
@ -52,20 +52,15 @@ CS.RUN >LDYA L.MSG0
lda #1
>STA.G FILE.ID
.1 tax
lda OF.Table.hFD-1,x
beq .7
>SYSCALL GetMemPtr
>STYA ZPFDPtr
>LDA.G FILE.ID
tax
lda OF.Table.hPath-1,x
bne .2
lda OF.Table.hFD-1,x
tax
@ -79,30 +74,24 @@ CS.RUN >LDYA L.MSG0
adc /S.FD.DEV
bra .3
.2 >SYSCALL GetMemPtr
.3 >PUSHYA
lda (ZPFDPtr)
tax
>PUSHW L.FD.T,x
>LDA.G FILE.ID
tax
lda OF.Table.hFD-1,x
>PUSHA
txa
>PUSHA
>PUSHBI 6
>LDYA L.MSG1
>SYSCALL printf
.7 >INC.G FILE.ID
cmp #K.OF.MAX+1
bne .1
.8 lda #0 tell TSKMGR that all done ok, but
sec we do not want to stay in memory
.9 rts

View File

@ -15,7 +15,7 @@ FILEBUF.SIZE .EQ 4096
*--------------------------------------
.DUMMY
.OR ZPBIN
ZS.START
ZS.START
ZPPtr1 .BS 2
ZPDataBufPtr .BS 2
ZS.END .ED
@ -34,7 +34,7 @@ CS.START cld
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
@ -46,7 +46,6 @@ L.MSG.USAGE .DA MSG.USAGE
CS.INIT >LDYA L.LIBCRYPT
>SYSCALL LoadLib
bcs .9
sta hLIBCRYPT
.9 rts
@ -56,22 +55,17 @@ CS.RUN ldy #S.PS.ARGC
beq .99
.1 >INC.G ArgIndex
>SYSCALL ArgV
bcs .8
>STYA ZPPtr1
lda (ZPPtr1)
cmp #'-'
bne .4
ldy #1
lda (ZPPtr1),y
beq .99
ldx OptionList
.2 cmp OptionList,x
beq .3
dex
@ -83,32 +77,25 @@ CS.RUN ldy #S.PS.ARGC
lda #E.SYN
sec
rts
.3 ldy OptionVars-1,x
lda #$80
sta (pData),y
bra .1
.4 >LDA.G Arg
bne .99
>LDA.G ArgIndex
>STA.G Arg
bra .1
.8 >LDA.G Arg
beq .99
>LDA.G bText
beq CS.RUN.FILE
*--------------------------------------
CS.RUN.TEXT >PUSHEA.G MD5Buf
>LDA.G Arg
>SYSCALL ArgV
>PUSHYA
>LIBCALL hLIBCRYPT,LIBCRYPT.MD5
jmp CS.RUN.PRINT
*--------------------------------------
CS.RUN.FILE >LDYAI FILEBUF.SIZE
@ -117,48 +104,37 @@ CS.RUN.FILE >LDYAI FILEBUF.SIZE
>STYA ZPDataBufPtr
txa
>STA.G hDataBuf
>PUSHWZ Aux type
>PUSHBI 0 ftype
>PUSHBI O.RDONLY
>LDA.G Arg
>SYSCALL ArgV
>SYSCALL FOpen
bcs .9
>STA.G hFile
>LIBCALL hLIBCRYPT,LIBCRYPT.MD5Init
bcs .9
>STA.G hMD5Ctx
.1 >PUSHWI FILEBUF.SIZE Bytes To Read
>PUSHW ZPDataBufPtr Dst Ptr
>LDA.G hFile
>SYSCALL FRead
bcc .2
eor #MLI.E.EOF
beq .8
.9 rts
.2 >PUSHYA MD5 DataLen
>PUSHW ZPDataBufPtr
>LDA.G hMD5Ctx
>LIBCALL hLIBCRYPT,LIBCRYPT.MD5Update
bra .1
.8 >PUSHEA.G MD5Buf
>LDA.G hMD5Ctx
>LIBCALL hLIBCRYPT,LIBCRYPT.MD5Finalize
CS.RUN.PRINT >LEA.G MD5Buf
>SYSCALL strlwr
>SYSCALL puts
lda #0
* sec
* rts
*--------------------------------------
@ -168,7 +144,6 @@ CS.DOEVENT sec
CS.QUIT >LDA.G hDataBuf
beq .2
>SYSCALL FreeMem
.2 >LDA.G hFile
beq .3
@ -176,9 +151,7 @@ CS.QUIT >LDA.G hDataBuf
.3 lda hLIBCRYPT
beq .4
>SYSCALL UnloadLib
.4 clc
rts
*--------------------------------------

View File

@ -31,7 +31,7 @@ CS.START cld
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
@ -87,10 +87,8 @@ CS.RUN >LDYA L.MemStat
sbc MemStat+S.MSTAT.DF+1
ldx #S.MSTAT.DH+1
jsr CS.RUN.PRINT
>LDYA L.MSG.END
>SYSCALL puts
lda #0
sec
rts
@ -98,12 +96,10 @@ CS.RUN >LDYA L.MemStat
CS.RUN.PRINT >PUSHYA
ldy #6
.1 >PUSHB MemStat,x
dex
dey
bne .1
>PUSHBI 8
>LDYA L.MSG.Stat
>SYSCALL printf

View File

@ -35,7 +35,7 @@ CS.START cld
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
@ -64,47 +64,34 @@ CS.RUN >LEA.G MemStat
>LDYA L.MSG0
>SYSCALL puts
>INC.G MEM.COUNT skip slot 0
CS.RUN.LOOP >LDA.G bSTOP
beq .1
.10 >SYSCALL GetChar
cmp #3 Ctrl-C ?
beq CS.RUN.LOOP.RTS
cmp #C.SPACE
bne .10
>STZ.G bSTOP
.1 lda (ZPPTR1)
bpl .2
>INC.G USED.COUNT
.2 jsr CS.RUN.PRINTMEM
lda ZPPTR1
clc
adc #S.MEM
sta ZPPTR1
bcc .3
inc ZPPTR1+1
.3 >INC.G MEM.COUNT
>CMP.G MemStat+S.MSTAT.MLast
beq CS.RUN.FOOTER
bra CS.RUN.LOOP
sec
CS.RUN.LOOP.RTS rts
CS.RUN.FOOTER >SYSCALL GetChar
bcs CS.RUN.LOOP.RTS
>PUSHB.G MEM.COUNT
>PUSHB.G USED.COUNT
>PUSHBI 2
@ -125,7 +112,6 @@ CS.RUN.FOOTER >SYSCALL GetChar
>PUSHBI 2
>LDYA L.MSG5
>SYSCALL printf
sec
>LDA.G MemStat+S.MSTAT.MF
>SBC.G MemStat+S.MSTAT.ML
@ -133,62 +119,50 @@ CS.RUN.FOOTER >SYSCALL GetChar
>LDA.G MemStat+S.MSTAT.MF+1
>SBC.G MemStat+S.MSTAT.ML+1
ply
>PUSHYA
>PUSHBI 2
>LDYA L.MSG.FREE
>SYSCALL printf
lda #0
sec
sec
rts
*--------------------------------------
CS.RUN.PRINTMEM ldy #S.MEM.LEN+1
ldx #4
.13 lda (ZPPTR1),y
>PUSHA
dey
dex
bne .13
ldy #S.MEM.REFCNT
lda (ZPPTR1),y
>PUSHA
ldy #S.MEM.OWNERPID
lda (ZPPTR1),y
>PUSHA
lda (ZPPTR1) Get flags
ldy #MEM.FLAGS+7
ldx #7
.20 lsr
pha
lda #'-'
bcc .30
lda MSG.FLAGS,x
.30 sta (pData),y
pla
dey
dex
bpl .20
>PUSHEA.G MEM.FLAGS
bpl .20
>PUSHEA.G MEM.FLAGS
>PUSHB.G MEM.COUNT
lda (ZPPTR1) Get flags
bpl .12
ldy #S.MEM.OWNERPID
lda (ZPPTR1),y
jsr CS.RUN.CHECKPS
bcc .12
>PUSHBI 0
>LDYA L.MSG1.INV
>SYSCALL printf
@ -200,17 +174,14 @@ CS.RUN.PRINTMEM ldy #S.MEM.LEN+1
lda (ZPPTR1)
and #S.MEM.F.CODE
bne CS.RUN.PRINTMEM.BIN
****** DATA
****** DATA
ldy #S.MEM.PTR
lda (ZPPTR1),y
sta ZPPTR2
iny
lda (ZPPTR1),y
sta ZPPTR2+1
ldy #$0
.1 lda (ZPPTR2),y Check if it looks like a printable string
beq .11
bmi .2
@ -221,7 +192,6 @@ CS.RUN.PRINTMEM ldy #S.MEM.LEN+1
.11 tya
beq .2 Startig with 0...PrintHEX
>PUSHW ZPPTR2 String
tya Len
>PUSHA
@ -234,38 +204,29 @@ CS.RUN.PRINTMEM ldy #S.MEM.LEN+1
.3 >PUSHB (ZPPTR2),y
dey
bpl .3
>PUSHBI 16
>LDYA L.MSG1.HEX
bra CS.RUN.PRINTMEM.OUT
CS.RUN.PRINTMEM.BIN
ldy #S.MEM.BIN
lda (ZPPTR1),y
>SYSCALL GetMemPtr
>PUSHYA
>PUSHBI 2
>LDYA L.MSG1.BIN
CS.RUN.PRINTMEM.OUT
>SYSCALL printf
>INC.G LINE.COUNT
cmp #PAGELEN
beq .9
rts
.9 lda #$FF
>STA.G bSTOP
inc
>STA.G LINE.COUNT
rts
*--------------------------------------
CS.RUN.CHECKPS ldx #0
.1 cmp PS.Table.PID,x
beq .8
inx

View File

@ -23,7 +23,7 @@ CS.START cld
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
@ -36,14 +36,11 @@ CS.INIT clc
CS.RUN lda #1
>SYSCALL ArgV
bcs .99
>SYSCALL MKDir
bcs .9
lda #0
sec
.9 rts
.99 lda #E.SYN
sec
rts

View File

@ -46,7 +46,7 @@ CS.START cld
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
@ -67,58 +67,45 @@ CS.RUN
lda ArgCount
>SYSCALL ArgV
bcs .7
>STYA ZPPtr1
lda (ZPPtr1)
cmp #'-'
bne .4
ldy #1
lda (ZPPtr1),y
ldx OptionList
.2 cmp OptionList,x
beq .3
dex
bne .2
.99 >PUSHBI 0
>LDYA L.MSG.USAGE
>SYSCALL printf
lda #E.SYN
sec
.9 rts
.3 ldy OptionVars-1,x
lda #$80
sta (pData),y
bra .1
.4 lda hFile
bne .99
>LDYA ZPPtr1
jsr CS.RUN.OPEN
bcs .9
bra .1 scan for any other args
.7 lda bHelp
beq .8
.71 jsr .99
lda #0
rts
.8 lda hFile
bne .80
ldy #S.PS.hStdIn
lda (pPS),y
tax
lda OF.Table.hFD-1,x
>SYSCALL GetMemPtr
>STYA ZPPtr1
@ -129,29 +116,22 @@ CS.RUN
.80 >LDYAI 256
>SYSCALL GetMem
bcs .9
>STYA ZPBufPtr
stx hBuf
>PUSHBI 0
>LDYA L.MSG.Init
>SYSCALL printf
CS.RUN.LOOP jsr CS.RUN.GETLINE
bcs .9
.1 inc LineNum
bne .11
inc LineNum+1
.11 lda LineCount
bne .2
lda bPage
beq .2
lda #C.FF
>SYSCALL putchar
.2 jsr CS.RUN.PRINT
inc LineCount
@ -159,23 +139,18 @@ CS.RUN.LOOP jsr CS.RUN.GETLINE
cmp #PG.SIZE
bne CS.RUN.LOOP
stz LineCount
jsr CS.RUN.PAUSE
bcc CS.RUN.LOOP
.9 cmp #MLI.E.EOF
bne .99
lda #0 Exit with no Error
.99 sec
rts
*--------------------------------------
CS.RUN.OPEN pha
>PUSHWZ Aux type
>PUSHBI S.FI.T.TXT
>PUSHBI O.RDONLY+O.TEXT
pla
>SYSCALL FOpen
bcs .9
@ -188,7 +163,6 @@ CS.RUN.PAUSE >PUSHBI 0
ldy #S.PS.hStdErr
lda (pPS),y
>SYSCALL fprintf
.10 jsr CS.RUN.GETC
bcs .99
@ -196,24 +170,19 @@ CS.RUN.PAUSE >PUSHBI 0
beq .9
cmp #'q'
beq .9
.3 cmp #C.SPACE
bne .4
jmp CS.RUN.ERASE
.4 cmp #C.CR
bne .10
jsr CS.RUN.ERASE
.40 jsr CS.RUN.GETLINE
bcc .5
cmp #MLI.E.EOF
beq .90
rts
.5 inc LineNum
bne .6
inc LineNum+1
@ -221,12 +190,11 @@ CS.RUN.PAUSE >PUSHBI 0
.6 jsr CS.RUN.PRINT
bra CS.RUN.PAUSE
.9 jsr CS.RUN.ERASE
.90 lda #0
.99 sec
rts
rts
*--------------------------------------
CS.RUN.ERASE >PUSHBI 0
>PUSHW L.MSG.PauseErase
@ -250,7 +218,6 @@ CS.RUN.GETLINE >PUSHWI 256
>PUSHW ZPBufPtr
lda hFile
bne .1
ldy #S.PS.hStdIn
lda (pPS),y
@ -265,19 +232,16 @@ CS.RUN.PRINT lda bLineNum
>LDYA L.MSG.NUMLINE
>SYSCALL printf
bcs .9
.1 lda bEscCodes
bmi .2
>LDYA ZPBufPtr
>SYSCALL puts
rts
.2 >PUSHBI 0
>LDYA ZPBufPtr
>SYSCALL printf
bcs .9
>PUSHBI 0
>LDYA L.MSG.CRLF
>SYSCALL printf
@ -292,8 +256,7 @@ CS.QUIT lda hBuf
beq .2
>SYSCALL FClose
.2
.2
.8 clc
rts
*--------------------------------------

View File

@ -12,7 +12,7 @@ NEW
*--------------------------------------
X.ENTER.SUBDIR .EQ 0
X.COPY.TO.DEST .EQ 1
X.DELETE.SOURCE .EQ 1
X.DELETE.SOURCE .EQ 1
*--------------------------------------
.INB USR/SRC/BIN/X.CPMVRM.S
.INB USR/SRC/BIN/X.FILEENUM.S
@ -39,7 +39,6 @@ bNoConfirm .BS 1
bQuiet .BS 1
.INB USR/SRC/BIN/X.CPMVRM.G
.INB USR/SRC/BIN/X.FILEENUM.G
DS.END
.ED
*--------------------------------------

View File

@ -32,7 +32,7 @@ CS.START cld
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
@ -74,48 +74,37 @@ CS.INIT >LDYA L.LIBTCPIP
*--------------------------------------
CS.RUN >LDYA L.MSG0
>SYSCALL puts
>LIBCALL hLIBTCPIP,LIBTCPIP.GetTable
>STYA ZPPTR1
ldy SocketIndex
.1 lda (ZPPTR1),y
beq .7
>SYSCALL GetMemPtr
>STYA ZPPTR2
ldy #S.SOCKET.AF
lda (ZPPTR2),y
cmp #AF.INET
bne .7
jsr CS.RUN.S 2 bytes
ldy #S.SOCKET.O
>PUSHB (ZPPTR2),y ..3
ldy #S.SOCKET.REM.PORT+1
.2 >PUSHB (ZPPTR2),y ..15
dey
cpy #S.SOCKET.LOC.ADDR-1
bne .2
jsr CS.RUN.P ..17
jsr CS.RUN.T ..19
>PUSHBI 19
>LDYA L.MSG1
>SYSCALL printf
bcs .9
.7 inc SocketIndex
ldy SocketIndex
cpy #K.SKTTABLE.SIZE
bne .1
lda #0 tell TSKMGR that all done ok, but
sec we do not want to stay in memory
.9 rts
@ -125,7 +114,6 @@ CS.RUN.S ldy #S.SOCKET.TCP.S
cmp #S.SOCKET.TCP.S.TIMEWT+1
bcc .1
lda #S.SOCKET.TCP.S.TIMEWT+1
.1 asl
@ -138,20 +126,16 @@ CS.RUN.P ldy #S.SOCKET.PROTO
lda (ZPPTR2),y
ldx #0
.3 cmp PROTO,x
beq .4
inx
cpx #PROTO.Cnt
bne .3
.4 txa
asl
tax
>PUSHB L.MSG1.P+1,x
>PUSHB L.MSG1.P,x
rts
*--------------------------------------
CS.RUN.T ldy #S.SOCKET.T
@ -161,10 +145,8 @@ CS.RUN.T ldy #S.SOCKET.T
bcc .5
ldx #S.SOCKET.T.STREAM+1
.5 >PUSHB L.MSG1.T+1,x
>PUSHB L.MSG1.T,x
rts
*--------------------------------------
CS.DOEVENT sec
@ -173,7 +155,6 @@ CS.DOEVENT sec
CS.QUIT lda hLIBTCPIP
beq .8
>SYSCALL UnloadLib
.8 clc
rts
*--------------------------------------

View File

@ -39,14 +39,11 @@ CS.INIT >SYSCALL ArgVC
cmp #1
beq .99
>LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ?
bcs .99
>STYA ZPIPCfgPtr
lda (ZPIPCfgPtr) Configured ?
bpl .99
ldx #3
ldy #S.IPCFG.IP+3
.1 lda (ZPIPCfgPtr),y
@ -54,13 +51,11 @@ CS.INIT >SYSCALL ArgVC
dey
dex
bpl .1
lda (pPs)
ora #S.PS.F.EVENT Now accept events
sta (pPs)
clc
rts
.99 >LDYA L.MSG.USAGE
>SYSCALL printf
lda #E.SYN
@ -74,7 +69,6 @@ CS.RUN.ERROR sec
CS.DOEVENT
.8 clc
rts
.9 sec
rts
*--------------------------------------

View File

@ -51,11 +51,10 @@ CS.RUN ldy #S.PS.ARGC
CS.RUN.READ jsr NSC.Init
jsr NSC.Read
ldx #7
.1 lda DS1216E.DETECT,x
eor DS1216E.DATA,x
eor DS1216E.DATA,x
bne .8
dex
bpl .1
@ -63,17 +62,14 @@ CS.RUN.READ jsr NSC.Init
>PUSHBI 0
>LDYA L.MSG.READ.KO
>SYSCALL printf
lda #MLI.E.NODEV
sec
rts
.8 jsr NSC.Dump
>PUSHBI 0
>LDYA L.MSG.USAGE
>SYSCALL printf
lda #0 tell TSKMGR that all done ok, but
sec we do not want to stay in memory
rts
@ -81,19 +77,14 @@ CS.RUN.READ jsr NSC.Init
CS.RUN.SET lda #1
>SYSCALL ArgV
>STYA ZPPtr1
>SYSCALL strlen
cpy #17
bne .9
ldy #0
stz DS1216E.DATA+7
jsr GetBCD
bcs .9
sta DS1216E.DATA+2
lda (ZPPtr1),y
cmp #'/'
bne .9
@ -139,16 +130,13 @@ CS.RUN.SET lda #1
bcs .9
sta DS1216E.DATA+6
stz DS1216E.DATA+7
jsr NSC.Write
lda #0 tell TSKMGR that all done ok, but
sec we do not want to stay in memory
rts
.9 lda #E.SYN
sec
rts
rts
*--------------------------------------
CS.DOEVENT sec
rts
@ -160,18 +148,13 @@ NSC.Init php
sei
lda $CFFF
pha
ldx #7
.1 ldy #8
.2 lda $C304
lsr
ror DS1216E.DETECT,x
dey
bne .2
dex
bpl .1
pla
@ -183,13 +166,10 @@ NSC.Init php
NSC.Select sta $C300
lda $C304 Reset DS1216E comparison register with READ A2=1
ldx #7 Read 8 bytes...
.3 lda DS1216E.PATTERN,x
phx
ldx #8 ....of 8 bits
.4 ldy #0
lsr
bcc .5
@ -199,7 +179,6 @@ NSC.Select sta $C300
pla
dex
bne .4
plx
dex
bpl .3
@ -209,20 +188,15 @@ NSC.Read php
sei
lda $CFFF
pha
jsr NSC.Select
ldx #7
.1 ldy #8
.2 lda $C304
lsr
ror DS1216E.DATA,x
dey
bne .2
dex
bpl .1
pla
@ -235,15 +209,12 @@ NSC.Write php
sei
lda $CFFF
pha
jsr NSC.Select
ldx #7
.3 lda DS1216E.DATA,x
phx
ldx #8 ....of 8 bits
.4 ldy #0
lsr
bcc .5
@ -253,7 +224,6 @@ NSC.Write php
pla
dex
bne .4
plx
dex
bpl .3
@ -265,32 +235,26 @@ NSC.Write php
*--------------------------------------
NSC.Dump ldx #1
ldy #1
lda DS1216E.DATA+3
bit #%00010000
beq .1
dex
.1 bit #%00100000
beq .2
dey
.2 txa
>PUSHA
tya
>PUSHA
>PUSHBI 2
>LDYA L.MSG.READ.OK1
>SYSCALL printf
>PUSHBI 2
>LDYA L.MSG.READ.OK2.24
bit DS1216E.DATA+4
bpl .3
>LDYA L.MSG.READ.OK2.12
.3 >SYSCALL printf
>PUSHBI 0
>LDYA L.MSG.READ.OK3
>SYSCALL printf
@ -305,11 +269,9 @@ NSC.Dump ldx #1
>SYSCALL PutChar
lda DS1216E.DATA
jsr PrintBCD
>PUSHBI 0
>LDYA L.MSG.READ.OK4
>SYSCALL printf
lda DS1216E.DATA+4
bpl .4
and #$1F
@ -358,14 +320,13 @@ GetBCD lda (ZPPtr1),y
bcs .9
and #$0f
ora TmpByte
.9 rts
.9 rts
*--------------------------------------
IsDigit cmp #'0'
bcc .9
cmp #'9'+1
and #$0f
rts cc if ok, cs if not
.9 sec
rts
*--------------------------------------

View File

@ -60,22 +60,18 @@ CS.INIT >LDYA L.LIBTCPIP
*--------------------------------------
CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ?
>STYA ZPIPCfgPtr
lda (ZPIPCfgPtr) Configured ?
bmi CS.RUN.IPOK
>LDYA L.MSG.IPKO
>SYSCALL puts
lda #E.SYN
sec
sec
rts
CS.RUN.IPOK
.1 >INC.G ArgIndex
>SYSCALL ArgV
bcs .8
>STYA ZPTmpPtr
lda (ZPTmpPtr)
cmp #'-'
bne .21
@ -88,13 +84,10 @@ CS.RUN.IPOK
bcc .9
cmp #'9'+1
bcs .9
and #$0F
>STA.G PingCount
bra .1
.21 jsr Init.Timeout
.2 >PUSHW L.SA.REMOTE.AD
>PUSHW ZPTmpPtr
>LIBCALL hLIBTCPIP,LIBTCPIP.HST.GETBYNAME
@ -107,47 +100,38 @@ CS.RUN.IPOK
>PUSHBI 2
>LDYA L.MSG.UNKNOWN
bra .99
.3 >LDA.G ArgIndex
>STA.G ArgHostName
jmp .1
.8 lda SA.REMOTE+S.SOCKADDR.ADDR
bne CS.RUN.ARGSOK
.9 >PUSHBI 0
>LDYA L.MSG.USAGE
.99 >SYSCALL printf
lda #E.SYN
sec
sec
rts
CS.RUN.ARGSOK >LDA.G ArgHostName
>SYSCALL ArgV
>PUSHYA
ldx #3
.1 lda SA.REMOTE+S.SOCKADDR.ADDR,x
>PUSHA
dex
bpl .1
>PUSHBI 6
>LDYA L.MSG.HOSTOK
>SYSCALL printf
CS.RUN.OPENSKT ldx #3
ldy #S.IPCFG.IP+3
.1 lda (ZPIPCfgPtr),y
sta SA.LOCAL+S.SOCKADDR.ADDR,x
dey
dex
bpl .1
ldy #Identifier
lda A2OSX.RANDOM16
sta SA.LOCAL+S.SOCKADDR.PORT
@ -158,38 +142,32 @@ CS.RUN.OPENSKT ldx #3
sta SA.LOCAL+S.SOCKADDR.PORT+1
sta SA.REMOTE+S.SOCKADDR.PORT+1
sta (pData),y
>PUSHBI S.IP.PROTOCOL.ICMP
lda #S.SOCKET.T.RAW
>LIBCALL hLIBTCPIP,LIBTCPIP.socket
bcs .9
>STA.G hSocket
pha
>PUSHW L.SA.LOCAL
pla
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind
bcs .9
>PUSHW L.SA.REMOTE
>LDA.G hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
bcc CS.RUN.SEND.ECHO
.9 >LDYA L.MSG.SKTKO
>SYSCALL puts
lda #E.SYN
sec
sec
rts
CS.RUN.SEND.ECHO
CS.RUN.SEND.ECHO
>LDA.G Identifier
sta ICMP.Request.ID+1
iny
lda (pData),y
sta ICMP.Request.ID
>LDA.G Sequence
sec
adc #0
@ -203,31 +181,25 @@ CS.RUN.SEND.ECHO
sta ICMP.Request.SQ
jsr Init.Timeout
>PUSHWI ICMP.RequestLen
>PUSHW L.ICMP.Request
>LDA.G hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.send
bcs CS.RUN.ERR
jsr Init.Timeout
CS.RUN.WAIT.REPLY
>SLEEP
ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL feof
bcs CS.RUN.ERR
tay
bne .1
>SYSCALL GetChar
bcs CS.RUN.ERR
cmp #3 Ctrl-C
beq CS.RUN.ERR CS
.1 >LDA.G hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Recv
@ -238,7 +210,6 @@ CS.RUN.WAIT.REPLY
jsr CS.Print.UNREACH
bcs CS.RUN.ERR
bra .7
.2 >STA.G hFrame
>SYSCALL GetMemPtr
>STYA ZPTmpPtr
@ -247,7 +218,6 @@ CS.RUN.WAIT.REPLY
>LDA.G hFrame
>SYSCALL FreeMem
>STZ.G hFrame
.7 >LDA.G PingCount
@ -257,29 +227,23 @@ CS.RUN.WAIT.REPLY
sta (pData),y
.8 jmp CS.RUN.SEND.ECHO
.9 sec
CS.RUN.ERR rts
*--------------------------------------
CS.DOEVENT lda (pEvent)
bpl .9 is it a TIMER event?
>LDA.G TimeOut
beq .9
dec
sta (pData),y
.9 sec do not discard TIMER event
rts
*--------------------------------------
CS.Print.UNREACH
ldx #3
.1 >PUSHB SA.REMOTE+S.SOCKADDR.ADDR,x
dex
bpl .1
>PUSHBI 4
>LDYA L.MSG.UNREACH
>SYSCALL printf
@ -289,41 +253,32 @@ CS.Print.REPLY lda #TIMEOUT.MAX
sec
ldy #TimeOut
sbc (pData),y
>STZ.G TimeOut.ms
>STA.G TimeOut.ms+1
tax
beq .3
.1 >LDA.G TimeOut.ms
clc
adc #100
>STA.G TimeOut.ms
bcc .2
>INC.G TimeOut.ms+1
.2 dex
bne .1
.3 >PUSHW.G TimeOut.ms
ldy #S.IP.TTL
>PUSHB (ZPTmpPtr),y
ldy #S.ICMP.SEQUENCE+1
>PUSHB (ZPTmpPtr),y
dey
>PUSHB (ZPTmpPtr),y
ldx #4
ldy #S.IP.SRC+3
.4 >PUSHB (ZPTmpPtr),y
dey
dex
bne .4
>PUSHBI 9
>LDYA L.MSG.REPLY
>SYSCALL printf
@ -331,17 +286,14 @@ CS.Print.REPLY lda #TIMEOUT.MAX
*--------------------------------------
CS.QUIT >LDA.G hFrame
beq .1
>SYSCALL FreeMem
.1 >LDA.G hSocket
beq .2
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
.2 lda hLIBTCPIP
beq .8
>SYSCALL UnloadLib
.8 clc

View File

@ -34,7 +34,7 @@ CS.START cld
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
@ -55,17 +55,12 @@ CS.INIT clc
CS.RUN lda #1
>SYSCALL ArgV
bcs .10
>SYSCALL atoi
bcs .90
tax
bne .90
tya
* ldx #0
* ldx #0
.11 cmp PS.Table.PID,x
beq .12
inx
@ -74,31 +69,25 @@ CS.RUN lda #1
lda #E.NSP
* sec
rts
.12 jsr CS.RUN.DUMP
bcs .9
lda #0
sec
rts
.10 >PUSHBI 0
>LDYA L.MSG0
>SYSCALL printf
ldx Index
.1 lda PS.Table.hPS,x
beq .7
jsr CS.RUN.DUMP
>SLEEP
.7 inc Index
ldx Index
cpx #K.PS.MAX
bne .1
.8 lda #0 tell Kernel that all done ok, but
sec we do not want to stay in memory
.9 rts
@ -109,20 +98,17 @@ CS.RUN lda #1
*--------------------------------------
CS.RUN.DUMP >SYSCALL GetMemPtr
>STYA ZPPSPtr
ldy #S.PS.hSID
lda (ZPPSPtr),y
tax
lda S.Table.hSession-1,x
>SYSCALL GetMemPtr
>STYA ZPSessionPtr
ldy #S.SESSION.UID
lda (ZPSessionPtr),y
>PUSHA
jsr CS.RUN.DecodeFlags
>PUSHEA.G PS.FLAGS
ldy #S.PS.S
@ -132,48 +118,37 @@ CS.RUN.DUMP >SYSCALL GetMemPtr
>PUSHA
lda L.STATUS,x
>PUSHA
ldx Index
lda PS.Table.Stats,x
>PUSHA CPU%
ldy #S.PS.CPID
lda (ZPPSPtr),y
>PUSHA
dey S.PS.PID
lda (ZPPSPtr),y
>PUSHA
dey S.PS.CPID
lda (ZPPSPtr),y
>PUSHA
lda PS.Table.hPS,x
>PUSHA
>PUSHBI 10
>LDYA L.MSG1
>SYSCALL printf
bcs .9
jmp CS.RUN.PrintArgs
.9 rts
*--------------------------------------
CS.RUN.DecodeFlags
lda (ZPPSPtr) Get flags
CS.RUN.DecodeFlag
s lda (ZPPSPtr) Get flags
ldy #PS.FLAGS+7
ldx #7
.2 lsr
pha
lda #'-'
bcc .3
lda MSG.FLAGS,x
.3 sta (pData),y
pla
dey
@ -185,7 +160,6 @@ CS.RUN.PrintArgs
ldy #S.PS.hARGV
lda (ZPPSPtr),y
beq .8 NO ARGV in PS0
>SYSCALL GetMemPtr
>STYA ZPArgV
@ -197,25 +171,19 @@ CS.RUN.PrintArgs
>LDYA L.MSG2
>SYSCALL printf
bcs .9
.2 inc ZPArgV
bne .3
inc ZPArgV+1
.3 lda (ZPArgV)
bne .2
inc ZPArgV
bne .1
inc ZPArgV+1
bra .1
.8 >PUSHBI 0
>LDYA L.MSG3
>SYSCALL printf
.9 rts
.9 rts
*--------------------------------------
CS.DOEVENT sec
rts

View File

@ -56,10 +56,8 @@ CS.INIT ldy #S.PS.ARGC
>LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ?
bcs .99
>STYA ZPIPCfgPtr
lda (ZPIPCfgPtr) Configured ?
bpl .99
ldx #3
ldy #S.IPCFG.IP+3
.1 lda (ZPIPCfgPtr),y
@ -67,10 +65,8 @@ CS.INIT ldy #S.PS.ARGC
dey
dex
bpl .1
clc
rts
.99 >LDYA L.MSG.USAGE
>SYSCALL puts
lda #E.SYN
@ -78,7 +74,6 @@ CS.INIT ldy #S.PS.ARGC
rts
*--------------------------------------
CS.RUN jsr Init.Timeout
.1 >PUSHW L.Socket.Dst.Addr
lda #1
>SYSCALL ArgV
@ -89,47 +84,37 @@ CS.RUN jsr Init.Timeout
>SLEEP
jsr Wait.Timeout
bcc .1
lda #1
>SYSCALL ArgV
>PUSHYA
>PUSHBI 2
>LDYA L.MSG.UNKNOWN
>SYSCALL printf
sec
rts
.2 >PUSHW L.Socket
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.New
bcs .91
>STA.G hSocket
ldx #3
.21 lda A2osX.TIMER16,x
.21 lda A2osX.TIMER16,x
sta RPC.Request,x
dex
bpl .21
.3 >PUSHWI RPC.Request.End-RPC.Request
>PUSHW L.RPC.Request
>LDA.G hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Send
bcc .4
>SLEEP
jsr Wait.Timeout
bcc .3
.91 bra .99
.4 jsr Init.Timeout
.5 >LDA.G hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Rcvd
bcc .6
>SLEEP
jsr Wait.Timeout
bcc .5
@ -139,17 +124,14 @@ CS.RUN jsr Init.Timeout
sta (pData),y
>SYSCALL GetMemPtr
>STYA ZPFrameBase
jsr DumpRPCFrame
ldy #hFrame
lda (pData),y
>SYSCALL FreeMem
lda #0
sec
rts
.99 lda #1
>SYSCALL ArgV
>PUSHYA
@ -173,13 +155,10 @@ CS.DOEVENT lda (pEvent)
CS.QUIT ldy #hSocket
lda (pData),y
beq .1
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Close
.1 lda hLIBTCPIP
beq .8
>SYSCALL UnloadLib
.8 clc
rts
*--------------------------------------
@ -205,11 +184,9 @@ DumpRPCFrame lda #S.UDP+24
>LDYA L.MSG.DUMP0
>SYSCALL puts
.1 ldy #3
lda (ZPFrameBase),y Value follows?
beq .9
ldy #18 port
>PUSHB (ZPFrameBase),y
iny
@ -220,7 +197,6 @@ DumpRPCFrame lda #S.UDP+24
ldy #11 version
>PUSHB (ZPFrameBase),y
ldy #4 program
.7 >PUSHB (ZPFrameBase),y
iny
@ -230,7 +206,6 @@ DumpRPCFrame lda #S.UDP+24
>PUSHBI 8
>LDYA L.MSG.DUMP1
>SYSCALL printf
lda #20
clc
adc ZPFrameBase
@ -238,7 +213,6 @@ DumpRPCFrame lda #S.UDP+24
bcc .1
inc ZPFrameBase+1
bra .1
.9 rts
*--------------------------------------
CS.END

View File

@ -8,8 +8,7 @@ CL.Init >LDYAI 256
>STYA ZPCLBuf
txa
>STA.G CL.hCLBuf
.9 rts
.9 rts
*--------------------------------------
CL.Quit >LDA.G CL.hCLBuf
beq .9
@ -21,7 +20,6 @@ CL.PrintPrompt >LDYA L.PS1
>SYSCALL ExpandStr
bcs .9
phx
pha
>PUSHBI 0
@ -29,7 +27,6 @@ CL.PrintPrompt >LDYA L.PS1
>SYSCALL printf
pla
>SYSCALL FreeMem
.1 >PUSHBI 0
>LDYA L.MSG.PROMPT
>SYSCALL printf
@ -78,10 +75,8 @@ CL.CHARIN.CTRL cpx #C.CR
cpx #C.EOF
beq .18
.10 cpx #C.ESC
bne .11
lda #$ff
>STA.G bEscMode
clc
@ -91,16 +86,13 @@ CL.CHARIN.CTRL cpx #C.CR
bne .12
jmp CL.CLR
.12 cpx #26 Ctrl-Z
bne .13
jmp CL.SUPPR
.18 lda #$ff
>STA.G CL.bReady
.13 clc
.13 clc
rts
*--------------------------------------
CL.Insert >LDA.G CL.Len
@ -110,10 +102,9 @@ CL.Insert >LDA.G CL.Len
>STA.G CL.Len
pha
.1 ply
dey
lda (ZPCLBuf),y Move from Ptr To end of buffer forward...
lda (ZPCLBuf),y Move from Ptr To end of buffer forward...
iny
sta (ZPCLBuf),y
dey
@ -121,30 +112,23 @@ CL.Insert >LDA.G CL.Len
tya
>CMP.G CL.Ptr
bne .1
ply Y=CL.Ptr
ply Y=CL.Ptr
* >LDA.G CL.Ptr
txa
sta (ZPCLBuf),y
>INC.G CL.Ptr
>LDA.G bREAD.S
bmi .7
txa
txa
>SYSCALL PutChar
jsr CL.PrintEOL
.7 >LDA.G READ.N READ N = 1, don't wait for CR
dec
bne .8
lda #$ff
>STA.G CL.bReady
.8 clc
rts
*--------------------------------------
@ -154,10 +138,8 @@ CL.CLR lda (ZPCLBuf)
.1 >LDA.G CL.Ptr
>CMP.G CL.Len
beq .2
inc
>STA.G CL.Ptr
lda #C.FS
>SYSCALL PutChar
bra .1
@ -182,10 +164,8 @@ CL.RESET.1 >STA.G CL.bReady
*--------------------------------------
CL.BS >LDA.G CL.Ptr
beq .9
dec
sta (pData),y
lda #C.BS
>SYSCALL PutChar
.9 rts
@ -193,10 +173,8 @@ CL.BS >LDA.G CL.Ptr
CL.NAK >LDA.G CL.Ptr
>CMP.G CL.Len
beq .9
inc
>STA.G CL.Ptr
lda #C.FS
>SYSCALL PutChar
.9 rts
@ -205,7 +183,6 @@ CL.NAK >LDA.G CL.Ptr
*--------------------------------------
CL.SUPPR >LDA.G CL.Len
beq CL.PrintEOL.8
>LDA.G CL.Ptr
>CMP.G CL.Len
beq CL.PrintEOL.8
@ -216,7 +193,6 @@ CL.SUPPR >LDA.G CL.Len
*--------------------------------------
CL.DEL >LDA.G CL.Len
beq CL.PrintEOL.8
>LDA.G CL.Ptr
beq CL.PrintEOL.8
@ -224,9 +200,7 @@ CL.DEL >LDA.G CL.Len
>SYSCALL PutChar
>DEC.G CL.Ptr
CL.DEL.1 pha
.1 ply
iny
lda (ZPCLBuf),y
@ -238,16 +212,12 @@ CL.DEL.1 pha
>CMP.G CL.Len
bne .1
pla
>DEC.G CL.Len
*--------------------------------------
CL.PrintEOL >LDA.G CL.Ptr
.1 >CMP.G CL.Len
beq .2
pha
tay
lda (ZPCLBuf),y
@ -258,24 +228,19 @@ CL.PrintEOL >LDA.G CL.Ptr
.2 lda #' '
>SYSCALL PutChar
>LDA.G CL.Ptr
.3 >CMP.G CL.Len
beq .4
pha
lda #C.BS
>SYSCALL PutChar
pla
inc
bra .3
.4 lda #C.BS
>SYSCALL PutChar
CL.PrintEOL.8 clc
CL.PrintEOL.8 clc
rts
*--------------------------------------
CL.PrintCLBuf >LDYA ZPCLBuf

View File

@ -4,7 +4,6 @@ NEW
*--------------------------------------
CMD.. lda (ZPArgVBufPtr)
beq .9
>LDYA ZPArgVBufPtr
jsr IO.Load
bcs CMD.SHIFTA.RTS
@ -20,7 +19,6 @@ CMD.. lda (ZPArgVBufPtr)
*--------------------------------------
CMD.NOHUP lda #S.PS.F.NOHUP
tsb CORE.PSFlags
>LDYA ZPArgVBuf
jmp CORE.ExecExtCmd
*--------------------------------------
@ -28,51 +26,40 @@ CMD.SHIFT lda #1
CMD.SHIFTA >SYSCALL ArgV
bcs .8
jsr RemoveStrFromArgV
.7 ldy #S.PS.ARGC
lda (pPS),y
dec
sta (pPS),y
.8 clc
CMD.SHIFTA.RTS rts
*--------------------------------------
CMD.PUSHD >LDA.G PUSHD.STACK
cmp #PUSHD.STACK+PUSHD.STACK.MAX
beq CMD.POPD.CSYN
ldy #S.PS.hCWD
lda (pPs),y
>SYSCALL GetMemPtr
>SYSCALL strdup
bcs CMD.POPD.CSYN
>INC.G PUSHD.STACK
tay
txa
sta (pData),y
lda (ZPArgVBufPtr)
bne CMD.CD.0
.8 clc
.9 rts
*--------------------------------------
CMD.POPD >LDA.G PUSHD.STACK
cmp #PUSHD.STACK
beq CMD.POPD.CSYN
tay
lda (pData),y
jsr CMD.SetCWDA
>DEC.G PUSHD.STACK
clc
CMD.POPD.RTS
rts
CMD.POPD.RTS rts
CMD.POPD.CSYN jmp CMD.E.CSYN
*--------------------------------------
CMD.PWD ldy #S.PS.hCWD
@ -93,13 +80,10 @@ CMD.CD.0 >LDYA ZPArgVBufPtr
bra CMD.CD.YA
CMD.CD.HOME >LDYA L.HOME
CMD.CD.YA >SYSCALL realpath
bcs CMD.POPD.RTS
>STYA ZPPtr1
stx ZPTmpW Save hMem
ldy #1
lda (ZPPtr1),y
bne .12
@ -115,9 +99,7 @@ CMD.CD.YA >SYSCALL realpath
.10 >LDA.G StatBuf+S.STAT.P.TYPE
cmp #S.FI.T.DIR
beq .11
lda #MLI.E.INVPATH
.19 pha
lda ZPTmpW
>SYSCALL freemem
@ -126,7 +108,6 @@ CMD.CD.YA >SYSCALL realpath
rts
.11 jsr GetPtr1LenY
dey
lda (ZPPtr1),y
cmp #'/'
@ -143,14 +124,12 @@ CMD.CD.YA >SYSCALL realpath
>STYA ZPPtr2
jsr StrCpyPtr1Ptr2
lda #'/'
sta (ZPPtr2),y
iny
lda #0
sta (ZPPtr2),y
phx
lda ZPTmpW
>SYSCALL freemem
@ -160,9 +139,7 @@ CMD.SetCWDA pha
ldy #S.PS.hCWD
lda (pPs),y
>SYSCALL FreeMem
pla
ldy #S.PS.hCWD
sta (pPs),y
lda #0
@ -195,7 +172,6 @@ CMD.SET lda (ZPArgVBufPtr)
lda #0
adc ZPPTR1+1
sta ZPPTR2+1
>PUSHW ZPPTR2 Push value
>PUSHW ZPPTR1 Push name
jsr CMD.SET.PRINT
@ -203,11 +179,9 @@ CMD.SET lda (ZPArgVBufPtr)
bcs .9
ldy #$ff
.3 iny
lda (ZPPTR2),y
bne .3
tya
sec
adc ZPPTR2
@ -216,7 +190,6 @@ CMD.SET lda (ZPArgVBufPtr)
adc ZPPTR2+1
sta ZPPTR1+1
bra .1
.8 clc
.9 rts
*--------------------------------------
@ -225,31 +198,22 @@ CMD.SET lda (ZPArgVBufPtr)
CMD.SET.1
.1 jsr CMD.IsSwitch
bcs .6
cmp #'C'
bne .2
ldy #bSET.C
bra .5
.2 cmp #'X'
bne .3
ldy #bSET.X
bra .5
.3 cmp #'E'
bne .4
ldy #bSET.E
bra .5
.4 cmp #'F'
bne .99
jsr CORE.FUNCRESET
bra .50
.5 lda (pData),y
eor #$ff
sta (pData),y
@ -257,29 +221,22 @@ CMD.SET.1
bne .1
clc
rts
.6 >LDYA ZPArgVBufPtr
>STYA ZPVarNamePtr
jsr CORE.ArgV.Next
beq CMD.SET.GET
cmp #'='
bne .99
ldy #1
lda (ZPArgVBufPtr),y
bne .99
jsr CORE.ArgV.Next
beq CMD.SET.UNSET
cmp #'`'
beq CMD.SET.EXEC
jsr EXP.GET
bcs .9
>PUSHYA
>LDYA ZPVarNamePtr
>SYSCALL SetEnv
@ -287,9 +244,7 @@ CMD.SET.1
.8 clc
.9 rts
.99 jmp CMD.E.CSYN
CMD.SET.UNSET >LDYA ZPVarNamePtr
>SYSCALL UnsetEnv
rts
@ -299,7 +254,6 @@ CMD.SET.GET >LDYA ZPVarNamePtr
bcc .1
clc
rts
.1 >PUSHYA push value
>LDYA ZPVarNamePtr
>PUSHYA push name
@ -321,13 +275,11 @@ CMD.SET.EXEC jsr CORE.ArgV.NextChar skip "`"
jsr IO.Pipe.In
bcs .9
lda #255
>STA.G READ.N
>STA.G bREAD.S
jmp CMD.READ.VAR
.9 rts
*--------------------------------------
CMD.DATE sec
@ -338,7 +290,6 @@ CMD.TIME clc
>SYSCALL Time
>PUSHEA.G TimeBuf
plp
bcc .1
>PUSHW L.FMT.DATE
@ -347,7 +298,6 @@ CMD.TIME clc
.2 >LEA.G StatBuf
>SYSCALL StrFTime
>LEA.G StatBuf
>SYSCALL puts
rts
@ -360,7 +310,6 @@ CMD.ECHO stz ZPPtr1 echo -N
.1 jsr CMD.IsSwitch
bcs .2
cmp #'N'
bne CMD.ECHO.CSYN
@ -368,23 +317,17 @@ CMD.ECHO stz ZPPtr1 echo -N
eor ZPPtr1
sta ZPPtr1
bra .4
.2 lda ZPPtr1+1
beq .3
lda #C.SPACE
>SYSCALL putchar
.3 >PUSHBI 0
>LDYA ZPArgVBufPtr
>SYSCALL printf
bcs .9
inc ZPPtr1+1
.4 jsr CORE.ArgV.Next
bne .1
.7 bit ZPPtr1
bmi .8
@ -407,7 +350,6 @@ CMD.GETKEY lda (ZPArgVBufPtr)
lda (pPS),y
>SYSCALL feof
bcs .9
tay
beq .1
@ -417,15 +359,12 @@ CMD.GETKEY lda (ZPArgVBufPtr)
lda #0
sta (pData),y
bra .8
.1 >SYSCALL getchar
bcs .9
cmp #'['
bne .4
>SYSCALL getchar
bcs .9
ldx #EscChars.Cnt-1
.2 cmp EscChars,x
@ -433,26 +372,21 @@ CMD.GETKEY lda (ZPArgVBufPtr)
dex
bpl .2
bra .10
.3 lda EscChars.Remap,x
.4 >PUSHA
>PUSHBI 1
>PUSHW L.FMT.GETKEY
>LEA.G M32.BUF
>SYSCALL sprintf
bcs .9
.8 >PUSHEA.G M32.BUF
>LDYA ZPArgVBufPtr
>SYSCALL SetEnv
.9
.9
CMD.GETKEY.RTS rts
*--------------------------------------
CMD.READ lda (ZPArgVBufPtr)
beq .9
stz ZPVarNamePtr+1
>STZ.G bREAD.S
dec
@ -462,15 +396,11 @@ CMD.READ lda (ZPArgVBufPtr)
bcs .4
cmp #'S'
bne .2
lda #$ff
>STA.G bREAD.S
bra .5
.2 cmp #'P'
bne .3
jsr CORE.ArgV.Next
beq .9
@ -481,13 +411,10 @@ CMD.READ lda (ZPArgVBufPtr)
bra .5
.9 jmp CMD.E.CSYN
.3 cmp #'N'
bne .9
jsr CORE.ArgV.Next
beq .9
>LDYA ZPArgVBufPtr
>SYSCALL AToL
bcs CMD.GETKEY.RTS
@ -498,20 +425,15 @@ CMD.READ lda (ZPArgVBufPtr)
inc pStack
inc pStack
inc pStack
bra .5
.4 >LDYA ZPArgVBufPtr
>STYA ZPVarNamePtr
.5 jsr CORE.ArgV.Next
bne .1
lda ZPVarNamePtr+1
beq .9
CMD.READ.VAR jsr CL.Reset
.1 >SYSCALL GetChar
bcs CMD.READ.VAR.9
@ -523,11 +445,10 @@ CMD.READ.VAR jsr CL.Reset
lda (ZPCLBuf)
bne CMD.READ.VAR.SET
CMD.READ.VAR.UNSET
CMD.READ.VAR.UNSET
>LDYA ZPVarNamePtr
>SYSCALL UnSetEnv
rts
CMD.READ.VAR.SET
>PUSHW ZPCLBuf
>LDYA ZPVarNamePtr
@ -565,44 +486,36 @@ CMD.REN lda (ZPArgVBufPtr)
jsr CORE.ArgV.Next
lda (ZPArgVBufPtr)
beq .90
>LDYA ZPArgVBufPtr
>SYSCALL Rename
rts
.90 >PULLYA
.9
.90 >PULLYA
.9
CMD.REN.CSYN jmp CMD.E.CSYN
*--------------------------------------
CMD.RD lda (ZPArgVBufPtr)
beq CMD.REN.CSYN
>PUSHEA.G StatBuf
>LDYA ZPArgVBufPtr
>SYSCALL STAT
bcs .99
>LDA.G StatBuf+S.STAT.P.TYPE
cmp #S.FI.T.DIR
bne CMD.REN.CSYN
>LDYA ZPArgVBufPtr
>SYSCALL Remove
.99 rts
*--------------------------------------
CMD.FUNCTION lda (ZPArgVBufPtr)
beq .9
jsr CORE.StkGetCtx
bcc .9 No context allowed
>LDA.G hFuncList
bne .1
>SYSCALL SListNew
bcs .99
>STA.G hFuncList
.1 >PUSHW ZPArgVBufPtr
>LDA.G hFuncList
@ -613,59 +526,46 @@ CMD.FUNCTION lda (ZPArgVBufPtr)
jsr CORE.ArgV.Next nothing after function name
beq .10
cmp #'{'
bne .9
ldy #1
lda (ZPArgVBufPtr),y
beq .11
.9 jmp CMD.E.CSYN
.99 rts
*--------------------------------------
*--------------------------------------
.10 jsr CORE.GetCharNB
bcs .9
cmp #'{'
bne .9
jsr CORE.GetNextCharNB
bcs .9
.11 stz M32.ACC '{' counter
>LDYA ZPInputBufPtr
>STYA ZPPtr1
ldy #0
ldx #0
lda (ZPInputBufPtr)
beq .6
.12 cmp #'{'
bne .13
inc M32.ACC
bra .14
.13 cmp #'}'
bne .14
dec M32.ACC
bmi .7
.14 iny
bne .15
inx
.15 jsr CORE.GetNextChar
bne .12
.6 lda M32.ACC
bpl .9
.7 jsr CORE.GetNextChar skip ending '}'
txa
@ -702,7 +602,6 @@ CMD.CALL >LDA.G hFuncList
>LDYA ZPArgVBufPtr FUNC PARAM1 PARAM2...
jsr CORE.Load.YAX Exec FUNC
bcs CMD.CALL.RTS
lda #$C0+C.CALL
jmp CORE.StkPush
*--------------------------------------
@ -729,13 +628,10 @@ CMD.EXIT lda (ZPArgVBufPtr)
cmp #$C0+C.. in CALL . CL context ?
beq CMD.EXIT.FILE
cmp #$C0+C.CALL
beq CMD.EXIT.FILE
cmp #$C0+C.CLEXEC
beq CMD.EXIT.SH
jsr CMD.EXIT.POP
bcc .2
@ -754,29 +650,23 @@ CMD.EXIT.SH jsr CMD.EXIT.FILE
*--------------------------------------
CMD.EXIT.FILE jsr CORE.StkPull
>SYSCALL freemem Code buffer
ldy #S.PS.hARGV
lda (pPS),y
>SYSCALL freemem ArgV buffer
jsr CORE.StkPull
ldy #S.PS.hARGV
sta (pPS),y
jsr CORE.StkPull
ldy #S.PS.ARGC
sta (pPS),y
jsr CORE.StkPullInputBufPtr
jsr CORE.StkPull
sta ZPInputBuf+1
jsr CORE.StkPull
sta ZPInputBuf
lda M32.ACC
CMD.EXIT.CLCRTS clc
CMD.EXIT.RTS rts
*--------------------------------------
@ -790,9 +680,7 @@ CMD.EXIT.POP and #$3F
cmp #C.SWITCH SWITCH : hValue
beq .2
ldx #1
cmp #C.CASE CASE : C.CASE + hValue
beq .1
@ -804,13 +692,11 @@ CMD.EXIT.POP and #$3F
.2 jsr CORE.StkPull
>SYSCALL freemem
rts
.9 lda #E.STACKERROR
sec
rts
*--------------------------------------
CMD.EXIT.POPX lda (pData)
.1 dec
dex
bne .1
@ -822,15 +708,12 @@ CMD.EXIT.POPX lda (pData)
*--------------------------------------
CMD.BREAK jsr CORE.StkGetCtx Get context in CORE.TestResult
bcs .9
tax
and #$3F
cmp #C.CASE
bne .9
txa
bpl .8
jsr CORE.StkPull remove C.CASE
jsr CORE.StkGet
and #$7F
@ -849,10 +732,8 @@ CMD.SWITCH jsr CORE.StkGetCtx
lda #2
jsr CORE.StkCheck
bcs .9
jsr EXP.GET
bcs .9
>SYSCALL strdup
bcs .9
@ -861,42 +742,30 @@ CMD.SWITCH jsr CORE.StkGetCtx
lda CORE.TestResult
beq .1
ora #$80
.1 ora #C.SWITCH
jmp CORE.StkPush
.9 rts
*--------------------------------------
CMD.CASE jsr CORE.StkGetCtx Get context in CORE.TestResult
bcs .9
tax
and #$3F
cmp #C.SWITCH
beq .1
cmp #C.CASE
bne .9
txa previous case was true ?
bpl .10
jsr EXP.GET skip expression
bcs .9
rts keep existing context
.10 jsr CORE.StkPull remove previous C.CASE
bra CMD.CASE
.1 jsr EXP.GET
bcs .9
>PUSHYA
lda (pDATA)
tay
dey get hVALUE
@ -909,8 +778,7 @@ CMD.CASE jsr CORE.StkGetCtx Get context in CORE.TestResult
ora CORE.TestResult
ora #C.CASE
jmp CORE.StkPush
.9
.9
CMD.E.CSYN lda #E.CSYN
sec
rts
@ -921,10 +789,8 @@ CMD.DEFAULT jsr CORE.StkGetCtx Get context in CORE.TestResult
and #$3F
cmp #C.SWITCH
beq .1
cmp #C.CASE
bne CMD.E.CSYN
jsr CORE.StkPull remove C.CASE
.1 jsr CORE.StkGet
@ -938,15 +804,11 @@ CMD.END jsr CORE.StkGetCtx Get context in CORE.TestResult
and #$3F
cmp #C.SWITCH
beq .3
cmp #C.CASE
beq .2
cmp #C.DEFAULT
bne CMD.E.CSYN
.2 jsr CORE.StkPull remove C.CASE or C.DEFAULT
.3 jsr CORE.StkPull remove C.SWITCH
jsr CORE.StkPull get hVALUE
>SYSCALL freemem
@ -962,7 +824,6 @@ CMD.FOR jsr CORE.StkGetCtx
jsr CORE.ArgV.Next
beq CMD.E.CSYN
>PUSHW ZPArgVBufPtr
>LDYA L.IN
>SYSCALL StrCaseCmp
@ -974,32 +835,26 @@ CMD.FOR jsr CORE.StkGetCtx
lda #8 Make sure 8 bytes free on stack
jsr CORE.StkCheck
bcs .9
>LDYA ZPInputBufPtr
jsr CORE.StkPushYA Push CmdPtr AFTER FOR
lda (ZPArgVBufPtr)
cmp #'('
beq CMD.FOR.FILE
cmp #'`'
bne CMD.FOR.LIST
jmp CMD.FOR.EXEC
.9 rts
.9 rts
*--------------------------------------
CMD.FOR.LIST >LDYA ZPArgVBufPtr
>SYSCALL strdup
bcs FOR.FILE.9
jsr CORE.StkPushYAX Push listPtr,hList
jsr CORE.PushVarName Push hVARNAME
bcs FOR.FILE.9
lda #C.FOR.LIST
jsr CORE.StkPush
lda #C.FOR
jsr CORE.StkPush
@ -1013,7 +868,6 @@ CMD.FOR.FILE jsr CORE.ArgV.NextChar skip "("
ldx #O.RDONLY+O.TEXT
jsr IO.FOpenYAX
bcc CMD.FOR.PUSH
FOR.FILE.9 rts
*--------------------------------------
CMD.FOR.EXEC jsr CORE.ArgV.NextChar skip "`"
@ -1025,26 +879,21 @@ CMD.FOR.EXEC jsr CORE.ArgV.NextChar skip "`"
>LDYA ZPArgVBufPtr
>SYSCALL execl
bcs FOR.FILE.9
>LDA.G IO.hOut
ldy #S.PS.hStdOut
sta (pPS),y
>STZ.G IO.hOut
>LEA.G IO.FIFO
ldx #O.RDONLY+O.TEXT
jsr IO.FOpenYAX
jsr IO.FOpenYAX
bcs FOR.FILE.9
CMD.FOR.PUSH jsr CORE.StkPush push hPIPE
jsr CORE.PushVarName Push hVARNAME
bcs FOR.FILE.9
lda #C.FOR.FILEEXEC
jsr CORE.StkPush
lda #C.FOR
jsr CORE.StkPush
@ -1059,7 +908,7 @@ CMD.FOR.LOOP ora CORE.TestResult
pla
sta (pData),y
* clc
* clc
rts
*--------------------------------------
CMD.NEXT jsr CORE.StkGet Y = StkPtr
@ -1068,14 +917,12 @@ CMD.NEXT jsr CORE.StkGet Y = StkPtr
and #$3F
cmp #C.FOR
bne .9
dey
lda (pData),y
iny
tax
beq CMD.NEXT.LIST
jmp CMD.NEXT.FILEEXEC
.9 lda #E.NOFOR
sec
rts
@ -1088,13 +935,10 @@ CMD.NEXT jsr CORE.StkGet Y = StkPtr
* stack FOR TOKEN
*--------------------------------------
CMD.NEXT.LIST lda (pData),y Y = StkPtr
bpl .1
jsr CMD.NEXT.LIST.TOKEN
bcs .9
bpl .1
lda (pData)
sec
sbc #6
@ -1105,18 +949,15 @@ CMD.NEXT.LIST lda (pData),y Y = StkPtr
dey
lda (pData),y
sta ZPInputBufPtr+1
clc
rts
.1 lda (pData)
tay
sec
sbc #8
sta (pData)
dey
dey
dey
lda (pData),y hVARNAME
pha
dey
@ -1124,7 +965,6 @@ CMD.NEXT.LIST lda (pData),y Y = StkPtr
>SYSCALL freemem
pla
>SYSCALL freemem
* clc
.9 rts
*--------------------------------------
@ -1141,42 +981,32 @@ CMD.NEXT.LIST.TOKEN
ply
dey skip hLIST
dey
lda (pData),y
sta ZPPtr1
dey
lda (pData),y
sta ZPPtr1+1
ldy #0
.10 jsr GetPtr1Next
beq .3
cmp #C.SPACE
beq .10
sta (ZPCLBuf),y
iny
.1 jsr GetPtr1Next
beq .3
cmp #C.SPACE
beq .3
sta (ZPCLBuf),y
iny
bra .1
.3 lda #0
.3 lda #0
sta (ZPCLBuf),y
tya
beq .8
jsr CMD.READ.VAR.SET
bcs .9
@ -1192,10 +1022,8 @@ CMD.NEXT.LIST.TOKEN
lda #$80
clc
rts
.8 jsr CMD.READ.VAR.UNSET
bcs .9
lda #0
* clc
.9 rts
@ -1213,7 +1041,6 @@ CMD.NEXT.FILEEXEC
jsr CMD.NEXT.LINE
bcs .9
bpl .1 end of file/pipe
lda (pData)
sec
sbc #4
@ -1224,18 +1051,15 @@ CMD.NEXT.FILEEXEC
dey
lda (pData),y
sta ZPInputBufPtr+1
clc
rts
.1 lda (pData)
tay
sec
sbc #6
sta (pData)
dey
dey
dey
lda (pData),y hVARNAME
pha
dey
@ -1263,20 +1087,17 @@ CMD.NEXT.LINE lda (pData)
lda (pData),y hFILE/hPIPE
>SYSCALL fgets
bcs .8
jsr CMD.READ.VAR.SET
bcs .9
lda #$80
* clc
rts
.8 jsr CMD.READ.VAR.UNSET
bcs .9
lda #0
* clc
.9
.9
CMD.NEXT.LINE.RTS
rts
*--------------------------------------
@ -1292,14 +1113,11 @@ CMD.IF jsr CORE.StkGetCtx
.3 lda CORE.IntCmd
cmp #C.WHILE
bne .8
lda #3
jsr CORE.StkCheck
bcs CMD.NEXT.LINE.RTS
>LDYA ZPInputCmdPtr
jsr CORE.StkPushYA Push BEFORE WHILE/IF
.8 lda CORE.TestResult
ora CORE.IntCmd
jmp CORE.StkPush
@ -1311,23 +1129,20 @@ CMD.LOOP jsr CORE.StkPull
and #$3F
cmp #C.WHILE
bne .9
txa
bmi .8
lda (pData)
dec
dec Discard loop Ptr
sta (pData)
clc
clc
rts
.8 jmp CORE.StkPullInputBufPtr
.9 lda #E.NOWHILE
sec
rts
rts
*--------------------------------------
CMD.ELSE jsr CORE.StkGet
bcs .9
@ -1342,24 +1157,19 @@ CMD.ELSE jsr CORE.StkGet
txa
eor #$80 toggle and store at stack ptr
sta (pData),y
.8 clc
rts
.9 lda #E.NOIF
sec
rts
*--------------------------------------
CMD.FI jsr CORE.StkPull
bcs .9
and #$3F
cmp #C.IF
bne .9
clc
rts
.9 lda #E.NOIF
sec
rts
@ -1367,25 +1177,20 @@ CMD.FI jsr CORE.StkPull
CMD.IsSwitch lda (ZPArgVBufPtr)
cmp #'-'
bne .9
ldy #1
lda (ZPArgVBufPtr),y
beq .9
cmp #'0' is -0 ... -9 ?
bcc .9
cmp #'9'+1
bcc .9
.1 tax
iny
lda (ZPArgVBufPtr),y
bne .9
txa
jmp ToUpperCase
.9 sec
.9 sec
rts
*--------------------------------------
MAN

View File

@ -8,8 +8,7 @@ CORE.Init >LDYAI 256
>STYA ZPArgVBuf
txa
>STA.G CORE.hArgVBuf
.9 rts
.9 rts
*--------------------------------------
CORE.Quit >LDA.G CORE.hArgVBuf
beq CORE.FUNCRESET
@ -34,13 +33,10 @@ CORE.Load.YAX stx M32.ACC X = Code to Execute
lda #8
jsr CORE.StkCheck
bcs .9
>LDYA ZPInputBuf
jsr CORE.StkPushYA
>LDYA ZPInputBufPtr
jsr CORE.StkPushYA
ldy #S.PS.ARGC
lda (pPS),y
jsr CORE.StkPush old ARGC
@ -52,14 +48,11 @@ CORE.Load.YAX stx M32.ACC X = Code to Execute
ldy #S.PS.ARGC
lda M32.ACC+2 new ARGC
sta (pPS),y
iny #S.PS.hARGV
lda M32.ACC+1
sta (pPS),y new hARGV
lda M32.ACC new code
jsr CORE.StkPush
* lda M32.ACC
>SYSCALL GetMemPtr
>STYA ZPInputBuf
@ -94,122 +87,92 @@ CORE.Load.YAX stx M32.ACC X = Code to Execute
*--------------------------------------
CORE.Run.EOF jsr CORE.StkPull
bcs *
cmp #$C0+C.. check CALL . CL context
beq .1
cmp #$C0+C.CALL
beq .1
cmp #$C0+C.CLEXEC
bne .9
.1 jsr CMD.EXIT.FILE
jsr IO.Reset
lda #0
sec
rts Ending 0, CS,A=0
.9 lda #E.UNEXPEOF
sec
rts
rts
*--------------------------------------
CORE.Run.SYN lda #E.SYN
sec
rts
CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping
>STYA ZPInputCmdPtr
>LDYA ZPArgVBuf
>STYA ZPArgVBufPtr
lda #0 Reset ArgV Buffer
sta (ZPArgVBuf)
lda #S.PS.F.HOLD
sta CORE.PSFlags
lda #$ff
sta CORE.IntCmd assume external
jsr CORE.GetCharNB
bcs CORE.Run.EOF
cmp #'|'
bne .21
jsr IO.Pipe.In
bcs .9
jsr CORE.GetNextCharNB Skip |
bcs CORE.Run.SYN
bra .3
.21 pha
jsr IO.Reset
pla
.3 cmp #C.CR empty line ?
bne .33
jsr CORE.GetNextChar skip CR...
bra .8
.33 cmp #'#' commented line?
bne .4
.12 jsr CORE.SkipLine
.8 jsr IO.Reset
lda #0
clc
.9 rts EOL, CS,A=0
.4 >LDYA L.CMD internal command ?
jsr CORE.LookupInputBuf
bcc .41
.40 jsr CORE.ArgV.Add external cmd, go check context
bra .42
.41 jsr CORE.SkipCharsA
stx CORE.IntCmd
.42 jsr CORE.StkGet
bcs CORE.Run.7 no particular context, exec...
tax
lda CORE.IntCmd
bmi .45
and #$3F
cmp #C.SWITCH SWITCH....FI ?
bcs CORE.Run.7
.45 txa
bpl .43 context is FALSE, skip line
asl
asl
bmi CORE.Run.7 parent context is true, exec
.43 jsr CORE.GetCharNB
bcs .44 EOF
cmp #C.CR
beq .44
cmp #';' TODO ";"
beq .44
jsr CORE.GetNextChar
bra .43
.44 jsr CORE.GetNextCharNB Skip EoL char
clc
.99 rts
@ -223,18 +186,13 @@ CORE.Run.5 >LDYA L.CORE.IO
jsr CORE.IO.JMP
bcs CORE.Run.RTS
bra CORE.Run.7
CORE.Run.6 jsr CORE.ArgV.Add
CORE.Run.7 jsr CORE.GetCharNB
bcs CORE.ExecCmd.1 Nothing to skip
jsr CORE.IsEndCmd
bcs CORE.Run.5
cmp #'|'
bne CORE.ExecCmd skip CR, ;
jsr IO.Pipe.Out
bcs CORE.Run.RTS
@ -242,10 +200,8 @@ CORE.Run.7 jsr CORE.GetCharNB
and #$ff^S.PS.F.HOLD Run in the background...
ora #S.PS.F.CLOSEONX ...and close PIPE on exit
sta CORE.PSFlags
bra CORE.ExecCmd.1 Do not skip |
CORE.Run.RTS rts
CORE.Run.RTS rts
*--------------------------------------
* Input : ZPArgVBuf
*--------------------------------------
@ -253,44 +209,35 @@ CORE.ExecCmd jsr CORE.GetNextCharNB Skip EoL char
CORE.ExecCmd.1 lda #0
sta (ZPArgVBufPtr)
>LDYA ZPArgVBuf
>STYA ZPArgVBufPtr
lda CORE.IntCmd
bmi CORE.ExecExtCmd
asl
tax
jmp (J.CMD,x)
CORE.ExecExtCmd >PUSHB CORE.PSFlags
>LDYA ZPArgVBuf
>SYSCALL execv
bcs .9
tax CPID
lda CORE.PSFlags
and #S.PS.F.HOLD
bne .4
txa
>PUSHA
>PUSHBI 1
>PUSHW L.MSG.PID
ldy #S.PS.hStdErr
lda (pPS),y
lda (pPS),y
>SYSCALL fprintf
rts
.4 >SLEEP Suspend this PID
sec
ldy #S.PS.RC CPID will update S.PS.RC
lda (pPs),y
bne .9
.8 clc
.9 rts
*--------------------------------------
@ -299,7 +246,6 @@ CORE.SkipLine jsr CORE.GetNextCharNB
cmp #C.CR EOL
bne CORE.SkipLine
jsr CORE.GetNextChar skip CR...
.8 rts
@ -315,18 +261,13 @@ CORE.LookupArgVBuf
>LDYA ZPArgVBufPtr
bcc CORE.Lookup
>LDYA ZPInputBufPtr
CORE.Lookup >STYA ZPPtr2
ldx #0
.1 ldy #$ff
.2 jsr .7 get next valid char in src text
bcs .3
.20 jsr ToUpperCase
eor (ZPPtr1),y match table char ?
asl compare only 7 bits
bne .4 no match...get next table keyword
@ -344,35 +285,26 @@ CORE.Lookup >STYA ZPPtr2
.3 dey
lda (ZPPtr1),y was last char in this keyword ?
bmi .8
iny
.41 jsr IncPtr1 skip chars to next keyword
.4 lda (ZPPtr1)
bpl .41
jsr IncPtr1
.6 inx
lda (ZPPtr1) Array Ending 0, lookup failed
bne .1
lda #E.SYN
sec
rts
.7 iny
lda (ZPPtr2),y Get Src text char...
beq .9 end of text
jsr CORE.IsSpaceOrEndCmd
bcc .9 end of valid chars
clc
rts
.9 sec
rts
*--------------------------------------
@ -381,54 +313,43 @@ CORE.Lookup >STYA ZPPtr2
CORE.ArgV.Dup >STYA ZPPtr1
phy
pha
lda #1
sta ZPPtr2
stz ZPPtr2+1
.1 jsr GetPtr1LenY
tya
beq .2
jsr AddAp1Ptr2
jsr AddYp1Ptr1
bra .1
.2 pla
ply
>STYA ZPPtr1
>LDYA ZPPtr2
>SYSCALL GetMem
bcs .9
>STYA ZPPtr2
phx
ldx #$ff Arg count-1 (skip $0)
.5 jsr StrCpyPtr1Ptr2
tya
beq .8
inx
jsr AddAp1Ptr2
jsr AddYp1Ptr1
bra .5
.8 txa A = Arg count, X = hARGV
plx
clc
.9 rts
clc
.9 rts
*--------------------------------------
CORE.ArgV.Add >LDYA ZPArgVBufPtr
>STYA ZPArgVBufPrev Save String start of Expand
lda #C.SPACE
sta ZPTmpW
jsr CORE.GetCharNB
bcs .9
@ -436,7 +357,6 @@ CORE.ArgV.Add >LDYA ZPArgVBufPtr
bne .10
sta ZPTmpW
bra .1
.10 cmp #'('
bne .11
ldx #')'
@ -447,12 +367,10 @@ CORE.ArgV.Add >LDYA ZPArgVBufPtr
.11 cmp #'`'
bne .12
sta ZPTmpW
.12 jsr CORE.ArgV.PutChar
.1 jsr CORE.GetNextChar
bcs .5
.2 cmp ZPTmpW
bne .3
jsr CORE.GetNextChar
@ -463,12 +381,9 @@ CORE.ArgV.Add >LDYA ZPArgVBufPtr
bne .40
jsr CORE.IsEndCmd
bcc .5
.40 jsr CORE.ArgV.PutChar
.4 jsr CORE.GetNextChar
bcc .2
.5 lda #0
jsr CORE.ArgV.PutChar
@ -488,13 +403,10 @@ CORE.ArgV.Add >LDYA ZPArgVBufPtr
beq .8
jsr CORE.ArgV.PutChar
bra .7
.8 tya
beq .81
lda #0
jsr CORE.ArgV.PutChar
.81 pla
>SYSCALL freemem
.9 rts
@ -505,18 +417,15 @@ CORE.ArgV.NextChar
inc ZPArgVBufPtr
bne .8
inc ZPArgVBufPtr+1
.8 rts
.8 rts
*--------------------------------------
CORE.ArgV.Next lda (ZPArgVBufPtr)
beq .8
>LDYA ZPArgVBufPtr
>STYA ZPArgVBufPrev
.1 jsr CORE.ArgV.NextChar
lda (ZPArgVBufPtr)
bne .1
jsr CORE.ArgV.NextChar
lda (ZPArgVBufPtr)
@ -533,7 +442,6 @@ CORE.IO.AMP lda #S.PS.F.HOLD
trb CORE.PSFlags
clc
CORE.IO.RTS rts
CORE.IO.IN lda #O.RDONLY+O.TEXT
jsr CORE.IO.Open
bcs CORE.IO.RTS
@ -566,18 +474,16 @@ CORE.IO.Open pha Open Mode
>STYA ZPArgVBufPtr Discard filename
plx
jmp IO.FOpenYAX
.9 pla
lda #E.SYN
sec
rts
rts
*--------------------------------------
* Input Buffer
*--------------------------------------
CORE.IsSpaceOrEndCmd
cmp #C.SPACE
beq CORE.IsEndCmd.8
CORE.IsEndCmd cmp #';'
beq CORE.IsEndCmd.8
cmp #C.CR
@ -586,7 +492,6 @@ CORE.IsEndCmd cmp #';'
beq CORE.IsEndCmd.8
sec
rts
CORE.IsEndCmd.8 clc
rts
*--------------------------------------
@ -611,7 +516,7 @@ CORE.CheckCharNB
cmp #C.TAB
beq .9
clc
.9 rts
.9 rts
*--------------------------------------
CORE.GetNextChar
inc ZPInputBufPtr
@ -622,7 +527,6 @@ CORE.GetChar lda (ZPInputBufPtr)
beq .9
clc
rts
.9 sec
rts
*--------------------------------------
@ -631,7 +535,7 @@ CORE.SkipCharsA clc
sta ZPInputBufPtr
bcc .8
inc ZPInputBufPtr+1
.8 rts
.8 rts
*--------------------------------------
* Stack
*--------------------------------------
@ -639,22 +543,18 @@ CORE.StkCheck sec
adc (pData) StackPtr
cmp #CORE.STACK.MAX
bcc .8
lda #E.STKOVERFLOW
* clc
.8 rts
* clc
.8 rts
*--------------------------------------
CORE.StkPushYAX phx
jsr CORE.StkPushYA
bcs CORE.StkPushYA.9
bra CORE.StkPush.1
*--------------------------------------
CORE.StkPushYA phy
jsr CORE.StkPush
bcc CORE.StkPush.1
CORE.StkPushYA.9
plx
CORE.StkPushYA.RTS
@ -672,14 +572,12 @@ CORE.StkPush.1 lda (pData) StackPtr
inc
cmp #CORE.STACK.MAX
bcs .9
sta (pData) StackPtr
tay
pla
sta (pData),y
* clc
rts
.9 pla
lda #E.STKOVERFLOW
* sec
@ -694,14 +592,11 @@ CORE.StkGetCtx jsr CORE.StkGet
cmp #$C0+C.CALL
beq .1 CS
cmp #$C0+C.CLEXEC
beq .1 CS
and #$80 get current..
lsr becomes parent
bra .8
.1 lda #$40 ...set Parent = true
.8 sta CORE.TestResult
@ -710,7 +605,6 @@ CORE.StkGetCtx jsr CORE.StkGet
rts
*--------------------------------------
CORE.StkPullInputBufPtr
jsr CORE.StkPull
bcs .9
sta ZPInputBufPtr
@ -718,18 +612,16 @@ CORE.StkPullInputBufPtr
bcs .9
sta ZPInputBufPtr+1
.9 rts
.9 rts
*--------------------------------------
CORE.StkPull jsr CORE.StkGet
bcs .9
dey
pha
tya
sta (pData) StackPtr
pla
.9 rts
.9 rts
*--------------------------------------
CORE.StkGet lda (pData) StackPtr
beq .9

View File

@ -4,49 +4,37 @@ NEW
*--------------------------------------
EXP.GET jsr CORE.ArgV.Next
bne .1
>LDYA ZPArgVBufPrev no op, return text value
clc
rts
.1 >LDYA ZPArgVBufPrev
>SYSCALL AToL To Int32 on stack
bcs .9
.2 >LDYA L.EXP.OP.MATH + - .... ?
jsr CORE.LookupArgVBuf
bcs .94
stx CORE.Operator
jsr CORE.ArgV.Next get next argument
beq .94
>LDYA ZPArgVBufPtr
>SYSCALL AToL To Int32 on stack
bcs .94
jsr EXP.FPU.EXEC
jsr CORE.ArgV.Next another op ?
bne .2
.8 >PUSHBI 4 ACC on stack
>PUSHW L.FMT.Long
>LEA.G M32.BUF
>SYSCALL sprintf
bcs .9
>LEA.G M32.BUF
rts
.94 >POP 4
.9 lda #E.ESYN
sec
rts
EXP.FPU.EXEC ldy CORE.Operator
ldx EXP.OP.MATH.FPU,y
@ -57,7 +45,6 @@ EXP.TEST lda (ZPArgVBufPtr)
lda #$80
sta CORE.LogicOp No Op
.10 >LDYA L.EXP.BEGIN
jsr CORE.LookupArgVBuf
@ -67,13 +54,11 @@ EXP.TEST lda (ZPArgVBufPtr)
txa
asl in C
php
lda CORE.TestResult get parent
asl discard true/false
plp get new
ror set ctx and parent
sta CORE.TestResult
jsr CORE.ArgV.Next
beq .9
@ -86,7 +71,6 @@ EXP.TEST lda (ZPArgVBufPtr)
jsr EXP.TEST.UNARY
bcs .9
eor CORE.TestResult
sta CORE.TestResult
lda (ZPArgVBufPtr)
@ -95,16 +79,12 @@ EXP.TEST lda (ZPArgVBufPtr)
.9 lda #E.ESYN
sec
.99 rts
.1 jsr CORE.ArgV.Next
beq .9
>LDYA L.EXP.OP.BINARY -eq -ne .... ?
jsr CORE.LookupArgVBuf
bcs .9
stx CORE.Operator
jsr EXP.TEST.BINARY
bcs .9
@ -113,17 +93,13 @@ EXP.TEST lda (ZPArgVBufPtr)
jsr CORE.ArgV.Next
beq .9
.8 cmp #']'
bne .9
ldy #1
lda (ZPArgVBufPtr),y
bne .9
jsr CORE.ArgV.Next
beq .80
>LDYA L.EXP.OP.LOGIC
jsr CORE.LookupArgVBuf
bcs .9
@ -131,35 +107,26 @@ EXP.TEST lda (ZPArgVBufPtr)
stx CORE.LogicOp 0 = AND, 1 = OR
txa
beq .84
lda CORE.TestResult OR : prev test is true, exit
bmi .88
bra .85
.84 lda CORE.TestResult AND : prev test is false, exit
bpl .88
.85 lda CORE.TestResult
sta CORE.PrevTestResult
jsr CORE.ArgV.Next
beq .9
jmp .10
.80 lda CORE.LogicOp
bne .88 NONE, or OR : exit with last result
lda CORE.PrevTestResult AND : stop if false
and CORE.TestResult
sta CORE.TestResult
.88 clc
rts
*--------------------------------------
EXP.TEST.UNARY jsr CORE.ArgV.Next
beq EXP.OP.UNARY.ESYN we need one arg or ]
lda CORE.Operator
asl
tax
@ -169,7 +136,6 @@ EXP.OP.UNARY.ESYN
lda #E.ESYN
sec
rts
EXP.OP.UNARY.D jsr EXP.OP.UNARY.STAT
bcs EXP.OP.UNARY.DEF.9
>LDA.G StatBuf+S.STAT.P.TYPE
@ -180,7 +146,6 @@ EXP.OP.UNARY.D jsr EXP.OP.UNARY.STAT
EXP.OP.UNARY.E jsr EXP.OP.UNARY.STAT
bcs EXP.OP.UNARY.DEF.9
bra EXP.OP.UNARY.DEF.8 DIR or FILE exist
EXP.OP.UNARY.F jsr EXP.OP.UNARY.STAT
bcs EXP.OP.UNARY.DEF.9
@ -212,7 +177,6 @@ EXP.OP.UNARY.DEF.9
EXP.OP.UNARY.N lda (ZPArgVBufPtr) [ -N ] ?
cmp #']'
beq EXP.OP.UNARY.DEF.9 FALSE
jsr CORE.ArgV.Next
beq EXP.OP.UNARY.ESYN
bra EXP.OP.UNARY.DEF.8 arg is not empty TRUE
@ -221,7 +185,6 @@ EXP.OP.UNARY.Z lda (ZPArgVBufPtr) [ -Z ] ?
cmp #']'
beq EXP.OP.UNARY.DEF.8 TRUE
jsr CORE.ArgV.Next
beq EXP.OP.UNARY.ESYN
bra EXP.OP.UNARY.DEF.9 FALSE
@ -229,33 +192,25 @@ EXP.OP.UNARY.Z lda (ZPArgVBufPtr) [ -Z ] ?
EXP.TEST.BINARY lda CORE.Operator
cmp #6 =, !=, <= <, >=, >
bcs EXP.TEST.BINARY.NUM
>LDYA ZPArgVBufPrev
>STYA ZPPtr1
jsr CORE.ArgV.Next
beq EXP.TEST.BINARY.ESYN
>PUSHW ZPPtr1
>LDYA ZPArgVBufPtr
>SYSCALL strcmp
bcs .1 CS if !=
lda #%010 010 str1 = str2
lda #%010 010 str1 = str2
bra EXP.TEST.BINARY.END
.1 asl CS if <
bcs .2
lda #%100 010 str1 < str2
bra EXP.TEST.BINARY.END
bra EXP.TEST.BINARY.END
.2 lda #%001 010 str1 > str2
bra EXP.TEST.BINARY.END
bra EXP.TEST.BINARY.END
EXP.TEST.BINARY.ESYN4
>POP 4
EXP.TEST.BINARY.ESYN
lda #E.ESYN
sec
@ -268,27 +223,22 @@ EXP.TEST.BINARY.NUM
jsr CORE.ArgV.Next
beq EXP.TEST.BINARY.ESYN4
>LDYA ZPArgVBufPtr
>SYSCALL AToL
bcs EXP.TEST.BINARY.ESYN4
>FPU CMP32
tax
bmi .4 ACC < ARG
bne .5
lda #%010 010 ACC = ARG
bra EXP.TEST.BINARY.END
.4 lda #%100 100 ACC > ARG
bra EXP.TEST.BINARY.END
.5 lda #%001 001 ACC < ARG
EXP.TEST.BINARY.END
EXP.TEST.BINARY.END
clc
ldx CORE.Operator
and EXP.OP.BINARY.BITS,x

View File

@ -8,7 +8,6 @@ HIS.Init >LDYAI HISTORY.MAX Get a buffer for History
txa
>STA.G HIS.hBuf
lda #0
>STA.G HIS.Count
>STA.G HIS.Index
@ -21,50 +20,38 @@ HIS.Quit >LDA.G HIS.hBuf
*--------------------------------------
HIS.Add >LDA.G HIS.hBuf
beq .9
>SYSCALL GetMemPtr
>STYA ZPPTR1
.10 lda #$ff
jsr HIS.GetA Y=ending 0
phy
tya
sec add len+1
>ADC.G CL.Len CmdBuffer length
pla
bcc .2 enough room
jsr GetPtr1LenY get len of oldest string
tya
* sec
* sec
adc ZPPTR1
sta ZPPTR2
lda ZPPTR1+1
adc #0
sta ZPPTR2+1
ldy #$FF
.1 iny
lda (ZPPTR2),y move back until String ending 0 found
sta (ZPPTR1),y
bne .1
iny
lda (ZPPTR2),y move back until Array ending 0 found
sta (ZPPTR1),y
bne .1
>DEC.G HIS.Count
bra .10 retry....
.2 jsr AddAPtr1 A = ending O offset
ldy #$ff
.4 iny
lda (ZPCLBuf),y
sta (ZPPTR1),y
@ -72,43 +59,33 @@ HIS.Add >LDA.G HIS.hBuf
iny
sta (ZPPTR1),y set new array ending 0
* lda #0
* lda #0
>STA.G HIS.Index Reset Index
>INC.G HIS.Count
.9 rts
*--------------------------------------
HIS.GetPrev >LDA.G HIS.hBuf
beq HISTORY.RTS
>SYSCALL GetMemPtr
>STYA ZPPTR1
>LDA.G HIS.Count
beq HISTORY.RTS empty history,nothing to do
>LDA.G HIS.Index
bne .1
>LDA.G HIS.Count
.1 dec
>STA.G HIS.Index
bra HIS.SetA
History.RTS rts
*--------------------------------------
HIS.GetNext >LDA.G HIS.hBuf
beq HISTORY.RTS
>SYSCALL GetMemPtr
>STYA ZPPTR1
>LDA.G HIS.Count
beq HISTORY.RTS empty history,nothing to do
>LDA.G HIS.Index
inc
>CMP.G HIS.Count
@ -116,51 +93,38 @@ HIS.GetNext >LDA.G HIS.hBuf
lda #0
>STA.G HIS.Index
jmp CL.CLR
.1 >STA.G HIS.Index
*--------------------------------------
HIS.SetA jsr HIS.GetA
tya
jsr AddAPtr1
jsr CL.CLR
ldy #$ff
.2 iny
lda (ZPPTR1),y
sta (ZPCLBuf),y
bne .2
tya
>STA.G CL.Ptr
>STA.G CL.Len
jmp CL.PrintCLBuf
*--------------------------------------
HIS.GetA ldy #0
tax
beq .80
lda (ZPPTR1),y
beq .9
.1 iny
lda (ZPPTR1),y
bne .1
dex
beq .8
iny
lda (ZPPTR1),y
bne .1
.9 sec Found ending 0....
rts
.8 iny
.80 clc

View File

@ -11,7 +11,6 @@ IO.Load pha
>PUSHWZ Aux type
>PUSHBI S.FI.T.TXT
>PUSHBI O.RDONLY
pla
>SYSCALL LoadTxtFile
rts
@ -19,7 +18,6 @@ IO.Load pha
IO.Pipe.In >LDA.G IO.hOut
ldy #S.PS.hStdOut
sta (pPS),y
>STZ.G IO.hOut
>LEA.G IO.FIFO
@ -40,18 +38,15 @@ IO.Set.RTS rts
*--------------------------------------
IO.Reset.In >LDA.G IO.hIn
beq .8
pha
ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL fclose
pla
ldy #S.PS.hStdIn
sta (pPS),y
>STZ.G IO.hIn
.8 clc
IO.Reset.In.RTS rts
@ -79,18 +74,14 @@ IO.Set.Out pha
*--------------------------------------
IO.Reset.Out >LDA.G IO.hOut
beq .8
pha
ldy #S.PS.hStdOut
lda (pPS),y
>SYSCALL fclose
pla
ldy #S.PS.hStdOut
sta (pPS),y
>STZ.G IO.hOut
.8 rts
*--------------------------------------
@ -106,17 +97,13 @@ IO.Set.Err pha
*--------------------------------------
IO.Reset.Err >LDA.G IO.hErr
beq .8
pha
ldy #S.PS.hStdErr
lda (pPS),y
>SYSCALL fclose
pla
ldy #S.PS.hStdErr
sta (pPS),y
>STZ.G IO.hErr
.8 rts
*--------------------------------------
@ -134,19 +121,15 @@ IO.FOpenYAX phy
IO.PrintBatchErrMsg
>LDYA ZPInputBuf
>STYA ZPPtr1
ldy #S.PS.RC
lda (pPs),y
cmp #E.SYN
beq .10
>LDYA ZPInputCmdPtr
bra .11
.10 >LDYA ZPInputBufPtr
.11 >STYA ZPPtr2
stz ZPTmpW Line Count
stz ZPTmpW+1
@ -162,7 +145,6 @@ IO.PrintBatchErrMsg
cmp #C.CR
bne .3 Scan until EoL
.4 tya
clc
adc ZPPtr1
@ -175,7 +157,6 @@ IO.PrintBatchErrMsg
sbc ZPPtr2+1
pla
bcs .41
inx
bne .40
inc
@ -194,7 +175,6 @@ IO.PrintBatchErrMsg
bne .5
sta (ZPCLBuf),y
.6 >PUSHW ZPCLBuf
>PUSHBI 2
@ -216,7 +196,6 @@ IO.PrintBatchErrMsg
>PUSHW ZPCLBuf
>PUSHBI 4
>PUSHW L.MSG.BATCHERR
.80 bra IO.PrintErr
*--------------------------------------
IO.PrintErrMsg pha Save EC for PrintF
@ -238,20 +217,17 @@ IO.PrintErrMsg pha Save EC for PrintF
sta ZPPTR1
lda L.ERR.Messages+1
sta ZPPTR1+1
.3 dey
bmi .8
lda (ZPPTR1)
jsr AddAp1Ptr1
bra .3
.8 >PUSHW ZPPTR1
pla
>PUSHA
>PUSHBI 3
>PUSHW L.MSG.ERROR
IO.PrintErr ldy #S.PS.hStdErr
lda (pPS),y
>SYSCALL fprintf

View File

@ -90,7 +90,7 @@ ZPTmpW .BS 2
M32.ACC .BS 4
ZS.END .ED
ZS.END .ED
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
@ -206,7 +206,6 @@ CS.RUN jsr CL.Init
lda #$ff
>STA.G bExitOnEOF
lda #0
jsr CMD.SHIFTA Remove $0=/bin/sh
@ -216,7 +215,6 @@ CS.RUN jsr CL.Init
jsr IO.Load
bcs CS.INIT.RTS
phx
ldy #S.PS.hARGV
lda (pPS),y
@ -224,10 +222,8 @@ CS.RUN jsr CL.Init
plx
jsr CORE.Load.YAX Exec Batch file
bcs CS.INIT.RTS
lda #$C0+C..
jsr CORE.StkPush
bra CS.RUN.LOOP
*--------------------------------------
.1 jsr CMD.CD.HOME
@ -246,11 +242,9 @@ CS.RUN jsr CL.Init
>LDYA L.HOME.PROFILE
jsr CORE.Load.YAX Exec profile and continue
bcs CS.RUN.LOOP
lda #$C0+C..
jsr CORE.StkPush
jsr CORE.StkPush
*--------------------------------------
CS.RUN.LOOP >SLEEP
@ -261,30 +255,23 @@ CS.RUN.LOOP >SLEEP
lda (pPS),y
>SYSCALL feof
bcs .9
tay
bne CS.RUN.LOOP
>SYSCALL GetChar
bcs .9 I/O err
cmp #3 Ctrl-C
bne .11
lda (pData) batch mode ?
beq CS.RUN.LOOP
>LDA.G bSET.C
beq .8
bra CS.RUN.LOOP
.11 cmp #19 test Ctrl-s
bne CS.RUN.LOOP
lda #$80
>STA.G bPause
bra CS.RUN.LOOP
bra CS.RUN.LOOP
*--------------------------------------
.8 lda #3 User Interrupt
sec
@ -292,33 +279,24 @@ CS.RUN.LOOP >SLEEP
*--------------------------------------
.2 >LDA.G bPause
bpl .6
.3 >SYSCALL GetChar
bcs .9 I/O err
cmp #3 Ctrl-C
bne .4
lda (pData) batch mode ?
beq .5
>LDA.G bSET.C
beq .8
bra .5
.4 tax
>LDA.G bPause
asl $ff ?
bpl .5 not from PAUSE command
cpx #C.CR
bne .3
.5 >STZ.G bPause
*--------------------------------------
.6 lda (pData) batch mode ?
bne CS.RUN.BATCH
*--------------------------------------
CS.RUN.INTERACTIVE
@ -327,14 +305,11 @@ CS.RUN.INTERACTIVE
jsr CL.PrintPrompt
bcs .9
>STZ.G bREAD.S
dec
>STA.G READ.N
.1 >SYSCALL GetChar
bcs .9 I/O error
.2 cmp #C.EOF ....or Ctrl-D
beq .9 CS
@ -342,12 +317,10 @@ CS.RUN.INTERACTIVE
>LDA.G CL.bReady Something to execute ?
bpl .1
>PUSHBI 0
>LDYA L.MSG.PROMPTCRLF
>SYSCALL printf
bcs .9
lda (ZPCLBuf)
beq .8 Empty line
@ -356,22 +329,17 @@ CS.RUN.INTERACTIVE
>LDYA ZPCLBuf
>SYSCALL strdup
bcs .8
phx
ldy #S.PS.hARGV
lda (pPS),y
>SYSCALL GetMemPtr Y,A =ARGV
plx
jsr CORE.Load.YAX Exec CL
bcs .9
lda #$C0+C.CLEXEC
jsr CORE.StkPush
.6 jsr CORE.Run
.8 jmp CS.RUN.LOOP.END
.9 rts
@ -380,17 +348,13 @@ CS.RUN.BATCH >LDA.G bSET.X
beq .5
ldy #$ff
.3 iny
lda (ZPInputBufPtr),y
sta (ZPArgVBuf),y
beq .4
eor #C.CR
bne .3
sta (ZPArgVBuf),y
.4 >PUSHW ZPArgVBuf
>PUSHBI 2
>LDYA L.MSG.TRACE
@ -398,10 +362,8 @@ CS.RUN.BATCH >LDA.G bSET.X
bcs CS.RUN.LOOP.RTS
.5 jsr CORE.Run
CS.RUN.LOOP.END ldy #S.PS.RC
sta (pPs),y
bcc CS.RUN.LOOP.80
tay
beq CS.RUN.LOOP.80 0 = EOF
@ -412,28 +374,22 @@ CS.RUN.LOOP.END ldy #S.PS.RC
jsr CORE.StkGet
cmp #$C0+C.CLEXEC
beq .1
jsr IO.PrintBatchErrMsg
bcs CS.RUN.LOOP.RTS
.1 ldy #S.PS.RC
lda (pPs),y
jsr IO.PrintErrMsg
bcs CS.RUN.LOOP.RTS
CS.RUN.LOOP.80 lda (pData) something on stack ?
bne .8
>LDA.G bExitOnEOF
bmi CS.RUN.LOOP.EXIT
.8 jmp CS.RUN.LOOP
CS.RUN.LOOP.EXIT
ldy #S.PS.RC
lda (pPs),y
sec
CS.RUN.LOOP.RTS rts
*--------------------------------------
@ -444,11 +400,8 @@ CS.DOEVENT lda (pEvent)
beq .9
* ldy #Sleep already set by CheckSleep
ldx #4
clc
.1 lda (pData),y
sbc #0
sta (pData),y
@ -481,17 +434,13 @@ RemoveStrFromArgV
>STYA ZPPtr2
jsr GetPtr1LenY
.2 jsr AddYp1Ptr1
jsr StrCpyPtr1Ptr2
tya
beq .8
jsr AddAp1Ptr2
bra .2
.8 rts
*--------------------------------------
GetPtr1Next lda (ZPPtr1)
@ -500,10 +449,9 @@ GetPtr1Next lda (ZPPtr1)
IncPtr1 inc ZPPtr1
bne IncPtr1.8
inc ZPPtr1+1
IncPtr1.8 rts
IncPtr1.8 rts
*--------------------------------------
GetPtr1LenY ldy #$ff
.1 iny
lda (ZPPtr1),y
bne .1
@ -527,7 +475,6 @@ AddAp1Ptr2 sec
.8 rts
*--------------------------------------
StrCpyPtr1Ptr2 ldy #$ff
.1 iny
lda (ZPPtr1),y
sta (ZPPtr2),y
@ -540,7 +487,6 @@ ToUpperCase cmp #'a'
cmp #'z'+1
bcs .8
eor #$20
.8 clc exit CC to allow Jmp to
rts
*--------------------------------------

View File

@ -9,7 +9,7 @@ NEW
.INB INC/A2OSX.I
.INB INC/ETH.I
.INB INC/LIBTCPIP.I
.INB INC/NET.TELNET.I
.INB INC/NET.TELNET.I
*--------------------------------------
TIMEOUT.MAX .EQ 100 10 sec.
BUFSIZE .EQ 256
@ -68,30 +68,24 @@ CS.INIT >LDYA L.LIBTCPIP
*--------------------------------------
CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ?
>STYA ZPIPCfgPtr
lda (ZPIPCfgPtr) Configured ?
bmi CS.RUN.IPOK
>LDYA L.MSG.IPKO
>SYSCALL puts
lda #E.SYN
sec
sec
rts
CS.RUN.IPOK ldy #S.PS.ARGC
lda (pPs),y
cmp #1
bcc .9
ldy #S.IPCFG.IP+3
ldx #3
.1 lda (ZPIPCfgPtr),y
sta SA.LOCAL+S.SOCKADDR.ADDR,x
dey
dex
bpl .1
lda #TIMEOUT.MAX
sta TimeOut
@ -101,7 +95,6 @@ CS.RUN.IPOK ldy #S.PS.ARGC
>PUSHYA
>LIBCALL hLIBTCPIP,LIBTCPIP.HST.GETBYNAME
bcc CS.RUN.HOSTOK
>SLEEP
lda TimeOut
bne .2
@ -113,33 +106,27 @@ CS.RUN.IPOK ldy #S.PS.ARGC
>LDYA L.MSG.UNKNOWN
>SYSCALL printf
bra .99
.9 >LDYA L.MSG.USAGE
>SYSCALL puts
.99 lda #E.SYN
sec
sec
rts
CS.RUN.HOSTOK lda #2
>SYSCALL ArgV
bcs CS.RUN.PORTOK
>SYSCALL atoi
>STYA SA.REMOTE+S.SOCKADDR.PORT
CS.RUN.PORTOK lda #1
>SYSCALL ArgV
>PUSHYA
>PUSHW SA.REMOTE+S.SOCKADDR.PORT
ldx #3
.1 >PUSHB SA.REMOTE+S.SOCKADDR.ADDR,x
dex
bpl .1
>PUSHBI 8
>LDYA L.MSG.HOSTOK
>SYSCALL printf
@ -155,22 +142,18 @@ CS.RUN.OPENSKT >PUSHBI 0 no protocol
lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind
bcc .2
.9 >LDYA L.MSG.SKTKO
>SYSCALL puts
lda #E.SYN
sec
sec
rts
.2 >PUSHW L.SA.REMOTE
lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
bcs .9
>PUSHBI 0
>LDYA L.MSG.SKTOK
>SYSCALL printf
>LDYAI BUFSIZE
>SYSCALL getmem
bcs .9
@ -182,7 +165,6 @@ CS.RUN.LOOP >SLEEP
lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.EOF
bcs .99
tay
bne .2 EOF, no char
@ -191,20 +173,17 @@ CS.RUN.LOOP >SLEEP
lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Read
.99 bcs .9
>PUSHYA len
>PUSHW ZPBufPtr
ldy #S.PS.hStdOut
lda (pPs),y
>SYSCALL fwrite
bcs .11
.2 ldy #S.PS.hStdIn
lda (pPs),y
>SYSCALL feof
bcs .11 CS.RUN.IOERR
tay
bne CS.RUN.LOOP EOF = true, no char from STDIN
@ -214,19 +193,16 @@ CS.RUN.LOOP >SLEEP
lda (pPs),y
>SYSCALL fread
.11 bcs CS.RUN.IOERR
.3 >STYA ZPBufLen
lda (ZPBufPtr)
cmp #$14 Ctrl-T
beq CS.RUN.USER
>PUSHW ZPBufLen
>PUSHW ZPBufPtr
lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Write
.9 bcs CS.RUN.SKTERR
jmp CS.RUN.LOOP
*--------------------------------------
CS.RUN.SKTERR pha
@ -255,12 +231,9 @@ CS.RUN.USER >LDYA L.MSG.USER
*--------------------------------------
CS.DOEVENT lda (pEvent)
bpl .9 is it a TIMER event?
lda TimeOut
beq .9
dec TimeOut
.9 sec do not discard TIMER event
rts
*--------------------------------------
@ -268,16 +241,12 @@ CS.QUIT lda hSocket
beq .1
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
.1 lda hBuf
beq .2
>SYSCALL freemem
.2 lda hLIBTCPIP
beq .8
>SYSCALL UnloadLib
.8 clc
rts
*--------------------------------------

View File

@ -41,7 +41,7 @@ CS.START cld
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
@ -69,21 +69,17 @@ CS.RUN >LDYAI CHNK.SIZE
lda #1
>SYSCALL Argv
bcs .9
jsr CS.RUN.OpenArc
bcs .9
>LDYAI 256
>SYSCALL getmem
bcs .9
>STYA ZPFullPathPtr
txa
>STA.G hFullPath
lda #2
>SYSCALL Argv
bcc .1
ldy #S.PS.hCWD
lda (pPS),y
>SYSCALL getmemptr
@ -119,15 +115,12 @@ CS.RUN.SetupPath
lda (ZPPtr1),y
sta (ZPFullPathPtr),y
bne .2
dey
lda #'/'
cmp (ZPFullPathPtr),y
beq .3
iny
sta (ZPFullPathPtr),y
.3 tya
sec
adc ZPFullPathPtr
@ -135,7 +128,6 @@ CS.RUN.SetupPath
lda #0
adc ZPFullPathPtr+1
sta ZPRelPathPtr+1
rts
*--------------------------------------
CS.RUN.LOOP jsr CS.RUN.GetByte
@ -146,22 +138,17 @@ CS.RUN.LOOP jsr CS.RUN.GetByte
jsr CS.RUN.GetFileName
bcs .9
ldx #0
jsr CS.RUN.PrintFN
jsr CS.RUN.CheckDir
bcs .99
>LDYA L.MSG.OK
>SYSCALL puts
bra CS.RUN.LOOP
clc
.99 rts
.9 jmp CS.RUN.E.IARC
.1 cmp #CHNK.T.FILE
bne .9
@ -173,16 +160,13 @@ CS.RUN.LOOP jsr CS.RUN.GetByte
ldx #2
jsr CS.RUN.PrintFN
jsr CS.RUN.OpenFile
bcs .9
*--------------------------------------
jsr CS.RUN.GetByte DATA
bcs .8 eof
.2 cmp #CHNK.T.DATA
bne .3 Could be a 0 byte file
.20 jsr CS.RUN.GetByte ALG
bcs .9
cmp #0 STORE
@ -195,23 +179,17 @@ CS.RUN.LOOP jsr CS.RUN.GetByte
jsr CS.RUN.GetByte ULEN HI
bcs .9
sta ZPULen+1
jsr CS.RUN.ReadData
bcs .9
jsr CS.RUN.WriteFile
bcs .9
jsr CS.RUN.GetByte
bcs .8
cmp #CHNK.T.DATA
beq .20
.3 pha
jsr .8
pla
jmp .10
.8 >LDA.G hFile
@ -234,25 +212,20 @@ CS.RUN.OpenArc pha
>SYSCALL FOpen
bcs .9
>STA.G hArcFile
pha
>PUSHWI 3
>PUSHW ZPInBufPtr
pla
>SYSCALL fread
bcs .9
cpy #3
bne .99
dey
.1 lda MSG.PAK,y
cmp (ZPInBufPtr),y
bne .99
dey
bpl .1
clc
.9 rts
@ -273,7 +246,6 @@ CS.RUN.GetFileType
CS.RUN.GetFileName
jsr CS.RUN.GetByte
bcs .9
tay
lda #0
@ -286,9 +258,8 @@ CS.RUN.GetFileName
lda #0
sta (ZPRelPathPtr),y
* clc
.9 rts
* clc
.9 rts
*--------------------------------------
CS.RUN.ReadData >PUSHW ZPULen
>PUSHW ZPInBufPtr
@ -309,14 +280,12 @@ CS.RUN.CheckDir >PUSHEA.G STAT
>SYSCALL mkdir
rts
.1 ldy #STAT+S.STAT.P.TYPE
lda (pData),y
cmp #$F
bne .99
clc
rts
.99 lda #MLI.E.INVPATH
sec
.9 rts
@ -342,27 +311,18 @@ CS.DOEVENT sec
*--------------------------------------
CS.QUIT >LDA.G hFile
beq .1
>SYSCALL fclose
.1 >LDA.G hFullPath
beq .2
>SYSCALL FreeMem
.2 >LDA.G hOutBuf
beq .3
>SYSCALL FreeMem
.3 >LDA.G hInBuf
beq .4
>SYSCALL FreeMem
.4 >LDA.G hArcFile
beq .8
>SYSCALL fclose
.8 clc

View File

@ -44,7 +44,7 @@ CS.START cld
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
@ -70,7 +70,6 @@ J.CS.RUN.CheckArg
CS.INIT >LDYA L.LIBCRYPT
>SYSCALL LoadLib
bcs .9
sta hLIBCRYPT
.9 rts
@ -83,46 +82,36 @@ CS.RUN >LDYAI S.PW
bcs .99
>STYA ZPPWPtr
stx ZPhPW
>LDYAI 256
>SYSCALL getmem
bcs .99
>STYA ZPStrPtr
stx ZPhStr
>PUSHW ZPPWPtr
lda #0
>SYSCALL GetPWUID
bcc .1
jmp CS.RUN.ROOT
.1 ldy #S.PW
.2 dey
lda PW.DEFAULT,y
sta (pData),y
tya
bne .2
jsr CS.RUN.CheckArg
bcs .9
jsr CS.RUN.MkDir
* bcs .99
>LDYA pData
>SYSCALL putpw
bcs .99
lda #0
sec
rts
.9 >PUSHBI 0
>LDYA L.MSG.USAGE
>SYSCALL printf
lda #E.SYN
sec
.99 rts
@ -144,43 +133,35 @@ CS.RUN.ROOT ldy #0
>LDYA L.MSG.ROOTPWD1
>SYSCALL printf
bcs .90
jsr CS.RUN.GetStr
bcs .90
>PUSHEA.G PW+S.PW.PASSWD
>PUSHW ZPStrPtr
>LIBCALL hLIBCRYPT,LIBCRYPT.MD5
>PUSHBI 0
>LDYA L.MSG.ROOTPWD2
>SYSCALL printf
bcs .9
jsr CS.RUN.GetStr
.90 bcs .9
>PUSHW ZPStrPtr
>PUSHW ZPStrPtr
>LIBCALL hLIBCRYPT,LIBCRYPT.MD5
>PUSHW ZPStrPtr
>LEA.G PW+S.PW.PASSWD
>SYSCALL strcmp
bcs .99
>LDYA pData
>SYSCALL putpw
bcs .9
lda #0
sec
.9 rts
.99 >PUSHBI 0
>LDYA L.MSG.MISMATCH
>SYSCALL printf
lda #E.SYN
sec
rts
@ -189,21 +170,16 @@ CS.RUN.GetStr stz ZPStrLen
.1 >SYSCALL getchar
bcs .9
cmp #C.SPACE
bcc .2
ldy ZPStrLen
cpy ZPStrMax
beq .1
sta (ZPStrPtr),y
iny
sty ZPStrLen
bit ZPbStrSecret
bmi .1
>SYSCALL putchar
bra .1
@ -212,30 +188,23 @@ CS.RUN.GetStr stz ZPStrLen
cmp #C.CR
beq .8
cmp #C.BS
bne .1
ldy ZPStrLen
beq .1
dec ZPStrLen
bit ZPbStrSecret
bmi .1
>PUSHBI 0
>LDYA L.MSG.BS
>SYSCALL printf
bra .1
.8 ldy ZPStrLen
lda #0
sta (ZPStrPtr),y
>PUSHBI 0
>LDYA L.MSG.CRLF
>SYSCALL printf
.9 rts
*--------------------------------------
CS.RUN.CheckArg inc ArgIndex
@ -243,32 +212,25 @@ CS.RUN.CheckArg inc ArgIndex
>SYSCALL ArgV
bcs .8
>STYA ZPStrPtr
lda (ZPStrPtr)
cmp #'-'
bne .4
ldy #1
lda (ZPStrPtr),y
ldx OptionList
.2 cmp OptionList,x
beq .3
dex
bne .2
lda #E.SYN
sec
rts
.3 txa
and #$fe
tax
jmp (J.CS.RUN.CheckArg,x)
.4 lda ArgUsername
bne CS.RUN.CheckArg.9
lda pData
clc
adc #S.PW.DIR+11
@ -276,9 +238,7 @@ CS.RUN.CheckArg inc ArgIndex
lda pData+1
adc /S.PW.DIR+11
sta ZPTmpPtr+1
ldy #0
.5 lda (ZPStrPtr),y
sta (pData),y
sta (ZPTmpPtr),y
@ -287,7 +247,6 @@ CS.RUN.CheckArg inc ArgIndex
cpy #16
bne .5
bra CS.RUN.CheckArg.9
.6 lda #'/'
sta (ZPTmpPtr),y
@ -298,21 +257,16 @@ CS.RUN.CheckArg inc ArgIndex
>SYSCALL GetPWName
bcc .9
bra CS.RUN.CheckArg
.8 lda ArgUsername
beq CS.RUN.CheckArg.9
clc
rts
.9 >PUSHBI 0
>LDYA L.MSG.DUP
>SYSCALL printf
CS.RUN.CheckArg.9
lda #E.SYN
CS.RUN.CheckArg
.9 lda #E.SYN
sec
rts
*--------------------------------------
@ -352,7 +306,6 @@ CS.RUN.CheckArg.S
>SYSCALL ArgV
bcs CS.RUN.CheckArg.9
ldx #S.PW.SHELL
CS.RUN.CheckArg.Next
>STYA ZPStrPtr
* clc
@ -362,19 +315,15 @@ CS.RUN.CheckArg.Next
lda pData+1
adc #0
sta ZPTmpPtr+1
ldy #$ff
.1 iny
lda (ZPStrPtr),y
sta (ZPTmpPtr),y
beq .8
cpy #64
bne .1
lda #0
sta (ZPTmpPtr),y
.8 jmp CS.RUN.CheckArg
*--------------------------------------
CS.RUN.MkDir >LEA.G S.PW.DIR
@ -393,19 +342,13 @@ CS.DOEVENT sec
*--------------------------------------
CS.QUIT lda ZPhStr
beq .1
>SYSCALL freemem
.1 lda ZPhPW
beq .2
>SYSCALL freemem
.2 lda hLIBCRYPT
beq .8
>SYSCALL UnloadLib
.8 clc
rts
*--------------------------------------

View File

@ -36,7 +36,7 @@ CS.START cld
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
@ -60,26 +60,21 @@ CS.RUN >LDYAI S.PW
bcs .99
>STYA ZPPWPtr
stx ZPhPW
>LDYAI 256
>SYSCALL getmem
bcs .99
>STYA ZPStrPtr
stx ZPhStr
jsr CS.RUN.CheckArg
bcs .99
>PUSHW ZPPWPtr
lda ArgUsername
>SYSCALL ArgV
>SYSCALL GetPWName
bcs .99
ldy #S.PW.PASSWD
lda #0
sta (ZPPWPtr),y
>LDYA ZPPWPtr
>SYSCALL putpw
bcs .99
@ -90,11 +85,9 @@ CS.RUN >LDYAI S.PW
lda #0
sec
rts
.9 >PUSHBI 0
>LDYA L.MSG.INV
>SYSCALL printf
lda #E.IUSR
sec
rts
@ -108,43 +101,33 @@ CS.RUN.CheckArg inc ArgIndex
>SYSCALL ArgV
bcs .8
>STYA ZPStrPtr
lda (ZPStrPtr)
cmp #'-'
bne .4
ldy #1
lda (ZPStrPtr),y
ldx OptionList
.2 cmp OptionList,x
beq .3
dex
bne .2
.9 >PUSHBI 0
>LDYA L.MSG.USAGE
>SYSCALL printf
lda #E.SYN
sec
rts
.3 ldy OptionVars-1,x
lda #$80
sta (pData),y
bra CS.RUN.CheckArg
.4 lda ArgUsername
bne .9
lda ArgIndex
sta ArgUsername
bra CS.RUN.CheckArg
.8 lda ArgUsername
beq .9
clc
rts
*--------------------------------------
@ -159,22 +142,18 @@ CS.RUN.RmDir >LDA.G bDelete
adc /S.PW.DIR
>SYSCALL remove
rts
.1 >PUSHW L.CMD.RM
>LDYA ZPStrPtr
>SYSCALL strcpy
lda ZPPWPtr
clc
adc #S.PW.DIR
tay
lda ZPPWPtr+1
adc /S.PW.DIR
>LDYA ZPStrPtr
>SYSCALL strcat
>PUSHBI S.PS.F.HOLD
>LDYA ZPStrPtr
>SYSCALL execl
@ -191,14 +170,10 @@ CS.DOEVENT sec
*--------------------------------------
CS.QUIT lda ZPhStr
beq .8
>SYSCALL freemem
.1 lda ZPhPW
beq .8
>SYSCALL freemem
.8 clc
rts
*--------------------------------------

View File

@ -71,14 +71,11 @@ CS.RUN >INC.G ArgIndex
>SYSCALL ArgV
bcs .8
>STYA ZPPtr1
lda (ZPPtr1)
cmp #'-'
bne .4
jsr CS.RUN.CheckOpt
bcc CS.RUN
.9 >PUSHBI 0
>LDYA L.MSG.USAGE
>SYSCALL printf
@ -88,15 +85,12 @@ CS.RUN >INC.G ArgIndex
*--------------------------------------
.4 >LDA.G hSrcBasePath
bne .9
>LDYA ZPPtr1
jsr InitSrcDirYA
bcc CS.RUN
rts
.8 >LDA.G hSrcBasePath
beq .9
>LDYAI 256
>SYSCALL getmem
bcs .99
@ -107,13 +101,10 @@ CS.RUN >INC.G ArgIndex
>LDA.G hSrcBasePath
>SYSCALL GetMemPtr
>STYA ZPPtr1
ldy #$ff
.80 iny
lda (ZPPtr1),y
bne .80
tya
clc
adc ZPFullPath
@ -127,22 +118,18 @@ CS.RUN >INC.G ArgIndex
bcs .99
>STYA ZPLineBuf
txa
>STA.G hMem
>STA.G hMem
*--------------------------------------
CS.RUN.LOOP ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL feof
bcs .99
tay
bne .10
>SYSCALL GetChar
bcs .99
cmp #$03 Ctrl-C
beq .99 Abort....
cmp #$13 Ctrl-S
bne .10
@ -150,21 +137,17 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
eor #$ff
sta bPause
bne CS.RUN.LOOP
.10 lda bPause
bne CS.RUN.LOOP Pause...
jsr GetEntry
bcs .9
ldy #S.STAT.P.DRIVE
lda (ZPFileStat),y ProDOS Device ?
beq .5
jsr CS.RUN.DEV
bcc CS.RUN.LOOP
rts
.5 ldy #S.STAT.P.TYPE
lda (ZPFileStat),y
cmp #$0F Directory ?
@ -173,7 +156,6 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
jsr CS.RUN.DIR
bcs .99
bra .8
.6 jsr CS.RUN.FILE
bcs .99
bra .8
@ -182,41 +164,33 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
bcs .90
jsr BasePath..
.8 jsr GetNextEntry
jmp CS.RUN.LOOP
.90 jsr CS.RUN.PrintTstat
lda #0
sec
.99 rts
*--------------------------------------
CS.RUN.DIR lda bRecurse
bpl .8
lda (ZPFileName)
cmp #'.'
beq .8
>LDYA ZPFileName
jsr EnterSubDirYA
jmp CS.RUN.CheckErr
.8 clc
rts
*--------------------------------------
CS.RUN.DEV
.8 jsr GetNextEntry
clc
clc
.9 rts
*--------------------------------------
CS.RUN.FILE jsr FilterMatch
bcs .8 no match, skip....
jsr CS.RUN.GetFilePath
jsr CS.RUN.OpenFile
bcs .9
@ -225,51 +199,39 @@ CS.RUN.FILE jsr FilterMatch
>LDA.G hFile
>SYSCALL fgets
bcs .6
jsr CS.RUN.IncFLine
ldy #$ff
stz bInWord
.2 iny
lda (ZPLineBuf),y
beq .1
cmp #C.SPACE
beq .3
cmp #C.TAB
bne .4
.3 lda bInWord
beq .5
jsr CS.RUN.IncFWord
stz bInWord
bra .5
.4 inc bInWord
.4 inc bInWord
.5 jsr CS.RUN.IncFChar
bra .2
.6 cmp #MLI.E.EOF
bne .7
jsr CS.RUN.CloseFile
jsr CS.RUN.PrintFstat
bcs .99
jsr CS.RUN.AddFstat2Tstat
lda bTotal
bmi .8
beq .61
lda #$fe
.61 inc
sta bTotal
.8 clc
rts
@ -285,9 +247,7 @@ CS.RUN.CheckErr bcc .9
>PUSHA
>PUSHBI 1
>LDYA L.MSG.ERR
>SYSCALL printf
lda bContinue
eor #$80
asl
@ -298,11 +258,8 @@ CS.RUN.GetFilePath
>LDA.G hSrcBasePath
>SYSCALL GetMemPtr
>PUSHYA
>LDYA ZPFullPath
>SYSCALL StrCpy
>PUSHW ZPFileName
>LDYA ZPFullPath
>SYSCALL StrCat
@ -311,12 +268,10 @@ CS.RUN.GetFilePath
CS.RUN.OpenFile ldx #12
ldy #fCharCount
lda #0
.1 sta (pData),y
iny
dex
bne .1
>PUSHWZ Aux type
>PUSHBI 0 Type
>PUSHBI O.RDONLY+O.TEXT
@ -324,7 +279,6 @@ CS.RUN.OpenFile ldx #12
>SYSCALL FOpen
bcs .9
>STA.G hFile
.9 rts
@ -333,7 +287,6 @@ CS.RUN.CloseFile
>LDA.G hFile
>SYSCALL fclose
bcs .9
>STZ.G hFile
.9 rts
*--------------------------------------
@ -348,7 +301,6 @@ CS.RUN.IncFLine phy
CS.RUN.IncFWord phy
ldy #fWordCount
ldx #4
CS.RUN.IncF lda (pData),y
inc
sta (pData),y
@ -356,16 +308,14 @@ CS.RUN.IncF lda (pData),y
iny
dex
bne CS.RUN.IncF
.8 ply
rts
rts
*--------------------------------------
CS.RUN.AddFstat2Tstat
>PUSHL.G fWordCount
>PUSHL.G tWordCount
>FPU ADD32
>PULLL.G tWordCount
>PUSHL.G fLineCount
>PUSHL.G tLineCount
>FPU ADD32
@ -389,7 +339,6 @@ CS.RUN.PrintFstat
*--------------------------------------
CS.RUN.PrintTstat
lda bTotal
bpl .8
>PUSHL.G tWordCount
>PUSHL.G tLineCount
@ -404,19 +353,15 @@ CS.DOEVENT sec
*--------------------------------------
CS.QUIT jsr LeaveSubDir
bcc CS.QUIT
>LDA.G hFilter
beq .1
>SYSCALL FreeMem
.1 >LDA.G hSrcFullPath
beq .2
>SYSCALL FreeMem
.2 >LDA.G hMem
beq .8
>SYSCALL FreeMem
.8 clc
rts
*--------------------------------------
@ -432,7 +377,6 @@ CS.RUN.CheckOpt ldy #1
sec
rts
.3 ldy OptionVars,x
lda #$ff
sta 0,y

View File

@ -32,7 +32,7 @@ CS.START cld
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.EVENT
@ -49,22 +49,17 @@ CS.RUN >LDYA L.MSG0
ldx #1
stx USRID
.1 lda S.Table.hSession-1,x
beq .7
lda S.Table.hFile-1,x
tax
jsr CS.RUN.GETIO
>PUSHYA
ldx USRID
lda S.Table.hSession-1,x
>SYSCALL GetMemPtr
>STYA ZPSessionPtr
lda ZPSessionPtr
clc
adc #S.SESSION.NAME
@ -72,30 +67,23 @@ CS.RUN >LDYA L.MSG0
lda ZPSessionPtr+1
adc /S.SESSION.NAME
>PUSHYA
>PUSHB (ZPSessionPtr)
ldy #S.SESSION.UID
>PUSHB (ZPSessionPtr),y
>PUSHB USRID
>PUSHBI 7
>LDYA L.MSG1
>SYSCALL printf
.7 inc USRID
ldx USRID
cpx #K.USR.MAX+1
bne .1
.8 lda #0 tell TSKMGR that all done ok, but
sec we do not want to stay in memory
.9 rts
*--------------------------------------
CS.RUN.GETIO lda OF.Table.hPath-1,x
bne .1
lda OF.Table.hFD-1,x
tax
@ -109,7 +97,6 @@ CS.RUN.GETIO lda OF.Table.hPath-1,x
adc /S.FD.DEV
rts
.1 >SYSCALL GetMemPtr
rts
*--------------------------------------

View File

@ -11,7 +11,6 @@ Count .BS 2
RC .BS 1
.DO X.COPY.TO.DEST=1
hDstFileName .BS 1
hDstFullPath .BS 1
hDstFile .BS 1
@ -20,9 +19,7 @@ hCopyBuf .BS 1
CopyRC .BS 1
.FIN
.DO X.DELETE.SOURCE=1
hToDelete .BS 1
.FIN

View File

@ -23,7 +23,7 @@ CS.START cld
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
@ -40,21 +40,18 @@ L.MSG.DONE .DA MSG.DONE
L.STAT .DA STAT
.DA 0
*--------------------------------------
CS.INIT
CS.INIT
.1 >INC.G ArgCount
>SYSCALL ArgV
bcs .7
>STYA ZPPtr1
lda (ZPPtr1)
cmp #'-'
bne .4
ldy #1
lda (ZPPtr1),y
ldx OptionList
.2 cmp OptionList,x
beq .3
dex
@ -66,12 +63,10 @@ CS.INIT
lda #E.SYN
sec
rts
.3 ldy OptionVars-1,x
lda #$80
sta (pData),y
bra .1
.4 >LDA.G index
.DO X.COPY.TO.DEST=1
@ -86,24 +81,20 @@ CS.INIT
.9 rts
.DO X.COPY.TO.DEST=1
.5 >LDA.G hDstBasePath
.5 >LDA.G hDstBasePath
bne .99 we already have a second arg....error!
>LDYA ZPPtr1
jsr InitDstDirYA
bcc .1 success, scan for any other args
rts
.FIN
.7 >LDA.G index processed all args
beq .99 , no src ? ERROR
.DO X.COPY.TO.DEST=1
>LDA.G hDstBasePath
>LDA.G hDstBasePath
bne .8 we also have a Dst folder
ldy #S.PS.hCWD no dst folder, use actual prefix
lda (pPs),y
>SYSCALL GetMemPtr
@ -117,7 +108,6 @@ CS.INIT
txa
>STA.G hSrcFullPath
sta (pData),y
.DO X.COPY.TO.DEST=1
>LDYAI 256
>SYSCALL getmem
@ -126,7 +116,6 @@ CS.INIT
>STA.G hDstFullPath
.FIN
clc
CS.INIT.RTS rts
*--------------------------------------
@ -134,18 +123,14 @@ CS.RUN ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL feof
bcs CS.INIT.RTS I/O error
tay
bne .15
>SYSCALL GetChar
bcs CS.INIT.RTS I/O error
cmp #$03 Ctrl-C
bne .10
sec
rts Abort....
.10 cmp #$13 Ctrl-S
bne .15
@ -153,7 +138,6 @@ CS.RUN ldy #S.PS.hStdIn
lda (pData),y
eor #$ff
sta (pData),y
.15 ldy #bPause
lda (pData),y
bpl .1
@ -165,24 +149,19 @@ CS.RUN ldy #S.PS.hStdIn
ldy #bCopy
lda (pData),y
beq .2
jsr CS.RUN.Copy
ldy #bCopy Copy completed ?
lda (pData),y
bne .8 no.....exit
clc
ldy #CopyRC
lda (pData),y
.DO X.DELETE.SOURCE=0
beq .20 no copy error
sec
jsr CS.RUN.CheckErr we have an error....
bcs .9
jmp CS.RUN.NEXT
.20 jsr CS.RUN.CheckErr Success!!
jsr CS.RUN.IncCount
jmp CS.RUN.NEXT
@ -202,19 +181,16 @@ CS.RUN ldy #S.PS.hStdIn
ldy #hToDelete
lda (pData),y
beq .3
lda #0
sta (pData),y
ldy #hSrcFullPath
jsr CS.RUN.GetPathY
>SYSCALL remove
bcs .22
jsr CS.RUN.CheckErr Success!!!
jsr CS.RUN.IncCount
jmp CS.RUN.NEXT
.22 jsr CS.RUN.CheckErr
bcs .9
jmp CS.RUN.NEXT
@ -222,14 +198,11 @@ CS.RUN ldy #S.PS.hStdIn
*--------------------------------------
.3 jsr GetEntry
bcs CS.RUN.LEAVE
jsr FilterMatch
bcs CS.RUN.NEXT no match, skip....
.4 ldy #S.STAT.P.DRIVE
lda (ZPFileStat),y ProDOS Device ?
bne .6
ldy #S.STAT.P.TYPE
lda (ZPFileStat),y
cmp #$0F Directory ?
@ -237,17 +210,14 @@ CS.RUN ldy #S.PS.hStdIn
>LDA.G bRecurse
bpl CS.RUN.NEXT
lda (ZPFileName)
cmp #'.'
beq CS.RUN.NEXT Skip "." & ".."
jsr CS.RUN.BuildFilePath
jmp CS.RUN.DIR
.5 jsr CS.RUN.BuildFilePath
jmp CS.RUN.FILE
.6 lda #MLI.E.UNSUPST
sec
.9 rts
@ -260,15 +230,12 @@ CS.RUN.NEXT jsr GetNextEntry
CS.RUN.LEAVE jsr LeaveSubDir exit this sub dir....
bcs .99 base, we are done, exit
jsr BasePath..
.DO X.DELETE.SOURCE=1
* .DO X.COPY.TO.DEST=0
jsr GetEntry
bcs *
jsr CS.RUN.BuildFilePath
jsr CS.RUN.DIR.MSG
bcs CS.RUN.LEAVE.RTS
@ -286,16 +253,13 @@ CS.RUN.LEAVE jsr LeaveSubDir exit this sub dir....
.99 ldy #bQuiet
lda (pData),y
bmi .91
ldy #Count+1
>PUSHB (pData),y
dey
>PUSHB (pData),y
>PUSHBI 2
>LDYA L.MSG.DONE
>SYSCALL printf
.91 ldy #RC
lda (pData),y get global RC in case of bContinue
sec
@ -313,47 +277,34 @@ CS.RUN.DIR .DO X.COPY.TO.DEST=1
>SYSCALL Stat
bcs .3 File Not exists...go create
ldy #bNoConfirm
lda (pData),y
bmi .21 no prompt, nothing to create, enter subdir
jsr CS.RUN.OVERWRITE.MSG
bcs CS.RUN.DIR.RTS
.1 >SLEEP
>SYSCALL GetChar
bcs .1
cmp #3
beq .99 abort
cmp #'N'
bne .2
jmp CS.RUN.CR.NEXT no overwrite, nothing to do, no recurse
.2 cmp #'Y'
beq .21 no create, but recurse
cmp #'A'
bne .1
ldy #bNoConfirm
lda #$ff
sta (pData),y
.21 clc
lda #0
bra .4
.3 ldy #hDstFullPath
jsr CS.RUN.GetPathY
>SYSCALL mkdir
.4 jsr CS.RUN.CheckErr
bcs CS.RUN.DIR.RTS
jsr CS.RUN.IncCount
.FIN
@ -369,46 +320,34 @@ CS.RUN.FILE jsr CS.RUN.FILE.MSG
bcs CS.RUN.DIR.RTS
.DO X.COPY.TO.DEST=1
>PUSHW L.STAT
ldy #hDstFullPath
jsr CS.RUN.GetPathY
>SYSCALL Stat
bcs .2 File Not exists...go create
ldy #bNoConfirm
lda (pData),y
bmi .2 no prompt, ovverwrite
jsr CS.RUN.OVERWRITE.MSG
bcs .9
.1 >SLEEP
>SYSCALL GetChar
bcs .1
cmp #3
beq .99 abort
cmp #'N'
bne .11
jmp CS.RUN.CR.NEXT no overwrite exit
.90 rts
.11 cmp #'Y'
beq .12 copy
cmp #'A'
bne .1
ldy #bNoConfirm
lda #$ff
sta (pData),y
.12 jsr GetEntry get back current entry corrupted by SLEEP
.2 .DO X.DELETE.SOURCE=1 mv file, check if srcbase=dstbase
ldy #hSrcBasePath
jsr CS.RUN.GetPathY
@ -419,13 +358,11 @@ CS.RUN.FILE jsr CS.RUN.FILE.MSG
>SYSCALL StrCaseCmp
bcs .3 not same dir, go copy/delete
jsr CS.RUN.Rename
jsr CS.RUN.CheckErr
bcs .9
jmp CS.RUN.NEXT
.FIN
.3 jsr CS.RUN.CopyStart
bcc .4
jsr CS.RUN.CheckErr
@ -440,7 +377,6 @@ CS.RUN.FILE jsr CS.RUN.FILE.MSG
ldy #hToDelete
sta (pData),y
.FIN
clc
.9 rts
@ -456,15 +392,11 @@ CS.RUN.FILE.MSG clc
>LDA.G bQuiet
bmi .8
php
.DO X.COPY.TO.DEST=1
ldy #hDstFullPath
jsr CS.RUN.GetPathY
>PUSHYA
.FIN
ldy #hSrcFullPath
jsr CS.RUN.GetPathY
>PUSHYA
@ -472,30 +404,24 @@ CS.RUN.FILE.MSG clc
.DO X.COPY.TO.DEST=1
>PUSHBI 4
.ELSE
>PUSHBI 2
.FIN
plp
bcc .1
>LDYA L.MSG.DIR
bcs .2
.1 >LDYA L.MSG.FILE
.1 >LDYA L.MSG.FILE
.2 >SYSCALL printf
rts
.8 clc
rts
*--------------------------------------
.DO X.COPY.TO.DEST=1
CS.RUN.OVERWRITE.MSG
>LDA.G bQuiet
bmi .1
jsr CS.RUN.CR
.1 ldy #hDstFullPath
@ -505,11 +431,9 @@ CS.RUN.OVERWRITE.MSG
>LDYA L.MSG.OVERWRITE
>SYSCALL printf
rts
CS.RUN.OVERWRITE.KEY
rts
.FIN
*--------------------------------------
CS.RUN.CR lda #13
@ -525,13 +449,11 @@ CS.RUN.Rename ldy #hDstFullPath
jsr CS.RUN.GetPathY
>PUSHYA
ldy #hSrcFullPath
jsr CS.RUN.GetPathY
>SYSCALL Rename
bcs .9
jsr CS.RUN.IncCount
.9 rts
.FIN
@ -546,16 +468,13 @@ CS.RUN.CopyStart
bcs .99
>STA.G hSrcFile
ldy #hDstFullPath
lda #O.WRONLY+O.CREATE
jsr CS.RUN.Open
bcs .9
ldy #hDstFile
sta (pData),y
ldy #bCopy
lda #$ff
sta (pData),y
@ -564,28 +483,23 @@ CS.RUN.CopyStart
sta (pData),y
clc
rts
.9 pha
>LDA.G hSrcFile
>SYSCALL fclose
pla
.99 ldy #CopyRC
sta (pData),y
sec
rts
*--------------------------------------
CS.RUN.Open phy Save Filename
pha Save open mode
ldy #S.STAT.P.AUXTYPE+1
>PUSHB (ZPFileStat),y
dey
>PUSHB (ZPFileStat),y
ldy #S.STAT.P.TYPE
>PUSHB (ZPFileStat),y
pla
>PUSHA
@ -602,7 +516,6 @@ CS.RUN.Copy >STZ.G hCopyBuf
>STYA ZPPtr1
txa
>STA.G hCopyBuf
>PUSHWI X.COPY.BUF.SIZE Bytes To Read
>PUSHW ZPPtr1 Dst Ptr
>LDA.G hSrcFile
@ -612,16 +525,13 @@ CS.RUN.Copy >STZ.G hCopyBuf
bne .9
lda #0
bra .9
.1 >PUSHYA Bytes To Write
>PUSHW ZPPtr1 Src Ptr
>LDA.G hDstFile
>SYSCALL FWrite
bcs .9
>LDA.G hCopyBuf
>SYSCALL FreeMem
ldy #bQuiet
lda (pData),y
bmi .8
@ -632,10 +542,8 @@ CS.RUN.Copy >STZ.G hCopyBuf
.8 clc
rts
.9 ldy #CopyRC
sta (pData),y
>LDA.G hCopyBuf
beq CS.RUN.CopyEnd
>SYSCALL FreeMem
@ -652,21 +560,16 @@ CS.RUN.CopyEnd >LDA.G hSrcFile
.FIN
*--------------------------------------
CS.RUN.CheckErr bcs .1
>LDA.G bQuiet
bmi .8
>LDYA L.MSG.OK
>SYSCALL puts
.8 rts
.1 pha
>PUSHA
>PUSHBI 1
>LDYA L.MSG.ERR
>SYSCALL printf
>LDA.G bContinue
eor #$80
asl
@ -677,7 +580,6 @@ CS.RUN.BuildFilePath
ldy #hSrcBasePath
jsr CS.RUN.GetPathY
>PUSHYA
ldy #hSrcFullPath
jsr CS.RUN.GetPathY
>STYA ZPPtr1
@ -687,13 +589,10 @@ CS.RUN.BuildFilePath
>PUSHW ZPFileName
>LDYA ZPPtr1
>SYSCALL StrCat
.DO X.COPY.TO.DEST=1
ldy #hDstBasePath
jsr CS.RUN.GetPathY
>PUSHYA
ldy #hDstFullPath
jsr CS.RUN.GetPathY
>STYA ZPPtr1
@ -703,11 +602,9 @@ CS.RUN.BuildFilePath
ldy #hDstFileName
lda (pData),y
beq .1
>SYSCALL GetMemPtr
>PUSHYA
bra .2
.1 >PUSHW ZPFileName
.2 >LDYA ZPPtr1
@ -730,22 +627,17 @@ CS.QUIT jsr LeaveSubDir
.DO X.COPY.TO.DEST=1
>LDA.G bCopy
bpl .1
>LDA.G hSrcFile
>SYSCALL fclose
>LDA.G hDstFile
>SYSCALL fclose
.1 ldy #hDstFullPath
jsr .7
ldy #hDstFilename
jsr .7
.FIN
ldy #hSrcFullPath
jsr .7
ldy #hFilter
.7 lda (pData),y

View File

@ -20,34 +20,27 @@ X.MAX.RECURSE .EQ 8
FilterMatch >LDA.G index
dec
bne .8 in a subdir, match everything
>LDA.G hFilter
beq .8 No filter....
>SYSCALL GetMemPtr
>STYA ZPPtr2
ldy #S.STAT.FSID
lda (ZPFileStat),y
bne .10 not prodos...
>LDYA ZPPtr2 CI compare
>SYSCALL strupr
.10 lda (ZPPtr2) Get pattern 1st byte
beq .8 Match always if empty
ldy #0
bra .21
.1 inc ZPPtr2 Make PTR2 (pattern) advance to next char
bne .2
inc ZPPtr2+1
.2 lda (ZPPtr2) get pattern char
beq .41 end of pattern...
.21 cmp #'*'
beq .5
@ -60,11 +53,9 @@ FilterMatch >LDA.G index
cmp (ZPFileName),y Regular Char, compare with string at Y
bne .9 no match, exit
.4 iny advance to next char to compare
bra .1 continue if remaining char in pattern
.4 iny advance to next char to compare bra .1 continue if remaining char in pattern
.41 lda (ZPFileName),y end of pattern, but end of string ?
beq .8 yes, string matched entirely
* no, remaining char in string, no match
.9 sec
@ -73,7 +64,6 @@ FilterMatch >LDA.G index
.5 inc ZPPtr2 Make PTR2 advance to next char
bne .6
inc ZPPtr2+1
.6 lda (ZPPtr2) we have '*', last char of pattern ?
beq .8 yes, match everything, including empty string
@ -100,7 +90,6 @@ FilterMatch >LDA.G index
InitSrcDirYA >SYSCALL RealPath
bcc .10
rts
.10 >STYA ZPPtr1
txa
>STA.G hFullPath
@ -118,49 +107,36 @@ InitSrcDirYA >SYSCALL RealPath
>LDA.G STAT+S.STAT.P.TYPE
cmp #S.FI.T.DIR
bne .4 TYPE not a DIR, extract....
bra .5 TYPE=DIR, do not extract pattern
.ELSE
bra .5 TYPE=DIR, do not extract pattern .ELSE
bra .4
.FIN
.1 ldy #0 TYPE is not DIR, check if wc
.11 iny
lda (ZPPtr1),y Get Src Path Len
bne .11
dey
ldx #0 Init Wildcard count
.2 lda (ZPPtr1),y search backward for a /
cmp #'/'
beq .3
cmp #'?' Test if some wildcard chars....
beq .21
cmp #'*'
bne .22
.21 inx inc wildcard count
.22 dey
bne .2
.3 txa
beq .91 no wc, file not found....
.4 ldy #0
.41 iny Search end of string.....
lda (ZPPtr1),y
bne .41
lda #'/'
.42 dey
cmp (ZPPtr1),y Search backward /
bne .42
tya
sec +1 to skip '/'
adc ZPPtr1
@ -169,7 +145,6 @@ InitSrcDirYA >SYSCALL RealPath
lda ZPPtr1+1
adc #0
sta ZPPtr2+1
>SYSCALL strdup
bcs .9
txa
@ -177,22 +152,18 @@ InitSrcDirYA >SYSCALL RealPath
lda #0
sta (ZPPtr2)
.5 >LDYAI 256
>SYSCALL GetMem Get a 256 buffer to store BasePath
bcs .9
>STYA ZPPtr2
txa
>STA.G hSrcBasePath
ldy #$ff
.6 iny
lda (ZPPtr1),y
sta (ZPPtr2),y
bne .6
dey
lda #'/'
cmp (ZPPtr2),y
@ -203,24 +174,17 @@ InitSrcDirYA >SYSCALL RealPath
iny
lda #0
sta (ZPPtr2),y
.7 >LDYA ZPPtr2
>SYSCALL OpenDir
bcs .9
ldy #hDIRs
sta (pData),y set hDIRs[0] = Src Hdir
ldy #index
lda #1
sta (pData),y index=hDIRs[0]
jsr .9 Cleanup
clc
rts
.91 lda #MLI.E.FNOTFND
.9 pha
@ -232,35 +196,28 @@ InitSrcDirYA.RTS
rts
*--------------------------------------
.DO X.COPY.TO.DEST=1
InitDstDirYA >SYSCALL RealPath
bcs InitSrcDirYA.RTS
>STYA ZPPtr1
txa
>STA.G hFullPath
>PUSHEA.G STAT
>LDYA ZPPtr1
>SYSCALL Stat
bcs .1 File/DIR does not exists, go extract DstFileName
>LDA.G STAT+S.STAT.P.TYPE
cmp #S.FI.T.DIR
beq .5 Dst is a directory...no destfilename
.1 ldy #0
.11 iny Search end of string.....
lda (ZPPtr1),y
bne .11
lda #'/'
.2 dey
cmp (ZPPtr1),y Search backward /
bne .2
tya
sec +1 to skip '/'
adc ZPPtr1
@ -276,29 +233,23 @@ InitDstDirYA >SYSCALL RealPath
>STA.G hDstFileName
lda #0
sta (ZPPtr2)
sta (ZPPtr2)
.5 >LDYAI 256
>SYSCALL GetMem Get a 256 buffer to store DstBasePath
bcs .9
>STYA ZPPtr2
txa
>STA.G hDstBasePath
ldy #$ff
.6 iny
lda (ZPPtr1),y
sta (ZPPtr2),y
bne .6
dey
lda #'/'
cmp (ZPPtr2),y
beq .7
iny
sta (ZPPtr2),y
iny
@ -316,33 +267,27 @@ InitDstDirYA >SYSCALL RealPath
pla
sec
rts
.FIN
*--------------------------------------
GetNextEntry jsr GetEntry
bcs .9
jsr GetFilenameLen Save actual file len for setting up
pha new offset later
lda ZPFileStat
clc
adc #S.STAT
sta ZPFileName
lda ZPFileStat+1
adc /S.STAT
sta ZPFileName+1 Make nDIRENTs[i] point to next DIRENT
jsr GetFilenameLen are we at end of this buffer ?
beq .1 yes, go read next one ...
jsr SetFileStatPtr
jsr GetoDIRENT
pla Get back previous file len
sec
adc (pData),y
sta (pData),y
@ -351,9 +296,7 @@ GetNextEntry jsr GetEntry
lda #0
adc (pData),y
sta (pData),y
dey
lda #S.STAT
clc
adc (pData),y
@ -365,16 +308,13 @@ GetNextEntry jsr GetEntry
sta (pData),y
clc
rts
.1 pla
jsr GetEntry.ReadDir
bcs .9
jsr GetFilenameLen
beq GetNextEntry.99
jsr SetFileStatPtr
clc
.9 rts
@ -383,7 +323,6 @@ GetNextEntry.99 sec
*--------------------------------------
GetEntry jsr GethDIRENT
bne .1 we have a buffer to scan
jsr GetEntry.ReadDir First run, get first block
bcs .9 ZPFileName = start of buffer
@ -395,19 +334,15 @@ GetEntry jsr GethDIRENT
.1 >SYSCALL GetMemPtr
>STYA ZPFileName
jsr GetoDIRENT
lda ZPFileName
clc
adc (pData),y
sta ZPFileName
iny
lda ZPFileName+1
adc (pData),y
sta ZPFileName+1 ZPFileName=ZPFileName+oDIRENT
.8 jsr GetFilenameLen
jsr SetFileStatPtr
@ -429,7 +364,6 @@ GetEntry.ReadDir
>SYSCALL ReadDir
bcs .9
>STYA ZPFileName
ldy #index
lda (pData),y
clc
@ -437,9 +371,7 @@ GetEntry.ReadDir
tay
txa get hDIRENT in A
sta (pData),y
jsr GetoDIRENT
lda #0 and reset offset for this buffer
sta (pData),y
iny
@ -455,13 +387,11 @@ EnterSubDirYA >STYA ZPPtr2 save SUBDIR for StrCat
ldy #hSrcBasePath
jsr EnterSubDirY
>LDYA ZPPtr1
>SYSCALL OpenDir
bcs .9
pha
>INC.G index
tax
* clc from BCS
@ -469,38 +399,31 @@ EnterSubDirYA >STYA ZPPtr2 save SUBDIR for StrCat
tay
pla
sta (pData),y
txa make sure hDIRENTs[i] is closed
adc #hDIRENTs-1
tay
lda #0
sta (pData),y
.DO X.COPY.TO.DEST=1
ldy #hDstBasePath
jsr EnterSubDirY
.FIN
clc
.9 rts
EnterSubDirY lda (pData),y
>SYSCALL GetMemPtr
>STYA ZPPtr1 save full path
jsr .1 Make sure ending with /
>PUSHW ZPPtr2
>LDYA ZPPtr1
>SYSCALL StrCat
.1 ldy #0
.2 iny
lda (ZPPtr1),y
bne .2
dey
lda #'/'
cmp (ZPPtr1),y
@ -510,15 +433,12 @@ EnterSubDirY lda (pData),y
iny
lda #0
sta (ZPPtr1),y
.8 rts
*--------------------------------------
LeaveSubDir >LDA.G index
beq .9
jsr GethDIRENT.A
beq .1
pha
lda #0
sta (pData),y
@ -526,7 +446,6 @@ LeaveSubDir >LDA.G index
>SYSCALL FreeMem
.1 jsr GethDIR
pha
lda #0
sta (pData),y
@ -535,7 +454,6 @@ LeaveSubDir >LDA.G index
>DEC.G index
bne .8
ldy #hSrcBasePath
lda (pData),y
>SYSCALL FreeMem
@ -545,10 +463,8 @@ LeaveSubDir >LDA.G index
lda (pData),y
>SYSCALL FreeMem
.FIN
.9 sec
rts
.8 clc
rts
*--------------------------------------
@ -556,31 +472,21 @@ BasePath.. .DO X.COPY.TO.DEST=1
ldy #hDstBasePath
jsr BasePath..1
.FIN
ldy #hSrcBasePath
BasePath..1 lda (pData),y
>SYSCALL GetMemPtr
>STYA ZPPtr1 save full path
ldy #$ff
.1 iny
.1 iny
lda (ZPPtr1),y get len
bne .1
dey discard ending /
.2 dey
lda (ZPPtr1),y
cmp #'/'
bne .2
iny
lda #0
sta (ZPPtr1),y cut DIR2/ from /dir1/DIR2/
@ -591,9 +497,7 @@ GetFilenameLen ldy #$ff
.1 iny
lda (ZPFileName),y
bne .1
tya
rts
*--------------------------------------
SetFileStatPtr sec
@ -611,7 +515,7 @@ GethDIR ldy #index
tay
lda (pData),y
rts
*--------------------------------------
*--------------------------------------
GethDIRENT ldy #index
lda (pData),y
GethDIRENT.A clc

View File

@ -9,7 +9,7 @@ C2.MASK .DA #%01111110
.DA #%01110000
.DA #%01100000
.DA #%01000000
* .DA #%00000000
* .DA #%00000000
C1.MASK
Mask7BitsL .DA #%00000000 Useless
.DA #%00000001
@ -58,7 +58,6 @@ C1.DATA .DA #%11111111 set (ORA) COL 1 bits
* .DA #%01100000
* .DA #%01000000
* .DA #%00000000
C2.DATA .DA #%10000001 set (ORA) COL 2 bits
.DA #%10000011
.DA #%10000111

View File

@ -18,36 +18,28 @@ NEW
BITBLT ldy CB.CACHE+S.CB.SrcPtr
lda CB.CACHE+S.CB.SrcPtr+1
bne BITBLT.1
sta SETREADAUX
sta SETWRITEAUX
tya
>SYSCALL2 GetMemPtr
jsr BITBLT.1
sta CLRREADAUX
sta CLRWRITEAUX
rts
BITBLT.1 >STYA ZPBMDataPtr
ldy #S.BM-1
.1 lda (ZPBMDataPtr),y
sta BM.Cache,y
dey
bpl .1
ldx #0
lda BM.Cache+S.BM.F
cmp #S.BM.F.BBP1
beq .11
ldx #$80
.11 stx BLT.CMASK
lda ZPBMDataPtr
clc
adc BM.Cache+S.BM.MASK.OFS
@ -55,23 +47,18 @@ BITBLT.1 >STYA ZPBMDataPtr
lda ZPBMDataPtr+1
adc BM.Cache+S.BM.MASK.OFS+1
sta ZPBMMaskPtr+1
lda ZPBMDataPtr
clc
adc #S.BM
sta ZPBMDataPtr
bcc .2
inc ZPBMDataPtr+1
.2 >LDYA CB.Cache+S.CB.DstPtr
>STYA ZPBMSavePtr
>LDYA CB.Cache+S.CB.Y1
ldx BM.Cache+S.BM.RowBytes
jsr YAMultX
pha
tya
clc
@ -81,27 +68,23 @@ BITBLT.1 >STYA ZPBMDataPtr
pha
adc ZPBMDataPtr+1
sta BLT.BMDataPtr+1
tya
adc ZPBMMaskPtr
sta BLT.BMMaskPtr
pla
adc ZPBMMaskPtr+1
sta BLT.BMMaskPtr+1
lda CB.Cache+S.CB.X1
pha
and #7
sta BLT.BMBitOfs
pla
lsr CB.Cache+S.CB.X1+1
ror
lsr CB.Cache+S.CB.X1+1
ror
lsr CB.Cache+S.CB.X1+1
ror
pha
clc
adc BLT.BMDataPtr
@ -110,18 +93,14 @@ BITBLT.1 >STYA ZPBMDataPtr
inc BLT.BMDataPtr+1
clc
.3 pla
adc BLT.BMMaskPtr
sta BLT.BMMaskPtr
bcc .4
inc BLT.BMMaskPtr+1
.4 >LDYA CB.Cache+S.CB.DstX
jsr LBUF.SetBounds1YA
stx BLT.SCRBitOfs
lda CB.Cache+S.CB.DstX
clc
adc CB.Cache+S.CB.SrcW
@ -135,36 +114,29 @@ BITBLT.1 >STYA ZPBMDataPtr
pla
sbc #0
jsr LBUF.SetBounds2YA
ldx BLT.SCRBitOfs
beq BITBLT.LOOP0
ldy Shift.L.LO-1,x X = 1->6
sty ZPScrShiftPtr
ldy Shift.L.HI-1,x X = 1->6
sty ZPScrShiftPtr+1
lda Shift7BitsCol1,x get #%00001111, BM bits that go in Col1
sta BITBLT.LOOPx.2+1
sta BITBLT.LOOPx.6+1
lda Shift7BitsCol2,x get #%01110000, BM bits that go in Col2
sta BITBLT.LOOPx.3+1
sta BITBLT.LOOPx.7+1
jmp BITBLT.LOOPx
*------------ Shift 0
BITBLT.LOOP0 lda CB.Cache+S.CB.OP
bit #S.CB.OP.MASK
beq .2
>LDYA BLT.BMMaskPtr
>STYA ZPBMDataPtr
lda BLT.BMBitOfs
sta BLT.BMBitOfsL
ldx LBUF.C1
stx BLT.ScrColIdx
@ -175,13 +147,10 @@ BITBLT.LOOP0 lda CB.Cache+S.CB.OP
inc BLT.ScrColIdx
cpx LBUF.C2
bne .1
.2 >LDYA BLT.BMDataPtr
>STYA ZPBMDataPtr
lda BLT.BMBitOfs
sta BLT.BMBitOfsL
ldx LBUF.C1
stx BLT.ScrColIdx
@ -193,18 +162,14 @@ BITBLT.LOOP0 lda CB.Cache+S.CB.OP
inc BLT.ScrColIdx
cpx LBUF.C2
bne .3
ldy CB.Cache+S.CB.DstY
jsr LBUF.DrawAtY
inc CB.Cache+S.CB.DstY
dec CB.Cache+S.CB.SrcH
beq .8
lda CB.Cache+S.CB.OP
bit #S.CB.OP.MASK
beq .4
lda BLT.BMMaskPtr
clc
adc BM.Cache+S.BM.RowBytes
@ -218,104 +183,77 @@ BITBLT.LOOP0 lda CB.Cache+S.CB.OP
adc BM.Cache+S.BM.RowBytes
sta BLT.BMDataPtr
bcc .5
inc BLT.BMDataPtr+1
.5 jmp BITBLT.LOOP0
.8 rts
*------------ Shift 1->6 Comment : SCRBitOfs=X=3
BITBLT.LOOPx lda CB.Cache+S.CB.OP X = BLT.SCRBitOfs
bit #S.CB.OP.MASK
beq BITBLT.LOOPx.4
>LDYA BLT.BMMaskPtr
>STYA ZPBMDataPtr
lda BLT.BMBitOfs
sta BLT.BMBitOfsL
ldx LBUF.C1
stx BLT.ScrColIdx
stz LBUF.MASK,x make sure C1 not ORed with trash in "ora LBUF.DATA,x"
BITBLT.LOOPx.1 jsr BLT.Get7BMBits we have c6543210 in A, destination : COL=3210xxx, COL+1=xxxx654
pha save BM byte for 2nd col
BITBLT.LOOPx.2 and #$ff SELF MODIFIED : MASK WITH #%00001111, keep col1 bits only
tay
lda (ZPScrShiftPtr),y make 0000dddd Shift left 3 : 0dddd000
ldx BLT.ScrColIdx Get actual COL index
ora LBUF.MASK,x Light proper bits : 0dddd???
sta LBUF.MASK,x store 0xdddd???
pla Get back BM Byte
BITBLT.LOOPx.3 and #$ff SELF MODIFIED : #%01110000 get only col2 bites
tay
lda (ZPScrShiftPtr),y shift right 4 (=shift left 3!!!) : 00000ddd
sta LBUF.MASK+1,x
inc BLT.ScrColIdx
cpx LBUF.C2
bne BITBLT.LOOPx.1
BITBLT.LOOPx.4 >LDYA BLT.BMDataPtr
>STYA ZPBMDataPtr
lda BLT.BMBitOfs
sta BLT.BMBitOfsL
ldx LBUF.C1
stx BLT.ScrColIdx
stz LBUF.DATA,x make sure C1 not ORed with trash in "ora LBUF.DATA,x"
BITBLT.LOOPx.5 jsr BLT.Get7BMBits we have c6543210 in A, destination : COL=3210xxx, COL+1=xxxx654
pha save BM byte for 2nd col
BITBLT.LOOPx.6 and #$ff SELF MODIFIED : MASK WITH #%00001111, keep col1 bits only
tay
lda (ZPScrShiftPtr),y make 0000dddd Shift left 3 : 0dddd000
ora BLT.CMASK
ldx BLT.ScrColIdx Get actual COL index
ora LBUF.DATA,x Light proper bits : 0dddd???
sta LBUF.DATA,x store 0xdddd???
pla Get back BM Byte
BITBLT.LOOPx.7 and #$ff SELF MODIFIED : #%01110000 get only col2 bites
tay
lda (ZPScrShiftPtr),y shift right 4 (=shift left 3!!!) : 00000ddd
ora BLT.CMASK
sta LBUF.DATA+1,x
inc BLT.ScrColIdx
cpx LBUF.C2
bne BITBLT.LOOPx.5
ldy CB.Cache+S.CB.DstY
jsr LBUF.DrawAtY
inc CB.Cache+S.CB.DstY
dec CB.Cache+S.CB.SrcH
beq .8
lda CB.Cache+S.CB.OP
bit #S.CB.OP.MASK
beq .1
lda BLT.BMMaskPtr
clc
adc BM.Cache+S.BM.RowBytes
@ -329,9 +267,7 @@ BITBLT.LOOPx.7 and #$ff SELF MODIFIED : #%01110000 get only col2 bites
adc BM.Cache+S.BM.RowBytes
sta BLT.BMDataPtr
bcc .2
inc BLT.BMDataPtr+1
.2 jmp BITBLT.LOOPx
.8 rts
@ -349,44 +285,33 @@ BLT.Get7BMBits ldx BLT.BMBitOfsL
dex OFS 0->6
beq BLT.Get7BMBits1 OFS was 1....done and go to next byte, OFS=0
lda Shift.R.LO-1,x X = 1->6
sta ZPBMShiftPtr
lda Shift.R.HI-1,x X = 1->6
sta ZPBMShiftPtr+1
lda (ZPBMDataPtr)
lsr OFS=1->7, shift one (Range 0->127)
and Mask7BitsH,x Get only left upper X bits
tay xxxxx000
lda (ZPBMShiftPtr),y shift'em RIGHT 000xxxxx
pha
inc ZPBMDataPtr Next BM data byte
bne .1
inc ZPBMDataPtr+1
.1 lda (ZPBMDataPtr) get next byte
and Mask7BitsL,x only first Y bits 000000yy
tay
pla get back right part bits 000xxxxx
ora (ZPBMShiftPtr),y shift right 000000yy and ORA with 000xxxxx=0yyxxxxx
dec BLT.BMBitOfsL X = 1->6, ADD 7 MOD 8.....
rts
BLT.Get7BMBits0 lda #7
sta BLT.BMBitOfsL Was 0, add 7 bits
lda (ZPBMDataPtr)
and #%01111111 Get only 7 needed bits
rts
BLT.Get7BMBits1 lda (ZPBMDataPtr)
lsr OFS=1->7, shift one (Range 0->127)

View File

@ -15,7 +15,6 @@ LBUF.SetBounds1YA
LBUF.SetBounds2YA
jsr DIVMOD7YA A=DIV, X=MOD
sta LBUF.C2
cmp LBUF.C1 C1=C2, go combine in C1
beq .1
@ -28,7 +27,6 @@ LBUF.SetBounds2YA
.1 lda C1.MASK,x
and C2.MASK,x
sta LBUF.C1.MASK
lda C1.DATA,x
ora C2.DATA,x
sta LBUF.C1.DATA
@ -38,63 +36,50 @@ LBUF.DrawAtY lda BASEL,y setup line Base Ptr
sta ZPBasePtr
lda BASEH,y
sta ZPBasePtr+1
lda CB.Cache+S.CB.OP
bit #S.CB.OP.RESTORE
bne .4
bit #S.CB.OP.SAVE
beq .3
ldx LBUF.C1
.1 ldy COL.BANK,x
sta $C000,y
ldy COL.OFS,x
lda (ZPBasePtr),y
sta (ZPBMSavePtr)
inc ZPBMSavePtr
bne .2
inc ZPBMSavePtr+1
.2 cpx LBUF.C2
inx
bcc .1
lda CB.Cache+S.CB.OP
.3 and #$F
tax
jmp (J.LBUF.DrawAtY,x)
.4 ldx LBUF.C1
.5 ldy COL.BANK,x
sta $C000,y
ldy COL.OFS,x
lda (ZPBMSavePtr)
sta (ZPBasePtr),y
inc ZPBMSavePtr
bne .6
inc ZPBMSavePtr+1
.6 cpx LBUF.C2
inx
bcc .5
rts
rts
*--------------------------------------
LBUF.DrawAtY.SET
LBUF.DrawAtY.SET
LBUF.DrawAtY.AND.SET USELESS
ldx LBUF.C1 x C1->C2
ldy COL.BANK,x
sta $C000,y
ldy COL.OFS,x
lda (ZPBasePtr),y Clear screen at C1
and LBUF.C1.MASK with MASK bits
sta ZPTmpByte
@ -103,23 +88,20 @@ LBUF.DrawAtY.AND.SET USELESS
and LBUF.C1.DATA set ONLY bits starting at X1 mod 7
ora ZPTmpByte ora with screen bits
sta (ZPBasePtr),y update screen
inx
cpx LBUF.C2
beq .2 C1=C2, go setup C2
bcs .8 C1+1 > C2, we are done...
bcs .8 C1+1 > C2, we are done...
.1 ldy COL.BANK,x
sta $C000,y
ldy COL.OFS,x
lda LBUF.DATA,x set all bytes between C1+1 & C2-1
sta (ZPBasePtr),y
inx
cpx LBUF.C2
bcc .1
.2 ldy COL.BANK,x
sta $C000,y
ldy COL.OFS,x
@ -127,13 +109,11 @@ LBUF.DrawAtY.AND.SET USELESS
lda (ZPBasePtr),y Get C2
and LBUF.C2.MASK clear ONLY bits ending at X2 mod 7
sta ZPTmpByte
lda LBUF.DATA,x get DATA bits
and LBUF.C2.DATA set ONLY bits ending at X2 mod 7
ora ZPTmpByte
sta (ZPBasePtr),y update screen
.8 rts
*--------------------------------------
LBUF.DrawAtY.XOR
@ -147,32 +127,25 @@ LBUF.DrawAtY.XXX
sta .10+1
sta .20+1
sta .30+1
ldx LBUF.C1 x C1->C2
ldy COL.BANK,x
sta $C000,y
ldy COL.OFS,x
lda (ZPBasePtr),y Get C1
and LBUF.C1.MASK clear ONLY bits starting at X1 mod 7
sta ZPTmpByte
lda LBUF.DATA,x get DATA bits
and LBUF.C1.DATA set ONLY bits starting at X1 mod 7
ora ZPTmpByte
.10 ora (ZPBasePtr),y
sta (ZPBasePtr),y update screen
inx
cpx LBUF.C2
beq .2 C1=C2, go setup C2
bcs .8 C1+1 > C2, we are done...
.1 ldy COL.BANK,x
sta $C000,y
ldy COL.OFS,x
lda LBUF.DATA,x set all bytes between C1+1 & C2-1
.20 ora (ZPBasePtr),y
sta (ZPBasePtr),y
@ -180,11 +153,9 @@ LBUF.DrawAtY.XXX
inx
cpx LBUF.C2
bne .1
.2 ldy COL.BANK,x
sta $C000,y
ldy COL.OFS,x
lda (ZPBasePtr),y Get C2
and LBUF.C2.MASK clear ONLY bits ending at X2 mod 7
sta ZPTmpByte
@ -203,7 +174,6 @@ LBUF.DrawAtY.AND.ORA
ldy COL.BANK,x
sta $C000,y
ldy COL.OFS,x
lda LBUF.MASK,x get MASK bits
ora LBUF.C1.MASK clear ONLY bits starting at X1 mod 7
and (ZPBasePtr),y Clear screen at C1
@ -213,16 +183,13 @@ LBUF.DrawAtY.AND.ORA
and LBUF.C1.DATA set ONLY bits starting at X1 mod 7
ora ZPTmpByte ora with screen bits
sta (ZPBasePtr),y update screen
inx
cpx LBUF.C2
beq .2 C1=C2, go setup C2
bcs .8 C1+1 > C2, we are done...
.1 ldy COL.BANK,x
sta $C000,y
ldy COL.OFS,x
lda (ZPBasePtr),y
and LBUF.MASK,x
ora LBUF.DATA,x set all bytes between C1+1 & C2-1
@ -231,21 +198,17 @@ LBUF.DrawAtY.AND.ORA
inx
cpx LBUF.C2
bne .1
.2 ldy COL.BANK,x
sta $C000,y
ldy COL.OFS,x
lda LBUF.MASK,x get MASK bits
ora LBUF.C2.MASK
and (ZPBasePtr),y
sta ZPTmpByte
lda LBUF.DATA,x get DATA bits
and LBUF.C2.DATA set ONLY bits ending at X2 mod 7
ora ZPTmpByte
sta (ZPBasePtr),y update screen
.8 rts
*--------------------------------------
MAN

View File

@ -8,7 +8,6 @@ HLINE lda CB.Cache+S.CB.M
cmp #S.CB.M.MONO
bne HLINE.C16
HLINE.MONO >LDYA CB.Cache+S.CB.X1
jsr LBUF.SetBounds1YA
>LDYA CB.Cache+S.CB.X2
@ -16,11 +15,8 @@ HLINE.MONO >LDYA CB.Cache+S.CB.X1
lda CB.Cache+S.CB.COLOR
beq .1
lda #%01111111
.1 ldx LBUF.C1
.2 sta LBUF.DATA,x
cpx LBUF.C2
inx
@ -28,19 +24,16 @@ HLINE.MONO >LDYA CB.Cache+S.CB.X1
ldy CB.Cache+S.CB.Y1
jmp LBUF.DrawAtY
HLINE.C16 lda CB.Cache+S.CB.X1
and #%11111100
tay
lda CB.Cache+S.CB.X1+1
jsr LBUF.SetBounds1YA
lda CB.Cache+S.CB.X2
ora #%00000011
tay
lda CB.Cache+S.CB.X2+1
jsr LBUF.SetBounds2YA
lda CB.Cache+S.CB.COLOR
@ -52,15 +45,11 @@ HLINE.C16 lda CB.Cache+S.CB.X1
lda L.Color.Pixels+1
adc #0
sta ZPTmpWord+1
ldx LBUF.C1
.1 txa
and #3 Compute index in Palette (Mod 4)
tay
.2 lda (ZPTmpWord),y
sta LBUF.DATA,x
cpx LBUF.C2
inx
@ -81,36 +70,30 @@ VLINE.MONO >LDYA CB.Cache+S.CB.X1
tay
lda COL.OFS,y
sta ZPTmpByte Save COL (DIV)
lda COL.BANK,y
tay
sta $C000,y Select proper BANK
ldy CB.Cache+S.CB.Y1
clc
lda CB.Cache+S.CB.OP
* cmp #S.CB.OP.XOR
beq VLINE.MONO.XOR
lda CB.Cache+S.CB.COLOR
bne VLINE.MONO.WHITE
VLINE.MONO.BLACK
VLINE.MONO.BLACK
.1 lda BASEL,y
adc ZPTmpByte
sta ZPBasePtr
lda BASEH,y
sta ZPBasePtr+1
lda (ZPBasePtr)
and Mono.NMasks,x
sta (ZPBasePtr)
cpy CB.Cache+S.CB.Y2
iny
bcc .1
rts
VLINE.MONO.WHITE
@ -119,20 +102,17 @@ VLINE.MONO.WHITE
VLINE.MONO.XOR
lda #$5D EOR abs,x
sta .2
.1 lda BASEL,y
adc ZPTmpByte
sta ZPBasePtr
lda BASEH,y
sta ZPBasePtr+1
lda (ZPBasePtr)
.2 eor Mono.Masks,x SELF MODIFIED
sta (ZPBasePtr)
cpy CB.Cache+S.CB.Y2
iny
bcc .1
rts
VLINE.C16 lda CB.Cache+S.CB.X1
@ -146,16 +126,13 @@ VLINE.C16 lda CB.Cache+S.CB.X1
.1 phy
phx
jsr SETPIXEL.C16.YX
plx
ply
cpy CB.Cache+S.CB.Y2
iny
bcc .1
rts
*--------------------------------------
MAN

View File

@ -19,27 +19,22 @@ SETPIXEL.MONO >LDYA CB.Cache+S.CB.X1
tay
lda COL.OFS,y
phy
ldy CB.Cache+S.CB.Y1
clc
adc BASEL,y
sta ZPBasePtr
lda BASEH,y
sta ZPBasePtr+1
ply
lda COL.BANK,y
tay
sta $C000,y Select proper BANK
lda CB.Cache+S.CB.OP
* cmp #S.CB.OP.XOR
beq SETPIXEL.MONO.XOR
lda CB.Cache+S.CB.COLOR
bne SETPIXEL.MONO.WHITE
SETPIXEL.MONO.BLACK
SETPIXEL.MONO.BLACK
lda (ZPBasePtr)
and Mono.NMasks,x
sta (ZPBasePtr)
@ -51,15 +46,12 @@ SETPIXEL.MONO.WHITE
and #$7f Clear Color Bit
ora Mono.Masks,x
sta (ZPBasePtr)
rts
SETPIXEL.MONO.XOR
SETPIXEL.MONO.XOR
lda (ZPBasePtr)
and #$7f Clear Color Bit
eor Mono.Masks,x
sta (ZPBasePtr)
rts
SETPIXEL.C16 lda CB.Cache+S.CB.X1
@ -74,23 +66,18 @@ SETPIXEL.C16 lda CB.Cache+S.CB.X1
* Y = PixelX (0,139), X = PixelY (0,191)
SETPIXEL.C16.YX lda DIV7.0,y PixelX MOD 7 (range 0->19)
asl times 2 (range 0->38)
* clc
* clc
adc BASEL,x setup line Base Ptr (cc by asl)
sta ZPBasePtr ZPBasePtr now point to first of...
lda BASEH,x
sta ZPBasePtr+1 ...the 4 columns
lda MOD7.0,y get pixelX MOD7
asl times 4 to compute index in MASK tables
asl
tax set in X for Masks,NMasks
lda CB.Cache+S.CB.COLOR
asl times 4 to compute index in PIXELS table
asl
tay
@ -100,9 +87,7 @@ SETPIXEL.C16.YX lda DIV7.0,y PixelX MOD 7 (range 0->19)
and Color.Pixels,y apply color
sta ZPTmpByte
sta SETPAGE2
lda (ZPBasePtr)
and Color.NMasks,x reset existing pixel,
ora ZPTmpByte
@ -110,50 +95,39 @@ SETPIXEL.C16.YX lda DIV7.0,y PixelX MOD 7 (range 0->19)
.10 inx
iny
lda Color.Masks,x
beq .11
and Color.Pixels,y apply color
sta ZPTmpByte
sta CLRPAGE2
lda (ZPBasePtr)
and Color.NMasks,x reset existing pixel,
ora ZPTmpByte
sta (ZPBasePtr)
.11 inc ZPBasePtr
inx
iny
lda Color.Masks,x
beq .12
and Color.Pixels,y apply color
sta ZPTmpByte
sta SETPAGE2
lda (ZPBasePtr)
and Color.NMasks,x reset existing pixel,
ora ZPTmpByte
sta (ZPBasePtr)
.12 inx
iny
lda Color.Masks,x
beq .13
and Color.Pixels,y apply color
sta ZPTmpByte
sta CLRPAGE2
lda (ZPBasePtr)
and Color.NMasks,x reset existing pixel,
ora ZPTmpByte
sta (ZPBasePtr)
.13 rts
*--------------------------------------
* GETPIXEL

View File

@ -23,7 +23,6 @@ FILLRECT jsr HLINE
ply
cpy CB.Cache+S.CB.Y2
bne .2
.8 rts
*--------------------------------------
* 4 : SrcX1
@ -34,22 +33,17 @@ FILLRECT jsr HLINE
*--------------------------------------
GETRECTBUFSIZE >LDYA CB.Cache+S.CB.X1
jsr DIVMOD7YA
sta ZPTmpByte
>LDYA CB.Cache+S.CB.X2
jsr DIVMOD7YA
inc COL2 + 1
sec
sbc ZPTmpByte (COL2+1)-COL1
tax
>LDYA CB.Cache+S.CB.Y1
jsr YAMultX
phy
ldy #S.CB.DstPtr+1
sta (ZPIOCTL),y
pla

View File

@ -40,58 +40,42 @@ L.FD.DEV.NAME .DA FD.DEV.NAME
*--------------------------------------
Dev.Detect >LDYA L.MSG.DETECT
>SYSCALL puts
lda MACHID
and #MACHID.T
cmp #MACHID.T.IIc
bne .1
* stz DCB+S.DCB.GFX.S //c : 80c Mode
>LDYA L.MSG.DETECT.IIC
bra .3
.1 php
sei
sta SET80STORE
sta SETPAGE2
ldx $400 Save Aux $400
lda #$ff Make sure !=1 for comparing later
sta $400
sta CLRPAGE2
ldy $400 Save Main $400
lda #$01 Select Foreground/BKgrnd Colors
sta TXT16.ON Activate 16 color mode
sta $400 Store something in Main
sta SETPAGE2
eor $400 read back AUX, If EVE, must be F/BG colors
bne .2
dec
sta DCB+S.DCB.GFX.S 0=80C,$ff=EVE
.2 stx $400 Set back Aux $400
sta CLRPAGE2
sty $400 Set back Main $400
sta TXT16.OFF
plp
>LDYA L.MSG.DETECT.EVE
bit DCB+S.DCB.GFX.S
bmi .3
>LDYA L.MSG.DETECT.80C
.3 >SYSCALL puts
>PUSHWI DRV.END
@ -101,12 +85,10 @@ Dev.Detect >LDYA L.MSG.DETECT
>SYSCALL InsDrv
bcs .9
>STYA FD.DEV+S.FD.DEV.DRVPTR
>PUSHW L.FD.DEV.NAME
>LDYA L.FD.DEV
>SYSCALL MKDEV
bcs .9
php
sei
>LDYAI $4000
@ -114,32 +96,26 @@ Dev.Detect >LDYA L.MSG.DETECT
sta SETWRITEAUX
>STYA $800
sta CLRWRITEAUX
sta SETHIRES
sta SET80STORE
jsr ClrScr
plp
.9 rts
*--------------------------------------
ClrScr ldx #0
txa lda #0
.1 ldy BASEL,x
sty ZPPtr
ldy BASEH,x
sty ZPPtr+1
sta SETPAGE2
jsr .2
sta CLRPAGE2
jsr .2
inx
cpx #192
bne .1
@ -147,11 +123,9 @@ ClrScr ldx #0
rts
.2 ldy #39
.3 sta (ZPPtr),y
dey
bpl .3
rts
*--------------------------------------
CS.END
@ -235,7 +209,7 @@ L.SHIFT .DA SHIFT.L1
.DA SHIFT.L4
.DA SHIFT.L5
.DA SHIFT.L6
L.Color.Pixels .DA Color.Pixels
L.Color.Pixels .DA Color.Pixels
.DA 0 end or relocation
*--------------------------------------
STATUS >STYA ZPIOCTL
@ -250,19 +224,15 @@ STATUS >STYA ZPIOCTL
ldy #S.IOCTL.STATCODE
lda (ZPIOCTL),y
beq .1
cmp #S.IOCTL.STATCODE.GETDIB
bne STATUS.DCB
ldy #S.DIB-1
.HS 2C bit abs
.1 ldy #3
.2 lda DIB,y
sta (ZPBasePtr),y
dey
bpl .2
clc
rts
@ -270,7 +240,6 @@ STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
bne STATUS.9
ldy #S.DCB.GFX-1
.2 lda DCB,y
sta (ZPBasePtr),y
dey
@ -278,7 +247,6 @@ STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
clc
rts
STATUS.9 lda #MLI.E.BADCTL
sec
rts
@ -290,29 +258,22 @@ OPEN tax DEV.ID in A
bne CLOSE.IOE
txa
ldx #0
.10 ldy A2osX.SCRNDEVS,x
beq .20
inx
cpx #K.SCR.MAX
bne .10
lda #E.OOH
sec
rts
.20 sta A2osX.SCRNDEVS,x
sta DCB+S.DCB.GFX.DEVID
lda #S.DIB.S.OPENED
tsb DIB+S.DIB.S
ldx #0
ldy #0
.1 lda L.SHIFT,x Get relocated LO BYTE
sta Shift.L.LO,y
inx
@ -323,10 +284,8 @@ OPEN tax DEV.ID in A
iny
cpy #6
bne .1
ldx #0 SHIFT.L1 = SHIFT.R6 !!!
ldy #5
.2 lda L.SHIFT,x Get relocated LO BYTE
sta Shift.R.LO,y
inx
@ -340,19 +299,14 @@ OPEN tax DEV.ID in A
CONTROL lda DCB+S.DCB.GFX.DEVID NON STANDARD
cmp A2osX.ASCREEN
beq .8
sta A2osX.ASCREEN
ldy #0
bit DCB+S.DCB.GFX.S
bpl .1 //c,EVE mode
ldy #CONTROL.EVE-CONTROL.80C
.1 ldx CONTROL.80C,y
beq .8 Ending 0
sta $C000,x
iny
@ -360,7 +314,6 @@ CONTROL lda DCB+S.DCB.GFX.DEVID NON STANDARD
.8 clc
rts
CLOSE.IOE lda #MLI.E.IO
sec
rts
@ -368,21 +321,16 @@ CLOSE.IOE lda #MLI.E.IO
CLOSE lda #S.DIB.S.OPENED
bit DIB+S.DIB.S
beq CLOSE.IOE
trb DIB+S.DIB.S
ldx #0
lda DCB+S.DCB.GFX.DEVID
.1 cmp A2osX.SCRNDEVS,x
bne .2
stz A2osX.SCRNDEVS,x
.2 inx
cpx #K.SCR.MAX
bne .1
clc
rts
*--------------------------------------
@ -392,18 +340,14 @@ WRITE >STYA ZPIOCTL NON STANDARD
.1 tax
ldy CB.CmdLen,x
.2 lda (ZPIOCTL),y
sta CB.Cache,y
dey
bpl .2
.3 jsr .10
clc
rts
.10 jmp (J.Cmds,x)
.10 jmp (J.Cmds,x)
*--------------------------------------
* IN:
* Y = LO
@ -416,7 +360,6 @@ DIVMOD7YA dec
bmi .2
clc
beq .1
lda DIV7.512,y
adc #$49
ldx MOD7.512,y
@ -426,10 +369,9 @@ DIVMOD7YA dec
adc #$24
ldx MOD7.256,y
rts
.2 lda DIV7.0,y
ldx MOD7.0,y
rts
rts
*--------------------------------------
* IN:
* Y,A = num1 (16)
@ -441,12 +383,9 @@ YAMultX stx ZPTmpByte
sty ZPTmpWord
sta ZPTmpWord+1
ldy #0 Result LO
tya Result HI
bra .3
.1 pha
tya
clc
@ -454,15 +393,11 @@ YAMultX stx ZPTmpByte
tay
pla
adc ZPTmpWord+1
.2 asl ZPTmpWord
rol ZPTmpWord+1
.3 lsr ZPTmpByte
bcs .1
bne .2
rts
*--------------------------------------
.INB USR/SRC/DRV/DHGR.DRV.S.BLT
@ -478,30 +413,24 @@ DRV.CS.END
CONTROL.80C .DA #SETIOUDIS
.DA #CLRTEXT
.DA #SETHIRES
.DA #CLR80DISP
.DA #SETAN3
.DA #CLRAN3
.DA #SETAN3
.DA #CLRAN3
.DA #SET80DISP
.DA #SETAN3
.DA #CLRAN3
.DA #SETAN3
.DA #0
CONTROL.EVE .DA #SETIOUDIS
.DA #CLRTEXT
.DA #SETHIRES
.DA #HR1.OFF
.DA #HR2.ON
.DA #HR3.ON
.DA #0
*--------------------------------------
Shift.L.LO .BS 6

View File

@ -48,17 +48,13 @@ Dev.Detect >STYA ARGS
>LDYA L.MSG.DETECT
>SYSCALL puts
ldx #$70
ldy #7
.1 lda A2osX.S,y IO based detection, avoid scanning in Disk Controller IO!!!!
bne .2
lda L91C96.BSR+1,x
cmp #DEVID
beq .3
.2 dec FD.DEV.NAME+3
txa
sec
@ -66,25 +62,21 @@ Dev.Detect >STYA ARGS
tax
dey
bne .1
>LDYA L.MSG.DETECT.KO
>SYSCALL puts
lda #MLI.E.NODEV
sec
rts
.3 stx DEVSLOTx0
sty DEVSLOT0x
jsr Dev.ParseArgs
bcs .9
.8 >PUSHW L.FD.DEV.NAME
>PUSHBI 2
>LDYA L.MSG.DETECT.OK
>SYSCALL printf
>PUSHWI DRV.END
>PUSHWI DRV.CS.END-DRV.CS.START
>PUSHWI DRV.CS.START
@ -92,16 +84,13 @@ Dev.Detect >STYA ARGS
>SYSCALL InsDrv
bcs .9
>STYA FD.DEV+S.FD.DEV.DRVPTR
>PUSHW L.FD.DEV.NAME
>LDYA L.FD.DEV
>SYSCALL MKDEV
bcs .9
ldx DEVSLOT0x
lda #A2osX.S.NIC
sta A2osX.S,x
* clc
.9 rts
*--------------------------------------
@ -109,7 +98,6 @@ Dev.ParseArgs >LDYA ARGS
>STYA ZPArgPTR
lda (ZPArgPTR)
bne .1
lda A2osX.RANDOM16
eor A2osX.TIMER16
sta DCB+S.DCB.NIC.MAC+3
@ -119,7 +107,6 @@ Dev.ParseArgs >LDYA ARGS
sta DCB+S.DCB.NIC.MAC+5
clc
rts
.1 >PUSHW L.MAC5
>PUSHW L.MAC4
>PUSHW L.MAC3
@ -131,7 +118,6 @@ Dev.ParseArgs >LDYA ARGS
>LDYA ZPArgPtr
>SYSCALL sscanf
bcc .8
lda #E.SYN
sec
.8 rts
@ -180,10 +166,8 @@ STATUS >STYA ZPIOCTL
ldy #S.IOCTL.STATCODE
lda (ZPIOCTL),y
beq .1
cmp #S.IOCTL.STATCODE.GETDIB
bne STATUS.DCB
ldx #S.DIB-1
.HS 2C bit abs
.1 ldx #3
@ -194,15 +178,12 @@ STATUS >STYA ZPIOCTL
iny
lda (ZPIOCTL),y
sta .3+2
.2 lda DIB,x
.3 sta $ffff,x SELF MODIFIED
dex
bpl .2
clc
rts
STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
bne STATUS.9
@ -215,7 +196,6 @@ STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
lda L91C96.0.EPHSR+1,x
and /L91C96.0.EPHSR.LINK
beq .1
lda #S.DCB.NIC.LINK.OK
tsb DCB+S.DCB.NIC.LINK
@ -226,16 +206,13 @@ STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
lda #S.DCB.NIC.LINK.FD
tsb DCB+S.DCB.NIC.LINK
.1 ldy #S.IOCTL.BUFPTR
lda (ZPIOCTL),y
sta .4+1
iny
lda (ZPIOCTL),y
sta .4+2
ldx #S.DCB.NIC-1
.3 lda DCB,x
.4 sta $ffff,x SELF MODIFIED
dex
@ -243,15 +220,13 @@ STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
clc
rts
STATUS.9 lda #MLI.E.BADCTL
sec
rts
rts
*--------------------------------------
OPEN lda #S.DIB.S.OPENED
bit DIB+S.DIB.S
bne .9
jsr CLOSE
* ldx DEVSLOTx0 Done by CLOSE
@ -260,15 +235,12 @@ OPEN lda #S.DIB.S.OPENED
sta L91C96.0.TCR,x
lda /L91C96.0.TCR.FDSE+L91C96.0.TCR.FUDPLX+L91C96.0.TCR.PADEN+L91C96.0.TCR.TXENA
sta L91C96.0.TCR+1,x
lda #L91C96.0.RCR.NOCRC+L91C96.0.RCR.RXENA+L91C96.0.RCR.ALLMUL
sta L91C96.0.RCR,x
lda /L91C96.0.RCR.NOCRC+L91C96.0.RCR.RXENA+L91C96.0.RCR.ALLMUL
sta L91C96.0.RCR+1,x
lda #1
sta L91C96.BSR,x
lda #L91C96.1.CR.NOWAIT
sta L91C96.1.CR,x
lda /L91C96.1.CR.NOWAIT
@ -292,39 +264,32 @@ OPEN lda #S.DIB.S.OPENED
iny
cpy #6
bne .2
.3 ldx DEVSLOTx0
lda #L91C96.1.CTR.DEFAULT+L91C96.1.CTR.AUTOREL
sta L91C96.1.CTR,x
lda /L91C96.1.CTR.DEFAULT+L91C96.1.CTR.AUTOREL
sta L91C96.1.CTR+1,x
clc
rts
.9 lda #MLI.E.OPEN
sec
rts
rts
*--------------------------------------
CLOSE ldx DEVSLOTx0
stz L91C96.BSR,x
lda #L91C96.0.RCR.RESET
sta L91C96.0.RCR,x
lda /L91C96.0.RCR.RESET
sta L91C96.0.RCR+1,x
lda $C019 we can use VBL as we are not on //c
.1 eor $C019
bpl .1
lda $C019
.2 eor $C019
bpl .2
stz L91C96.0.RCR,x
stz L91C96.0.RCR+1,x
clc
rts
*--------------------------------------
@ -332,7 +297,6 @@ READ php
sei
>STYA ZPIOCTL
ldx DEVSLOTx0
lda #2
sta L91C96.BSR,x
@ -341,11 +305,9 @@ READ php
and #L91C96.2.IST.RCV
bne .1
lda #E.NODATA
.9 plp
sec
rts
.1 lda #L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ
sta L91C96.2.PTR,x
lda /L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ
@ -353,12 +315,10 @@ READ php
lda L91C96.2.DATA,x Get Frame Status Word (lo)
lda L91C96.2.DATA,x Get Frame Status Word (HI)
asl
asl
asl #$10 = odd?
asl if odd, CS
lda L91C96.2.DATA,x get lo byte count
sbc #5 compute Size
sta Size
@ -367,7 +327,6 @@ READ php
sta (ZPIOCTL),y
eor #$ff
sta Counter
lda L91C96.2.DATA,x get hi byte count
sbc #0
sta Size+1
@ -376,41 +335,33 @@ READ php
eor #$ff
sta Counter+1
eor #$ff
ply
>SYSCALL2 getmem
bcs .9
>STYA ZPBufPtr
phx
phy
ldy #S.IOCTL.BUFPTR+1
sta (ZPIOCTL),y
dey
pla
sta (ZPIOCTL),y
ldx DEVSLOTx0
ldy #0
.2 inc Counter
bne .21
inc Counter+1
beq .4
.21 lda L91C96.2.DATA,x
sta (ZPBufPtr),y
iny
bne .3
inc ZPBufPtr+1
.3 inc Counter
bne .31
inc Counter+1
beq .4
.31 lda L91C96.2.DATA,x
sta (ZPBufPtr),y
iny
@ -420,20 +371,17 @@ READ php
.4 lda #L91C96.2.MMUCR.REMREL
sta L91C96.2.MMUCR,x
.8 pla hMem
plp
clc
rts
*--------------------------------------
*--------------------------------------
WRITE php
sei
>STYA ZPIOCTL
ldx DEVSLOTx0
lda #2
sta L91C96.BSR,x
@ -443,54 +391,44 @@ WRITE php
eor #$ff
sta Counter
eor #$ff
clc
adc #6 3 WORDs more Status, len & Control
bne .10
clc LO byte is 0, no need for an extra empty page
.10 iny
lda (ZPIOCTL),y
sta Size+1
eor #$ff
sta Counter+1
eor #$ff
adc #0
.1 ora #L91C96.2.MMUCR.ALLOC
sta L91C96.2.MMUCR,x
ldy #0
.2 lda L91C96.2.IST,x
and #L91C96.2.IST.ALLOC
bne .3
dey
bne .2
lda #E.NODATA
.9 plp
sec
rts
rts
.3 lda L91C96.2.AAR,x
sta L91C96.2.PNR,x
lda #L91C96.2.PTR.AUTOI
sta L91C96.2.PTR,x
lda /L91C96.2.PTR.AUTOI
sta L91C96.2.PTR+1,x
ldy #S.IOCTL.BUFPTR
lda (ZPIOCTL),y
sta ZPBufPtr
iny
lda (ZPIOCTL),y
sta ZPBufPtr+1
ldy #S.ETH.SRCMAC+5 Add Src MAC Address
ldx #5
.4 lda S.DCB.NIC.MAC,x
@ -502,7 +440,6 @@ WRITE php
ldx DEVSLOTx0
stz L91C96.2.DATA,x write fake status word
stz L91C96.2.DATA,x
lda Size
pha
eor #$01
@ -513,24 +450,19 @@ WRITE php
lda Size+1
adc #$00
sta L91C96.2.DATA,x
ldy #2
.5 inc Counter
bne .51
inc Counter+1
beq .70
.51 lda (ZPBufPtr),y
iny
bne .6
inc ZPBufPtr+1
.6 inc Counter
bne .61
inc Counter+1
beq .71
.61 sta L91C96.2.DATA,x
lda (ZPBufPtr),y
sta L91C96.2.DATA,x
@ -538,19 +470,15 @@ WRITE php
bne .5
inc ZPBufPtr+1
bra .5
.70 lda #0
sta L91C96.2.DATA,x
sta L91C96.2.DATA,x
bra .8
.71 sta L91C96.2.DATA,x
lda #%00100000 signal an extra (odd) byte
sta L91C96.2.DATA,x
.8 lda #L91C96.2.MMUCR.NQPKT
sta L91C96.2.MMUCR,x
plp
clc
rts

View File

@ -43,7 +43,6 @@ Dev.Detect >LDYA L.MSG.DETECT
stz ZPSlotPtr
lda #$C1
.1 sta ZPSlotPtr+1
ldx #DEVSIG.Value-DEVSIG.Offset-1
.2 ldy DEVSIG.Offset,x
@ -53,19 +52,16 @@ Dev.Detect >LDYA L.MSG.DETECT
dex
bpl .2
bra .8
.3 lda ZPSlotPtr+1 no match, try next slot....
inc
cmp #$C8
bne .1
>LDYA L.MSG.DETECT.KO
>SYSCALL printf
.9 lda #MLI.E.NODEV
sec
rts
.8 lda ZPSlotPtr+1
sta GOMOUSE+2
sta GOMOUSE.Cn+1
@ -79,7 +75,6 @@ Dev.Detect >LDYA L.MSG.DETECT
asl
asl
sta GOMOUSE.n0+1
>PUSHW L.FD.DEV.NAME
>PUSHBI 2
>LDYA L.MSG.DETECT.OK
@ -92,7 +87,6 @@ Dev.Detect >LDYA L.MSG.DETECT
>SYSCALL InsDrv
bcs .9
>STYA FD.DEV+S.FD.DEV.DRVPTR
>PUSHW L.FD.DEV.NAME
>LDYA L.FD.DEV
>SYSCALL MKDEV
@ -147,24 +141,19 @@ STATUS >STYA ZPIOCTL
ldy #S.IOCTL.STATCODE
lda (ZPIOCTL),y
beq .1
cmp #S.IOCTL.STATCODE.GETDIB
bne STATUS.DCB
ldy #S.DIB-1
.HS 2C bit abs
.1 ldy #3
.2 lda DIB,y
sta (ZPBufPtr),y
dey
bpl .2
clc
rts
STATUS.DCB
STATUS.9 lda #MLI.E.BADCTL
sec
rts
@ -173,16 +162,13 @@ CONTROL >STYA ZPBufPtr NON STANDARD
php
sei
ldy #0
ldx #0 set X
jsr SETCLAMP
ldy #4
ldx #1 set Y
jsr SETCLAMP
ldy #HOMEMOUSE
ldy #HOMEMOUSE
jsr GOMOUSE
plp
@ -198,32 +184,25 @@ OPEN php
ora #MOUSEMODx.ACTIVE Enable, Polling mode
ldy #SETMOUSE
jsr GOMOUSE
ldy #INITMOUSE Reset
jsr GOMOUSE
lda #S.DIB.S.OPENED
tsb DIB+S.DIB.S
plp
clc
rts
*--------------------------------------
CLOSE php
sei
ldx DEVSLOT0n
lda MOUSEMODx,x keep if VBLInt already activated by kernel
and #MOUSEMODx.INTVBL Disable ALL but VBLInt if previously active
ldy #SETMOUSE
jsr GOMOUSE
lda #S.DIB.S.OPENED
trb DIB+S.DIB.S
plp
clc
rts
*--------------------------------------
@ -236,100 +215,71 @@ READ >STYA ZPBufPtr NON STANDARD
sta SET80STORE
sta CLRPAGE2
* ldy #READMOUSE DONE BY IRQ MANAGER
* jsr GOMOUSE
ldx DEVSLOT0n
lda MOUSESTSx,x
and #MOUSESTSx.MOVED
beq .1
ldy #S.MOUSE.X1
lda MOUSEXLOx,x
sta (ZPBufPtr),y
iny
lda MOUSEXHIx,x
sta (ZPBufPtr),y
iny
lda MOUSEYLOx,x
sta (ZPBufPtr),y
iny
lda MOUSEYHIx,x
sta (ZPBufPtr),y
lda #S.MOUSE.S.MOVE
tsb READ.S+1
stz bDblClick Reset DblClick flag
.1 lda MOUSESTSx,x
and #MOUSESTSx.DOWN+MOUSESTSx.LDOWN
beq .8 no button state change:up & previously up
cmp #MOUSESTSx.DOWN+MOUSESTSx.LDOWN
beq .8 no button state change:down & previously down
asl if CS, down & previously up
bcc .2
lda #S.MOUSE.S.DOWN
tsb READ.S+1 button has been pressed, start drag...
lda MOUSEXLOx,x
sta SrcDrag
lda MOUSEXHIx,x
sta SrcDrag+1
lda MOUSEYLOx,x
sta SrcDrag+2
lda MOUSEYHIx,x
sta SrcDrag+3
bra .8
.2 lda READ.S+1
pha save move state
ora #S.MOUSE.S.UP
sta READ.S+1
pla get back move state
bne .4 no move...click!
lda #S.MOUSE.S.CLK
bit bDblClick
bpl .3
lda #S.MOUSE.S.DCLK
ldy #1
sty bDblClick
.3 dec bDblClick
tsb READ.S+1
bra .8
.4 lda #S.MOUSE.S.DRAGSTART
tsb READ.S+1
ldy #S.MOUSE.X2+3
.5 lda SrcDrag-S.MOUSE.X2,y
sta (ZPBufPtr),y
dey
bpl .5
.8 plp
READ.S lda #$ff SELF MODIFIED
@ -342,13 +292,12 @@ READ.S lda #$ff SELF MODIFIED
.9 lda #MLI.E.EOF
sec
rts
rts
*--------------------------------------
* PRIVATE
*--------------------------------------
SETCLAMP lda (ZPBufPtr),y
sta LOCLAMPLO
iny
lda (ZPBufPtr),y
sta LOCLAMPHI
@ -360,7 +309,6 @@ SETCLAMP lda (ZPBufPtr),y
iny
lda (ZPBufPtr),y
sta HICLAMPHI
txa
ldy #CLAMPMOUSE
*--------------------------------------

View File

@ -35,11 +35,9 @@ L.DEV.HEADER.NAME .DA DEV.HEADER.NAME
Dev.Detect >STYA ARGS
>LDYA L.MSG.DETECT
>SYSCALL printf
stz ZPTmpPtr1
lda #$C1
sta ZPTmpPtr1+1
.1 and #$0f
tay
lda A2osX.S,y
@ -54,12 +52,10 @@ Dev.Detect >STYA ARGS
dex
bpl .2
bra .4
.3 inc ZPTmpPtr1+1 no match, try next slot....
lda ZPTmpPtr1+1
cmp #$C8
bne .1
>LDYA L.MSG.DETECT.KO
>SYSCALL printf

View File

@ -45,16 +45,13 @@ L.MAC5 .DA DCB+S.DCB.NIC.MAC+5
.DA 0 End Of Reloc Table
*--------------------------------------
Dev.Detect >STYA ARGS
>LDYA L.MSG.DETECT
>SYSCALL puts
ldx #$70
ldy #7
.1 lda A2osX.S,y IO based detection, avoid scanning in Disk Controller IO!!!!
bne .2
lda /PP.ID
sta PacketPagePTR+1,x
lda #PP.ID
@ -63,11 +60,9 @@ Dev.Detect >STYA ARGS
lda PacketPageDATA+1,x
cmp /DEVID
bne .2
lda PacketPageDATA,x
cmp #DEVID
beq .3
.2 dec FD.DEV.NAME+3
txa
sec
@ -75,35 +70,28 @@ Dev.Detect >STYA ARGS
tax
dey
bne .1
>LDYA L.MSG.DETECT.KO
>SYSCALL puts
lda #MLI.E.NODEV
sec
.99 rts
.3 stx DEVSLOTx0
sty DEVSLOT0x
lda /PP.REVISION Get Revision# of ths chip...
sta PacketPagePTR+1,x
lda #PP.REVISION
sta PacketPagePTR,x
lda PacketPageDATA+1,x
sta DIB+S.DIB.VERSION+1 set Hardware version
lda PacketPageDATA,x
sta DIB+S.DIB.VERSION
jsr Dev.ParseArgs
bcs .99
.8 >PUSHW L.FD.DEV.NAME
>PUSHBI 2
>LDYA L.MSG.DETECT.OK
>SYSCALL printf
>PUSHWI DRV.END
>PUSHWI DRV.CS.END-DRV.CS.START
>PUSHWI DRV.CS.START
@ -111,7 +99,6 @@ Dev.Detect >STYA ARGS
>SYSCALL InsDrv
bcs .9
>STYA FD.DEV+S.FD.DEV.DRVPTR
>PUSHW L.FD.DEV.NAME
>LDYA L.FD.DEV
>SYSCALL MKDEV
@ -120,15 +107,13 @@ Dev.Detect >STYA ARGS
ldx DEVSLOT0x
lda #A2osX.S.NIC
sta A2osX.S,x
* clc
.9 rts
* clc.9
rts
*--------------------------------------
Dev.ParseArgs >LDYA ARGS
>STYA ZPArgPTR
lda (ZPArgPTR)
bne .1
lda A2osX.RANDOM16
eor A2osX.TIMER16
sta DCB+S.DCB.NIC.MAC+3
@ -138,7 +123,6 @@ Dev.ParseArgs >LDYA ARGS
sta DCB+S.DCB.NIC.MAC+5
clc
rts
.1 >PUSHW L.MAC5
>PUSHW L.MAC4
>PUSHW L.MAC3
@ -150,7 +134,6 @@ Dev.ParseArgs >LDYA ARGS
>LDYA ZPArgPtr
>SYSCALL sscanf
bcc .8
lda #E.SYN
sec
.8 rts
@ -197,10 +180,8 @@ STATUS >STYA ZPIOCTL
ldy #S.IOCTL.STATCODE
lda (ZPIOCTL),y
beq .1
cmp #S.IOCTL.STATCODE.GETDIB
bne STATUS.DCB
ldx #S.DIB-1
.HS 2C bit abs
.1 ldx #3
@ -211,12 +192,10 @@ STATUS >STYA ZPIOCTL
iny
lda (ZPIOCTL),y
sta .3+2
.2 lda DIB,x
.3 sta $ffff,x SELF MODIFIED
dex
bpl .2
clc
rts
@ -224,9 +203,7 @@ STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
bne STATUS.9
stz DCB+S.DCB.NIC.LINK
ldx DEVSLOTx0
lda /PP.LineST
sta PacketPagePTR+1,x
lda #PP.LineST
@ -236,7 +213,6 @@ STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
lda PacketPageDATA,x
and #PP.LineST.LinkOK
beq .1
lda #S.DCB.NIC.LINK.OK
tsb DCB+S.DCB.NIC.LINK
@ -244,24 +220,19 @@ STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
sta PacketPagePTR+1,x
lda #PP.TestCTL
sta PacketPagePTR,x
lda PacketPageDATA+1,x
ldy PacketPageDATA,x
and /PP.TestCTL.FDX
beq .1
lda #S.DCB.NIC.LINK.FD
tsb DCB+S.DCB.NIC.LINK
.1 ldy #S.IOCTL.BUFPTR
lda (ZPIOCTL),y
sta .3+1
iny
lda (ZPIOCTL),y
sta .3+2
ldx #S.DCB.NIC-1
.2 lda DCB,x
.3 sta $ffff,x SELF MODIFIED
dex
@ -269,15 +240,13 @@ STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
clc
rts
STATUS.9 lda #MLI.E.BADCTL
sec
rts
rts
*--------------------------------------
OPEN lda #S.DIB.S.OPENED
bit DIB+S.DIB.S
bne .9
jsr CLOSE
* ldx DEVSLOTx0 Done by CLOSE
@ -286,7 +255,6 @@ OPEN lda #S.DIB.S.OPENED
sta PacketPagePTR+1,x
lda #PP.RxCTL
sta PacketPagePTR,x
lda /PP.RxCTL.LID+PP.RxCTL.RxOKA+PP.RxCTL.IA+PP.RxCTL.BroadcastA+PP.RxCTL.RuntA
sta PacketPageDATA+1,x
lda #PP.RxCTL.LID+PP.RxCTL.RxOKA+PP.RxCTL.IA+PP.RxCTL.BroadcastA+PP.RxCTL.RuntA
@ -307,7 +275,6 @@ OPEN lda #S.DIB.S.OPENED
>STYA PacketPagePTR,x
>LDYA DCB+S.DCB.NIC.MAC+4
>STYA PacketPageDATA,x
lda /PP.LineCTL
sta PacketPagePTR+1,x
lda #PP.LineCTL
@ -317,49 +284,37 @@ OPEN lda #S.DIB.S.OPENED
sta PacketPageDATA+1,x
lda #PP.LineCTL.LID+PP.LineCTL.SerRxOn+PP.LineCTL.SerTxOn+PP.LineCTL.10BaseT
sta PacketPageDATA,x
lda #S.DIB.S.OPENED
tsb DIB+S.DIB.S
clc
rts
.9 lda #MLI.E.OPEN
sec
rts
*--------------------------------------
CLOSE ldx DEVSLOTx0
lda /PP.SelfCTL
sta PacketPagePTR+1,x
lda #PP.SelfCTL
sta PacketPagePTR,x
lda /PP.SelfCTL.LID+PP.SelfCTL.RESET
sta PacketPageDATA+1,x
lda #PP.SelfCTL.LID+PP.SelfCTL.RESET
sta PacketPageDATA,x
lda /PP.SelfST
sta PacketPagePTR+1,x
lda #PP.SelfST
sta PacketPagePTR,x
ldy #0
.1 lda PacketPageDATA+1,x
lda PacketPageDATA,x
and #PP.SelfST.InitDone
bne .8
iny
bne .1
.8 lda #S.DIB.S.OPENED
trb DIB+S.DIB.S
clc
rts
*--------------------------------------
@ -369,7 +324,6 @@ READ php
>STYA ZPIOCTL
ldx DEVSLOTx0
lda /PP.RxEvent
sta PacketPagePTR+1,x
lda #PP.RxEvent
@ -382,15 +336,12 @@ READ php
lda RTDATA+1,x discard RxStatus
lda RTDATA,x
lda RTDATA+1,x get RxLength
ldy #S.IOCTL.BYTECNT+1
sta (ZPIOCTL),y
pha
lsr
pha
lda RTDATA,x
dey
sta (ZPIOCTL),y
@ -407,20 +358,16 @@ READ php
sta Counter+1
pla
>SYSCALL2 getmem
bcs READWRITE.99
>STYA ZPBufPtr
phx
phy
ldy #S.IOCTL.BUFPTR+1
sta (ZPIOCTL),y
dey
pla
sta (ZPIOCTL),y
ldx DEVSLOTx0
ldy #0
@ -429,18 +376,15 @@ READ php
bne .3
inc Counter+1
beq .8
.3 lda RTDATA,x
sta (ZPBufPtr),y
iny
lda RTDATA+1,x
sta (ZPBufPtr),y
iny
bne .2
inc ZPBufPtr+1
bra .2
.8 pla hMem
plp
@ -455,7 +399,6 @@ READWRITE.99 plp
*--------------------------------------
WRITE php
sei
>STYA ZPIOCTL
ldx DEVSLOTx0
@ -464,7 +407,6 @@ WRITE php
sta TxCMD+1,x
lda #PP.TxCMD.LID+PP.TxCMD.TxStartFULL
sta TxCMD,x
ldy #S.IOCTL.BYTECNT+1
lda (ZPIOCTL),y
sta TxLength+1,x
@ -493,17 +435,14 @@ WRITE php
ldy PacketPageDATA,x
bit /PP.BusST.Rdy4TxNOW
beq READWRITE.9
ldy #S.IOCTL.BUFPTR
lda (ZPIOCTL),y
sta ZPBufPtr
iny
lda (ZPIOCTL),y
sta ZPBufPtr+1
ldx #5
ldy #S.ETH.SRCMAC+5
.10 lda DCB+S.DCB.NIC.MAC,x
sta (ZPBufPtr),y
dey
@ -518,20 +457,17 @@ WRITE php
bne .2
inc Counter+1
beq .8
.2 lda (ZPBufPtr),y
sta RTDATA,x
iny
bne .3
inc ZPBufPtr+1
.3 lda (ZPBufPtr),y
sta RTDATA+1,x
iny
bne .1
inc ZPBufPtr+1
bne .1
.8 plp
clc
rts

View File

@ -51,11 +51,9 @@ Dev.Detect >STYA ARGS
>LDYA L.MSG.DETECT
>SYSCALL puts
stz ZPArgPtr
lda #$C1
sta ZPArgPtr+1
.1 and #$0f
tay
lda A2osX.S,y
@ -70,13 +68,11 @@ Dev.Detect >STYA ARGS
dex
bpl .2
bra .4
.3 inc FD.DEV.NAME+3
inc ZPArgPtr+1 no match, try next slot....
lda ZPArgPtr+1
cmp #$C8
bne .1
>LDYA L.MSG.DETECT.KO
>SYSCALL puts
@ -98,15 +94,12 @@ Dev.Detect >STYA ARGS
clc
adc #$8F
sta DEVSLOTn08F
jsr Dev.ParseArgs
bcs .9
.8 >PUSHW L.FD.DEV.NAME
>PUSHBI 2
>LDYA L.MSG.DETECT.OK
>SYSCALL printf
>PUSHWI DRV.END
>PUSHWI DRV.CS.END-DRV.CS.START
>PUSHWI DRV.CS.START
@ -114,7 +107,6 @@ Dev.Detect >STYA ARGS
>SYSCALL InsDrv
bcs .9
>STYA FD.DEV+S.FD.DEV.DRVPTR
>PUSHW L.FD.DEV.NAME
>LDYA L.FD.DEV
>SYSCALL MKDEV
@ -127,22 +119,18 @@ Dev.ParseArgs >LDYA ARGS
bne .1
clc
rts
.1 stz ZPhParity
stz ZPhControl
>LDYAI 256
>SYSCALL getmem
bcs .2
>STYA ZPParityPtr
stx ZPhParity
>LDYAI 256
>SYSCALL getmem
.2 bcs .90
>STYA ZPControlPtr
stx ZPhControl
>PUSHW ZPControlPtr
>PUSHW ZPParityPtr
>PUSHW L.DCB.STOP
@ -154,7 +142,6 @@ Dev.ParseArgs >LDYA ARGS
>SYSCALL sscanf
bcs .90
.90 lda ZPhControl
beq .91
>SYSCALL freemem
@ -175,7 +162,7 @@ MSG.DETECT .AS "Apple SSC (Super Serial Card,//c Serial Port) Driver"
.DO SSCIRQ=1
.AS " (IRQ Enabled)"
.FIN
.AZ "."
.AZ "."
MSG.DETECT.OK .AZ "SSC Installed As Device : %s\r\n"
MSG.DETECT.KO .AZ "No SSC Found."
SSCANF.ARGS .AZ "%u,%d,%d,%s,%s"
@ -216,14 +203,11 @@ DRV.CS.START cld
.DA 0 end or relocation
*--------------------------------------
STATUS jsr STATUS.CONTROL.Init
ldy #S.IOCTL.STATCODE
lda (ZPIOCTL),y
beq .1
cmp #S.IOCTL.STATCODE.GETDIB
bne STATUS.DCB
ldy #S.DIB-1
.HS 2C bit abs
.1 ldy #3
@ -232,7 +216,6 @@ STATUS jsr STATUS.CONTROL.Init
sta (ZPBufPtr),y
dey
bpl .2
clc
rts
@ -240,7 +223,6 @@ STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
bne .3
ldy #S.DCB.COM-1
.2 lda DCB,y
sta (ZPBufPtr),y
dey
@ -248,36 +230,27 @@ STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
clc
rts
.3 cmp #S.IOCTL.STATCODE.EOF
bne STATUS.9
lda DIB+S.DIB.S
and #S.DIB.S.OPENED
beq OPEN.E
.DO SSCIRQ=1
lda INBUF.TAIL
eor INBUF.HEAD
beq .4 NO DATA? eof = TRUE
lda #1
.4 dec
clc
rts
.ELSE
.FIN
.8 clc
rts
STATUS.9 lda #MLI.E.BADCTL
sec
rts
rts
*--------------------------------------
CONTROL jsr STATUS.CONTROL.Init
@ -285,9 +258,7 @@ CONTROL jsr STATUS.CONTROL.Init
lda (ZPIOCTL),y
cmp #S.IOCTL.CTRLCODE.SETDCB
bne STATUS.9
ldy #S.DCB.COM-1
.2 lda (ZPBufPtr),y
sta DCB,y
dey
@ -296,23 +267,17 @@ CONTROL jsr STATUS.CONTROL.Init
OPEN lda DIB+S.DIB.S
bit #S.DIB.S.OPENED
beq OPEN.1
OPEN.E lda #MLI.E.OPEN
sec
rts
OPEN.1 php
sei
ldx DEVSLOTn08F
stz SSC.RESET-$8F,x
lda #SSC.CTL.CLKINT+SSC.CTL.B9600+SSC.CTL.8D+SSC.CTL.1S+SSC.CMD.NOP
sta SSC.CTL-$8F,x
.DO SSCIRQ=1
lda #SSC.CMD.TEIRQ+SSC.CMD.TE+SSC.CMD.DTR
sta SSC.CMD-$8F,x
@ -322,10 +287,8 @@ OPEN.1 php
stz OUTBUF.TAIL
.ELSE
lda #SSC.CMD.RIRQDIS+SSC.CMD.TE+SSC.CMD.DTR
sta SSC.CMD-$8F,x
.FIN
lda SSC.DATA-$8F,x discard any garbage byte
@ -340,7 +303,6 @@ OPEN.1 php
*--------------------------------------
CLOSE php
sei
ldx DEVSLOTn08F
stz SSC.RESET-$8F,x
@ -353,67 +315,54 @@ CLOSE php
*--------------------------------------
READ php
sei
jsr READ.WRITE.Init
stz ZPCount2
stz ZPCount2+1
.10 inc ZPCount
bne .11
inc ZPCount+1
beq .8
beq .8
.11 .DO SSCIRQ=1
ldy INBUF.TAIL
cpy INBUF.HEAD
beq .2
lda INBUF,y
iny
cpy #BUF.SIZE
bne .1
ldy #0
.1 sty INBUF.TAIL
sta (ZPBufPtr)
inc ZPBufPtr
bne .12
inc ZPBufPtr+1
.12 inc ZPCount2
bne .10
inc ZPCount2+1
bra .10
bra .10
.FIN
.2 lda SSC.STATUS-$8F,x
bit #SSC.STATUS.nDSR true when 0
bne .9
bit #SSC.STATUS.RDRF incoming char?
beq .8
lda SSC.DATA-$8F,x
sta (ZPBufPtr)
inc ZPBufPtr
bne .13
inc ZPBufPtr+1
.13 inc ZPCount2
bne .2
inc ZPCount2+1
bra .2
.8 lda ZPCount2
bne .81
ora ZPCount2+1
beq .99
lda ZPCount2
.81 ldy #S.IOCTL.BYTECNT
sta (ZPIOCTL),y
iny
@ -422,51 +371,42 @@ READ php
plp
clc
rts
rts
.9 lda #MLI.E.IO
.HS 2C BIT ABS
.99 lda #E.NODATA
plp
sec
rts
rts
*--------------------------------------
WRITE php
sei
jsr READ.WRITE.Init
.2 inc ZPCount
bne .3
inc ZPCount+1
beq .8
.3 .DO SSCIRQ=1
lda SSC.STATUS-$8F,x
bit #SSC.STATUS.nDSR true when 0
bne .9
lda OUTBUF.HEAD
cmp OUTBUF.TAIL Buffer Empty?
bne .6 not empty, queue char
lda SSC.STATUS-$8F,x
and #SSC.STATUS.TDRE Register Empty ?
beq .5 not empty, queue char
lda (ZPBufPtr) yes, write directly to ACIA
inc ZPBufPtr
bne .4
inc ZPBufPtr+1
.4 sta SSC.DATA-$8F,x
bra .2
.5 lda OUTBUF.HEAD
.6 tay
inc
and #BUF.MASK
@ -474,37 +414,28 @@ WRITE php
beq .99 Buffer Full!!
sta OUTBUF.HEAD
lda (ZPBufPtr)
inc ZPBufPtr
bne .7
inc ZPBufPtr+1
.7 sta OUTBUF,y
bra .2
.ELSE
.ELSE
.4 lda SSC.STATUS-$8F,x
bit #SSC.STATUS.nDSR true when 0
bne .9
bit #SSC.STATUS.TDRE Outgoing char?
beq .4
lda (ZPBufPtr)
inc ZPBufPtr
bne .5
inc ZPBufPtr+1
.5 sta SSC.DATA-$8F,x
bra .2
.FIN
.8 plp
clc
rts
rts
.9 lda #MLI.E.IO
.HS 2C BIT ABS
.99 lda #E.NODATA
@ -525,7 +456,6 @@ STATUS.CONTROL.Init
lda (ZPIOCTL),y
sta ZPBufPtr+1
iny #S.IOCTL.BYTECNT
lda (ZPIOCTL),y
@ -537,7 +467,6 @@ STATUS.CONTROL.Init
lda (ZPIOCTL),y
eor #$ff
sta ZPCount+1
rts
*--------------------------------------
* IRQ Handler
@ -546,53 +475,41 @@ STATUS.CONTROL.Init
.DO SSCIRQ=1
IRQ ldx DEVSLOTn08F
lda SSC.STATUS-$8F,x
* and #SSC.STATUS.IRQ Useless
bpl .9 IRQ from this device ? no, exit !!!!Applewin bug #308!!!!
bit #SSC.STATUS.RDRF incoming char?
beq .2
beq .2
*------------ IRQ In
pha
lda INBUF.HEAD
tay save actual head for later
inc
and #BUF.MASK
cmp INBUF.TAIL
cmp INBUF.TAIL
beq .1 buffer full, discard and exit
sta INBUF.HEAD
lda SSC.DATA-$8F,x read data to clear IRQ
sta INBUF,y
.1 pla
*------------ IRQ Out
.2 bit #SSC.STATUS.TDRE
beq .8 no transmition possible....
ldy OUTBUF.TAIL something to transmit ?
cpy OUTBUF.HEAD
beq .8 in that case, HOW TO CLEAR IRQ ????
lda OUTBUF,y
sta SSC.DATA-$8F,x write data to clear IRQ
tya
inc
and #BUF.MASK
sta OUTBUF.TAIL
.8 clc
rts
.9 sec
rts
.FIN

View File

@ -45,18 +45,14 @@ Dev.Detect >STYA ARGS
>LDYA L.MSG.DETECT
>SYSCALL puts
ldx #$70+$88
ldy #7
.1 lda A2osX.S,y IO based detection, avoid scanning in Disk Controller IO!!!!
bne .2
lda #W5100.MR.RST
sta W5100.MR,x
lda #0
.10 dec give some time....
bne .10
@ -69,16 +65,13 @@ Dev.Detect >STYA ARGS
lda W5100.MR,x
cmp #W5100.MR.AI+W5100.MR.IND
bne .2
>AR.SELECT RTR
lda W5100.DR,x Get RTR HI
cmp /2000
bne .2
lda W5100.DR,x Get RTR LO
cmp #2000
beq .3
.2 dec FD.DEV.NAME+3
txa
sec
@ -86,27 +79,22 @@ Dev.Detect >STYA ARGS
tax
dey
bne .1
>LDYA L.MSG.DETECT.KO
>SYSCALL puts
lda #MLI.E.NODEV
sec
rts
.3 stx DEVSLOTx0
sty DEVSLOT0x
lda #A2osX.S.NIC
sta A2osX.S,y
jsr Dev.ParseArgs
bcs .9
.8 >PUSHW L.FD.DEV.NAME
>PUSHBI 2
>LDYA L.MSG.DETECT.OK
>SYSCALL printf
>PUSHWI DRV.END
>PUSHWI DRV.CS.END-DRV.CS.START
>PUSHWI DRV.CS.START
@ -114,16 +102,13 @@ Dev.Detect >STYA ARGS
>SYSCALL InsDrv
bcs .9
>STYA FD.DEV+S.FD.DEV.DRVPTR
>PUSHW L.FD.DEV.NAME
>LDYA L.FD.DEV
>SYSCALL MKDEV
bcs .9
ldx DEVSLOT0x
lda #A2osX.S.NIC
sta A2osX.S,x
* clc
.9 rts
*--------------------------------------
@ -131,7 +116,6 @@ Dev.ParseArgs >LDYA ARGS
>STYA ZPArgPTR
lda (ZPArgPTR)
bne .1
lda A2osX.RANDOM16
eor A2osX.TIMER16
sta DCB+S.DCB.NIC.MAC+3
@ -141,7 +125,6 @@ Dev.ParseArgs >LDYA ARGS
sta DCB+S.DCB.NIC.MAC+5
clc
rts
.1 >PUSHW L.MAC5
>PUSHW L.MAC4
>PUSHW L.MAC3
@ -153,7 +136,6 @@ Dev.ParseArgs >LDYA ARGS
>LDYA ZPArgPtr
>SYSCALL sscanf
bcc .8
lda #E.SYN
sec
.8 rts
@ -176,7 +158,7 @@ FD.DEV .DA #S.FD.T.CDEV
.DA 0 BUSPTR
.BS 2 DRVPTR
.DA 0 DCBPTR
.DA 0 BUFPTR
.DA 0 BUFPTR
FD.DEV.NAME .AZ "ETH7"
*--------------------------------------
* Driver Code
@ -213,10 +195,8 @@ STATUS >STYA ZPIOCTL
ldy #S.IOCTL.STATCODE
lda (ZPIOCTL),y
beq .1
cmp #S.IOCTL.STATCODE.GETDIB
bne STATUS.DCB
ldx #S.DIB-1
.HS 2C bit abs
.1 ldx #3
@ -227,15 +207,12 @@ STATUS >STYA ZPIOCTL
iny
lda (ZPIOCTL),y
sta .3+2
.2 lda DIB,x
.3 sta $ffff,x SELF MODIFIED
dex
bpl .2
clc
rts
STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
bne STATUS.9
@ -245,9 +222,7 @@ STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
iny
lda (ZPIOCTL),y
sta .3+2
ldx #S.DCB.NIC-1
.2 lda DCB,x
.3 sta $ffff,x SELF MODIFIED
dex
@ -255,10 +230,9 @@ STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
clc
rts
STATUS.9 lda #MLI.E.BADCTL
sec
rts
rts
*--------------------------------------
.DO U2AI=1
CONTROL >STYA ZPIOCTL
@ -267,21 +241,17 @@ CONTROL >STYA ZPIOCTL
lda (ZPIOCTL),y
cmp #S.IOCTL.CTRLCODE.SETDCB
bne STATUS.9
.1 ldy #S.IOCTL.BUFPTR
lda (ZPIOCTL),y
sta .2+1
iny
lda (ZPIOCTL),y
sta .2+2
ldx #S.DCB.NIC-1
.2 lda $ffff,x SELF MODIFIED
sta DCB,x
dex
bpl .2
.FIN
*--------------------------------------
OPEN lda #S.DIB.S.OPENED
@ -291,7 +261,6 @@ OPEN lda #S.DIB.S.OPENED
lda #MLI.E.OPEN
sec
rts
.10 jsr CLOSE
* ldx DEVSLOTx0 Done by CLOSE
@ -300,7 +269,6 @@ OPEN lda #S.DIB.S.OPENED
sta W5100.MR,x
>AR.SELECT SHAR
ldy #0
.1 lda DCB+S.DCB.NIC.MAC,y
@ -325,41 +293,32 @@ OPEN lda #S.DIB.S.OPENED
.DO U2AI=1
>AR.SELECT S0.TOS
stz W5100.DR,x
* >AR.SELECT S0.TTL
lda #K.IP.TTL
sta W5100.DR,x
>AR.SELECT GAR
ldy #0
.2 lda DCB+S.DCB.NIC.GW,y
sta W5100.DR,x
iny
cpy #4
bne .2
* >AR.SELECT SUBR Implicit, next to GAR
ldy #0
.3 lda DCB+S.DCB.NIC.MASK,y
sta W5100.DR,x
iny
cpy #4
bne .3
>AR.SELECT SIPR
ldy #0
.4 lda DCB+S.DCB.NIC.IP,y
sta W5100.DR,x
iny
cpy #4
bne .4
.FIN
>AR.SELECT S0.CR
lda #W5100.AR.S0.CR.OPEN
sta W5100.DR,x
@ -375,11 +334,9 @@ CLOSE ldx DEVSLOTx0
lda $C019 we can use VBL as we are not on //c
.1 eor $C019
bpl .1
lda $C019
.2 eor $C019
bpl .2
clc
rts
*--------------------------------------
@ -415,18 +372,15 @@ READ php
.DO U2AI=1
ldy #0
.10 lda W5100.DR,x
sta RX.IP,y
iny
cpy #4
bne .10
bne .10
ldy W5100.DR,x get RX.Size HI
sty RXTX.Size+1
lda W5100.DR,x get RX.Size LO
sta RXTX.Size
clc
adc #S.IP
pha
@ -454,7 +408,6 @@ READ php
sta (ZPIOCTL),y
ldy #S.IOCTL.BYTECNT
.DO U2AI=1
lda RXTX.Size
sta (ZPIOCTL),y
@ -464,7 +417,6 @@ READ php
clc
adc #6 Total Size : Add 6 bytes for IPRAW
sta RXTX.Size
iny
lda RXTX.Size+1
@ -480,7 +432,6 @@ READ php
sta (ZPIOCTL),y
eor #$ff
sta Counter
iny
lda RXTX.Size+1
@ -489,11 +440,9 @@ READ php
eor #$ff
sta Counter+1
.FIN
.DO U2AI=1
ldx #3
ldy #S.IP.SRC+3
.11 lda RX.IP,x
sta (ZPBufPtr),y
dey
@ -511,7 +460,6 @@ READ php
bne .3
inc Counter+1
beq .4
.3 lda W5100.DR,x
sta (ZPBufPtr),y
iny
@ -528,7 +476,6 @@ READ php
lda Offset+1
adc RXTX.Size+1
sta W5100.DR,x write HI
pla
sta W5100.DR,x write LO
@ -545,9 +492,7 @@ READ php
*--------------------------------------
WRITE php
sei
>STYA ZPIOCTL
ldy #S.IOCTL.BYTECNT
lda (ZPIOCTL),y
.DO U2AI=1
@ -566,11 +511,9 @@ WRITE php
sta RXTX.Size+1
eor #$ff
sta Counter+1
ldx DEVSLOTx0
>AR.SELECT S0.TX.FSR
lda W5100.DR,x get send size HI
ldy W5100.DR,x LO
cpy RXTX.Size
@ -578,18 +521,15 @@ WRITE php
bcs WRITE.1
lda #E.NODATA
plp
sec
rts
WRITE.1 ldy #S.IOCTL.BUFPTR
lda (ZPIOCTL),y
sta ZPBufPtr
iny
lda (ZPIOCTL),y
sta ZPBufPtr+1
.DO U2AI=1
>AR.SELECT S0.DIPR
ldy #S.IP.DST
@ -599,7 +539,6 @@ WRITE.1 ldy #S.IOCTL.BUFPTR
iny
cpy #S.IP.DST+4
bne .1
>AR.SELECT S0.PROTO
ldy #S.IP.PROTOCOL
lda (ZPBufPtr),y
@ -607,7 +546,6 @@ WRITE.1 ldy #S.IOCTL.BUFPTR
.ELSE
ldy #S.ETH.SRCMAC+5
ldx #5
.1 lda DCB+S.DCB.NIC.MAC,x
sta (ZPBufPtr),y
dey
@ -616,7 +554,6 @@ WRITE.1 ldy #S.IOCTL.BUFPTR
ldx DEVSLOTx0
.FIN
>AR.SELECT S0.TX.WR
lda W5100.DR,x Get HI
ldy W5100.DR,x Get LO
@ -627,39 +564,32 @@ WRITE.1 ldy #S.IOCTL.BUFPTR
tya
sta W5100.AR+1,x Write LO
sta Offset
.DO U2AI=1
ldy #S.IP
.ELSE
ldy #0
.FIN
.2 inc Counter
bne .3
inc Counter+1
beq .8
.3 lda (ZPBufPtr),y
sta W5100.DR,x
iny
bne .2
inc ZPBufPtr+1
bne .2
.8 >AR.SELECT S0.TX.WR
lda Offset
clc
adc RXTX.Size
pha save LO
lda Offset+1
adc RXTX.Size+1
sta W5100.DR,x write HI
pla
sta W5100.DR,x write LO
>AR.SELECT S0.CR
lda #W5100.AR.S0.CR.SEND
sta W5100.DR,x

View File

@ -493,13 +493,6 @@ S.FD.PIPE.Size .EQ 12
*
S.FD.PIPE .EQ 14
*--------------------------------------
* Task Function Indexes
*--------------------------------------
PS.INIT .EQ 0
PS.RUN .EQ 2
PS.DOEVENT .EQ 4
PS.QUIT .EQ 6
*--------------------------------------
* PS STRUCT
*--------------------------------------
S.PS.F .EQ 0
@ -510,6 +503,10 @@ S.PS.F.EVENT .EQ %00000010
S.PS.F.NOHUP .EQ %00000001
S.PS.S .EQ 1
S.PS.S.INIT .EQ 0
S.PS.S.RUN .EQ 2
S.PS.S.DOEVENT .EQ 4
S.PS.S.QUIT .EQ 6
S.PS.PPID .EQ 2
S.PS.PID .EQ 3

View File

@ -18,7 +18,7 @@ SGNCPR .EQ $AB FLAGS OPP SIGN IN FP ROUT
FAC.EXTENSION .EQ $AC FAC EXTENSION BYTE
CHRGET .EQ $B1 -> $C8
CHRGOT .EQ $B7
TXTPTR .EQ $B8
TXTPTR .EQ $B8
*--------------------------------------
BASICLD .EQ $E000 ENTER BASIC COLD
BASICWM .EQ $E003 RE-ENTER BASIC WARM

View File

@ -289,7 +289,6 @@ FPU.FOUT .EQ 58 PrintF
.MA INCW.G
>INC.G ]1
bne :1
iny
lda (pData),y
inc
@ -309,10 +308,8 @@ FPU.FOUT .EQ 58 PrintF
bne :1
dec
sta (pData),y
iny
lda (pData),y
:1 dec
sta (pData),y
.EM

View File

@ -4,10 +4,10 @@ NEW
*--------------------------------------
*$00 - No Error
MLI.E.BADCALL .EQ $01 Bad Call Number
*MLI.E.BADCNT .EQ $04 Bad Parameter Count
MLI.E.BADCNT .EQ $04 Bad Parameter Count
*MLI.E.BUSERR .EQ $06 Communications Error
MLI.E.BADCTL .EQ $21 Invalid Status Code
*MLI.E.IRQFULL .EQ $25 Interrupt Table Full
MLI.E.IRQFULL .EQ $25 Interrupt Table Full
MLI.E.IO .EQ $27 I/O Error
MLI.E.NODEV .EQ $28 No Device Connected
MLI.E.WRTPROT .EQ $2B Write Protected
@ -28,8 +28,8 @@ MLI.E.EOF .EQ $4C End of File, No More Data
MLI.E.BEYEOF .EQ $4D Beyond EOF
MLI.E.LOCKED .EQ $4E File Access Error, File Locked
MLI.E.OPEN .EQ $50 File Already Open
* .EQ $51 Directory Structure Damaged
* .EQ $53 Invalid Parameter
MLI.E.BADDIR .EQ $51 Directory Structure Damaged
MLI.E.INVPARAM .EQ $53 Invalid Parameter
* .EQ $55 Too Many Volumes
* .EQ $56 Bad Buffer Address
* .EQ $57 Duplicate Volume

View File

@ -68,8 +68,8 @@ CS.START cld
.DA D2TrkRNIB
.DA D2TrkW16s
.DA D2TrkWNIB
L.TrkWriter .DA TrkWriter
L.ProDOS.Boot .DA ProDOS.Boot
L.TrkWriter .DA TrkWriter
L.ProDOS.Boot .DA ProDOS.Boot
.DA 0
*--------------------------------------
LIB.LOAD
@ -93,20 +93,16 @@ GetProDOSCatSize
>PULLB VolDirHdr.Options
>PULLB VolDirHdr.CatSize
>PULLW VolDirHdr.TB
GetProDOSCatSize.I
lda VolDirHdr.TB Get DevSizeLo
clc for now, no partial bitmap blk to add
tay DevSize is xxxxxxxx00000000 ?
beq .1
beq .1
sec
.1 lda VolDirHdr.TB+1 Get DevSizeHI
bit #$0f DevSize is xxxx000000000000 ?
beq .2
sec
.2 php
lsr
lsr
@ -138,45 +134,34 @@ GetProDOSCatSize.I
*\--------------------------------------
BuildProDOSCat >PULLW ZPPtr1 DstBuf
>PULLW ZPPtr2 VolName
>PULLB VolDirHdr.Options
>PULLB VolDirHdr.CatSize
inc
inc
sta VolDirHdr.BMPtr
>PULLW VolDirHdr.TB
ldx #3
.1 lda DATELO,x
sta VolDirHdr.CT,x
dex
bpl .1
* Blk 0 : ProDOS Boot Code
>LDYA L.ProDOS.Boot
>STYA ZPPtr3
ldy #0
ldx #2 2 pages
.2 lda (ZPPtr3),y
sta (ZPPtr1),y
iny
bne .2
inc ZPPtr3+1
inc ZPPtr1+1
dex
bne .2
* Blk 1 : (SOS boot code)
inc ZPPtr1+1
inc ZPPtr1+1
* Blk 2 : First Directory Block
* ldy #0
@ -187,41 +172,31 @@ BuildProDOSCat >PULLW ZPPtr1 DstBuf
lda #3 next block
ldx VolDirHdr.CatSize
dex
bne .30
txa
.30 sta VolDirHdr.next
* stz VolDirHdr.next+1
.3 lda (ZPPtr2),y
beq .31
iny
sta VolDirHdr.Name,y
cpy #15
bne .3
.31 tya
* and #$0f make sure 15 bytes max
ora #$F0 Volume Directory Header
sta VolDirHdr.Name
ldy #VolDirHdr.size-1
.4 lda VolDirHdr,y
sta (ZPPtr1),y
dey
bpl .4
* Blk 3...n : additional Directory Blocks
lda #3 Actual Block ID
ldy #2 next blk ptr
.41 inc ZPPtr1+1
inc ZPPtr1+1 Next Block
dex
bmi .40
@ -233,25 +208,19 @@ BuildProDOSCat >PULLW ZPPtr1 DstBuf
plx
bne .42
txa
.42 sta (ZPPtr1),y
bra .41
* BitMap Blocks : 0=Used 1=free
.40 jsr GetProDOSCatSize.I X=blk used for boot/dir/bitmap
lda VolDirHdr.TB
eor #$ff
sta Count
lda VolDirHdr.TB+1
eor #$ff
sta Count+1
ldy #0
.50 lda #%10000000
.5 dex
bmi .8
@ -263,7 +232,6 @@ BuildProDOSCat >PULLW ZPPtr1 DstBuf
bne .5
iny
bne .50
.7 lda #%10000000
.8 inc Count
@ -281,9 +249,8 @@ BuildProDOSCat >PULLW ZPPtr1 DstBuf
bne .7
inc ZPPtr1+1
bra .7
.88 clc
rts
rts
*/--------------------------------------
*\--------------------------------------
D2TrkRNIB
@ -324,41 +291,29 @@ D2TrkWNIB >PULLB DrvSlt
lda Status Lib is busy....?
beq .10
lda DrvSlt
cmp DrvSltInUse resume previous access ?
.10 lda DEVNUM last drive accessed by ProDOS
and #$F0 only DSSS
pha
jsr CheckDiskII was it a DISK II ?
bcs .1 no, no need to check if spinning
pla
pha
jsr DrvSpinCheck
bcc .1 not spinning....continue
pla
sta D2DrvOff,x
lda #Status.PrvDrvOff
jmp SetStatusAndExit
.1 pla
cmp DrvSlt
* beq
lda DrvSlt
jsr DrvTrkSelect
bcs .9
ldy #TrkWriter.Size
clc
.9 rts
@ -374,7 +329,6 @@ SetStatusAndExit
* Y=target Track Number * 4
*--------------------------------------
DrvTrkSelect jsr DrvSelect
clc
rts
@ -387,37 +341,30 @@ CheckDiskII and #$70 only 0SSS
lsr
ora #$C0 make Cn
sta .2+2
ldx #3 4 bytes to check
.1 ldy DiskII.OFS,x
.2 lda $C000,y Self Modified
.2 lda $C000,y Self Modified
cmp DiskII.SIG,x
bne .9
dex
bpl .1
clc all bytes match, Disk II
rts
.9 sec
rts
*--------------------------------------
* A=DSSS0000
*--------------------------------------
DrvSpinCheck jsr DrvSelect
ldy #0
lda D2RData,x
.1 cmp D2RData,x
bne .8 spinning
dey
bne .1
clc CC:not spinning
rts
.8 sec
rts
*--------------------------------------
@ -430,7 +377,6 @@ DrvSelect pha
asl
adc #D2DrvSel1
sta .1+1
.1 lda D2DrvSel1,x Drv 1/2 select
lda D2ReadMode,x Make sure readmode
@ -455,32 +401,24 @@ TrkWriter.Start lda D2ReadMode,x
.1 lda (ZPPtr1),y (5) as NibbleBuf is page alligned, no page crossing
beq .8 (2)(3 if Z) END OF TRACK
* nobody will never try to write 00000000, right?
cmp #$80 (2) if CC, it is a sync byte
ora #$80 (2) make sure Bit7 high
sta D2WriteMode,x (5)
ora D2WShift,x (4) keep C unmodified
iny (2)
bne .2 (2)(3 if nz)
inc ZPPtr1+1 (5)
bcs .1 (2)(3 if cs) regular 32us byte
* 32us Byte,next page : 5+2 (beq failed) +2+2+5+4+2+2 (bne failed) + 5 + 3 (bcs succeeded) = 32
nop (2) Sync 40us byte : add 8 cycles
nop (2)
nop (2)
bra .1 (3)
* 40us Byte,next page : 5+2 (beq failed) +2+2+5+4+2+2 (bne failed) + 5 + 2 (bcs failed) +2+2+2+3 = 40
.2 nop (2)
nop (2)
@ -502,11 +440,9 @@ TrkWriter.Start lda D2ReadMode,x
plp
clc
rts
.9 lda #$2B Write Protected
sec
rts
TrkWriter.Size .EQ *-TrkWriter.Start
.EP
*--------------------------------------
@ -548,7 +484,7 @@ ProDOS.Boot .HS 01.38.b0.03.4c.32.a1.86.43.c9.03.08.8a.29.70.4a
VolDirHdr
VolDirHdr.Prev .BS 2 pointer to previous block
VolDirHdr.Next .BS 2 pointer to next block
VolDirHdr.Name .BS 16
VolDirHdr.Name .BS 16
.HS 00.00.00.00.00.00.00.00
VolDirHdr.CT .BS 4 Creation time
.HS 01.00.C3.27.0D version/min version/access/EL/EPB

View File

@ -143,18 +143,14 @@ MD5 >PULLW ZPDataPtr
>LDYA ZPDataPtr
>SYSCALL2 strlen
>STYA ZPDataLen
.1 jsr MD5Init
bcs .9
pha save MD5 Context hMem
jsr MD5Update.I
jsr MD5Finalize.I
pla
>SYSCALL2 FreeMem Free MD5 Context
clc
.9 rts
*/--------------------------------------
@ -170,24 +166,18 @@ MD5 >PULLW ZPDataPtr
MD5Init >LDYAI S.MD5
>SYSCALL2 getmem
bcs .9
>STYA ZPCtxPtr
ldy #0
.1 lda MD5.ABCDINIT,y
sta (ZPCtxPtr),y
iny
cpy #S.MD5.BITCOUNT
bne .1
lda #0
.2 sta (ZPCtxPtr),y
iny
cpy #S.MD5 Includes S.MD5.FINALIZED Flag
bne .2
txa
clc
.9 rts
@ -207,71 +197,55 @@ MD5Update >SYSCALL2 GetMemPtr get MD5 Context
>STYA ZPCtxPtr
>PULLW ZPDataPtr get DATA
>PULLW ZPDataLen get LEN
MD5Update.I ldy #S.MD5.FINALIZED
lda (ZPCtxPtr),y
beq .1
sec
rts
.1 lda ZPDataLen+1 More than 256 Bytes remaining to hash ?
bne .3 yes
lda ZPDataLen
bne .2 Len = O ?
clc All data processed
rts
.2 cmp #64 More than 64 Bytes remaining to hash ?
bcc .50 yes
.3 lda #64
.50 sta ZPChunkLen Save Chunk Len
jsr MD5UpdateBitCount
ldy #0
.51 lda (ZPDataPtr),y Load Buffer with data
sta MD5.BUFFER64,y
iny
cpy ZPChunkLen
bne .51
cpy #64 Full 64 Bytes DATA ?
beq .58
* Append "$80" & Padding & original size
lda #$80 no, Append $80
sta MD5.BUFFER64,y
lda #0
.52 iny Pad with 0 to 64
cpy #64
beq .53
sta MD5.BUFFER64,y
bra .52
.53 ldy #S.MD5.EXTRABIT Mark MD5 Context as Appended
lda #$80
sta (ZPCtxPtr),y
lda ZPChunkLen
cmp #56 Enough room for BITCOUNT ?
bcs .58 no
jsr MD5AppendBitCount
.58 jsr MD5Transform
jsr MD5UpdateABCD0
.8 lda ZPDataLen Substract Bytes processed from LEN
sec
sbc ZPChunkLen get back chunk Len
sta ZPDataLen
bcs .81
dec ZPDataLen+1
.81 lda ZPDataPtr Add Bytes processed to DATA
clc
adc ZPChunkLen
@ -290,24 +264,18 @@ MD5Update.I ldy #S.MD5.FINALIZED
* ## RETURN VALUE
*\--------------------------------------
MD5Finalize pha
>SYSCALL2 GetMemPtr
>STYA ZPCtxPtr get MD5 Context
>PULLW ZPHashPtr
jsr MD5Finalize.I
pla
>SYSCALL2 FreeMem
rts
MD5Finalize.I ldy #S.MD5.FINALIZED
lda (ZPCtxPtr),y
bne .11
jsr MD5ExtraChunk
.11 ldy #S.MD5.ABCD0
.1 lda (ZPCtxPtr),y
@ -320,9 +288,7 @@ MD5Finalize.I ldy #S.MD5.FINALIZED
sta (ZPHashPtr)
inc ZPHashPtr
bne .2
inc ZPHashPtr+1
.2 lda (ZPCtxPtr),y
and #$0F
tax
@ -330,16 +296,12 @@ MD5Finalize.I ldy #S.MD5.FINALIZED
sta (ZPHashPtr)
inc ZPHashPtr
bne .3
inc ZPHashPtr+1
.3 iny
cpy #S.MD5.ABCD0+16
bne .1
lda #0
sta (ZPHashPtr)
clc
.9 rts
*--------------------------------------
@ -398,7 +360,7 @@ MD5UpdateBitCount
cpy #7
bne .1
.8 rts
.8 rts
*--------------------------------------
* MD5ExtraChunk
* In :
@ -461,7 +423,6 @@ MD5Transform ldy #15 init ABCD Chunk with Context ABCD0
bpl .1
stz MD5.i Start Proceed 0 to 63 bytes
lda #0 lda MD5.i
.2 lsr
@ -476,7 +437,6 @@ MD5Transform ldy #15 init ABCD Chunk with Context ABCD0
lda MD5.i
cmp #64
bne .2
rts
*--------------------------------------
MD5.XXXX jmp (J.MD5.XXXX,x)
@ -505,7 +465,6 @@ MD5.XXXX.END >MOV32 MD5.D,MD5.DTemp
>MOV32 MD5.C,MD5.D
>MOV32 MD5.B,MD5.C
>ADC32 MD5.A,MD5.F,MD5.F
lda MD5.i
asl
asl
@ -529,7 +488,6 @@ MD5.XXXX.END >MOV32 MD5.D,MD5.DTemp
tay
ldx #0
clc
.2 lda MD5.BUFFER64,y ADC32 M[g],MD5.F,MD5.F
adc MD5.F,x
sta MD5.F,x

View File

@ -26,7 +26,6 @@ AARP.Clear ldx #K.AARPCACHE.SIZE*S.AARPCACHE
*\--------------------------------------
AARP.Query >PULLW ZPPtrADDR ADDR
>PULLW ZPPtrMAC MAC
ldy #3
.1 lda (ZPPtrADDR),y
sta AARP.TmpCache+S.AARPCACHE.ADDR,y
@ -34,14 +33,13 @@ AARP.Query >PULLW ZPPtrADDR ADDR
bpl .1
jsr AARP.QUERY.I
bcs .9
ldy #5
.2 lda AARP.TmpCache+S.AARPCACHE.MAC,y
sta (ZPPtrMAC),y
dey
bpl .2
clc
.9 rts
.9 rts
*/--------------------------------------
* # AARP.Add
* Add a static AARP cache record
@ -51,7 +49,6 @@ AARP.Query >PULLW ZPPtrADDR ADDR
*\--------------------------------------
AARP.Add >PULLW ZPPtrADDR ADDR
>PULLW ZPPtrMAC MAC
stz AARP.TmpCache+S.AARPCACHE.TTL
stz AARP.TmpCache+S.AARPCACHE.TTL+1
@ -61,7 +58,6 @@ AARP.Add >PULLW ZPPtrADDR ADDR
sta AARP.TmpCache+S.AARPCACHE.ADDR,y
dey
bpl .1
ldy #5
.2 lda (ZPPtrMAC),y
@ -70,20 +66,17 @@ AARP.Add >PULLW ZPPtrADDR ADDR
bpl .2
lda #S.AARPCACHE.S.RESOLVED+S.AARPCACHE.S.STATIC
AARP.ADD.I sta AARP.TmpCache
jsr AARP.FIND.BY.ADDR
bcc .1
jsr AARP.FIND.FREE
.1 ldy #S.AARPCACHE-1
.2 lda AARP.TmpCache,y
sta (ZPCachePtr),y
dey
bpl .2
clc
rts
*/--------------------------------------
@ -101,7 +94,6 @@ AARP.GetCache >LDYA L.AARP.CACHE
*--------------------------------------
AARP.AddFromFrameInPtr
ldy #S.DDP2.SRC.NET
lda (ZPFrameInPtr),y
sta AARP.TmpCache+S.AARPCACHE.ADDR+1,x
iny
@ -111,21 +103,17 @@ AARP.AddFromFrameInPtr
iny
lda (ZPFrameInPtr),y
sta AARP.TmpCache+S.AARPCACHE.ADDR+3,x
ldy #S.ETH.SRCMAC+5
ldx #5
.2 lda (ZPFrameInPtr),y
sta AARP.TmpCache+S.AARPCACHE.MAC,x
dey
dex
bpl .2
lda #K.AARP.TTL
sta AARP.TmpCache+S.AARPCACHE.TTL
lda /K.AARP.TTL
sta AARP.TmpCache+S.AARPCACHE.TTL+1
lda #S.AARPCACHE.S.RESOLVED
jmp AARP.ADD.I
*--------------------------------------
@ -140,55 +128,44 @@ AARP.IN bra .10
dey
dex
bpl .1
.10 ldy #S.AARP.OPERATION+1 HI byte
lda (ZPFrameInPtr),y
cmp #S.AARP.OPERATION.REQ
beq AARP.IN.REQ
cmp #S.AARP.OPERATION.REP
beq AARP.IN.REP
AARP.IN.EXIT lda hFrameIn
beq .8
stz hFrameIn
>SYSCALL2 FreeMem
.8 clc
rts
AARP.IN.REQ ldy #S.AARP.SPA+3
ldx #3
.1 lda (ZPFrameInPtr),y
sta AARP.REP.TPA,x
dey
dex
bpl .1
ldy #S.AARP.SHA+5
ldx #5
.2 lda (ZPFrameInPtr),y
sta AARP.REP.DSTMAC,x
sta AARP.REP.THA,x
dey
dex
bpl .2
>LDYA L.AARP.REP
jsr AARP.Send
bra AARP.IN.EXIT
AARP.IN.REP lda #K.AARP.TTL
sta AARP.TmpCache+S.AARPCACHE.TTL
lda /K.AARP.TTL
sta AARP.TmpCache+S.AARPCACHE.TTL+1
ldy #S.AARP.SPA+3
ldx #3
.1 lda (ZPFrameInPtr),y
sta AARP.TmpCache+S.AARPCACHE.ADDR,x
dey
@ -197,15 +174,12 @@ AARP.IN.REP lda #K.AARP.TTL
ldy #S.AARP.SHA+5
ldx #5
.2 lda (ZPFrameInPtr),y
sta AARP.TmpCache+S.AARPCACHE.MAC,x
dey
dex
bpl .2
lda #S.AARPCACHE.S.RESOLVED
jsr AARP.ADD.I
jmp AARP.IN.EXIT
*--------------------------------------
@ -214,22 +188,18 @@ AARP.QUERY.I jsr AARP.FIND.BY.ADDR
lda (ZPCachePtr) get status...
bpl .9 Pending...
ldy #S.AARPCACHE.MAC
.2 lda (ZPCachePtr),y
sta AARP.TmpCache,y
iny
cpy #S.AARPCACHE.MAC+6
bne .2
ldy #S.AARPCACHE.TTL
lda #K.AARP.TTL
sta (ZPCachePtr),y
iny
lda /K.AARP.TTL
sta (ZPCachePtr),y
clc
rts
@ -239,18 +209,14 @@ AARP.QUERY.I jsr AARP.FIND.BY.ADDR
sta AARP.REQ.TPA,x
dex
bpl .4
>LDYA L.AARP.REQ
jsr AARP.Send
bcs .99
lda #K.AARP.PENDING.TTL
sta AARP.TmpCache+S.AARPCACHE.TTL
stz AARP.TmpCache+S.AARPCACHE.TTL+1
lda #S.AARPCACHE.S.PENDING
jsr AARP.ADD.I
.9 lda #ERR.AARP.PENDING
sec
.99 rts
@ -261,30 +227,25 @@ AARP.FIND.BY.ADDR
lda #K.AARPCACHE.SIZE
sta TmpOffset
.1 lda (ZPCachePtr)
beq .3
ldx #3
ldy #S.AARPCACHE.ADDR+3
.2 lda AARP.TmpCache+S.AARPCACHE.ADDR,x
cmp (ZPCachePtr),y
bne .3
dey
dex
bpl .2
clc
rts
.3 lda ZPCachePtr
clc
adc #S.AARPCACHE
sta ZPCachePtr
bcc .8
inc ZPCachePtr+1
.8 dec TmpOffset
bne .1
sec
@ -298,11 +259,9 @@ AARP.FIND.FREE >LDYA L.AARP.CACHE
sta TmpDWord+1
ldx #K.AARPCACHE.SIZE
.1 lda (ZPCachePtr)
beq .8
bpl .6
ldy #S.AARPCACHE.TTL
lda (ZPCachePtr),y
sec
@ -311,13 +270,11 @@ AARP.FIND.FREE >LDYA L.AARP.CACHE
lda (ZPCachePtr),y
sbc TmpDWord+1
bcc .6
lda (ZPCachePtr),y
sta TmpDWord+1
dey
lda (ZPCachePtr),y
sta TmpDWord
>LDYA ZPCachePtr
>STYA ZPTmpPtr1 save lowest TTL slot ...
@ -327,28 +284,22 @@ AARP.FIND.FREE >LDYA L.AARP.CACHE
sta ZPCachePtr
bcc .7
inc ZPCachePtr+1
.7 dex
bne .1
>LDYA ZPTmpPtr1
>STYA ZPCachePtr
lda #0
sta (ZPCachePtr)
.8 clc
rts
*--------------------------------------
AARP.EXPIRE >LDYA L.AARP.CACHE
>STYA ZPCachePtr
ldx #K.AARPCACHE.SIZE
.1 lda (ZPCachePtr)
beq .2
and #S.AARPCACHE.S.STATIC
bne .2
ldy #S.AARPCACHE.TTL
sec
lda (ZPCachePtr),y
@ -359,17 +310,14 @@ AARP.EXPIRE >LDYA L.AARP.CACHE
sbc #0
sta (ZPCachePtr),y
bcs .2
lda #0
sta (ZPCachePtr)
.2 lda ZPCachePtr
clc
adc #S.AARPCACHE
sta ZPCachePtr
bcc .3
inc ZPCachePtr+1
.3 dex
bne .1
rts

View File

@ -3,9 +3,7 @@ NEW
.LIST OFF
*--------------------------------------
CFG.SET >PULLW ZPTmpPtr1 ETKCFG
ldy #S.ETKCFG-1
.1 lda (ZPTmpPtr1),y
sta ETKCFG,y
dey
@ -20,7 +18,6 @@ CFG.SET >PULLW ZPTmpPtr1 ETKCFG
sta AARP.REP.SHA,x
dex
bpl .2
clc
rts
*--------------------------------------

View File

@ -4,12 +4,10 @@ NEW
*--------------------------------------
*--------------------------------------
FRM.Send ldx #3
.1 lda ZPFrameOutPtr,x Get Frame Ptr & Len
sta IOCTL+S.IOCTL.BUFPTR,x
dex
bpl .1
FRM.Send.IOCTL >PUSHW L.IOCTL
>PUSHBI IOCTL.WRITE
lda ETKCFG+S.NETCFG.DevID

View File

@ -47,10 +47,8 @@ CS.START cld
*--------------------------------------
.1 .DA LIB.LOAD
.DA LIB.UNLOAD
.DA CFG.SET
.DA CFG.GET
.DA INCOMING
.DA PULSE
@ -73,14 +71,12 @@ LIB.LOAD ldx RefCount
bne .8
jsr AARP.CLEAR
.8 inc RefCount
clc
rts
*--------------------------------------
LIB.UNLOAD dec RefCount
clc
rts
*--------------------------------------
@ -88,7 +84,6 @@ INCOMING sta hFrameIn
>PULLW ZPTmpPtr1
ldy #S.IOCTL.BUFPTR+3
.1 lda (ZPTmpPtr1),y Get Frame Ptr & Len
sta ZPFrameInPtr-S.IOCTL.BUFPTR,y
dey
@ -98,15 +93,12 @@ INCOMING sta hFrameIn
lda (ZPFrameInPtr),y
tax
iny
lda (ZPFrameInPtr),y
lda (ZPFrameInPtr),y
cmp #S.ETH.SNAP.PROTO.AARP
bne .2
cpx /S.ETH.SNAP.PROTO.AARP
bne .2
jmp AARP.IN
.2 cmp #S.ETH.SNAP.PROTO.DDP
bne .9
cpx /S.ETH.SNAP.PROTO.DDP
@ -130,7 +122,7 @@ PULSE and #S.EVT.F.T1SEC
.INB USR/SRC/LIB/LIBETALK.S.DDP
.INB USR/SRC/LIB/LIBETALK.S.ELAP
.INB USR/SRC/LIB/LIBETALK.S.FRM
.INB USR/SRC/LIB/LIBETALK.S.RTMP
.INB USR/SRC/LIB/LIBETALK.S.RTMP
*--------------------------------------
CS.END
*--------------------------------------

View File

@ -6,7 +6,6 @@ BM.Apple .DA #S.BM.F.BBP4
.DA 16 W
.DA 7 H
.DA 0 no MASK.OFS
.HS FFF6 green (8)
.HS 6FF6 green (8)
.HS EEEE yellow (15)

View File

@ -32,7 +32,6 @@ CUR.Arrow .DA #S.BM.F.BBP1
.DA 11 W
.DA 13 H
.DA CUR.Arrow.MASK-CUR.Arrow
.DA %000.00000000
.DA %000.00000010
.DA %000.00000110
@ -46,7 +45,6 @@ CUR.Arrow .DA #S.BM.F.BBP1
.DA %000.11110010
.DA %000.11100000
.DA %000.00000000
CUR.Arrow.MASK .DA %111.11111100
.DA %111.11111000
.DA %111.11110000
@ -66,7 +64,6 @@ CUR.ResizeX .DA #S.BM.F.BBP1
.DA 14 W
.DA 7 H
.DA CUR.ResizeX.MASK-CUR.ResizeX
.DA %000000.00000000
.DA %000100.00001000
.DA %001100.00001100
@ -88,7 +85,6 @@ CUR.ResizeY .DA #S.BM.F.BBP1
.DA 9 W
.DA 11 H
.DA CUR.ResizeY.MASK-CUR.ResizeY
.DA %0.00000000
.DA %0.00010000
.DA %0.01111100
@ -118,7 +114,6 @@ CUR.ResizeXY1 .DA #S.BM.F.BBP1
.DA 11 W
.DA 11 H
.DA CUR.ResizeXY1.MASK-CUR.ResizeXY1
.DA %000.00000000
.DA %011.11000000
.DA %011.10000000
@ -148,7 +143,6 @@ CUR.ResizeXY2 .DA #S.BM.F.BBP1
.DA 11 W
.DA 11 H
.DA CUR.ResizeXY2.MASK-CUR.ResizeXY2
.DA %000.00000000
.DA %000.00011110
.DA %000.00001110
@ -178,7 +172,6 @@ CUR.Cross .DA #S.BM.F.BBP1
.DA 11 W
.DA 11 H
.DA CUR.Cross.MASK-CUR.Cross
.DA %000.00100000
.DA %000.01010000
.DA %000.01010000
@ -238,7 +231,6 @@ CUR.Wait1 .DA #S.BM.F.BBP1
.DA 11 W
.DA 13 H
.DA CUR.Wait4.MASK-CUR.Wait1
.DA %000.00000000
.DA %001.11111100
.DA %001.00000100
@ -258,7 +250,6 @@ CUR.Wait2 .DA #S.BM.F.BBP1
.DA 11 W
.DA 13 H
.DA CUR.Wait4.MASK-CUR.Wait2
.DA %000.00000000
.DA %001.11111100
.DA %001.11111100
@ -278,7 +269,6 @@ CUR.Wait3 .DA #S.BM.F.BBP1
.DA 11 W
.DA 13 H
.DA CUR.Wait4.MASK-CUR.Wait3
.DA %000.00000000
.DA %001.11111100
.DA %001.11111100
@ -298,7 +288,6 @@ CUR.Wait4 .DA #S.BM.F.BBP1
.DA 11 W
.DA 13 H
.DA CUR.Wait4.MASK-CUR.Wait4
.DA %000.00000000
.DA %001.11111100
.DA %001.11111100
@ -312,7 +301,6 @@ CUR.Wait4 .DA #S.BM.F.BBP1
.DA %001.00000100
.DA %001.11111100
.DA %000.00000000
CUR.Wait4.MASK .DA %110.00000011
.DA %100.00000001
.DA %100.00000001
@ -332,7 +320,6 @@ CUR.Wait5 .DA #S.BM.F.BBP1
.DA 16 W
.DA 14 H
.DA CUR.Wait5.MASK-CUR.Wait5
.DA %00000000.00000000
.DA %00000010.00000000
.DA %00000110.00000000
@ -347,7 +334,6 @@ CUR.Wait5 .DA #S.BM.F.BBP1
.DA %00000000.01100000
.DA %00000000.01000000
.DA %00000000.00000000
CUR.Wait5.MASK .DA %11111100.11111111
.DA %11111000.11111111
.DA %11110000.11111111
@ -368,7 +354,6 @@ CUR.Wait6 .DA #S.BM.F.BBP1
.DA 16 W
.DA 14 H
.DA CUR.Wait6.MASK-CUR.Wait6
.DA %00000000.00000000
.DA %00000000.01000000
.DA %00000000.01100000
@ -383,7 +368,6 @@ CUR.Wait6 .DA #S.BM.F.BBP1
.DA %00000110.00000000
.DA %00000010.00000000
.DA %00000000.00000000
CUR.Wait6.MASK .DA %11111111.00111111
.DA %11111111.00011111
.DA %11111111.00001111

View File

@ -12,7 +12,6 @@ BUT.New >STYA ZPPtr1
ldy #S.BUT.hBM
lda (ZPPtr1),y
beq .1
ldy #S.BM.W
* >SYSCALL2 GetStkObjProp

View File

@ -25,18 +25,15 @@ CLIP.Text
CLIP.BitBlt.9 pla
CLIP.BitBlt.99 sec
rts
CLIP.BitBlt lda CB.Cache+S.CB.DstX
ldx CB.Cache+S.CB.DstX+1
pha
>SCMPAX OBJ.Cache+S.OBJ.X2
bpl CLIP.BitBlt.9 DestX after X2....exit
pla
>SCMPAX OBJ.Cache+S.OBJ.X1
bpl .1 DestX Inside X1-X2, go check if X1+W fit in
* S.CB.DstX before S.OBJ.X1: D=S.OBJ.X1-S.CB.DstX, S.CB.SrcW-=D, S.CB.DstX=+=D, S.CB.X1+=D
lda OBJ.Cache+S.OBJ.X1 Compute D....
@ -46,7 +43,6 @@ CLIP.BitBlt lda CB.Cache+S.CB.DstX
lda OBJ.Cache+S.OBJ.X1+1
sbc CB.Cache+S.CB.DstX+1
sta D+1 ....always positive
lda CB.Cache+S.CB.SrcW S.CB.SrcW-=D
sec
sbc D
@ -55,7 +51,6 @@ CLIP.BitBlt lda CB.Cache+S.CB.DstX
sbc D+1
sta CB.Cache+S.CB.SrcW+1
bcc CLIP.BitBlt.99 Negative!!!! nothing to do,exit...
lda CB.Cache+S.CB.DstX S.CB.DstX+=D
clc
adc D
@ -63,7 +58,6 @@ CLIP.BitBlt lda CB.Cache+S.CB.DstX
lda CB.Cache+S.CB.DstX+1
adc D+1
sta CB.Cache+S.CB.DstX+1
lda CB.Cache+S.CB.X1 S.CB.X1+=D
clc
adc D
@ -80,20 +74,16 @@ CLIP.BitBlt lda CB.Cache+S.CB.DstX
tax
lda OBJ.Cache+S.OBJ.X2+1
sbc CB.Cache+S.CB.DstX+1
inx
bne .2
inc
.2 tay
cpx CB.Cache+S.CB.SrcW
sbc CB.Cache+S.CB.SrcW+1
bcs CLIP.BitBlt.Y D >= SrcW....nothing to clip
stx CB.Cache+S.CB.SrcW SrcW < D, make SrcW=D
sty CB.Cache+S.CB.SrcW+1
CLIP.BitBlt.Y lda CB.Cache+S.CB.DstY
ldx CB.Cache+S.CB.DstY+1
pha
@ -102,13 +92,10 @@ CLIP.BitBlt.Y lda CB.Cache+S.CB.DstY
pla
sec
rts
.10 pla
>SCMPAX OBJ.Cache+S.OBJ.Y1
bpl .1 DestY Inside Y1-Y2, go check if Y1+H fit in
* S.CB.DstY above S.OBJ.Y1: D=S.OBJ.Y1-S.CB.DstY, S.CB.SrcH-=D, S.CB.DstY=0, S.CB.Y1+=D
lda OBJ.Cache+S.OBJ.Y1 Compute D....
sec
sbc CB.Cache+S.CB.DstY
@ -116,7 +103,6 @@ CLIP.BitBlt.Y lda CB.Cache+S.CB.DstY
lda OBJ.Cache+S.OBJ.Y1+1
sbc CB.Cache+S.CB.DstY+1
sta D+1 ....always positive
lda CB.Cache+S.CB.SrcH S.CB.SrcH-=D
sec
sbc D
@ -125,7 +111,6 @@ CLIP.BitBlt.Y lda CB.Cache+S.CB.DstY
sbc D+1
sta CB.Cache+S.CB.SrcH+1
bcc .99 Negative!!!! nothing to do,exit...
lda CB.Cache+S.CB.DstY Dst.Y+=D
clc
adc D
@ -133,7 +118,6 @@ CLIP.BitBlt.Y lda CB.Cache+S.CB.DstY
lda CB.Cache+S.CB.DstY+1
adc D+1
sta CB.Cache+S.CB.DstY+1
lda CB.Cache+S.CB.Y1 S.CB.Y1+=D
clc
adc D
@ -156,17 +140,14 @@ CLIP.BitBlt.Y lda CB.Cache+S.CB.DstY
inc
.2 tay
cpx CB.Cache+S.CB.SrcH
sbc CB.Cache+S.CB.SrcH+1
bcs .8 D >= SrcH....nothing to clip
stx CB.Cache+S.CB.SrcH SrcH < D, make SrcH=D
sty CB.Cache+S.CB.SrcH+1
.8 clc
rts
.9 pla
.99 sec
rts
@ -178,39 +159,31 @@ CLIP.Line.TOP .EQ 8
*--------------------------------------
CLIP.Line jsr CLIP.Line.EncodeP1
jsr CLIP.Line.EncodeP2
.1 lda CLIP.Line.P1
ora CLIP.Line.P2
beq .88
lda CLIP.Line.P1
and CLIP.Line.P2
bne .99
lda CLIP.Line.P1
beq .5
bit #CLIP.Line.TOP
beq .2
* Y1 is above S.CB.Y1....
* DY=Y2-Y1;
* DY=Y2-Y1;
jsr CLIP.Line.EncodeP1
bra .1
.2 bit #CLIP.Line.BOTTOM
beq .3
* Y1 is below S.CB.Y2....
* Y1 is below S.CB.Y2....
jsr CLIP.Line.EncodeP1
bra .1
.3 bit #CLIP.Line.RIGHT
beq .4
* X1 is after S.CB.X2....
jsr CLIP.Line.EncodeP1
bra .1
* X1 is before S.CB.X1....
* X1 is before S.CB.X1....
.4
jsr CLIP.Line.EncodeP1
bra .1
@ -219,26 +192,23 @@ CLIP.Line jsr CLIP.Line.EncodeP1
bit #CLIP.Line.TOP
beq .6
* Y2 is above S.CB.Y1....
* Y2 is above S.CB.Y1....
jsr CLIP.Line.EncodeP2
bra .1
.6 bit #CLIP.Line.BOTTOM
beq .7
* Y2 is below S.CB.Y2....
jsr CLIP.Line.EncodeP2
bra .1
.7 bit #CLIP.Line.RIGHT
beq .8
* X2 is after S.CB.X2....
jsr CLIP.Line.EncodeP2
bra .1
* X2 is before S.CB.X1....
* X2 is before S.CB.X1....
.8
jsr CLIP.Line.EncodeP2
bra .1
.88 clc
rts
@ -251,13 +221,10 @@ CLIP.Line.EncodeP1
lda CB.Cache+S.CB.X1
ldx CB.Cache+S.CB.X1+1
jsr CLIP.Line.EncodeX.AX
tay
lda CB.Cache+S.CB.Y1
ldx CB.Cache+S.CB.Y1+1
jsr CLIP.Line.EncodeY.AX
sta CLIP.Line.P1
rts
*--------------------------------------
@ -267,13 +234,10 @@ CLIP.Line.EncodeP2
lda CB.Cache+S.CB.X2
ldx CB.Cache+S.CB.X2+1
jsr CLIP.Line.EncodeX.AX
tay
lda CB.Cache+S.CB.Y2
ldx CB.Cache+S.CB.Y2+1
jsr CLIP.Line.EncodeY.AX
sta CLIP.Line.P2
rts
*--------------------------------------
@ -285,7 +249,6 @@ CLIP.Line.EncodeX.AX
ora #CLIP.Line.LEFT
plx
rts
.1 pla
>SCMPAX OBJ.Cache+S.OBJ.X1
bpl .8
@ -301,14 +264,12 @@ CLIP.Line.EncodeY.AX
ora #CLIP.Line.TOP
plx
rts
.1 pla
>SCMPAX OBJ.Cache+S.OBJ.Y1
bpl .8
tya
ora #CLIP.Line.BOTTOM
.8 rts
.8 rts
*--------------------------------------
MAN
SAVE USR/SRC/LIB/LIBGUI.S.CLIP

Some files were not shown because too many files have changed in this diff Show More