mirror of https://github.com/A2osX/A2osX.git
Kernel 0.93+
This commit is contained in:
parent
8c9c506d61
commit
cb8adcbb8b
|
@ -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
|
||||
|
|
|
@ -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.
|
@ -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
|
||||
|
|
67
A2osX.S.txt
67
A2osX.S.txt
|
@ -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
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
*---------------------------------------
|
||||
|
|
|
@ -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
|
||||
*---------------------------------------
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
|
|
96
BIN/LS.S.txt
96
BIN/LS.S.txt
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
|
|
44
BIN/PS.S.txt
44
BIN/PS.S.txt
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
229
BIN/SH.S.CMD.txt
229
BIN/SH.S.CMD.txt
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
62
BIN/SH.S.txt
62
BIN/SH.S.txt
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
64
BIN/WC.S.txt
64
BIN/WC.S.txt
|
@ -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
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -12,7 +12,6 @@ BUT.New >STYA ZPPtr1
|
|||
ldy #S.BUT.hBM
|
||||
lda (ZPPtr1),y
|
||||
beq .1
|
||||
|
||||
ldy #S.BM.W
|
||||
* >SYSCALL2 GetStkObjProp
|
||||
|
||||
|
|
|
@ -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
Loading…
Reference in New Issue